本帖最后由 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的 |