8个二极管以200ms的间隔连续依次闪烁5次

[复制链接]
1178|22
zhanglli 发表于 2021-4-12 17:36 | 显示全部楼层

问题在于num1 == 4 之类的条件成立可持续50ms,而主程序循环跑得很快,在50ms里灯的状态会不停的快速变换
uchar  last_num;
if(last_num == num1)
    continue;
else
    last_num = num1;
后面的处理怎么方便怎么做就好了
supernan 发表于 2021-4-12 17:38 | 显示全部楼层

void  T0_timer()   interrupt 1
{
       num1++;
       if  (num1==4)
       {
                num1=0;
                Bflash=1;
       }
}


uchar  sta=0x01, counter=0;

while(1)
{
          if  (Bflash)
          {
                 Bflash=0;
                 sta=~sta;
                 counter++;

                  if (counter==6)
                  {
                          counter=0;
                          sta=sta<<1;         if (!sta)   sta=0x01;
                  }
                 
                  P1=sta;
          }
更多操作
 楼主| langgq 发表于 2021-4-12 17:39 | 显示全部楼层

哦,那我就知道怎么回事了,多谢大家
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部