C51 11.0592MHz 晶振 一毫秒延迟函数
在 C51 中,可以使用以下代码实现一毫秒延迟函数:
void delay_ms(unsigned int ms)
{
unsigned int i, j;
for (i = 0; i < ms; i++)
{
for (j = 0; j < 110; j++) // 11.0592MHz 晶振下循环 110 次延迟 1ms
{
// 空循环
}
}
}
使用方法:
delay_ms(1000); // 延迟 1 秒钟
说明:
在 11.0592MHz 的晶振下,每个机器周期为 1/11.0592MHz ≈ 90.5ns,因此延迟 1ms 需要延迟的机器周期数为:
1000ms / 90.5ns ≈ 11059
但由于循环的开销和其他指令的执行时间,实际需要循环的次数要稍微大于 11059,因此上面的代码中循环 110 次。如果需要更精确的延迟时间,可以根据实际情况进行调整。
原文地址: https://www.cveoy.top/t/topic/oX0d 著作权归作者所有。请勿转载和采集!