2、定时器有自己的时钟尘雀携,打开定时器后,一边顺序执行主程序的语句时,一边定时器在计时。当计到设定的值后,需要产生派伏中断,然后暂停主程序语句,转到中断程序中执行的命令。执行完命令后返回到主程序的顺序语句中。然后知道下一次中断来临,再次产生中断。
3、要让其能产生中断,就必须开中断。这就像一个控制开关,不把开关打开,灯怎么会亮。
你的程序,我运行了下,本身就不能进入中断,原敬察因是:IE设置时没有使能T0中断。
------------------------------------------------------------
建议在设置中断的时候,使用类似下面的方法,不会记错:
SETB
ET0
使能T0中断(IE寄存器中的位)
SETB
EA
使能全局告游中断(IE寄存器中的位)
------------------------------------------------------------
还有,你的定时器初始化部分,建议做成子程序,就像这样子:
Timer0_Init:
MOV
TMOD,#11H
MOV
IP,#02H
SETB
ET0
设置中断,使用这种方亮友茄法比较好,不会记错
SETB
EA
SETB
TR0
启动定时器
ret
main:
call
Timer0_Init
初始化T0
MainLoop:
call
DoSomething
主循环
jmp
MainLoop
Good
luck!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)