c语言pic延时1ms程序,几个延时子程序

本文详细介绍了几种精确延时函数的实现方法,包括基于循环计数的延时和多级嵌套循环的延时策略。针对不同延时需求,如1ms和2ms,分析了误差并提供了优化方案。通过调整循环次数和嵌套结构,可以实现从几十微秒到几百微秒的精确延时。
摘要由CSDN通过智能技术生成

/**************************************

延时时间为:8*i+10 us

要求延时1ms i=124时 延时为1002us  误差2us

2ms i=249时 延时为2002us  误差2us

**************************************/

void delay(unsigned char i)

{

for(;i>0;--i);

}

/**************************************

延时时间为:6*i+11 us

要求延时1ms i=165时 延时为1001us  误差1us

2ms i=331时 延时为1997us  误差3us

**************************************/

void delay(unsigned char i)

{

while(i--);

}

/**************************************

延时时间为:2*i+5 us

**************************************/

void delay(unsigned char i)

{

while(--i);

}

以上如果加上了n个_nop_(),需将i换为(i+n);

/**************************************

延时时间为:20us*t+13us

**************************************/

void delay_20us(unsigned int t)

{

unsigned char j;

for(;t>0;t--)

for(j=4;j>0;j--);

}

/**************************************

延时时间为:50us*t+13us

**************************************/

void delay_50us(unsigned int t)

{

unsigned char j;

for(;t>0;t--)

for(j=19;j>0;j--);

}

/**************************************

延时时间为:100us*t+13us

**************************************/

void delay_100us(unsigned int t)

{

unsigned char j;

for(;t>0;t--)

for(j=44;j>0;j--);

}

/**************************************

延时时间为:978count*n+21us

要求延时1ms count=1时 延时为999us  误差1us

2ms count=2时 延时为1977us 误差23us

**************************************/

void delay1ms(int count)

{

int x,y;

for(x=0;x

for(y=0;y<120;y++);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值