| 
 
| picc里c语言延时不好计时,需要看汇编代码。我察看了一些资料上说对于<br />while(d--)编译后的汇编代码: <br />    bcf  3,5 <br />    bcf  3,6   <br />    movlw  10 <br />    movwf  _delay<br />    l2 <br />    decf    _delay <br />    incfsz   _delay,w <br />    goto l2 <br />    return <br />但是,我经过试验后发现汇编代码为:<br /><br />while(d--);<br />   3F5    0820     MOVF 0x20, W<br />   3F6    1903     BTFSC 0x3, 0x2<br />   3F7    03A1     DECF 0x21, F<br />   3F8    03A0     DECF 0x20, F<br />   3F9    0A20     INCF 0x20, W<br />   3FA    1903     BTFSC 0x3, 0x2<br />   3FB    0A21     INCF 0x21, W<br />   3FC    1D03     BTFSS 0x3, 0x2<br />   3FD    2BF4     GOTO 0x3f4<br />我就有点搞不明白了,请高手指点一下,难道编译器,编译出的汇编不一样么?<br /><br />对于for(x=100;--x;){;}经过编译后,<br />汇编为:<br />movlw 100 <br />    bcf 3,5 <br />    bcf 3,6 <br />    movwf   _delay <br />l2    <br />decfsz   _delay <br />    goto l2 <br />return<br />而我实验后汇编为:<br />  3F3    1283     BCF 0x3, 0x5<br />   3F4    00A0     MOVWF 0x20<br />   3F5    01A1     CLRF 0x21<br />   3F6    30FF     MOVLW 0xff<br />   3F7    07A0     ADDWF 0x20, F<br />   3F8    1C03     BTFSS 0x3, 0<br />   3F9    03A1     DECF 0x21, F<br />   3FA    0821     MOVF 0x21, W<br />   3FB    0420     IORWF 0x20, W<br />   3FC    1D03     BTFSS 0x3, 0x2<br />   3FD    2BF6     GOTO 0x3f6<br /><br /><br />请各位老大给几个延时函数,以便以后软件延时,谢谢 | 
 |