单片机中断问题

本人是单片机的初学者,想求一个最简单的AT89C52的例子,用AT89C52单片机控制一个发光二极管的亮一秒暗一秒.
我是用Keil和proteus联机调试的,下面是我写的一个程序.
程序是通过把T0设为定时器,把T1设为计数器,
T0每1ms触发一次中断,改变P1.1口的电位,而P1.1接计数器T1从而触发T1计数,T1计1000次后中断,改变P2.0端口的电位,点亮或熄灭灯.

ajmp main
org 0003h
ajmp delayT0 ;T0的中断入口
org 001bh
ajmp delayT1 ;T1中断入口
org 0030h
main:
mov sp,#60h
cpl p1.1
mov tmod,#40h
mov tl0,#18h ;T0延时1ms的时间常数
mov th0,#0e0h
setb tr0
mov tl1,#18h
mov th1,0e0h
setb tr1
setb ea
setb et0
setb et1
sjmp $
delayT0:clr tr0
cpl p1.1
mov tl0,#18h
mov th0,#0e0h
setb tr0
ret
delayT1:clr tr1
cpl p2.0
mov tl1,#18h
mov th1,0e0h
setb tr1
ret
end

我用Keil编绎通过了.
是我用Keil和proteus联机调试的时候程序不会进行中断,程序一直都是执行sjmp $ 这条指令,没有执行中断程序.
我在定时器窗口看到了,定时器溢出的时候TF0确实被置位了.不知道是怎么回事.
电路只有一个AT89C52,一个发光二极管,一个电阻和一个电源,P1.0与T1口相接,二极管接P2.0口,另一端通过一个电阻接电源
我全速运行过,也不行.

这两个子程序有点问题

delayT0:clr tr0
cpl p1.1 ---------------->是不是应该是,CPL P1.0 ?
mov tl0,#18h
mov th0,#0e0h
setb tr0
ret ----------------------------->应该是,RETI
delayT1:clr tr1
cpl p2.0
mov tl1,#18h
mov th1,0e0h
setb tr1
ret ----------------------------->应该是,RETI
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