导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→刚学keil,请高手指教[求助][fishxu]

 *第30067篇: 刚学keil,请高手指教[求助]

  
楼 主:fishxu 2005年3月9日10:13
 刚学keil,请高手指教[求助]
keil中的c程序:
470:  while ((j   < rxdcount)&&(rxderr[j] == rxdprotocol[j])) //????
在编译成汇编后,寄存器改变了(见r7和0x07),运行后的结果与设计结果不符  

;编译后的汇编:
c:0x0350    e533     mov      a,0x33 ;j为33h单元
c:0x0352    c3       clr      c
c:0x0353    9541     subb     a,rxdcount(0x41) ;rxdcount(0x41)为一计数单元
c:0x0355    5018     jnc      c:036f
c:0x0357    af33     mov      r7,0x33    
c:0x0359    7442     mov      a,#rxdprotocol(0x42);rxdprotocol[j]数组定义在data段
c:0x035b    2f       add      a,r7
c:0x035c    f8       mov      r0,a
c:0x035d    e6       mov      a,@r0
c:0x035e    ff       mov      r7,a   ;数值保存于r7中?????
c:0x035f    ae33     mov      r6,0x33
c:0x0361    ee       mov      a,r6
c:0x0362    90065e   mov      dptr,#rxderr(0x065e);rxderr[j]数组定义在code段
c:0x0365    93       movc     a,@a+dptr
c:0x0366    fe       mov      r6,a
c:0x0367    ee       mov      a,r6
c:0x0368    b50704   cjne     a,0x07,c:036f  ;而此处由是与0x07h单元中的数比较???(本应与r7中的数比较)
c:.........略


是不是编译器的问题呀????

  
2楼:fenggou80 2005年3月10日14:04
 估计是设置的问题
你在option for target ->  C51的菜单中将Code Optimization 中的level改低一点,应该能解决。

>>>>>>对该主题发表你的看法

本主题贴数2,分页: [第1页]


[上一篇主题]:需要单片机读写u盘源代码的请留email

[下一篇主题]:有at91rm9200高手愿意兼职吗?