51单片机延迟程序(汇编语言)解析DLY1S:MOV 35H,#255MOV 36H,#0MOV 37H,#4DLYB:NOPDJNZ 35H,DLYBDJNZ 36H,DLYBDJNZ 37H,DLYBRET在这个程序中36H被赋值为0,那减1循环能实现不?假设采用12M晶振,则整个定时程序定时为
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/02 06:51:07
![51单片机延迟程序(汇编语言)解析DLY1S:MOV 35H,#255MOV 36H,#0MOV 37H,#4DLYB:NOPDJNZ 35H,DLYBDJNZ 36H,DLYBDJNZ 37H,DLYBRET在这个程序中36H被赋值为0,那减1循环能实现不?假设采用12M晶振,则整个定时程序定时为](/uploads/image/z/2679351-15-1.jpg?t=51%E5%8D%95%E7%89%87%E6%9C%BA%E5%BB%B6%E8%BF%9F%E7%A8%8B%E5%BA%8F%EF%BC%88%E6%B1%87%E7%BC%96%E8%AF%AD%E8%A8%80%EF%BC%89%E8%A7%A3%E6%9E%90DLY1S%3AMOV+35H%2C%23255MOV+36H%2C%230MOV+37H%2C%234DLYB%3ANOPDJNZ+35H%2CDLYBDJNZ+36H%2CDLYBDJNZ+37H%2CDLYBRET%E5%9C%A8%E8%BF%99%E4%B8%AA%E7%A8%8B%E5%BA%8F%E4%B8%AD36H%E8%A2%AB%E8%B5%8B%E5%80%BC%E4%B8%BA0%2C%E9%82%A3%E5%87%8F1%E5%BE%AA%E7%8E%AF%E8%83%BD%E5%AE%9E%E7%8E%B0%E4%B8%8D%3F%E5%81%87%E8%AE%BE%E9%87%87%E7%94%A812M%E6%99%B6%E6%8C%AF%2C%E5%88%99%E6%95%B4%E4%B8%AA%E5%AE%9A%E6%97%B6%E7%A8%8B%E5%BA%8F%E5%AE%9A%E6%97%B6%E4%B8%BA)
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