51单片机延时函数

发布者:HeavenlyClouds最新更新时间:2015-10-27 来源: eefocus关键字:51单片机  延时函数 手机看文章 扫描二维码
随时随地手机看文章
 C程序中可使用不同类型的变量来进行延时设计。经实验测试,使用unsigned char类型具有比unsigned int更优化的代码,在使用时应该使用unsigned char作为延时变量。以某晶振为12MHz的单片机为例,晶振为12MHz即一个机器周期为1us。
 
一. 500ms延时子程序
程序:
void delay500ms(void)
{
unsigned char i,j,k;
for(i=15;i>0;i--)
for(j=202;j>0;j--)
for(k=81;k>0;k--);
}
计算分析:
程序共有三层循环
一层循环n:R5*2 = 81*2 = 162us DJNZ 2us
二层循环m:R6*(n+3) = 202*165 = 33330us DJNZ 2us + R5赋值 1us = 3us
三层循环: R7*(m+3) = 15*33333 = 499995us DJNZ 2us + R6赋值 1us = 3us
循环外: 5us 子程序调用 2us + 子程序返回 2us + R7赋值 1us = 5us
延时总时间 = 三层循环 + 循环外 = 499995+5 = 500000us =500ms
计算公式:延时时间=[(2*R5+3)*R6+3]*R7+5
 
二. 200ms延时子程序
程序:
void delay200ms(void)
{
unsigned char i,j,k;
for(i=5;i>0;i--)
for(j=132;j>0;j--)
for(k=150;k>0;k--);
}
 
三. 10ms延时子程序
程序:
void delay10ms(void)
{
unsigned char i,j,k;
for(i=5;i>0;i--)
for(j=4;j>0;j--)
for(k=248;k>0;k--);
}
 
四. 1s延时子程序
程序:
void delay1s(void)
{
unsigned char h,i,j,k;
for(h=5;h>0;h--)
for(i=4;i>0;i--)
for(j=116;j>0;j--)
for(k=214;k>0;k--);
}
关于单片机C语言的精确延时,网上很多都是大约给出延时值没有准确那值是多少,也就没有达到精确高的要求,而本函数克服了以上缺点,能够精确计数出要延时值且精确达到1us,本举例所用CPU为STC12C5412系列12倍速的单片机,只要修改一下参数值其它系例单片机也通用,适用范围宽。
共有三条延时函数说明如下:
函数调用分两级:一级是小于10US的延时,二级是大于10US的延时
//====================小于10US的【用1US级延时】====================
//----------微秒级延时---------
for(i=X;i>X;i--) 延时时间=(3+5*X)/12 提示(单位us, X不能大于255)
//================大于10US<小于21.9955Ms的可用【10US级延时函数】===========
void Delay10us(uchar Ms)
{
uchar data i;
for(;Ms>0;Ms--)
for(i=26;i>0;i--);
}
i=[(延时值-1.75)*12/Ms-15]/4
如想延时60US则 i=[(60-1.75)*12/6-15]/4=25.375≈26; 修改i的值=26,再调用上面的【10US级延时函数】Delay10us(6); 则就精确延时60US;
如果想延时64US可以用这二种函数组合来用: Delay10us(6); for(i=9;i>X;i--) 共延时64US。
关键字:51单片机  延时函数 引用地址:51单片机延时函数

上一篇:51单片机中使用ucos ii的优缺点
下一篇:51单片机流水灯C语言源程序

推荐阅读最新更新时间:2024-03-16 14:37

