用t1作为中断写的程序,但运行不了,why?

2019-03-24 19:53发布

想编写一个p1.1输出方波为100ms(t1做中断)的程序,用汇编我调试好了,但是c却没反应!不知道哪里出错了    #include<reg51.h>
 sbit p0=P1^0;
void main()
 {
    TMOD=0X10;
 TH1=0X3C;
 TL1=0XB0;
 EA=1;
 ET1=1;
 TR1=1;
  }
  void int_3() interrupt 3
  {          
    p0=0;
 TH1=0X3C;
 TL1=0XB0;
   }
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
leang521
2019-03-25 12:05

缺少死循环单片机也是在运行的,不过因为MAIN在C中事实上是个函数,因此在函数末尾会进行子程序返回,即RET指令,但是在调用main前并没有入栈,因此RET指令将系统返回至C:0000地址,因此一切又从头开始,定时器被从新赐值,导致定时器永远不会溢出,永远不会中断,仅此而已。

 

中断函数不断对P1^0赐值,即使发生中断,P1^0输出也永远是0

一周热门 更多>