打印
[ZLG-MCU]

Keil C51 的指针问题?

[复制链接]
1587|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiaoxin1986|  楼主 | 2009-7-4 17:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
Airwill| | 2009-7-4 19:40 | 只看该作者

不能

    因为不能通过 @Ri 的指令间接寻址包括 P0,P1,P2,P3 等在内的所有的特殊功能寄存器。

    这是 51 内核的问题, 不是 C 编译器的问题, 也就是说: 所有的 C 编译器都不能.

使用特权

评论回复
板凳
linhai1986| | 2009-7-7 22:14 | 只看该作者

RE:

unsigned char data *abc;

 

abc = &P0;

 

行不行?

使用特权

评论回复
地板
xiaoxin1986|  楼主 | 2009-7-7 23:51 | 只看该作者

……

abc = &P0; 这样写的话,Keil C51无法编译,P0的地址为:0x80, 如果这样写的话:

 

abc = 0x80;

 

则abc指向的的 iData 内存区域, 而不是特殊寄存器区域.

 

谜惑之中。。。

使用特权

评论回复
5
Airwill| | 2009-7-9 21:33 | 只看该作者

怎么不死心呢?

    特殊功能寄存器和 IDATA 是重叠的. 不能间接寻址 特殊功能寄存器! 这是 51 的内核规定的, 你的要求编译器也想实现的, 可惜没有指令支持它

使用特权

评论回复
6
linhai1986| | 2009-7-15 21:23 | 只看该作者

明白了,谢谢你啊

使用特权

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

本版积分规则

176

主题

1487

帖子

0

粉丝