[求助] 中断无法使用全局变量

DWCTSHAO   2016-10-8 14:09 楼主
  1. unsigned int  AD=500;
  2. /*定时器初始化*/
  3. void init()
  4. {
  5.         TMOD=0x01;
  6.         TH0=(65536-60000)/256;
  7.         TL0=(65536-60000)%256;
  8.         EA=1;
  9.         ET0=1
  10.         TR0=1;
  11. }
  12. void main()
  13. {
  14.         init();
  15.         while(1)
  16.         {
  17.                 AD=ReadAD1();//读取AD数据
  18.         }       
  19. }         
  20. void time() interrupt 1
  21. {       
  22.         TH0=(65536-AD)/256;  //此处无法使用
  23.         TL0=(65536-AD)%256;
  24.         CLK1=~CLK1;
  25. }


回复评论 (3)

你的程序的意思是根据读取的AD值控制脉冲频率是吧,不存在什么中断不能使用全局变量的问题,你的意思应该是程序运行没有效果,要么是AD读取没有读正确一直是一个固定的值,要么是定时器初始化错了,不过貌似定时器没错,你没说清楚爱莫能助啊
亚里士缺德
点赞  2016-10-8 14:26
TH0=~AD>>8;
点赞  2016-10-8 14:51
先看能不能进入定时器中断,不能进入就检查初始化,和使能操作。如果能进,就看AD的值是多少,和主循环中的值有什么区别。中断无法使用全局变量,是错误的。
点赞  2016-10-8 20:15
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复