delay函数(计算机器周期来判断延迟时间)
函数:
typedef unsigned int u16;
void delay(u16 i)
{
while(i--);
计算:
51单片机晶振频率:11.059MHZ(为了方便计算,这里约等于12MHZ)
时钟周期 =1 / 晶振频率 =1 / (12MHZ)
我们这里需要的是计算机器周期.
机器周期:完成一个基本操作所需要的时间
基本操作:取指令,存储器读,存储器写
机器周期 = 12 * 时钟周期 = 12 * 1 / (12MHZ) = 1us
所以开始计数,在程序定时器减1,需要1us
eg:
delay(5000)
1us * 5000 = 5ms
所以,调用delay(5000)即延时5ms
2025-10-01 20:15:43