yjawei 发表于 2024-3-22 15:39:04

Delay 500 ms耗费太多时间和CPU资源

jwd 发表于 2024-3-22 15:46:01

如果按键按下,此数据是不是一直在开关?

55337575 发表于 2024-3-22 16:19:06

本帖最后由 55337575 于 2024-3-22 16:27 编辑

void timer0_isr() interrupt 1                //10毫秒中断一次
{
      static unsigned char count=0;
      
      if(++count==50)
      {
                count=0;
                if(flag1)
                {
                        flag1=0;
                        keyPadData&=~0x01;
                }
      }
}

void SendPadData()
{
      static char iskey=0;
;
;
;

      if(!(P13 & 0x01))
      {
               
                if(iskey==0)
                {
                        iskey=1;                //有键按下
                        flag1=1;
                        keyPadData |= 0x01;
                }
      }
      else
      {
                if(iskey==1)
                {
                        iskey=0;                //键抬起
                        flag1=1;
                        keyPadData |= 0x01;
                }
      }
}

试试这样应该可以。实际上灯闪烁500ms有点长
页: 1 [2]
查看完整版本: 关于延时程序的问题