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单片机精确延时程序(晶振12MHz,一个机器周期1us.)相关推荐

  1. 延时1us程序12mhz晶振c语言,51单片机 Keil C 延时程序的简单(晶振12MHz,一个机器周期1us.)...

    一. 500ms延时子程序 void delay500ms(void) { unsignedchari,j,k;for(i=15;i>0;i--)for(j=202;j>0;j--)for ...

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

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

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

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

  4. c语言1ms延时程序,请教老师,51微控制器在12M晶振,C语言程式设计时,延时函式120次=1ms(书本上是这样的,不懂),是怎样得来的?...

    请教老师,51微控制器在12M晶振,C语言程式设计时,延时函式120次=1ms(书本上是这样的,不懂),是怎样得来的?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集 ...

  5. 51单片机的延时子程序

    延时程序在单片机编程中使用非常广泛,但一些读者在学习中不知道延时程序怎么编程,不知道机器 周期和指令周期的区别,不知道延时程序指令的用法, ,本文就此问题从延时程序的基本概念.机器周期和指 令周期的区 ...

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

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

  7. 编写10ms延时的子程序c语言,单片机定时器延时程序

    单片机定时器延时程序 单片机的延时程序(包括asm和C程序,都是我在学单片机的过程中用到的),在单片机延时程序中应考虑所使用的晶振的频率,在51系列的单片机中我们常用的是11.0592MHz和12.0 ...

  8. 51单片机的延时计算

    51单片机的延时计算 前言 正文 首先是时钟周期的算法:时钟周期(T)=1(秒)/晶振频率. 其次是机器周期:机器周期是由时钟周期组成的,机器周期是单片机完成一个基本操作所需要的时间. 1 传统的80 ...

  9. c语言单片机定时器的应用程序,51单片机定时器中断程序(C语言)

    51c程序 51单片机定时器中断程序(C语言) 用C语言实现的,先要定义好定时器的初值 不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期 机器周期=12/n(n指晶 ...

  10. 学好单片机设计,关于晶振的这些难题一定要先搞懂!

    在初学51单片机的时候,总是伴随很多有关于晶振的问题,其实晶振就是如同人的心脏,是血液的脉搏,把单片机的晶振问题搞明白了,51单片机的其他问题迎刃而解-- 有关51单片机有关晶振的问题一并总结出来,希 ...

最新文章

  1. AS3中的强制类型转换
  2. matlab 高斯一阶导,将Matlab高斯导数转换为Opencv
  3. java的object如何转为具体的类_佛山个体户如何转为公司?
  4. linux内核之内存管理.doc,linux内核之内存管理.doc
  5. Arduino_esp32_WiFi代码
  6. 第四十期:十年生死两茫茫,Linux QQ突然复活!
  7. daily scrum 11.30
  8. PAT: gets’ was not declared in this scope gets(s)
  9. VC中关于程序的托盘化
  10. 发现VB6中SAX的乐趣[转]
  11. razorPage三元运算符使用注意
  12. HTML基础知识回顾整理
  13. p2p网络终结者最高权限使用教程
  14. 日志分析工具、日志管理系统、syslog分析
  15. Michele Maggiore《A Modern Introduction to Quantum Field Theory》(米歇尔·马焦雷《量子场论现代导引》)中文目录
  16. ExcelVBA:利用SUMIF和OFFSET+MATCH进行多条件求和
  17. ie自带css定位,CSS实现元素相对于浏览器窗口进行定位_css
  18. 基于SSM的停车场管理系统
  19. Aspect @Pointcut切入点解释
  20. 利用HTTPWatch进行前端分析之 ——Time chart详细解析

热门文章

  1. hdoj3085 / acwing177 Nightmare
  2. 【Redis】keys命令和SCAN命令
  3. Stemming and lemmatization
  4. window下PC版 charles小程序抓包
  5. 明安图(卡特兰)数(及其扩展 折线法)
  6. 蚂蚁金服2019实习生面经总结(已拿口头offer)
  7. 修改计算机照片格式怎么修,电脑上如何修改照片文件大小?2种免费方法简单解决...
  8. 适合记录日常工作的便签如何在电脑桌面上添加
  9. V-rep机器人仿真软件使用的学习笔记-续
  10. microsoftonenote_Microsoft OneNote 2017 官方免费版