实例讲解,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就可以了。
视频教程如下:
视频教程
相关问答
51单片机 如何延迟到250纳秒?对于那些老型号51单片机,无论如何也搞不出来250nS程序延迟,因为它们最快的指令也需要1微秒。现在的主流51单片机都提高了主频,并且采用了流水线结构,所以,...
为何我的 51单片机 蜂鸣器 程序 需要加 延时 才响呢?-ZOL问答for(ii=0;ii<2;ii++)//循环的次数决定蜂鸣时间的长短,延时A延时B配合决定声调{SET_BEEP;//高电平delay_ms(220);//延时ACLR_BEE...
51单片机延时 函数的作用?51单片机C语言定义延时函数主要通过无意义指令的执行来达到延时的目的。C程序中可使用不同类型的变量来进行延时设计。经实验测试,使用unsignedchar类型具有...
怎么用按键调整 单片机 的 延时 时间-ZOL问答延时函数的时间用按键调节就行了这个好说你好!这个要看你总体的实现功能要求...用不同的占空比控制LED的亮度,手里没有ATtiny2313的,有一个51的程序,你参考下...
51单片机 的几种精确 延时 ?51单片机精确延时有两个办法:1、采用定时器来延时。2、用汇编语言来编制延时程序。51单片机精确延时有两个办法:1、采用定时器来延时。2、用汇编语言来编...
用 单片机 汇编一个100ms的 延时程序 ?#249;2*100DLY1:DJNZR2,DLY1;249*2*100MOVR2,#248;2*100DLY2:DJNZR2,DLY2;248*2*100DJN...
单片机 的 延时 , 延时 时间长度是怎么算的?最好有一个例子,来...单片机的延时可以使用定时器和循环来实现。以下是两种常见的方式:1.使用定时器延时时间长度取决于定时器的时钟源和预分频器的设置。例如,如果使用...
关于 51单片机 里 延时 函数时间的计算?voiddelay(unsignedintx)//延时xms{unsignedinti,j;for(i=x;i>0;i--)for(j=110;j>0;j--);}延时1m...
单片机 微秒 延时 怎么设置?1.可以用_nop_()函数来实现微秒级的延时。2._nop_();//直接当成一条语句使用,产生一条NOP指令NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶...
单片机 延迟1秒怎么设置?单片机延迟1秒可以设置定时器,在定时器中断函数里进行计数,具体实现取决于单片机型号和使用的开发环境。因为单片机需要精确计时,通过定时器和中断可以实现更...