51单片机延迟程序(汇编语言)解析DLY1S:MOV 35H,#255MOV 36H,#0MOV 37H,#4DLYB:NOPDJNZ 35H,DLYBDJNZ 36H,DLYBDJNZ 37H,DLYBRET在这个程序中36H被赋值为0,那减1循环能实现不?假设采用12M晶振,则整个定时程序定时为
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/24 21:38:02
51单片机延迟程序(汇编语言)解析DLY1S:MOV 35H,#255MOV 36H,#0MOV 37H,#4DLYB:NOPDJNZ 35H,DLYBDJNZ 36H,DLYBDJNZ 37H,DLYBRET在这个程序中36H被赋值为0,那减1循环能实现不?假设采用12M晶振,则整个定时程序定时为
51单片机延迟程序(汇编语言)解析
DLY1S:MOV 35H,#255
MOV 36H,#0
MOV 37H,#4
DLYB:NOP
DJNZ 35H,DLYB
DJNZ 36H,DLYB
DJNZ 37H,DLYB
RET
在这个程序中36H被赋值为0,那减1循环能实现不?假设采用12M晶振,则整个定时程序定时为多少?
51单片机延迟程序(汇编语言)解析DLY1S:MOV 35H,#255MOV 36H,#0MOV 37H,#4DLYB:NOPDJNZ 35H,DLYBDJNZ 36H,DLYBDJNZ 37H,DLYBRET在这个程序中36H被赋值为0,那减1循环能实现不?假设采用12M晶振,则整个定时程序定时为
DJNZ指令是先减一再判断结果是不是为0,所以36H赋值0是可以的,标识要循环256次.
延时计算:
12M的晶振换算指令周期为1uS
MDLY1S:MOV 35H,#255 ;2uS
MOV 36H,#0 ;2uS
MOV 37H,#4 ;2uS
DLYB:NOP ;1us
DJNZ 35H,DLYB ;2us,第一次循环为255*(1+2)=765,以
;后为256*(1+2)=768
DJNZ 36H,DLYB ;2us 765+(255*768)+(2*256)=197119
DJNZ 37H,DLYB ;2us 197119+(197122*3)+(2*4)=788493
RET ;2us
所以,从进入函数开始到返回调用地址总的延时时间为:2+2+2+788493+2 = 788501us