单片机。用汇编语言编程。 设计一软件延时1s的子程序。设晶振频率为12MHz。

如题所述

delay1000ms:(HT46R65的单片机)(注意不要开启计时中断允许位)
mov a,10000111b (设置频率和记数方式)(上升记数还是下降记数)
mov tmr0c,a (tmr0c 计数器的控制寄存器)
mov a,low(65536-31250) (设置的频率就是1S上升31250)因此是DELAY1S
mov TMR0L,a (计数器的赋予初始值的低位寄存器)
mov a,high(65536-31250)
mov TMR0h,a(计数器的赋予初始值的高位寄存器)
set tmr0c.4 (打开记数)
snz intc0.6 (是否有中断请求标志)(有就跳过)
jmp $-1 (退回一步)
clr tmr0c.4 (关闭记数)
clr intc0.6 (清除中断标志)
ret

参考资料:HT46R65/HT46c65

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-16
不同单片机 指令周期有所不同 下面DJNZ指令3个晶振周期
DELAY1S:
MOV R7,#000H
MOV R6,#00AH
MOV R5,#03EH
LOOP: DJNZ R7,LOOP
NOP
DJNZ R6,LOOP
NOP
DJNZ R5,LOOP
NOP
RET本回答被提问者采纳
相似回答