单片机 sfr定义

单片机 sfr定义,第1张

P0~P3、PSW、ACC等这些寄存器在sfr中的地址,是intel设计MCS-51单片机时就定下的昌乱好。后来许多厂家生产51单片机时都沿用了这定义,以保证程序的兼容性。\r\n至于如下的寄存器\r\nsfr CLK_DIV = 0x97//为STC单片机定义,系统时钟分耐铅频\r\nsfr P0M1 = 0X93\r\nsfr P0M0 = 0X94\r\nsfr P1M1 = 0X91\r\nsfr P1M0 = 0X92\r\nsfrP2M1 = 0X95\r\nsfrP2M0 = 0X96\r\n是STC生产的单片机,因为加入了自己设计的功能选项,陪毁所以就增加了这些寄存器。

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12398373.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存