单片机·延时程序小结

发布者:古通闲人最新更新时间:2012-08-24 来源: 51hei关键字:单片机  延时程序  机器周期 手机看文章 扫描二维码
随时随地手机看文章

在单片机实验中,有一个很重要也是很基本的子程序必须要求我们掌握,那就是延时程序。下面我凭记忆来讲解延时程序。

课本上讲,1个机器周期=6个状态周期=12个时钟周期,而这个时钟周期与晶振频率有关。我们接下来要上的实验基本都是以12MHz的晶振。12M的频率,得其周期为1/12乘10的-6方s,那么1个机器周期就是它的12倍,即1us,而一般语句需要2个机器周期,例如

MOV R6,#20

DNJZ R6,$

每一次执行时,每一个过程就需要2个机器周期,为1us乘2。.同样C语言中for循环语句没执行一次也是2个机器周期,即2us。下面我会以每个语句执行一次用时的2us为基本单位,不会再细化了。

汇编语言最基本延时:

        MOV R6,#20

D1:MOV R7,#248

        DNJZ R7,$//循环248次,共用248X2us,

        DNJZ R6,D1

我开始也是搞不懂怎么算它到底延时多少,现在给大家写它表达式:

我觉得应该从最后往前算,在MOR R7,#248执行一次前提下,用时1X2us,然后循环减248,用时248X2us,故共用时[2+2X248]us。

然而又由于DNJZ R6,D1,上面的过程又循环20次,故上面的循环最终用时20X[2+2X248]us。

接着注意到单纯DNJZ R6,D1会用时20X2=40us。

最后注意过执行唯一一次的  MOV R6,#20会用时1X2us。

所有,最终表达式为:1X2us+20X[2+2X248]us+20X2=10002us=10ms=0.01s。

 

同理,用c51编的延时程序要了解它必须也要写出它的表达式,下面的C51延时程序可以试着自己写出表达式:

void delay02s(void)
{
unsigned char i,j,k;
for(i=20;i>0;i--)
for(j=20;j>0;j--)
for(k=248;k>0;k--);
}

我还是把表达式写在这,[(248X2+2)X20+2]X20=199240=199.24ms=0.2s

再给一个我验证过的程序,这是个比较典型和基本的延时程序应用例子:

#include
sbit L1=P0^0;
void delay02s(void)
{
unsigned char i,j,k;
for(i=20;i>0;i--)
for(j=20;j>0;j--)
for(k=248;k>0;k--);
}
void main(void)
{
while(1)
{
L1=0;
delay02s();
L1=1;
delay02s();
}
}

能看出它的功能么?他就是让一个灯不停的闪啊闪,亮个0.2s,又熄个0.2s,如此反复。

关键字:单片机  延时程序  机器周期 引用地址:单片机·延时程序小结

上一篇:mcs-51单片机 扫描矩阵键盘程序
下一篇:51单片机多字节的除法

推荐阅读最新更新时间:2024-03-16 13:06

一种单片机虚拟实验室的建立方法
   0 引 言   单片机的学习是一个实践性很强的过程,目前的单片机实验室基本采用硬件仿真设备搭建,受资金和场地的限制,单片机实验室配置的灵活性和完整性受到一定的限制。针对这些问题,在此提出一种建立基于个人PC和各种软件的单片机个人虚拟实验室方案。所谓“虚拟实验室”,就是将计算机上的各种虚拟仪器,按实验要求和设计原理,虚拟出与现实相同的实验系统,进而在这个系统上完成整个实验。与传统实验模式相比,虚拟实验具有比较明显的优势,例如,涉及的实验内容全面,硬件投入少,学生可自行实验,实验过程中损耗小,与工程实践最为接近等。一般的虚拟实验室仅包含单片机系统的调试,本文在此基础上又加入了与上位机的联合调试。   在此,以使用VB通过RS
