已知fosc = 12MHz,试用汇编语言编写延时2s子程序

51单片机

第1个回答  推荐于2018-05-07
ORG 0000H
LJMP MAIN
ORG 000BH
T0MS EQU NOT 50000 ; 50 mS 晶振 12.000 MHz
PJSBZ EQU 20H
PJSBZY EQU 21H
PST0: MOV TL0, #LOW T0MS ; T0 中断
MOV TH0, #HIGH T0MS
SETB PJSBZ ; 50 mS 标志
DJNZ R6, PST02
MOV R6, #40 ; 50 mS * 40 = 2 S
SETB PJSBZY ; 2 S 标志
; 这里可以处理 2 S 事件
PST02: RETI

MAIN: MOV TMOD, #01H
MOV IE, #82H ; 开 T0 中断
MOV SP, #30H
MOV TL0, #LOW T0MS ; TO 50MS 中断 计时 0
MOV TH0, #HIGH T0MS
SETB TR0
MOV R6, #40 ; 50 mS * 40 = 2 S
MAIN2: JNB PJSBZY, MAIN2 ; 2S
CLR PJSBZY
; 这里也可以处理 2 S 事件
JMP MAIN2
END本回答被网友采纳
第2个回答  2013-01-26
实际0.100005s
delay01s:
MOV R1,#200
loop01s:
MOV R0,#249
DJNZ R0,$
DJNZ R1,loop01s
RET

实际1.000074s
delay1s:
MOV R0,#10
loop1s:
和ACALL delay01s <BR / DJNZ R0,loop1s
RET

实际60.004568s
delay1m:
MOV R0,#60
loop1m:
ACALL delay1s BR /> DJNZ R0,loop1m
RET
相似回答