KEIL 2 疑似BUG的情况

[复制链接]
 楼主| 2sainimu78 发表于 2012-1-14 17:54 | 显示全部楼层 |阅读模式
BUG, keil, ov, hm, vr
本帖最后由 2sainimu78 于 2012-1-14 18:04 编辑

MAIN: MOV A,#0FDH
         MOV R0,#40H
         MOVX @R0,A
         MOVX A,@R0
         MOV P0,A
毫无疑问 现在P0=FDH ,用KEIL查看内存 , 片外的FF40H中存有FDH , 而片外的40H中还是0

MAIN:  MOV A,#0FDH
          MOV R0,#40H
          MOVX @R0,A
          MOV P2,#0
          MOVX A,@R0
          MOV P0,A
通过KEIL DEBUGGING看到A的值是0 , 可在实际把程序载到片子里运行后P0=FDH

MAIN: MOV A,#0FDH
         MOV R0,#40H
         MOV P2,#0FFH
         MOVX @R0,A
         MOV P2,#0
         MOVX A,@R0
         MOV P0,A
KEIL 看到的A仍是0 , 实际载到片子里 运行的结果 P0=FDH


最后我又这样实验了一下

          ORG 0000H
         LJMP MAIN
         ORG 0003H
         LJMP TT
         ORG 30H
MAIN: MOV IE,#81H
         SETB IT0
         MOV A,#0FDH
         MOV R0,#40H
         MOVX @R0,A   ;看看MOVX @R0,A时会不会影响P2口
         MOVX A,@R0   ; P2口与P3口短接 , 一旦P2口有负跳变出现
         SJMP $             ;外部中断0就被触发

TT:    MOV P0,#0BFH   ;进中断 , 闪灯 (P0接着LED灯)
         ACALL DE
         MOV P0,#0FFH
         ACALL DE
         MOV P0,#0BFH
         RETI

DE:    MOV R4,#0FAH   ;延时
L2:     MOV R3,#0FAH
L1:     NOP
         NOP
         DJNZ R3,L1
         NOP
         DJNZ R4,L2
         RET
END

程序下载运行后的结果是 P0口接的LED灯没有亮
说明 MOVX @R0,A , 或MOVX A,@R0 都不会受P2口影响
MOVX @R0,A, 应该是送入片外00~FFH字节 而不是FF00~FF40


总之我还是不敢相信KEIL会有这种错误 , 请大家看看
刘前辈 发表于 2012-1-16 19:42 | 显示全部楼层
本帖最后由 刘前辈 于 2012-1-16 19:44 编辑
说明 MOVX @R0,A , 或MOVX A,@R0 都不会受P2口影响
MOVX @R0,A, 应该是送入片外00~FFH字节 而不是FF00~FF40


没错呀,现在的片子XDATA可能有1K 或 更多在片内,片内的XRAM访问操作不影响 P0,P2作为I/O 口的值。P3 的读写信号也无输出。
    像 MOVX @R0,A , 或MOVX A,@R0 这样的语句,在EXTRAM=0时,只能访问默认0段0页的00~FF,00FF以上的片内XRAM只能使用MOVX  @DPTR, A 这类语句。

只有当设置EXTRAM=1时,P0,P2才能作为标准51地址,此时,P3读/写信号输出起作用。

请参考带片内XRAM的芯片AUX寄存器配置。


、、
 楼主| 2sainimu78 发表于 2012-1-17 19:08 | 显示全部楼层
啥....  
片内的怎么是XRAM, X不是片外的意思吗?  
EXTRAM是什么?  我书里的51引脚图没有EXTRAM脚 ..
fe07fe 发表于 2012-1-17 19:17 | 显示全部楼层
不就是那个ale脚
fe07fe 发表于 2012-1-17 19:22 | 显示全部楼层
不是有片外ram才用MOVX 的吗 ,你还在用那个adc0809吗
 楼主| 2sainimu78 发表于 2012-1-17 21:40 | 显示全部楼层
片内RAM是单片机自带的 ,
如果单片机除了运行必要的东西外什么都没有接  那片外RAM就是假想存在的了
是这样吧?  
然后 MOVX @R0,A 和 MOVX A,@R0会影响P0口  不管P0口有没有接东西 , 没错吧... ?
fe07fe 发表于 2012-1-17 23:02 | 显示全部楼层
这个没用过,应该是这样吧,你用keil纯软件,p0口没上拉电阻,不高不低的高阻态,读数的时候我也不知是0还1.
fe07fe 发表于 2012-1-18 00:34 | 显示全部楼层
MAIN: MOV A,#0FDH
MOV DPTR,#0AB63H
MOVX @DPTR,A
LJMP MAINEND
;MOV R0,#40H
;MOVX @R0,A

经过protues仿真程序中并没有直接对IO口操作,还可以看出来有反应,那些并没有问题,用@R0是只有P0有反应。在keil看不出来。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ejack 发表于 2012-1-18 07:51 | 显示全部楼层
不说硬件情况一个劲儿在这掰扯仿真与实际的差异?
先介绍一下你用的芯片。
确认一下片外SRAM的连接。
刘前辈 发表于 2012-1-18 12:24 | 显示全部楼层
本帖最后由 刘前辈 于 2012-1-18 12:51 编辑

同意9楼。LZ先看看自己Keil选用的芯片是什么?带不带片内256字节以上XRAM ?




//

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

121

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部