1个回答
展开全部
//us级延时
void delay_1us(void) //1us延时函数,不能连续调用,
{
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
}
void delay_3us(void) //3us延时函数,,可重复调用不影响精度
{
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
}
void delay_10us(void) //10us延时函数,可重复调用不影响精度
{
delay_3us();
delay_3us();
delay_3us();
}
void delay_50us(void) //48us延时函数,可重复调用不影响精度
{
delay_10us();
delay_10us();
delay_10us();
delay_10us();
delay_10us();
}
void delay_100us(void)//exactly 98us延时函数,可重复调用不影响精度
{
delay_50us();
delay_50us();
delay_3us();
}
//ms级延时
void delay_1ms(void)
{
delay_100us();
delay_100us();
delay_100us();
delay_100us();
delay_100us();
delay_100us();
delay_100us();
delay_100us();
delay_100us();
delay_100us();
}
void delay_ms(uint ms )
{
while(ms--)
delay_1ms();//8MHZ主频时,25分钟误差小于1秒
}
void delay_1us(void) //1us延时函数,不能连续调用,
{
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
}
void delay_3us(void) //3us延时函数,,可重复调用不影响精度
{
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
}
void delay_10us(void) //10us延时函数,可重复调用不影响精度
{
delay_3us();
delay_3us();
delay_3us();
}
void delay_50us(void) //48us延时函数,可重复调用不影响精度
{
delay_10us();
delay_10us();
delay_10us();
delay_10us();
delay_10us();
}
void delay_100us(void)//exactly 98us延时函数,可重复调用不影响精度
{
delay_50us();
delay_50us();
delay_3us();
}
//ms级延时
void delay_1ms(void)
{
delay_100us();
delay_100us();
delay_100us();
delay_100us();
delay_100us();
delay_100us();
delay_100us();
delay_100us();
delay_100us();
delay_100us();
}
void delay_ms(uint ms )
{
while(ms--)
delay_1ms();//8MHZ主频时,25分钟误差小于1秒
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询