怎样计算软件延时时间?
时间:10-02
整理:3721RD
点击:
C8051F021 晶振用 11.0592MHz
延时子程序
DELAY : MOV R7,#10H
DELAY1: MOV R6,#0FFH
DJNZ R6,$
DJNZ R7,DELAY1
RET
这个子程序延时大概多少?如果能告诉我方法,更感激不过了!
延时子程序
DELAY : MOV R7,#10H
DELAY1: MOV R6,#0FFH
DJNZ R6,$
DJNZ R7,DELAY1
RET
这个子程序延时大概多少?如果能告诉我方法,更感激不过了!
教你怎么算,假设晶振是12MHz,经单片机12分频后,是1MHz,即单片机运行一个机器周期的时间是1us.
执行 MOV R7,A 指令,一次要1个机器周期,你让它循环几次,就乘以几倍
MOV R6,#0FFH 这个也是每次1个机器周期
DJNZ R6,$ 每次2个机器周期
DJNZ R7,DELAY1 每次2个机器周期
RET 每次2个机器周期
计算出总的机器周期,乘以1us,就是延时时间了.当然,你的是11.0592Mhz,别算错了.
楼上正解。哈哈
斑竹的对!也是以石英晶体为12MHz为例子,因此,1个机器周期为1微秒
机器周期 微秒
MOV R6,#20 2个机器周期 2
D1: MOV R7,#248 2个机器周期 2 2+2×248=498 20×
DJNZ R7,$ 2个机器周期 2×248 498
DJNZ R6,D1 2个机器周期 2×20=40 10002
因此,上面的延时程序时间为10.002ms。
由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时,延时10ms,以此为基本的计时单位。如本实验要求0.2秒=200ms,10ms×R5=200ms,则R5=20, 这样计算就OK啦!不知道对不呢!:lol!我才学单片机一个星期!:L!还要大家多点指教呢!
楼上正解顶