当前位置: 代码迷 >> 单片机 >> 能否定义一个指针变量、让其指向 SFR 寄存器?
  详细解决方案

能否定义一个指针变量、让其指向 SFR 寄存器?

热度:10   发布时间:2016-04-28 15:39:22.0
可不可以定义一个指针变量、让其指向 SFR 寄存器?、

可不可以定义一个指针变量、让其指向 SFR 寄存器?、

程序中比如我有个结构体:
struct P1func
{
        unsigned char reserved : 4;
        unsigned char ctl : 1;
        unsigned char scan : 3;
};

struct P1func *p1f;
想让 p1f 指向 P1 的地址、
然后使用的时候直接就可以 p1f->ctl = 1 就将 P1.4 置位、

该怎么写?、或者能不能实现?、
------解决方案--------------------
可以的呀,你这样不是已经可以了吗?只要再给p1f一个具体的地址,就可以了。
------解决方案--------------------
指向寄存器,寄存器已经被分配了绝对地址。

还有确定是可以的。
------解决方案--------------------
可以这样使用 
------解决方案--------------------
不可以,寄存器和存储器(按地址存取)不是一回事。
------解决方案--------------------
51里面不允许非sfr声明的变量定位到SFR区

像ARM这样的体系就很灵活,可以这么搞
------解决方案--------------------
是可以的了,好像。我用飞思卡尔的单片机好像就是这样定义的了。
  相关解决方案