单片机精确延时几种方式
目前在单片机中有不少延时的方法:
1、使用循环函数延时:
void delay1ms(void) //误差 0us,延时1ms
{
unsigned char a,b;
for(b=199;b>0;b--)
for(a=1;a>0;a--);
}
可以用单片机精灵来获取更多延时,下载地址https://pan.baidu.com/s/1qYQeoig
这种延时方式虽然说可以比较精确的延时,但是他会一直占用cpu,延时期间cpu只能选择等待,无法执行其他事情,降低了cpu的使用效率。
2、使用定时器中断延时(C语言版)
void IinitTimer()
{
TMOD = 0x01; //工作方式1
TH0 = 0x0FC; //延时1ms的初值
TL0 = 0x18;
EA = 1; //开启中断
ET0 = 1; //开启定时器中断0
TR0 = 1; //开启定时器0
}
void TimerInterrupt(void) interrupt 1 //中断方式1
{
TH0 = 0x0FC;
TL0 = 0x18;
}
3、不使用中断
void IinitTimer()
{
TMOD = 0x01; //工作方式1
TH0 = 0x0FC; //延时1ms的初值
TL0 = 0x18;
EA = 1; //开启中断
ET0 = 1; //开启定时器中断0
TR0 = 1; //开启定时器0
}
void DelayMilliseconds(int time)
{
do
{
TH0 = 0x0FC;
TL0 = 0x18;
while(!TF0);
TF0 = 0;
}while(--time);
}
初值的计算:方式1
TH0 =(65536 - 时间*晶振频率/12)/ 256;
TL0 =(65536 - 时间*晶振频率/12)%256;
工作方式:
方式0:13位(8192 - 时间*晶振频率/12)/ 256;
方式2:8位 (256 - 时间*晶振频率/12)/ 16;
单片机精确延时几种方式相关推荐
- 单片机实现延时两种方法
实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行. ▍1 .使用定时器/计数器实现精确延时 ...
- 51单片机c语言延时计算软件,51单片机精确延时程序大集合+初值计算工具
在论坛上看到不少不错的延时程序,整理如下共同分享: 精确延时计算公式: 延时时间=[(2*第一层循环+3)*第二层循环+3]*第三层循环+5 ;延时5秒左右 DELAY5S:PUSH 04H;2个 ...
- 【蓝桥杯】单片机精确延时——软件延时
在编写单片机程序经常会用到延时,做到精确延时的方法有两种:软件延时(采用循环体实现)和硬件延时(定时器/计数器实现). 补充_nop_()函数 C语言中没有_nop_()函数,该函数是在51单片机中用 ...
- 51单片机精确延时设计
在我们使用单片机的时候,很多情况下需要用到精确的延时.比如在跟DS18B20进行通讯的时候需要遵循严格的时序,这就需要我们严格把控程序执行的时间. 一般我们都是通过执行空语句的方式来使程序延时.这种方 ...
- 89C52单片机定时器精确延时
16位寄存器分为高八位(TH0)和低八位(TLO),取值范围0-65535 也就是低八位255,高八位255(255*255=65535) 问题:89C52开发板 晶振11.0592MHZ 用定 ...
- 单片机开发的两种类型
** 单片机开发的两种类型 ** 最近学了一下ROS操作系统的工作原理和使用方法,想到了对于单片机来说的操作系统RTOS开发的一些概念,觉得有必要在细说一下单片机开发的两种方式. 首先,单片机开发一般 ...
- 51单片机几种精确延时(包含自动适应主时钟)
实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时:另一种是软件延时,这种方法主要采用循环体进行. 今天主要介绍软件延时,关于硬件延时,之 ...
- 51单片机的几种精确延时
实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时:另一种是软件延时,这种方法主要采用循环体进行. 今天主要介绍软件延时,关于硬件延时,之 ...
- keil c语言 延迟程序,Keil C51程序设计中几种精确延时方法
前几天时间在做一个基于51单片机开发板的等精度频率计,用LCD1602液晶显示的,晶振是22.1184MHZ,用得是测频率法,目的是想做到能够测试0--900KHZ的信号. 液晶显示部分花了我好几天才 ...
最新文章
- shell 跟踪命令
- PHP程序性能优化的50种方法
- leetcode771. 宝石与石头
- git 查看分支_系统掌握Git之—探索.git
- 工信部电子五所张志强:中国数据库行业发展趋势分析
- 计算机里怎样打字,电脑知识:如何电脑快速打字
- 智慧园区导航可视化分析平台技术方案
- java计算两点距离,java计算两点间的距离方法总结,java计算两点距离
- excel2007打开后是显示为灰色解决办法
- thinkphp的column()函数
- 别出心裁的Linux系统调用学习法
- x64dbg 自动化控制插件
- kepp-alive的作用?keep-alive的属性?路由元信息?白名单黑名单?keep-alive的钩子函数
- 0.96寸OLED(二)SPI+DMA刷新OLED
- Jackson JsonGenerator类
- 通过OCR识别技术 识别视频和图片的文字信息怎样得到结果
- 如何用原生jS做购物车
- BSN季度版本2023年3月31日迭代更新
- 人工智能及其应用第六版目录
- 会计的思考(15):华而不实的应收账款周转率