标题: 求助大神,为什么我的中断延时实现不了 [打印本页]

作者: qq363746379    时间: 2015-5-31 23:03
标题: 求助大神,为什么我的中断延时实现不了
  1. #include<Reg51.h>
  2. unsigned int delay1=0;
  3. sbit Key1=P2^6;
  4. int main()
  5. {
  6. void Timer1(int count);
  7. P2=0xff;
  8. TMOD=0x01;
  9. TH0=(65536-50000)/256;
  10. TL0=(65536-50000)%256;
  11. EA=1;
  12. ET0=1;
  13. TR0=1;
  14. while(1)
  15.    {
  16.             Key1=1;
  17.          Timer1(80);
  18.          Key1=0;                       
  19.    }
  20. }
  21. void Timer1(int count)          //延时函数
  22.         {
  23.           delay1=count;
  24.           while(delay1!=0);
  25.          
  26.         }

  27. void zhongduan()interrupt 1          //中断服务函数
  28. {
  29. if(delay1!=0)         
  30.    delay1--;
  31. TH0=(65536-50000)/256;
  32. TL0=(65536-50000)%256;


  33. }
复制代码

作者: 电子爱好者life    时间: 2015-6-1 00:51
首先提点建议,函数声明写在主函数之前就可以。
作者: 电子爱好者life    时间: 2015-6-1 00:59
停在while(delay1!=0);这里了
作者: 电子爱好者life    时间: 2015-6-1 01:09
  1. #include<Reg52.h>
  2. unsigned char count=0;
  3. sbit LED = P2^6;
  4. void main()
  5. {
  6.         TMOD=0x01;
  7.         TH0=(65536-50000)/256;
  8.         TL0=(65536-50000)%256;
  9.         EA=1;
  10.         ET0=1;
  11.         TR0=1;
  12.         while(1)
  13.         {
  14.                  ;                          
  15.         }
  16. }
  17. void Timer0()interrupt 1          //中断服务函数
  18. {
  19.         TH0=(65536-50000)/256;
  20.         TL0=(65536-50000)%256;
  21.         count++;
  22.         if(count==80)//取晶振为12MHZ是,80*50=4000MS=4s
  23.         {
  24.                 count=0;
  25.                 LED =~LED;        //实现4S取反一次
  26.         }
  27. }
复制代码


你的int main() 却没有返回值。
作者: fangel    时间: 2015-6-1 14:24
你这是Timer1定时中断,你首先要查Timer1定时器设置正确不,然后再查能否进入中断




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1