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