打印

扩展寄存器定义

[复制链接]
5019|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
箫笑|  楼主 | 2008-10-10 14:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
对一个扩展功能的单片机进行扩展寄存器定义,
首先很开心用一句
sfr  ADC  = 0xf13;
keil毫不留情给了个error C142: 'SFR': invalid base address

然后用这句
#define    ADC  (*((unsigned char *) 0xf13))
编译没问题,就是实际上是没作用的

最后成功的方案是这句
unsigned char xdata  ADC _at_ 0xf13;

想不明白为什么用宏定义会不行的?我写的这句有什么问题吗?

相关帖子

沙发
hgjinwei| | 2008-10-10 19:51 | 只看该作者

不明白

不明白,既然是定义寄存器,怎么会定义到xdata里去了?
还有,sfr定义特殊功能寄存器似乎是在0xff之内的,难道说的不是51?

使用特权

评论回复
评论
changshs2018 2019-3-5 20:39 回复TA
扩展的寄存器是这样子的。 
板凳
箫笑|  楼主 | 2008-10-10 19:59 | 只看该作者

正是51

是一种51内核的单片机,它集成了AD功能,而AD特殊功能寄存器的地址在xdata,所以有这样的东西.

使用特权

评论回复
地板
zyok| | 2008-10-10 20:23 | 只看该作者

呵呵,没见过~~

使用特权

评论回复
5
ayb_ice| | 2008-10-11 10:36 | 只看该作者

unsigned char *不等于unsigned char xdata*

#define    ADC  (*((unsigned char xdata*) 0xf13))即可

使用特权

评论回复
6
xwj| | 2008-10-11 11:10 | 只看该作者

呵呵,LS正解

建议LZ先去看看Keil的ABSACC.H

使用特权

评论回复
7
箫笑|  楼主 | 2008-10-11 20:33 | 只看该作者

恍然大悟

恍然大悟

使用特权

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

本版积分规则

78

主题

368

帖子

0

粉丝