以单片机的晶振为11.0592MHz为例的自适应主时钟毫秒级延时函数
void Delay_Ms(INT16U ms)
{
INT16U i;
do{
i = MAIN_Fosc / 96000;
while(--i); //96T per loop,即96个时钟周期,8个机器周期
}while(--ms);
}
机器周期:单片机的基本操作周期,在一个操作周期内,单片机完成一项基本操作,如取指令、存储器读/写等。
机器周期=6个状态周期=12个时钟周期。
时钟周期(振荡周期) = 晶振的倒数。时钟周期是单片机的基本时间单位,两个振荡周期(时钟周期)组成一个状态周期。
指令周期:CPU执行一条指令所需要的时间称为指令周期,它是以机器周期为单位的。
状态周期:在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。一个状态周期等于两个时钟周期。