今天之间网归一为大家解答以上的问题。世风日下,sfr相信很多小伙伴还不知道,现在让我们一起来看看吧!
1、1.bit和sbit都是C51扩展的变量类型。
2、 bit和int char之类的差不多,只不过char=8位, bit=1位而已。
3、都是变量,编译器在编译过程中分配地址。
4、除非你指定,否则这个地址是随机的。
5、这个地址是整个可寻址空间,RAM+FLASH+扩展空间。
6、bit只有0和1两种值,意义有点像Windows下VC中的BOOL。
7、 sbit是对应可位寻址空间的一个位,可位寻址区:20H~2FH。
8、一旦用了sbi xxx = REGE^6这样的定义,这个sbit量就确定地址了。
9、sbit大部分是用在寄存器中的,方便对寄存器的某位进行操作的。
10、 2.bit位标量 bit位标量是C51编译器的一种扩充数据类型,利用它可定义一个位标量,但不能定义位指针,也不能定义位数组。
11、它的值是一个二进制位,不是0就是1,类似一些高级语言中的Boolean类型中的True和False。
12、 3.sfr特殊功能寄存器 sfr也是一种扩充数据类型,点用一个内存单元,值域为0~255。
13、利用它可以访问51单片机内部的所有特殊功能寄存器。
14、如用sfr P1 = 0x90这一句定P1为P1端口在片内的寄存器,在后面的语句中我们用以用P1 = 255(对P1端口的所有引脚置高电平)之类的语句来操作特殊功能寄存器。
15、 sfr P1 = 0x90; //定义P1 I/O 口,其地址90H sfr 关键定后面是一个要定义的名字,可任意选取,但要符合标识符的命名规则,名字最好有一定的含义如P1 口可以用P1 为名,这样程序会变的好读好多.等号后面必须是常数,不允许有带运算符的表达式,而且该常数必须在特殊功能寄存器的地址范围之内(80H-FFH),具体可查看附录中的相关表. sfr 是定义8 位的特殊功能寄存器而sfr16 则是用来定义16 位特殊功能寄存器, 如8052 的T2 定时器,可以定义为: sfr16 T2 = 0xCC; //这里定义8052 定时器2,地址为T2L=CCH,T2H=CDH。
本文就为大家分享到这里,希望大家看了会喜欢。