51单片机精确延时程序(晶振12MHz,一个机器周期1us.)
几个精确延时程序:在精确延时的计算当中,最容易让人忽略的是计算循环外的那部分延时,
在对时间要求不高的场合,这部分对程序不会造成影响.
一. 500ms延时子程序程序:.(晶振12MHz,一个机器周期1us.)
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--);
}
void delay1s(void)//12M晶振,延时999999.00us
{
unsigned char i,j,k;
for(i=46;i>0;i--)
for(j=152;j>0;j--)
for(k=70;k>0;k--);
}
关键字:51单片机 延时程序 部分延时
引用地址:
51单片机精确延时程序
推荐阅读最新更新时间:2024-03-16 13:25
基于AT89C51单片机实现串行总线芯片测试实验平台的设计
应用串行接口芯片扩展系统时,在初步选择了串行接口的芯片后,为了对芯片的资源更好地了解,开发者一般在系统设计前搭建一个简单的硬件电路并编制相应的软件对其测试,待性能验证后再确定最终的设计方案。本文根据这一需要设计了一个用于串行总线芯片测试的实验平台。该平台以PC机为人机接口、采用单片机产生芯片串行通信时序。应用这一平台可以大大简化芯片使用前的测试过程。这一平台也为单片机串行扩展的初学者提供了快捷的学习工具。本平台目前集成了SPI、One-wire、Microware、I2C四种串行接口,在今后的使用中,可根据需要增加串行接口的种类。 1 串行扩展平台的结构 SPI、One-wire、Microware、I2C是目前单片机应用系统
[单片机]
51单片机程序转AVR的方法
将 C51 向 ICCAVR的转换进行一次总结 1、头文件 对C51中定义寄存器的头文件如 reg51.h at89x51.h等替换成相应的 AVR头文件 如 io8515.h io2313.h等 2、中断处理函数 在 C51 中以 interrupt 关键字来说明某一个函数为中断处理函数 在 ICCVAR 中可采用#pragma interrupt_handler预处理命令在程序开始处声明 具体用法如下: #pragma interrupt_handler 中断处理函数名 中断向量号 注意 对原 C51 源程序中的 interrupt 和 using关键字应当删除 3 、对 C51 中的 bit 和 sbit 数据类型
[单片机]
51单片机实验3:led流水灯
开发板led模块电路图如下: 循环左/右移函数头文件为 intrins.h #include reg52.h #include intrins.h #define uc unsigned char void delay(uc n) { uc i,j; for(i=1;i =n;i++) for(j=110;j =1;j--); } void main() { P2=0xFE; while(1) { delay(200); p2=_crol_(P2,1); delay(200); } }
[单片机]
51单片机仿真芯片调试
实验环境 :Keil软件,版本:C51 V9.54 STC-ISP综合下载软件,版本:V6.88 仿真芯片 :IAP15W4K58S4 51单片机在线仿真环境搭建 第一步:将STC单片机的头文件以及仿真驱动文件添加到Keil软件中,单击准备添加; 添加STC单片机仿真文件 第二步:选择Keil软件的安装位置,我们绝大部分人安装了开发STM32的keil软件,这里记得选择添加到 51单片机 开发环境文件夹,然后点击“确定”。 选择安装目录 添加好后会弹出提示添加成功对话框 添加成功对话框 第三步:打开Keil软件新建工程,查看是否添加成功,新建一个工程可以看到有 STC MCU Database 有STC单片机
[单片机]
出租车计价器的项目设计
最近接到一个项目,是位一款出租车计价器设计一套软硬件系统 我用51单片机设计了一个方案,效果还不错,欢迎大家共同留言学习,讨论 废话不多说,先上实物图 AD设计原理图 出租车计价器元件清单 元件名称 单位(只) 型号 参数 备注 单片机 2 AT89S52 整流二极管 20 IN4007 电容 10 30P 电容 10 104 电解电容 8 100UF/50V 电解电容 2 220UF/50V 电解电容 10 10UF/25 微动开关(按钮) 12 74ls164 8 自锁开关 2 (白色,六脚的) 排针 2排 晶振 2 11.0592M 精调电阻 5 103 3296W 10K 排线 1米 20p 稳压管 2 LM
[单片机]
利用51单片机制作廉价盒仔机器人
一、盒仔机器人 BOXZ,昵称盒仔,是一款开源的互动娱乐平台!百度一下,有很多盒仔的制作教程,基本都是用arduino制作完成的。假期没事,带着宝宝们用51制作了一个廉价的BOXZ。先上张图: 从图上不难看出,为了宝宝们易于接受,我把盒仔的手机摇控改成了用线控的方法,做了一个简易的摇控器。 二、材料准备 以上原器件,某宝网上都有。另外,制作中需要用到壁纸刀、电钻、钢尺、胶水等工具。 三、外壳及皮肤制作 1、外壳的制作 (1)下载模板 下载地址:https://yunpan.cn/crIvLu9R8xVyI 访问密码 9fe1 从上面的下载地址下载模板,打印出来,然后将硬纸板切割成图
[单片机]
基于89C51单片机的环境噪声测量仪的设计
环境噪声监测,是人类提高生活质量,加强环境保护的一个重要环节,在各大城市的繁华街区和居民区,已有大型环境噪声显示器竖立街头。但目前国内的便携式噪声测试仪,多为价格昂贵的进口专用设备,除卫生、计量等环保专业部门拥有外,无法作为民用品推广普及。本文介绍一种以89C51单片机为核心,采用V/F转换技术构成的低成本、便携式数字显示环境噪声测量仪。该仪器工作稳定、性能良好,经校验定标后能满足一般民用需要,可广泛应用于工矿企业、机关学校等需要对环境噪声进行测量和控制的场合。 1 声压级的测量机理 人耳的听阈一般是20m Pa (微帕),痛阈一般是200Pa(帕),其间相差107倍,这样宽广的声压范围很不易测量,而且人耳对声压的相对
[单片机]
基于51单片机控制的连续式捣固车起拨道补偿设计
0 引言 我国养路机械的发展起步较晚。长期以来。我国捣固车电气控制技术都依靠国外进口。由于受制于国外的技术垄断,因而严重阻碍了我国养路机械的发展进程。为了走自主发展的道路,打破现有的国外垄断局面,摆脱国外技术的控制,实现电气控制系统的国产化,开发具有自主知识产权的电气控制系统,本文针对09-32型连续式捣固车起拨道的补偿控制技术进行了研究。 传统的起拨道补偿系统大多采用运算电路组成的模拟电路来完成,这种方式控制复杂,系统精度和稳定性都比较差。为此,本文介绍了一种基于单片机的多功能起拨道补偿控制系统,因篇幅原因,本文仅介绍拨道补偿的算法设计与实验。 1 拨道补偿算法设计 为了使09-32捣固车达到更高的效率并提高操作人员的
[单片机]