学过C语言的人,肯定对单片机中的SFR定义的数据类型,有一些困惑。
比如说,在单片机的头文件中,SFR定义的是特殊寄存器的地址:SFR P0=0X80H,这显然说明P0是一个地址常量。既然是地址常量,那么P0就不能再赋值,那么在使用P0寄存器的时候,P0又能直接赋值:P0=0xFF\\1111 1111.
在C语言中,如果P0表示的是指针变量。那么P0就不应该,当做变量名来使用。这就让学单片机的人对SFR定义的变量一头雾水(我也是搞不懂),后来我用自己的想法对SFR进行理解。
SFR P0=0X80H
SFR可理解为:
char P0;
&P0=0x80H;
这样P0的地址即是一个指针常量,也可以对P0赋值。