请问这段单片机汇编语言程序(关于定时器延时)是什么意思

这应该是一段延时程序,希望懂的人给我介绍一下这个定时器吧,我不会用,
我只会DJNZ的延时程序,这个不懂,希望可以教一下我

DELAY:MOV R3,#14H
MOV TMOD,#10H
MOV TH1,#3CH
MOV TL1,#0B0H
SETB TR1
LP1: JBC TF1,LP2
SJMP LP1
LP2 :MOV TH1,#3CH
MOV TL1,#0B0H
DJNZ R3,LP1
RET

DELAY:MOV R3,#14H ; 循环20次 汇编语言定时器赋初方法
MOV TMOD,#10H ; 定时器1工作于模式1(16位定时器)
MOV TH1, #HIGH NOT 50000 ; 赋初值,50毫秒溢出一次
MOV TL1,#LOW NOT 50000 ; 晶振 12 MHz 为 50000 uS
SETB TR1 ; 启动定时器1
LP1: JBC TF1,LP2 ; 溢出位为1,则清0后转移到LP2
SJMP LP1 ; 否则等待TF1置1
LP2 :MOV TH1, #HIGH NOT 50000 ; 重新赋初值 这样比较 直观
MOV TL1, #LOW NOT 50000 ; 1 就是 1 uS ,1毫秒=1000 uS
DJNZ R3,LP1 ;20次循环完成则退出,否则转LP1
RET追问

真心谢谢您的帮助。但是我只能选一个人,谢谢您了

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-05-29
DELAY:MOV R3,#14H ;循环20次
MOV TMOD,#10H ;定时器1工作于模式1(16位定时器)
MOV TH1,#3CH ;赋初值,50毫秒溢出一次
MOV TL1,#0B0H
SETB TR1 ;启动定时器1
LP1: JBC TF1,LP2 ;溢出位为1,则清0后转移到LP2
SJMP LP1 ;否则等待TF1置1
LP2 :MOV TH1,#3CH ;重新赋初值
MOV TL1,#0B0H
DJNZ R3,LP1 ;20次循环完成则退出,否则转LP1
RET
;综述:以上共延时1秒。追问

能不能用乘法式子帮我计算这个一秒是怎么来的,我理解不了

追答

定时器溢出是50毫秒一次,共溢出了20次(R3=14H=20)
所以T=20*50=1000毫秒=1秒

本回答被提问者采纳