|
經(jīng)過實(shí)測(cè)的12T 51單片機(jī)精準(zhǔn)延時(shí),希望對(duì)初學(xué)者有幫助
/********************** void Delay10us() **********************
時(shí)鐘為11.0592MHz時(shí), 調(diào)用該函數(shù)延時(shí)9.77us,調(diào)用兩次延時(shí)19.53us
可以在多個(gè)Delay10us()間加入_nop_()指令, _nop_()指令延時(shí)1.08us
1 如延時(shí)30us, 如下調(diào)用實(shí)際延時(shí)30.39us:
_nop_();
Delay10us();
Delay10us();
Delay10us();
2 如延時(shí)40us, 如下調(diào)用實(shí)際延時(shí)40.14us:
_nop_();
Delay10us();
Delay10us();
Delay10us();
Delay10us();
****************************************************************/
void Delay10us()
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
/********************** void Delay100us() **********************
時(shí)鐘為11.0592MHz時(shí), 調(diào)用該函數(shù)延時(shí)99.83us
****************************************************************/
void Delay100us()
{
Delay10us();
Delay10us();
Delay10us();
Delay10us();
Delay10us();
Delay10us();
Delay10us();
Delay10us();
Delay10us();
Delay10us();
}
/********************** void Delay1ms() **********************
時(shí)鐘為11.0592MHz時(shí), 調(diào)用該函數(shù)延時(shí)1000.5us
****************************************************************/
void Delay1ms()
{
unsigned char i;
for(i=0; i<229; i++)
{
_nop_();
}
}
/********************** void Delay10ms() **********************
時(shí)鐘為11.0592MHz時(shí), 調(diào)用該函數(shù)延時(shí)10006us
****************************************************************/
void Delay10ms()
{
Delay1ms();
Delay1ms();
Delay1ms();
Delay1ms();
Delay1ms();
Delay1ms();
Delay1ms();
Delay1ms();
Delay1ms();
Delay1ms();
}
/********************** void DelayX10ms() *********************
時(shí)鐘為11.0592MHz時(shí), 調(diào)用該函數(shù)延時(shí)N(N<=255)倍的10ms
****************************************************************/
void DelayX10ms(unsigned char nCount)
{
while(nCount--)
{
Delay10ms();
}
}
|
|