各位大神!!懂指针的进

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条回答
wye11083
2020-02-08 04:24
访问SFR时,使用sfr关键字标识变量,如
sfr IOA = 0x80;
如果要使用SFR位寻址,则为
sbit IOA0 = 0x80+0;
或者
sbit IOA0 = IOA ^ 0;
这是Keil的定义,只要你这样声明,Keil会自动用SFR寻址。
能不用汇编尽量不要使用汇编,有大炮了何必再换鸟枪?怀旧?而且你能保证你的所有函数的调用和返回都符合Keil定义?

一周热门 更多>