0 卖盘信息
BOM询价
您现在的位置: 首页 > 电子资讯 >基础知识 > 51单片机几个延时程序

51单片机几个延时程序

来源: 21ic
2021-04-14
类别:基础知识
eye 7
文章创建人 拍明

原标题:51单片机几个延时程序

  简介:51单片机几个精确延时程序:在精确延时的计算当中,最容易让人忽略的是计算循环外的那部分延时,在对时间要求不高的场合,这部分对程序不会造成影响.

  

1.png


  一. 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--);

  }


责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

标签: 51单片机

相关资讯