单片机延迟函数
/*************************************************************** ***************
12M 延时计算公式= 4.17+(n-1)*0.5 us
8M 延时计算公式= 6.25+(n-1)*0.75 us
7.3728M 延时计算公式= 6.78+(n-1)*0.81 us 或者6.51+(n-1)*0.82 us
4M 延时计算公式= 12.5+(n-1)*1.5 us
3.6864M 延时计算公式= 13.56+(n-1)*1.63 us
2M 延时计算公式= 25.00+(n-1)*3.0 us
1M 延时计算公式= 50.00+(n-1)*6.0 us
**************************************************************** ***************/
void delay (unsigned int n)
{
unsigned int i;
i = n;
while (i--)
;
}
}
/*************************************************************** ***************
12M 延时计算公式= 4.0+(n-1)*0.5 us
8M 延时计算公式= 6.0+(n-1)*0.75 us
7.3728M 延时计算公式= 6.51+(n-1)*0.81 us 或者6.51+(n-1)*0.82 us
4M 延时计算公式= 12.0+(n-1)*1.5 us
3.6864M 延时计算公式= 13.02+(n-1)*1.63 us
2M 延时计算公式= 24.00+(n-1)*3.0 us
1M 延时计算公式= 48.00+(n-1)*6.0 us
**************************************************************** ***************/
void delay (unsigned int n)
{
unsigned int i;
for (i=n;i>0;i--)
{
;
}
/*************************************************************** ***************
12M 延时计算公式= 4.08+(n-1)*0.5 us
8M 延时计算公式= 6.13+(n-1)*0.75 us
7.3728M 延时计算公式= 6.65+(n-1)*0.81 us 或者6.51+(n-1)*0.82 us
4M 延时计算公式= 12.25+(n-1)*1.5 us
3.6864M 延时计算公式= 13.29+(n-1)*1.63 us
2M 延时计算公式= 24.5+(n-1)*3.0 us
1M 延时计算公式= 49.0+(n-1)*6.0 us
**************************************************************** ***************/
void delay (unsigned int n)
{
unsigned int i;
for (i=0;i<n;i++);
}
/*************************************************************** ***************
12M 0.75us
8M 1.13us
7.3728M 1.22us
4M 2.25us
3.6864M 2.44us
2M 4.5us
1M 9.0us
**************************************************************** ***************/
void delay_1us (void)
{
NOP();
}
/*************************************************************** ***************
12M 延时计算公式= 1.92+(n-1)*0.5 us
8M 延时计算公式= 2.88+(n-1)*0.75 us
7.3728M 延时计算公式= 6.24+(n-1)*0.81 us 或者6.24+(n-1)*0.82 us
4M 延时计算公式= 5.75+(n-1)*1.5 us
3.6864M 延时计算公式= 6.24+(n-1)*1.63 us 或者6.24+(n-1)*1.62 us
2M 延时计算公式= 11.5 +(n-1)*3.0 us
1M 延时计算公式= 23.0+(n-1)*6.0 us
*********************************
**********************************************/
void delay (unsigned int n)
{
while (n--);
}
/*************************************************************** ****************
NOP();延时时间,这个就不用多说了吧
12M 0.083us
8M 0.125us
7.3728M 0.14us 0.27us
4M 0.25us
3.6864M 0.27us
2M 0.5us
1M 1.0us
**************************************************************** ***************/
/*************************************************************** ***************
8M 大约延时1000.25us
4M 大约延时999.5us
**************************************************************** **************/
void delay_1ms(void)
{
unsigned int i;
for(i=1;i<(unsigned int)(xtal*143-2);i++);//xtal为晶振大小,单位为MHz }。