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
最新资讯文章
- 让机器实现人类的“举一反三” “迁移学习”成就新一代“AI+”
- 手机行业2016年度热搜词盘点
- 拂去虚火 VR迎来理性成长产业路线清晰
- 新材料之王——石墨烯应用方向日渐明朗 制备工艺优化是关键
- GaN优势独特 将成为无线领域主要半导体材料
- 32位MCU崛起 抢滩物联网市场本土厂商耕耘有道
- 苹果OLED面板年需求1亿组 能轻易让韩厂独食吗?
- “袖珍”无人机来袭 用怎样的应用场景来承接这一巨大市场
- FTF2016大咖秀:美好愿景正与技术并驾齐驱 恩智浦演绎智慧创想未来
- 这9家主流芯片厂商捧热了无人机
您的浏览历史




