找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2901|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机精准延时

[复制链接]
跳转到指定楼层
楼主
ID:85865 发表于 2019-12-27 14:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
经过实测的12T 51单片机精延时,希望对初学者有帮助
/**********************  void Delay10us() **********************
时钟为11.0592MHz时, 调用该函数延时9.77us,调用两次延时19.53us
可以在多个Delay10us()间加入_nop_()指令, _nop_()指令延时1.08us
1 如延时30us, 如下调用实际延时30.39us:
   _nop_();
   Delay10us();
   Delay10us();
   Delay10us();
2 如延时40us, 如下调用实际延时40.14us:
   _nop_();
   Delay10us();
   Delay10us();
   Delay10us();
   Delay10us();
****************************************************************/
void Delay10us()
{
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
}

/**********************  void Delay100us() **********************
时钟为11.0592MHz时, 调用该函数延时99.83us
****************************************************************/
void Delay100us()
{
  Delay10us();
  Delay10us();
  Delay10us();
  Delay10us();
  Delay10us();
  Delay10us();
  Delay10us();
  Delay10us();
  Delay10us();
  Delay10us();
}

/**********************  void Delay1ms() **********************
时钟为11.0592MHz时, 调用该函数延时1000.5us
****************************************************************/
void Delay1ms()
{
  unsigned char i;

  for(i=0; i<229; i++)
  {
    _nop_();
  }
}

/**********************  void Delay10ms() **********************
时钟为11.0592MHz时, 调用该函数延时10006us
****************************************************************/
void Delay10ms()
{
  Delay1ms();  
  Delay1ms();
  Delay1ms();
  Delay1ms();
  Delay1ms();
  Delay1ms();
  Delay1ms();
  Delay1ms();
  Delay1ms();
  Delay1ms();  
}

/**********************  void DelayX10ms() *********************
时钟为11.0592MHz时, 调用该函数延时N(N<=255)倍的10ms
****************************************************************/
void DelayX10ms(unsigned char nCount)
{
   while(nCount--)
   {
     Delay10ms();
   }
}







分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表