实例讲解,51单片机常用延时控制子程序
单片机中常用的延时控制方式有两种。一种是采用编程的方式达到延时的目的,另一种方法则是通过单片机中的两个定时器T0和T1进行计时达到延时的目的。
本例通过具体实例说明单片机的两种延时控制方式在实际中的应用。
采用编程方式延时控制
1.问题的提出通过编程使单片机分别产生约10ms和约0.5s的延时。单片机的晶振频率为12MHz。因为单片机的晶振频率为12MHz,所以单片机1个机器周期的时间为1μs。
2.控制程序(1)10ms延时程序。
此程序的实际延时时间为:1+(1+2×250+2)×20=10.061ms
(2)0.5s延时程序。
此程序实际延时时间为:251×66×5×6+66×5×2+5×2+1×2+5×6+66×5×6=499662μs=0.49662s。
采用定时器延时控制
1.问题的提出
利用单片机定时器使之产生10h的延时控制。
2.控制程序
说明:程序中用“;程序开始******”符号表示程序开始,用“;程序结束******”符号表示程序结束,用“;-------------”表示将程序中各阶段程序分隔开,以便程序的条理性和直观性,这些符号均可以同时输入到Keil μVision3软件中进行编译。以下各例程序均同。
51单片机利用for语句嵌套实现简单的延时1s功能解说和视频教程
51单片机利用for语句嵌套实现简单的延时1s功能
名词解释:
(1)时钟周期。定义为时钟频率的倒数,本例使用12MHz的时钟频率,它的时钟周期大约就是1/12μs。
(2)机器周期。单片机的基本操作周期,STC89C51系列的单片机来说,一个机器周期由12个时钟周期组成,也就是1μs。
(3)指令周期。指的是单片机执行一条指令需要的时间,一个指令周期需要1~4个机器周期。一个for循环需要8个指令周期。
假设单片机采用了12MHz的时钟频率,利用for语句嵌套实现简单的延时1s功能。
unsigned int i;
Unsigned char j; //定义两个循环变量i、j
for (i = 1000; i > 0; i--) //外层循环1000次
for (j = 124; j > 0; j--) ; //内层循环124次
内层循环代码含义:
在12MHz的时钟频率下,for循环124次所消耗的时间ntime是:
ntime= 124次 × 8个指令周期 × 1μs = 992μs
也就是内循环延时大概为1ms。
外层循环代码含义:
外层循环又将内层循环重复1000次:
for (i = 1000; i > 0; i--) //外层循环1000次
那么,全部执行完成花费的总时间T大约是:
T = 1000 × ( ntime + 8 × 1 ) = 1000 ms=1s,基本上达到延时1s的功能。这个延时程序中外层循环的变量是多少,整个for嵌套语句就延时大约多少毫秒,在以后的应用当中,会经常用到这个程序进行不需要精确时间的延时。
比如,要实现2s的延时,就把i=1000修改为i=2000就可以了。
视频教程如下:
视频教程
相关问答
10 ms 的 延时 程序?若采用12M晶振则51单片机如89C51的一个机器周期为12个时钟周期,即1uSDJNZ指令为两个机器周期,你可以自己查DL10MS:MOVR6,#0C8H;循环200次,200*50uS...
delay 延时 函数计算公式?DelayMS(300)表示希望系统delay300毫秒,系统有自己的RTC,根据硬件的晶振(Hz)可以计算出一次振荡大约多少耗时,这样就能大约算出1ms需要多少次振荡;简单比喻...
C语言delay 延时 时间怎么算,说的详细点谢谢?DelayMS(300)表示希望系统delay300毫秒,系统有自己的RTC,根据硬件的晶振(Hz)可以计算出一次振荡大约多少耗时,这样就能大约算出1ms需要多少次振荡;简单比喻...
单片机延时 函数怎么写? - 懂得for(j=0;j<125;j++)这是一个1ms基准延时程序,i=500就延时了500ms,具体的和机器内核有关,把这个程序记住就行了单片机延时程序就是空循环,循环的次...
单片机延时 函数怎么写? - 139****5429 的回答 - 懂得for(j=0;j<125;j++)这是一个1ms基准延时程序,i=500就延时了500ms,具体的和机器内核有关,把这个程序记住就行了单片机延时程序就是空循环,循环的次...
用 单片机 汇编一个100 ms 的 延时 程序?#249;2*100DLY1:DJNZR2,DLY1;249*2*100MOVR2,#248;2*100DLY2:DJNZR2,DLY2;248*2*100DJN...
51单片机 的几种精确 延时 ?51单片机精确延时有两个办法:1、采用定时器来延时。2、用汇编语言来编制延时程序。51单片机精确延时有两个办法:1、采用定时器来延时。2、用汇编语言来编...
在 51单片机 中_nop_() 延时 多长时间?相当于汇编里的nop伪指令,表示的是空操作,可是实现延时,表示执行一条没有什么意义的指令,例如MOVr0,r0。因为是执行“指令”,所以花的时间是一个指令周...
下列 51单片机延时 程序中的#250,这个250是肿么来的?哪位给详...下列51单片机延时程序中的#250,这个250是肿么来的?哪位给详细解释下?举报显卡小影霸3人讨论2352次围观关注问题写回答讨论回答(3)lb3406DELAY:MOVR7.....
单片机 定时器 延时 计算方法?51系列单片机的话:先算出来你的定时器+1的单位时间Tu,你需要定时的时间是Tc(注意Tc不能超过定时器的最大定时时间),你的定时器的位数是n,那么你的定时器初...