各位大神!!懂指针的进

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是一半亮一半不亮啊,纳闷的是这个程序运行的时候没一点反应,望各位大侠多多指教!!十分感谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
34条回答
banyai
1楼-- · 2020-02-06 16:17
没办法,除非你自已写个编译器,定义一个特殊指针,专门对SFR进行操作。
pish
2楼-- · 2020-02-06 20:46
如果这种方法可行,不是更好吗,而且ARM等单片机都是这样搞的,干嘛还要搞出sfr来,所以,想想都知道啦
hhxb
3楼-- · 2020-02-06 21:44
pish 发表于 2012-4-13 17:10
如果这种方法可行,不是更好吗,而且ARM等单片机都是这样搞的,干嘛还要搞出sfr来,所以,想想都知道啦 ...

这样设方便你自己,要不然还5要去记地址。
rookieli
4楼-- · 2020-02-06 22:32
看来是没办法咯,可能要去看编译原理才能解决这个问题
weixinal
5楼-- · 2020-02-07 03:27
 精彩回答 2  元偷偷看……
rookieli
6楼-- · 2020-02-07 05:50
weixinal 发表于 2012-4-13 19:28
楼主用的到底是什么单片机啊?具体型号

既然能编译通过,就说明能找到这块地址,如果是51的话就绝对是在sfr ...

我用的是stc89c52

一周热门 更多>