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就可以了。 视频教程如下: |
|
来自: 昵称11935121 > 《未命名》