当按下key后,计时两秒后led亮的 编程问题

2019-07-15 18:48发布

#include <REGX51.H>
#define uint unsigned int
sbit key = P3^5;
sbit led = P1^1;
void delay()
{
   uint k;
   for(k=0;k<20;k++)
   ;
}
void main()
{
    TCON = 0x01;
    TH0  = 0xb8;
    TL0  = 0x00;
    TR0  = 1;
  while(1)
  {
   uint i;
   
    TR0=0;
    if(key==0)
    {
      delay();
      if(key==0)
  {
   
    TR0=1;
     if(TF0==1)
     
  {
   
    TF0=0;
    TH0  = 0xb8;
       TL0  = 0x00;
    i++;
  }
   if(i==100)
    {
   i=0;
      led=~led;
       while(!key);
     }
     
   
  }
   }
  }
}
想破脑子都想不出的错误,希望大神指导指导
题目是这样的 当按下key后,计时两秒后led亮
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
ntmusic
1楼-- · 2019-07-15 22:10
按键检测作为一个独立程序结构,时间检测作为另一个独立程序结构,不要把时间检测放到按键检测中!
雅典娜的渴望
2楼-- · 2019-07-16 02:47
由于定时器的开与关都在开关检测的循环内,也就是意味着按按键的时候定时器开了,松手后有关了。所以出问题了。把按键检测独立开来写。祝你成功。
鼠王
3楼-- · 2019-07-16 04:55
雅典娜的渴望 发表于 2014-8-14 16:44
由于定时器的开与关都在开关检测的循环内,也就是意味着按按键的时候定时器开了,松手后有关了。所以出问题 ...

请问 怎样改 听起来是懂了   但动起手来就不行了  还望大神再深入指教   谢谢

一周热门 更多>