PIC单片机的延时程序???

PIC单片机的延时程序???,第1张

void delay(char x, chary)

{

char z//定义z

do{ //先执行一次do

z = y //把y的值给z

do{}while(--z) //do空语句,等待--z,,直到z=0结束do while 语句。延友数时在这产生

}while(--x)/伍告敬/同理x在--,再产生延时

}

延时的问题4MHZ的晶振,腔慎机器周期是3μs,指令周期是1-4倍的机器周期,延时的时间好像太短了吧

delay2

movlw 0x06 //0X06给W

movwf_delay//W寄存器的值6给DELAY(应团友该是DELAYL吧)

delay1

decfsz_delayl //此句是 DECFSZ DELAYL,1

goto delay1//DELAYL不等与0则跳转到delay1

decfsz_delayh //DELAYL=0在这里执行 DELAYH-1 判断是否为0为0

goto delay2//不等于0 则跳转到DELAY2

//等于0 汇编谨李程序执行完毕

什祥或迟么编程环境啊,感觉有问题一样。。

[(2+1)*6+2+1+2]*x 个机器周期 你一个机器周期是1US 就是这么多US

问题1:“我刚算了一下他应该执行了999条指令”因为你算错了。延时时间是由产生的汇编代码所决定的,C语言语句只是个假象,千万不要以为C语言一行就是一条指令!此处由于涉及到双字节减法,因此会有额外的判断,编译结果每次循环耗费几十个周期毫不奇怪。

问题2:前一笑敏正句x从100开始递拿闹减,递减至1时退出循环。后一句x从0开始递增,递增到100时退出循环。所谓“2句话”相同仅仅是指这两个循环体的循环次数相同。实碰悔际上两个循环的执行过程是完全不同的,所消耗时间也有可能不同。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12423308.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存