学习picc这么长时间了,但是一直对于软件延时很不理解。发现通过c语言设计的延时函数,经过编译后的汇编代码都不一样,很不明白!例如
参考本网站的picc设计技巧的**cypok的言论搜集,发现许多好像不正确。例如文中说
x=100;while(--x){;} 汇编后: movlw 100 bcf 3,5 bcf 3,6 movwf _delay l2 decfsz _delay goto l2 return
但是我做了不是这样的,还有
最能精确控制指令时间的: void delay(char x,char y){ char z; do{ z=y; do{;}while(--z); }while(--x); } 其指令时间为:7+(3*(Y-1)+7)*(X-1)如果再加上函数调用的call指令、页面设定、传递参数 花掉的7个指令。则是:14+(3*(Y-1)+7)*(X-1)。
我不知道有没有人用,经过实验了没有?对于高手怎么设计延时函数,难道只看stopwatch?对于简单的延时难道非要用硬件延时?请高手出来说句话阿! |