{
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倍的机器周期,延时的时间好像太短了吧
delay2movlw 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句话”相同仅仅是指这两个循环体的循环次数相同。实碰悔际上两个循环的执行过程是完全不同的,所消耗时间也有可能不同。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)