51单片机精确延时程序
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--);
}
相关资讯
同类文章排行
- 华为 中兴 思科 科锐竟然同时瞄上智能路灯
- 美高森美IEEE1588平台新增超低抖动网络同步器产品
- Vishay推出用于平板电视和便携电子设备的新款环境光传感器
- 莱迪思半导体为ECP5? FPGA产品系列添加新成员
- 4K电视国庆热销 概念噱头大过实用价值
- Littelfuse传感器产品系列新增紧凑型磁力驱动磁簧传感器
- Mouser新推Maxim Integrated MAX77818开关模式电池充电器
- 美高森美提供用于新RTG4FPGA开发工具套件 增强太空领域领导地位
- 莱迪思新推ECP5 Versa开发套件 快速实现智能互连设计的原型开发
- Xilinx FPGA助力高性能SDN
最新资讯文章
- 夏普7000亿日元卖身鸿海,进入鸿海旗下
- 电动汽车车载充电器Boost PFC AC/DC变换器设计
- 华为 中兴 思科 科锐竟然同时瞄上智能路灯
- 无线技术创新融合构建物联新局面
- 5G网络呼之欲出有望2020年实现商用 各大企业备战为时已久
- 以应用为导向 德州仪器多方塑造DLP产业生态圈
- MEMS传感器迎来新应用浪潮 博世推出7款新品主打创客和IoT
- 手机核战棋逢僵局 差异化是蹊径
- 中国银联开放授权 移动支付市场百花齐放
- 快充市场各自为营 进入战国时代