51单片机的头文件里面的sfr P0=0x80和sfr P1=0x90这类的具体意思

2024-11-24 01:36:17
推荐回答(5个)
回答1:

sfr是用于定义特殊功能寄存器的。

sfr P0=0x80是指整一个P0(P0^0-P0^7)都在塌备0x80地址。

你仔细看另外的特殊寄存器的地址定义啊,一看就明白了。如下取了一小段:

#ifndef __REG52_H__
#define __REG52_H__
/* BYTE Registers */
sfr P0 = 0x80;
sfr P1 = 0x90;
sfr P2 = 0xA0;
sfr P3 = 0xB0;
sfr PSW = 0xD0;
sfr ACC = 0xE0;
sfr B = 0xF0;
sfr SP = 0x81;
sfr DPL = 0x82;
sfr DPH = 0x83;
sfr PCON = 0x87;
sfr TCON = 0x88;
sfr TMOD = 0x89;
sfr TL0 = 0x8A;
sfr TL1 = 0x8B;
sfr TH0 = 0x8C;
sfr TH1 = 0x8D;
……

以上,看到了没有?团孝毁
0X81是SP的地址,0X82是DPL的地址。

如果你再仔细点,就不会有这种疑问了,呵呵。

继续加油,祝你更大的进慎纳步!

回答2:

不对。
0x80代表P0这个则汪迹寄存器。8位单陵洞片机每个寄存器孙并是8位的。P0^0代表对0x80的第一位操做也就是这个寄存器的第一位操作。
(用程序验证 sfr P0_0=0x81
main()
{
P0_0=各种操作


}
)

回答3:

是指P0寄存器的地址在0x80。与位寻址无直接关联。
sfr是用于定义特殊功能寄存器的。

回答4:

因为你查SFR(特殊功能寄存器)的名称及主要功能表时,隐游P1端口所对应的字节地址就灶枣销是0x90,在寄存器岩睁或存储器中一个单元即一个地址含有8个字节,所以以P1端口为例,一整个P1的8位都在0x90地址上。

回答5:

你知道0x80对应的二进制嘛,就是从0-7每个位赋相对的二进制数