| 
 
| 本帖最后由 xxqg1 于 2015-9-14 11:18 编辑 
 将延时写成子函数,反汇编出来怎么不完整,缺了一个循环,C如下:
 void    delay_us(void)
 {
 u8 tim = 10;
 while(tim-- > 0);
 }
 void main(void)
 {
 GPIOConfig();
 while(1)
 {
 PA5 = 0;
 delay_us();
 }
 }
 反汇编如下:
 void    delay_us(void)
 35:            {
 36:                u8 tim = 10;
 07E6  300A     MOVLW 0xA
 07E7  00F0     MOVWF __pcstackCOMMON
 07E8  0870     MOVF __pcstackCOMMON, W
 07E9  00F1     MOVWF tim
 37:                while(tim-- > 0);
 07EA  3001     MOVLW 0x1
 38:            }
 39:            void main(void)
 40:            {
 41:                GPIOConfig();
 07E1  27F0     CALL 0x7F0
 42:                while(1)
 07E5  2FE2     GOTO 0x7E2
 43:                {
 44:                    PA5 = 0;
 07E2  1283     BCF STATUS, 0x5
 07E3  1285     BCF PORTA, 0x5
 45:                    delay_us();
 07E4  27E6     CALL 0x7E6
 46:                }
 47:            }
 延时子函数的循环没了,用的是simulator仿真,下载运行时OK的
 | 
 |