打印

KEIL 2 疑似BUG的情况

[复制链接]
1793|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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脚

使用特权

评论回复
5
fe07fe| | 2012-1-17 19:22 | 只看该作者
不是有片外ram才用MOVX 的吗 ,你还在用那个adc0809吗

使用特权

评论回复
6
2sainimu78|  楼主 | 2012-1-17 21:40 | 只看该作者
片内RAM是单片机自带的 ,
如果单片机除了运行必要的东西外什么都没有接  那片外RAM就是假想存在的了
是这样吧?  
然后 MOVX @R0,A 和 MOVX A,@R0会影响P0口  不管P0口有没有接东西 , 没错吧... ?

使用特权

评论回复
7
fe07fe| | 2012-1-17 23:02 | 只看该作者
这个没用过,应该是这样吧,你用keil纯软件,p0口没上拉电阻,不高不低的高阻态,读数的时候我也不知是0还1.

使用特权

评论回复
8
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看不出来。

使用特权

评论回复
9
ejack| | 2012-1-18 07:51 | 只看该作者
不说硬件情况一个劲儿在这掰扯仿真与实际的差异?
先介绍一下你用的芯片。
确认一下片外SRAM的连接。

使用特权

评论回复
10
刘前辈| | 2012-1-18 12:24 | 只看该作者
本帖最后由 刘前辈 于 2012-1-18 12:51 编辑

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

keil如何仿真XRAM.rar (264.04 KB)


//

使用特权

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

本版积分规则

0

主题

121

帖子

1

粉丝