打印

keil编译优化问题

[复制链接]
2149|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Mick_liang|  楼主 | 2009-11-14 13:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在测试端写的电平状态时写了如下代码:
#define LO1_ADDR XBYTE[0x1FFF]

unsigned char bdata TranByte;
sbit SDIO = TranByte^0;

void mian()
{
SDIO = 0;
LO1_ADDR = TranByte;
SDIO = 1;
LO1_ADDR = TranByte;

SDIO = 0;
LO1_ADDR = TranByte;
SDIO = 1;
LO1_ADDR = TranByte;
}
优化级别是默认的,但是后面的代码LO1_ADDR = TranByte;被优化了,导致写出的电平状态不对。
不知道该如何解决,去掉优化?

相关帖子

沙发
冷漠| | 2009-11-16 11:13 | 只看该作者
没优化呀?

    10: void mian()  
    11: {  
    12: SDIO = 0;  
C:0x0000    C200     CLR      SDIO(0x20.0)
    13: LO1_ADDR = TranByte;  
C:0x0002    901FFF   MOV      DPTR,#0x1FFF
C:0x0005    E520     MOV      A,TranByte(0x20)
C:0x0007    F0       MOVX     @DPTR,A
    14: SDIO = 1;  
C:0x0008    D200     SETB     SDIO(0x20.0)
    15: LO1_ADDR = TranByte;  
    16:  
C:0x000A    E520     MOV      A,TranByte(0x20)
C:0x000C    F0       MOVX     @DPTR,A
    17: SDIO = 0;  
C:0x000D    C200     CLR      SDIO(0x20.0)
    18: LO1_ADDR = TranByte;  
C:0x000F    E520     MOV      A,TranByte(0x20)
C:0x0011    F0       MOVX     @DPTR,A
    19: SDIO = 1;  
C:0x0012    D200     SETB     SDIO(0x20.0)
    20: LO1_ADDR = TranByte;  
C:0x0014    E520     MOV      A,TranByte(0x20)
C:0x0016    F0       MOVX     @DPTR,A
    21: }  
C:0x0017    22       RET      
C:0x0018    00       NOP      
C:0x0019    00       NOP      
C:0x001A    00       NOP      
C:0x001B    00       NOP      
C:0x001C    00       NOP      
C:0x001D    00       NOP

使用特权

评论回复
板凳
Mick_liang|  楼主 | 2010-1-8 12:40 | 只看该作者
在我的编译器里被优化了...

使用特权

评论回复
地板
xlsbz| | 2010-1-8 13:39 | 只看该作者
但是后面的代码LO1_ADDR = TranByte;被优化了,导致写出的电平状态不对。
不知道该如何解决,去掉优化?
Mick_liang 发表于 2010-1-8 12:40



什么叫 后面的代码LO1_ADDR = TranByte ????

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

87

帖子

0

粉丝