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就可以了。
视频教程如下:
视频教程
单片机使用循环来实现延时和定时器延时的区别是什么
循环延时是一种简单的实现方式,但由于资源占用和精确度的限制。我这里有一套嵌入式入门教程,不仅包含了详细的视频 讲解,项目实战。如果你渴望学习嵌入式,不妨点个关注,给个评论222,私信22,我在后台发给你。
资源占用情况:循环延时: 在使用循环进行延时时,程序将会占用 CPU 资源。CPU 必须不断地执行循环中的指令,因此在延时期间,CPU 将无法执行其他任务。定时器延时: 使用定时器进行延时时,定时器通常是硬件实现,不占用 CPU 资源。CPU 在延时期间可以执行其他任务,而不受延时的影响。
延时精确度:循环延时: 循环延时的精确度较低,因为它依赖于执行循环中指令的速度。在不同的环境和条件下,循环的执行速度可能会有变化,从而导致延时时间不稳定。定时器延时: 定时器延时的精确度较高。定时器是通过硬件时钟实现的,它提供了一个准确的计时基准。因此,使用定时器进行延时可以更可靠地控制延时的准确性。
总的来说,通常在需要较低延时精确度和对系统资源要求不严格的情况下使用。而定时器延时更适合需要较高延时精确度和同时需要充分利用 CPU 资源的场景。在实际应用中,选择合适的延时方式取决于具体的要求和系统约束。
相关问答
for循环 编写 延时 函数的用法?步骤如下所示:1、在编译器下建立一个新项目,也可以利用已有项目。此过程中需要注意,单片机晶振的选择,因为for循环里指令的执行时间和晶振有直接关系,本例...1...
单片机延时 函数怎么写? - 139****5429 的回答 - 懂得for(j=0;j<125;j++)这是一个1ms基准延时程序,i=500就延时了500ms,具体的和机器内核有关,把这个程序记住就行了单片机延时程序就是空循环,循环的次...
单片机 编程里控制LED灯一闪一灭的 延时 语句工作原理是什么?单片机每执行一天机器码/语句,都是需要时间的。有机器周期,指令周期,时钟周期之分。那么单片机要延时就很简单了。就是做一些无关紧要的指令来达到消耗时间延...
C51 单片机 程序怎样控制LED灯亮灭时间?在C51单片机中,可以通过编程来控制LED灯的亮灭时间。以下是一个简单的示例程序,用于控制LED灯的亮灭时间:c复制#include在C51单片机中,可以通过编程来控制LED...
单片机 中一个 循环 步多长?在单片机中,一个循环步的长度是由程序中的指令数量决定的。每一个指令都需要一定的时间来执行,因此循环步的长度也会受到指令执行时间的影响。循环步的长度可...
单片机 节日彩灯课程设计,从两边向中间点亮依次 循环 不止。亮灭时间为0.25S,用一个开关控制彩灯的工作?/*程序详细功能介绍:*利用取表的方法,使端口P1做单一灯的变化:左移2次,右移2次,闪烁2次(延时的时间0.2秒)。*在用表格进行程序设计的时候,要用以下的...OR...
单片机 delay函数延迟时间计算,delay(80);为什么是600us左右?只有汇编语言才能得到精确的时间。C编译成汇编时,不同的编译器,不同的编译策略都会使最终的程序不一样。如果短时间的延时,可以利用_nop_()来控制,如果是长...
求 单片机 89C52编程要求是,P1口的四个LED灯 循环 点亮,点亮时间为1秒,用定时计数器实现 延时 1秒的程序?没分的话就不答具体的了,你随便找本书都有模块,你要是P1口接LED再接限流电阻,最后把所有电阻都连在5V电压的话,那就先给11111110给P1,用RR来循环,再写一个...
单片机延时 程序的作用?这个原因还是蛮多的,分同的情况,单片机的处理速度是很快的,有的时候为了让我们便于观察需要加入延时,例如一个指示灯的亮灭,如果不加入延时是看不出来的,再...
单片机 初学者问题汇编语言编制一个 循环 闪烁的?MOVA,#7FH;A=01111111,有一个低电平LOP1:MOVR2,#10LOP2:MOVP1,A;输出一个低电平,有一个LED发光CA...