[单片机]
51单片机串口问题
51单片机的串口,是个全双工的串口,发送数据的同时,还可以接收数据。 当串行发送完毕后,将在标志位 TI 置 1,同样,当收到了数据后,也会在 RI 置 1。 无论 RI 或 TI 出现了 1,只要串口中断处于开放状态,单片机都会进入串口中断处理程序。 在中断程序中,要区分出来究竟是发送引起的中断,还是接收引起的中断,然后分别进行处理。 看到过一些书籍和文章,在串口收、发数据的处理方法上,很多人都有不妥之处。 接收数据时,基本上都是使用 中断方式 ,这是正确合理的。 即:每当收到一个新数据,就在中断函数中,把 RI 清零,并用一个变量,通知主函数,收到了新数据。 发送数据时,很多的程序都是使用的 查询方式 ,就是执行 while(T
[单片机]
飞思卡尔推新款8位车用MCU
飞思卡尔(Freescale)推出了专为入门级仪表板及暖气、通风与空调控制(Heating,Ventilation,and Air Conditioning,HVAC)所设计的S08微控制器系列。新款的8位S08LG32微控制器内建液晶屏幕(LCD)硬件驱动电路,能够为新兴汽车市场中(如中国和印度)广受欢迎的平价车款提供超值的LCD模块应用解决方案。 该微控制器可用在入门车款当中,也适用于二轮/三轮车辆,包括摩托车与轻型机车。目前S08LG32系列涵盖五款车用的5伏特微控制器,具备多种闪存容量(最高32KB)以及从48到80接脚的封装选项。芯片内含的LCD硬件驱动电路可支持高达296个节点区段的显示(8×37或4×41的LCD组
[单片机]
51单片机-函数封装
1.简洁代码 单片机程序阅读一般都是先从主函数开始,上一讲的程序写法在主函数中显得不简洁,影响人阅读代码的效率。有时我们只需要知道一条语句代表什么意思即可,所以我们把延时部分封装为一个函数,在主函数里调用函数名表示此处语句延时1秒,这样可读性就强的多,也简洁地多,读者也可以先了解一下《手把手教你学51单片机》文档中的4.6节先。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #include reg52.h sbit LED2 = P0^0; sbit ADDR2 = P1^2; sb
[单片机]
51<font color='red'>单片机</font>-函数封装
PC机与单片机串行通信中实现命令批处理
    摘要: 介绍PC机与MCS-51单片机通信批处理命令的实现思想、方法、通信协议和C51程序平台。为PC机与单片机间串行通信程序设计提供一种方法上的新思路。     关键词: 批处理 MCS-51单片机 通信协议 在PC机与MCS-51单片机之间进行串行通信时,基本是一对一的,即用PC机向单片机每发1条命令,就等待单片机的1条返回信息。这样可能把大量时间浪费在PC机与单片机的通信过程中了。为此笔者经过实践,设计出可以批处理执行PC机发给单片机的命令,就像DOS操作系统中的批处理命令一样,可连续批处理信息,结果当然提高了系统速度。文中提供了部分平台式C51软件源代码,以供大家参考。 1 通信协议
[工业控制]
芯科科技推出新的8位MCU系列产品,扩展其强大的MCU平台
中国,北京 - 2023 年 11 月 14 日 – 致力于以安全、智能无线连接技术,建立更互联世界的全球领导厂商Silicon Labs(亦称“芯科科技”),今日宣布推出新的8位微控制器(MCU)系列产品,该系列MCU针对价格和性能进行了优化,进一步扩展了芯科科技强大的MCU开发平台。 这些新的8位MCU与PG2x 32位MCU产品系列共享同一个开发平台,即芯科科技的Simplicity Studio平台,该平台包含编译器、集成开发环境和配置工具等所有必需的工具。 “在当今世界,随着物联网(IoT)设备的不断扩展,MCU在嵌入式计算中发挥着至关重要的作用。”芯科科技无线产品营销高级总监Dhiraj Sog
[嵌入式]
芯科科技推出新的8位<font color='red'>MCU</font>系列产品,扩展其强大的<font color='red'>MCU</font>平台
STC15单片机外部中断仅上升沿触发的方法
STC15系列单片机的外部中断0(INT0)和外部中断1(INT1)的触发有两种方式,上升沿和下降沿均可触发方式和仅下降沿触发方式。在实际应用中,有时候需要上升沿触发。这时有两种方案可以解决。 1.将触发方式设置成仅下降沿触发。当外部电路产生一个上升沿时,通过硬件电路加一个三极管进行反向变成下降沿。 2.这种方法不需要改变硬件电路。将触发方式设置成上升沿和下降沿均可触发方式。外部中断产生一个上升沿时,进入中断服务函数,这时在中断服务函数里做进一步处理,检测当前INT0的电平状态。如果是高电平,则判断为上升沿。如果是低电平,则判断为是下降沿。 注意(很重要!): 进入中断服务函数后,一定要延时几个毫秒再去做电平检测。因为不管是
[单片机]
怎样研发一个以80C51单片机为核心的压力测量控制系统?
1 引言 目前我国发展煤炭生产机械化发展迅速。综采设备的应用,是提高效率、改善安全状况的措施。 影响开机率的一个主要因素是支架对工作面的顶板控制的好坏,因此,对综采工作面进行矿压监测与控制是很有必要的。要做到这一点,首先需要对井下工作面的液压支架的实际工作状况进行监测,通过对检测数据处理、分析,评定其效果,并采取相应措施,以提高开机率、提高产量。本文以监测综采液压支架的压力为研究内容,开发了一套基于单片机的压力测量控制系统。 2 压力测量控制系统功能设计 压力测量控制系统用于监测支架压力, 每台测量控制系统配有四只传感器, 可分别通过高压油管连接支架的立柱、平衡千斤顶, 前探梁千斤顶的油压腔。压力测量控制系统接收到通讯测量控制
[单片机]
怎样研发一个以80C51<font color='red'>单片机</font>为核心的压力测量控制系统?
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved