关于51单片机中SFR的理解

学过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赋值。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容