打印
[PIC®/AVR®/dsPIC®产品]

XC8 C语言反汇编问题2

[复制链接]
965|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xxqg1|  楼主 | 2015-9-14 11:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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的
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

39

帖子

1

粉丝