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