各位大神!!懂指针的进

2020-02-04 09:13发布

    首先在51中P1的物理地址是90H,如果我不通过用《reg51.h》或者sfr之类的直接用指针,应该
也是可以对P1口进行操作的。
代码如下
void main()
{   
   unsigned char*p;
   p=( volatile unsigned char *)(0x90);
   *p=0xf0;
   while(1);
}
如果上面的代码正确的话,那么8个led是一半亮一半不亮啊,纳闷的是这个程序运行的时候没一点反应,望各位大侠多多指教!!十分感谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
35条回答
takashiki
2020-02-08 03:00
51的架构比较怪异,SFR区寄存器只能直接访问,不能通过指针间接访问的。

另外,51是哈佛结构。是哈佛结构的原因并不仅仅因为他不是统一编址的,而主要是程序和内存在内部是采用分开的总线实现的。
更高级的单片机比如ARM,外部表现全部都是统一编址,但CM0就是冯诺依曼结构,CM3就是哈佛结构。

一周热门 更多>