大神们我又来提问题了
时间: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能实现么,不能的话怎么时限啊
{
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) 之外进行状态判断,更改状态标志。
最根本还是逻辑结构和程序结构的问题
你先把问题描述清楚,需求没说清楚啊。
可以使用类似状态机实现。
- #define INITIAL 0
- #define WAIT_A_C_0 1
- #define WAIT_A_C_1 2
- uint8_t status=INITIAL;
- void Status_Scan(void)
- {
- switch(status)
- {
- case INITIAL:
- {
- }break;
- case WAIT_A_C_0:
- {
- }break;
- case WAIT_A_C_1:
- {
- }break;
- }
- }