目前在单片机中有不少延时的方法:

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;

单片机精确延时几种方式相关推荐

  1. 单片机实现延时两种方法

    实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行. ▍1 .使用定时器/计数器实现精确延时 ...

  2. 51单片机c语言延时计算软件,51单片机精确延时程序大集合+初值计算工具

    在论坛上看到不少不错的延时程序,整理如下共同分享: 精确延时计算公式: 延时时间=[(2*第一层循环+3)*第二层循环+3]*第三层循环+5 ;延时5秒左右 DELAY5S:PUSH   04H;2个 ...

  3. 【蓝桥杯】单片机精确延时——软件延时

    在编写单片机程序经常会用到延时,做到精确延时的方法有两种:软件延时(采用循环体实现)和硬件延时(定时器/计数器实现). 补充_nop_()函数 C语言中没有_nop_()函数,该函数是在51单片机中用 ...

  4. 51单片机精确延时设计

    在我们使用单片机的时候,很多情况下需要用到精确的延时.比如在跟DS18B20进行通讯的时候需要遵循严格的时序,这就需要我们严格把控程序执行的时间. 一般我们都是通过执行空语句的方式来使程序延时.这种方 ...

  5. 89C52单片机定时器精确延时

    16位寄存器分为高八位(TH0)和低八位(TLO),取值范围0-65535 也就是低八位255,高八位255(255*255=65535) 问题:89C52开发板 晶振11.0592MHZ    用定 ...

  6. 单片机开发的两种类型

    ** 单片机开发的两种类型 ** 最近学了一下ROS操作系统的工作原理和使用方法,想到了对于单片机来说的操作系统RTOS开发的一些概念,觉得有必要在细说一下单片机开发的两种方式. 首先,单片机开发一般 ...

  7. 51单片机几种精确延时(包含自动适应主时钟)

    实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时:另一种是软件延时,这种方法主要采用循环体进行. 今天主要介绍软件延时,关于硬件延时,之 ...

  8. 51单片机的几种精确延时

    实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时:另一种是软件延时,这种方法主要采用循环体进行. 今天主要介绍软件延时,关于硬件延时,之 ...

  9. keil c语言 延迟程序,Keil C51程序设计中几种精确延时方法

    前几天时间在做一个基于51单片机开发板的等精度频率计,用LCD1602液晶显示的,晶振是22.1184MHZ,用得是测频率法,目的是想做到能够测试0--900KHZ的信号. 液晶显示部分花了我好几天才 ...

最新文章

  1. shell 跟踪命令
  2. PHP程序性能优化的50种方法
  3. leetcode771. 宝石与石头
  4. git 查看分支_系统掌握Git之—探索.git
  5. 工信部电子五所张志强:中国数据库行业发展趋势分析
  6. 计算机里怎样打字,电脑知识:如何电脑快速打字
  7. 智慧园区导航可视化分析平台技术方案
  8. java计算两点距离,java计算两点间的距离方法总结,java计算两点距离
  9. excel2007打开后是显示为灰色解决办法
  10. thinkphp的column()函数
  11. 别出心裁的Linux系统调用学习法
  12. x64dbg 自动化控制插件
  13. kepp-alive的作用?keep-alive的属性?路由元信息?白名单黑名单?keep-alive的钩子函数
  14. 0.96寸OLED(二)SPI+DMA刷新OLED
  15. Jackson JsonGenerator类
  16. 通过OCR识别技术 识别视频和图片的文字信息怎样得到结果
  17. 如何用原生jS做购物车
  18. BSN季度版本2023年3月31日迭代更新
  19. 人工智能及其应用第六版目录
  20. 会计的思考(15):华而不实的应收账款周转率

热门文章

  1. EMC测试(1)——辐射发射测试
  2. 周星馳 電影經典對白
  3. NO2.高可用搭建-mysql安装和双主配置
  4. php微信头像下载,微信2000个头像打包下载
  5. Tensorflow与Python之细枝末节
  6. 信息系统项目管理师 - 信息系统项目管理基础
  7. 前端中的icon几种用法
  8. SQL Server进制转换函数的创建
  9. 三招让windows硬盘资料隐身
  10. fpga挂一片ddr2_FPGA上外挂DDR2DDR3MIG IP的使用记录