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单片机常用延时控制子程序
单片机中常用的延时控制方式有两种。一种是采用编程的方式达到延时的目的,另一种方法则是通过单片机中的两个定时器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 单片机 ,有8个流水灯,每个之间延迟1秒,这个延迟用c 程序 编写怎么写?1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。2、#include"reg51.h"首先写出单片机的头函数。3、#include"int...
单片机 的 延时 , 延时 时间长度是怎么算的?最好有一个例子,来...单片机的延时可以使用定时器和循环来实现。以下是两种常见的方式:1.使用定时器延时时间长度取决于定时器的时钟源和预分频器的设置。例如,如果使用...
单片机 如何把定时器 延时 写成delay 延时 那样在主 程序 里随便调用?你可以在调用函数时启动定时器,并通过中断服务函数判断中断次数是否达到,达到的话就置一个标志位,然后主函数中while判断,不过这太浪费系统资源了,有什么用...
怎么用按键调整 单片机 的 延时 时间-ZOL问答延时函数的时间用按键调节就行了这个好说你好!这个要看你总体的实现功能要求...用不同的占空比控制LED的亮度,手里没有ATtiny2313的,有一个51的程序,你参考下...
单片机延时 函数延时时间计算delay(uinti)?voiddelay(unsignedintx)//延时xms{unsignedinti,j;for(i=x;i>0;i--)for(j=110;j>0;j--);...
用汇编怎么写51 单片机 的 延时程序 ?DEL1S:MOVR7,#10D1:MOVR6,#200D2:MOVR5,#250DJNZR5,$DJNZR6,D2DJNZR7,D1RET说明:1、如果不使用R5、R6、R7...
单片机 秒和分钟的进位是如何实现的?在单片机中,秒和分钟的进位通常通过计时器中断来实现。计时器会以固定的时间间隔触发中断,比如每秒触发一次。当计时器中断触发时,单片机会执行中断服务程序,...
单片机 的时间片轮转是什么意思,怎么实现?1是指CPU分配给每个任务固定的执行时间,时间到不管任务有没有执行完成都要退出任务,这种是操作系统的思想,需要保护现场。2是指CPU分配给每个任务完整执行一...
单片机 delay函数延迟时间计算,delay(80);为什么是600us左右?只有汇编语言才能得到精确的时间。C编译成汇编时,不同的编译器,不同的编译策略都会使最终的程序不一样。如果短时间的延时,可以利用_nop_()来控制,如果是长...
keil软件调试 延时 时间的详细步骤?mS级带参数延时子程序voiddelay_ms(uintz)//延时子程序{uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}上面这个程...