-
求助!
我写的这个函数,是想要完成按下一次对应按键时,LED以5Hz频率闪烁(代表进门),双击对应按键时,LED以2Hz频率闪烁(代表出门),每个门最多可以进入三次,超出进入上限时LED常亮5s;这个任务,但是我发现我·按下按键后第一次能进门,第二次时就进不去了,试了好久也没改出来。求大佬帮帮#includevoidTimer01Init(){TMOD=0x11;//令T0,T1的M1,M0分别为0,1.启用16定时器0,1,启用TL,THTL0=0xD8;//1ms,11.0592HzTH0=0xF0;TL1=0xD8;TH1=0xF0;TF0=0;//溢出中断标志位,为1时向cpu请求中断;TF1=0;TR0=1;//先禁止定时器计数,按下按键才允许计数;1允许TR1=1;EA=1;//总中断允许控制位;ET0=1;//溢出中断允许位;ET1=1;PT0=1;//优先级;}#include#include"Timer01Init.h"#defineredP1_0//#defineyellowP1_1//#defineblueP1_3unsignedcharA,C,LEDtime,GateNumr,GateNumy,GateNumb,sure,Gatered,Gateyellow,Gateblue;//B;unsignedcharMode;unsignedintcounter;voidmain(){///////////////////////redTimer01Init();while(1){if(P3_1==0)//这里有问题:我不加&&Gatered==1这个函数可以执行,我加上之后我没想明白为啥会运行不了。//5Hz,进门{if(GateNumr<3)//门只能进入三次{if(counter>=100){counter=0;red=!red;LEDtime++;}if(LEDtime>=6)//P1_2亮一个周期LEDtime会加两次,所以LEDtime不为3;{//LCD12864_show_string(1,0,"red");LEDtime=0;GateNumr++;TR1=0;A=0;B=0;C=0;}}else//进门超出三次常亮5秒{counter=0;while(counter=6)//P1_2亮一个周期LEDtime会加两次,所以LEDtime不为3;{LEDtime=0;GateNumr--;TR1=0;A=0;B=0;C=0;}}}Gatered=0;}}
2024-02-19 0