微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 大神们我又来提问题了

大神们我又来提问题了

时间:10-02 整理:3721RD 点击:
if(x==1)
                {
                                led2=1;
                                led0=1;
                                if(c==0)
                                {
               
                                        if(a==0)
                                        {       
                                                {if(c==1&&a==1)
                                                {
                                                        led2=0;
                                                        delaya();
                                                        led3=1;
                                                        delaya();
                                                        led0=0;
                                                }
                                        }
                           }
              }
大神们我想知道,这个程序x==1,之后led2和led0一直亮,然后检测c变成0然后a也变成0然后 a和c变成1之后才把led2和led0关闭把led3打开,led2和led0在关闭之前一直保持,然后跳回继续扫描x==1能实现么,不能的话怎么时限啊

应该可以吧!第二个和第三个if语句最好放一块去!然后a和c跳变应该会有时间吧,不可能这么短时间就跳变吧!最后一个if语句里面为什么要加延时啊?不是直接转变吗?

我需要延时将他跳变

我觉得不能把,就算能实现,好像也看不到效果

可以做到,但不是这样写,需要增加状态标志,在if(x==1) 之外进行状态判断,更改状态标志。
最根本还是逻辑结构和程序结构的问题

你先把问题描述清楚,需求没说清楚啊。
可以使用类似状态机实现。

  1. #define INITIAL 0
  2. #define WAIT_A_C_0 1
  3. #define WAIT_A_C_1 2
  4. uint8_t status=INITIAL;
  5. void Status_Scan(void)
  6. {
  7.         switch(status)
  8.         {
  9.                 case INITIAL:
  10.                 {
  11.                 }break;
  12.                 case WAIT_A_C_0:
  13.                 {
  14.                 }break;
  15.                 case WAIT_A_C_1:
  16.                 {
  17.                 }break;               
  18.         }
  19. }

复制代码


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top