以MCS-51单片机为核心的测控系统软时钟优化设计
随着微电脑的广泛应用,以MCS-51单片机为核心的微机测控系统已随处可见。为满足用户要求,这些系统通常都具有数码显示时钟的功能。由于MCS-51内部包含2个定时计数器,将其中一个定时计数器用于软时钟设计的方法,可以大大节省硬件开销。本文提出了如何提高软时钟的定时精度,以及在软时钟存在的情况下,如何提高以MCS-51单片机为核心的测控系统的设计质量的方法。 一、 MCS-51单片机内部定时计数器的概述 MCS-51单片机内部包含2个定时计数器T0和T1,它们都是16位的加法计数器,既可用于定时,也可用于计数,在用于定时的情况下,计数脉冲由内部提供,因此计数速率固定为CPU振荡频率的1/12;在用于计数的情况下,计数脉冲来自外部,
[单片机]
以MCS-<font color='red'>51单片机</font>为核心的测控系统软时钟优化设计
15-基于51单片机的篮球计时器
具体实现功能: (1)能记录整个赛程的实际比赛时间,计时范围:0~99分钟; (2)可以进行24秒倒计时,倒计时到报警; (3)总时间分为四节,每节时间到报警; (4)能修改每节的比赛时间,初设每节倒计时时间为15分钟。 单片机介绍 51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位
[单片机]
15-基于<font color='red'>51单片机</font>的篮球计时器
基于51单片机的简易电子琴设计
一.系统概述 系统使用的模块有AT89C51单片机+8位共阳数码管+矩阵键盘+小灯+按键+蜂鸣器。 本次设计的电子琴系统以AT89C51单片机为控制核心,使用数码管显示音符,右侧的矩阵键盘可以理解为琴键,按下不同的按键就能显示不同的音符。按下下方的弹奏/停止按键后点击歌曲选择就能进入自动播放模式,矩阵键盘上每个按键都对应一种音调。 二.仿真概述 1.使用数码管显示按下的音符。 2.通过矩阵键盘输入音符,蜂鸣器就会发出对应的音调。 3.按下弹奏/停止按键后,点击歌曲选择,并选择矩阵键盘上的任一按键就能播放指定的音调。 三.程序设计 使用 Keil 51进行程序设计,打开 Proteus 时程序是默认烧录的状态,如果
[单片机]
基于<font color='red'>51单片机</font>的简易电子琴设计
51单片机定时/计数器T0、T1的组成与功能简介
1、 主体结构 1)16位加法 计数器 ,由高8位(THi)和低8位(TLi)SFR组成。 2)在用作计数器时,引脚P3。4(T0)和P3。5(T1)分别是两个计数器的外部脉冲输入端。 3)引脚P3。2(/INT0)和P3。3(/INT1)在位GATE=1时可用作T0、T1的门控信号。 4)SFR-TCON和TMOD控制T0和T1的运行状态和工作方式。 2、 控制寄存器TCON(地址88H) D7~D0:TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 高4位与定时/计数器有关,低4位用于控制外部中断。 TFi-定时/计数器溢出标志位;计数溢出时,硬件自动置1,在中断允许条件下,是向CPU请求中断的
[单片机]
ucos ii的51单片机移植
1. μC/OS-Ⅱ概述 μC/OS-Ⅱ在特定处理器上的移植大部分工作集中在多任务切换的实现上,这部分代码主要用来保存和恢复处理器的现场。但许多操作如读/写寄存器不能用C语言而只能用汇编来实现。 将μC/OS-Ⅱ移植到ARM处理器上,只需要修改与处理器相关的3个文件:OS_CPU.H,OS_CPU_C.C,OS_CPU_A.ASM。 2. OS_CPU.H的移植 1) 数据类型的定义 typedef unsigned char BOOLEAN; typedef unsigned char INT8U; typedef signed char INT8S; typedef unsigned short INT16U;
[单片机]
基于AT89C51单片机实现串行总线芯片测试实验平台的设计
应用串行接口芯片扩展系统时,在初步选择了串行接口的芯片后,为了对芯片的资源更好地了解,开发者一般在系统设计前搭建一个简单的硬件电路并编制相应的软件对其测试,待性能验证后再确定最终的设计方案。本文根据这一需要设计了一个用于串行总线芯片测试的实验平台。该平台以PC机为人机接口、采用单片机产生芯片串行通信时序。应用这一平台可以大大简化芯片使用前的测试过程。这一平台也为单片机串行扩展的初学者提供了快捷的学习工具。本平台目前集成了SPI、One-wire、Microware、I2C四种串行接口,在今后的使用中,可根据需要增加串行接口的种类。 1 串行扩展平台的结构 SPI、One-wire、Microware、I2C是目前单片机应用系统
[单片机]
基于AT89C<font color='red'>51单片机</font>实现串行总线芯片测试实验平台的设计
89c51单片机流水灯操作
要用51单片机实现流水灯操作我想是每个初学者学习单片机,了解嵌入式的第一个动手的小实验吧,今天在重新学习的时候遇到了一点小问题,在这里和大家分享一下。 要想控制流水灯操作其实是用单片机给每个二极管高低电平来控制灯的亮与不亮。 我用的51单片机学习板的二极管的硬件原理图如下图所示 板子上电之后,J2是跳线帽,一般是连接上的,再过来是LED1~LED8共8个发光二极管,然后经过电阻连接到51单片机的8个P1端口上。 电阻的作用是为了限流,是为了达到二极管规定的电压与电流,避免烧坏二极管。 51单片机上电引脚默认是高电平,所以我们通过给P1各个引脚低电平(即逻辑0),电路即导通则指定的二极管变亮(因为二极
[单片机]
89c<font color='red'>51单片机</font>流水灯操作
采用二维模糊控制器和C8051单片机实现室内自然采光系统的设计
1、 引言 从远古的篝火、油灯到蜡烛、白炽灯,再到今天千家万户的荧光灯,人类已经基本适应了人工光源的室内照明环境。但是由于千万年来的环境影响,自然光仍然是人类最习惯、感觉最舒适的光源,自然采光一直受到建筑师和照明设计师的高度重视。当今社会建筑的节能环保需求更对自然采光照明提出了进一步的要求。《建筑采光设计标准》 中的国家技术经济政策指出: 建筑设计要充分利用天然光,创造良好的光环境。 对室内照明自然采光的研究具有重要的意义: (1) 资料表明,照明用电占整个商业建筑能耗的25 - 40% ,而自然采光在特定的情况下可以节省52% 的照明用电,大大节约了能源。 (2) 相关研究表明,人在自然光条件下工作,可以增加满意度和提高工作
[单片机]
采用二维模糊控制器和C80<font color='red'>51单片机</font>实现室内自然采光系统的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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