51定时器0延时1ms
时间: 2023-07-18 12:43:55 浏览: 72
在51单片机中,定时器0的计时频率为12MHz,因此可以使用以下代码实现1ms的延时功能:
```
void delay_1ms()
{
TMOD &= 0xF0; // 设置定时器0为模式1
TL0 = 0x00; // 设置初始值
TH0 = 0xFC; // 每10us中断一次,经过100次中断即为1ms
TF0 = 0; // 清除溢出标志
TR0 = 1; // 启动定时器0
while(!TF0); // 等待溢出
TR0 = 0; // 关闭定时器0
TF0 = 0; // 清除溢出标志
}
```
调用该函数即可实现1ms的延时。
相关问题
用51单片机定时器实现延时1ms函数
可以使用以下代码实现:
void delay_ms(unsigned int n)
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<110;j++);
}
其中,n表示需要延时的毫秒数,i和j是循环计数器,通过嵌套循环实现延时。
51单片机定时器延时750ms
根据引用[1]中的代码,可以使用以下函数来实现51单片机定时器延时功能:
```c
void delay_ms(uint16_t t) {
uint16_t count = 0;
TMOD |= 0x01;
TH0 = 0xFC;
TL0 = 0x66;
TR0 = 1;
while (1) {
if (TF0 == 1) {
count++;
TF0 = 0;
TH0 = 0xFC;
TL0 = 0x66;
}
if (count >= t) {
break;
}
}
}
```
根据引用[3]中的代码,可以使用以下代码来实现延时750ms:
```c
#include <REGX51.H>
void main() {
unsigned int a = 0;
unsigned code led[] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f}; // 低电平发光
TMOD &= 0xf0;
TMOD |= 0x01; // 定时器配置
TL0 = 0x18;
TH0 = 0XFC; // 初值1ms
TR0 = 1;
P1 = led[0];
while (1) {
static unsigned int T0count;
if (TF0 == 1) // 中断溢出
{
TF0 = 0;
TL0 = 0x18;
TH0 = 0xfc;
T0count++;
if (T0count >= 750) {
T0count = 0;
a++;
if (a >= 8)
a = 0;
P1 = led[a];
break;
}
}
}
}
```
这段代码会在P1口上循环显示led数组中的元素,每个元素显示750ms。
阅读全文