51单片机利用定时器计数来作为延时函数调用

51单片机利用定时器计数来作为延时函数调用


  • ✨ 使用前提是,定时器不作为其他函数调用的时候可以拿来使用,如果定时器有做其他使用,就不行此方法。毕竟51单片机的定时器就比较少。
  • 🌿对于51单片机,定时器资源很少,不够用的情况下,不推荐使用,太浪费资源了。

📝定时器实现延时功能函数

  • 🌿使用定时器0为例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void delay\_ms(uint16\_t t)
{
uint16\_t count = 0;
TMOD |= 0x01;
TH0 = 0xFC;//预置定时器初值,实现大约1ms的定时
TL0 = 0x66;
TR0 = 1;// 启动定时器0
while (1)
{
if (TF0 == 1)
{
count++;
TF0 = 0;// 清除定时器0溢出标志
TH0 = 0xFC;
TL0 = 0x66;
}
if (count >= t)
{
break;
}
}
}

  • 🌿可以将上面的延时函数嵌入到所需的工程中进行使用。