这个问题的理解主要有两点:
1、单片机的特殊功能寄存器。
2、KEIL软件的sfr变量声明的用法。
sfr P0=0x80;
解释:
1、特殊功能寄存器中,0x80存储的是P0口的状态。
2、这个语句将P0定义为一个变量,其内容为特殊功能寄存器的0x80寄存器。
3、P0可以更改名字例如:sfr PORT0=0x80;这样在程序中使用的时候,PORT0的数据就是单片机P0口的数据。
其详情请参考《Keil Software – Cx51 编译器用户手册》的“特殊功能寄存器(SFR)”章节。
下面做简单介绍,若要文档请邮箱联系。
1、8051 系列微处理器提供一个特别的存储区作为特殊功能寄存器 SFR。 用在程序
中的 SFR 可控制计时器 、计数器、 串口、 并口 和外围设备。 SFR 的地址从 0x80 到
0xFF, 可以以位、 字节 和字访问。
2、sfr
SFR和别的C变量一样声明。 唯一的不同点是数据类型是sfr而不是char或int。
例如:
sfr P0 = 0x80; /* port-0,address 80h */
sfr P1 = 0x90; /* port-1,address 90h */
sfr P2 = 0xA0; /* port-2,address 0A0h */
sfr P3 = 0xB0; /* port-3,address 0B0h */
P0、 P1 、P2 和 P3 是声明的 SFR 名。 sfr 变量的名称和别的 C 变量一样定义
在 sfr声明中可用任何符号名。
在等号 = 后指定的地址必须是一个常数值, 不允许带操作数的表达
式。 传统的 8051 系列支持 SFR 地址从 0x80 到 0xFF。 PHILIPS 80C51MX 提供
一个附加扩展的 SFR 空间 地址范围是 0x180 到 0x1FF。
温馨提示:答案为网友推荐,仅供参考