51单片机的定时器设计。 汇编语言

P1.7驱动LED亮1秒灭1秒三说,Fosc=6MHZ

老师给的简单程序:
T0_INT: MOV TL0, #__
MOV TH0, #__

DJNZ R7, NEXT

CPL P1.7

MOV R7 #14

NEXT : RETI
求解释此程序为什么后赋值以及运行流程。
起初R7寄存器还没有赋值时就R7-1这样到下面CPL取反,然后赋值,然后会循环吗?循环了那不就是取反赋值,然后R7-1 不等于0 又取反赋值死循环?怎么跳得出去?不解
89c51单片机定时器控制,没人来么。

不知你们老师是怎么想的,R7不事先赋值会造成程序启动状态不定,有可能延迟反应。MOV R7,#14不能准确定时1秒。也许是MOV R7,#14H,你贪污了"H"。
假定是14H这种种情况:
T0_INT: MOV TL0, #58H;T0定时时间50毫秒
MOV TH0, #9EH
DJNZ R7, NEXT;没到1秒,退出中断,这里是退出,没有循环
CPL P1.7;到了1秒,改换输出状态
MOV R7 #14;准备下1秒延时参数
NEXT : RETI ;中断返回
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-04-14
关注这个问题
第2个回答  2015-04-14
我指点的,你先按想要的。
相似回答