我需要你用C语言完成晶振为12MHz的51单片机中for循环函数延时1毫秒
时间: 2024-02-12 07:08:17 浏览: 106
不同晶振的1ms延时程序
好的,以下是用C语言编写的延时函数:
```c
void delay_ms(unsigned int ms)
{
unsigned int i, j;
for(i = 0; i < ms; i++)
{
for(j = 0; j < 1200; j++)
{
// 晶振为12MHz,每次循环需要12个机器周期
// 因此每次循环的时间为1us
}
}
}
```
上述代码中,delay_ms函数接受一个无符号整数ms,表示需要延时的毫秒数。在for循环中,我们使用两个嵌套的循环,分别对应毫秒和微秒级别的延时。内层循环中,我们根据晶振的频率计算出每个机器周期的时间为1/12MHz=0.083us,因此每个循环需要执行1200次,才能达到1ms的延时效果。
阅读全文