未元星系 发表于 2024-5-22 20:20:58

STC8H8K64U怎么用定时器做延时呢 | 已解决

本帖最后由 未元星系 于 2024-5-26 12:42 编辑

请教大佬,STC8H8K64U怎么用定时器做延时

晓飛飛 发表于 2024-5-22 21:04:40

本帖最后由 晓飛飛 于 2024-5-22 21:10 编辑

原理是这样的,做个延时函数,函数内启动定时器,配置好延迟时间,然后做个循环查询定时器溢出中断即可,
下面是随便写了一个示例,参考一下
void delay_ms (unsigned int ms)   //毫秒级延时@11.0592MHz      
{
      AUXR |= 0x80;                        //定时器时钟1T模式
      TMOD &= 0xF0;                        //设置定时器模式
      TL0 = 0xCD;                              //设置定时初始值
      TH0 = 0xD4;                              //设置定时初始值
      TF0 = 0;                              //清除TF0标志
      TR0 = 1;                              //定时器0开始计时
      while(ms--)
      {                        
                while(!TF0)          //判断溢出标记
                {
                        _nop_();               
                }               
                TF0= 0;                                                            
      }
      TR0= 0;               
}


未元星系 发表于 2024-5-22 21:20:06

晓飛飛 发表于 2024-5-22 21:04
原理是这样的,做个延时函数,函数内启动定时器,配置好延迟时间,然后做个循环查询定时器溢出中断即可,
...

感谢大佬,非常有帮助

小坤 发表于 2024-5-23 13:12:53

STC-ISP 自带工具

未元星系 发表于 2024-5-23 17:30:58

问题已解决,谢谢各位大佬指点
页: [1]
查看完整版本: STC8H8K64U怎么用定时器做延时呢 | 已解决