单片机中1S延时程序的编写
在单片机延时程序中应考虑所使用晶振的频率,在51系列的单片机中,我们常用的是11.0592MHz和12.0000MHz的晶振,在AVR单片机上常用的有8.000MHz和4.000MH的晶振,而MSP430系列单片机中却采用两个时钟输入。
本文引用地址:https://www.eepw.com.cn/article/201611/316450.htm这里以51单片机为例,介绍单片机延时程序的编写。我们通常采用122.0000MHz的晶振,那么一个机器周期就是1us,我们看下面这个程序(注意程序的注释):
DELAY: MOV R5,#8 ;1个机器周期。1+[1+(1+2*255)*244+2*244]*8+2*8 us
D1:MOV R6,#244 ;1个机器周期。1+(1+2*255)*244+2*244 us
D2: MOV R7,#255 ;1个机器周期。1+2*255 us
DJNZ R7,$ ;2个机器周期。
DJNZ R6,D2 ;2个机器周期。
DJNZ R5,D1 ;2个机器周期。
RET;2个机器周期。
上面这个程序的延时时间为:
1+[1+(1+2*255)*244+2*244]*8+2*8+2 us=1001401us=1.001403us。
当然,此类延时程序也可以采用定时中断进行编写,详细程序请大家自己编写。希望大家能在单片机设计中大步发展!
评论