C51关键字 数据类型 及 存储类型总结
一、 数据类型
1. char 字符类型
char 类型的长度是一个字节,通常用于定义处理字符数据的变量或常量。分无符号字 符类型 unsigned char 和有符号字符类型 signed char,默认值为 signed char 类型。 unsigned char 类型用字节中所有的位来表示数值,所能表达的数值范围是 0~255。 signed char 类型用字节中最高位字节表示数据的符号,“0”表示正数,“1”表示负数,负数用补码表示。所能表示的数值范围是-128~+127。unsigned char 常用于处理 ASCII 字符或用于处理小于或等于 255 的整型数。
2. int 整型
int 整型长度为两个字节,用于存放一个双字节数据。分有符号 int 整型数 signed int 和无符号整型数 unsigned int,默认值为 signed int 类型。signed int 表示的数值范围是-32768~+32767,字节中最高位表示数据的符号,“0”表示正数,“1”表示负数。 unsigned int 表示的数
值范围是 0~65535。
3. long 长整型
long 长整型长度为四个字节,用于存放一个四字节数据。分有符号 long 长整型 signed long 和无符号长整型 unsigned long,默认值为 signed long 类型。signed int 表示的数值范围是-2147483648~+2147483647,字节中最高位表示数据的符号,“0”表示正 数,“1”表示负数。unsigned long 表示的数值范围是 0~4294967295。
4. float 浮点型
float 浮点型在十进制中具有 7 位有效数字,是符合 IEEE-754 标准的单精度浮点型数 据,占用四个字节。因浮点数的结构较复杂在以后的章节中再做详细的讨论。
5. 指针型
指针型本身就是一个变量,在这个变量中存放的指向另一个数据的地址。这个指针变量要占据一定的内存单元,对不一样的处理器长度也不尽相同,在 c51中它的长度一般为 1~3 个字节。
6. bit 位标量
bit位标量是c51编译器的一种扩充数据类型,利用它可定义一个位标量,但不能定义位指针,也不能定义位数组。它的值是一个二进制位,不是 0 就是 1,类似一些高级语 言中的 Boolean 类型中的 True 和 False。
7. sfr 特殊功能寄存器
sfr 也是一种扩充数据类型,点用一个内存单元,值域为 0~255。利用它能访问 51 单片机内部的所有特殊功能寄存器。如用 sfr P1 = 0x90 这一句定 P1 为 P1 端口在片内 的寄存器,在后面的语句中用以用 P1 = 255(对 P1 端口的所有引脚置高电平)之类的语句来操作特殊功能寄存器。
8. sfr16 16 位特殊功能寄存器
sfr16 占用两个内存单元,值域为 0~65535。sfr16和sfr一样用于操作特殊功能寄存 器,所不一样的是它用于操作占两个字节的寄存器,如定时器T0和T1。
9. sbit 可寻址位
sbit 同样是单片机c语言中的一种扩充数据类型,利用它能访问芯片内部的 RAM 中的可寻址位或特殊功能寄存器中的可寻址位。如先前定义了sfr P1 = 0x90; //因 P1 端口的寄存器是可位寻址的,所以能定义sbit P1_1 = P1^1; //P1_1 为 P1 中的 P1.1 引脚// 同样我们能用 P1.1 的地址去写,如 sbit P1_1 = 0x91; 这样在以后的程序语句中就能用 P1_1 来对 P1.1 引脚进行读写操作了。通常这些能直接使用系统供给的预处理文件,里面已定义好各特殊功能寄存器的简单名字,直接引用能省去一点时间,我自己是一直用的。当然您也能自己写自己的定义文件,用您认为好记的名字
二、 存储区域
keil C51存储区域分为程序存储区和数据存储区2大类型。
1. 程序存储区(Pragram Area)
欲将声明的数据存放在程序存储区域,可以使用关键字“code”说明。
例 unsigned char code i=10;则表示 i为无符号字符型数据存放区域为程序存储区。
2. 数据存储区(Data Memory)
数据存储区域分为内部数据存储区、外部数据存储区域和特殊功能寄存器寻址区。
1) 内部数据存储区域(Internal Data Memory):可以使关键字"data、iadta、bdata"做相应说明。
register: 寄存器区,四组寄存器 R0~R7
bdata:可位寻址区,寻址范围为0X20~0X2F。
data:直接寻址区,声明的数据存储范围为内部RAM低128字节 0X00~0X7F。
例 unsigned char data i=10;则表示 i为无符号字符型数据存放区域为数据存储区域(RAM)的低128字节范围内。
idata:间接寻址区,声明的数据存储范围为整个内部RAM区 0X00~0XFF。
例float数值范围 unsigned char idata i=10;则表示 i为无符号字符型数据存放区域为数据存储区域(RAM)内。
2) 外部数据存储区(External Data Memory):可以使用关键字"pdata、xdata"进行说明。
pdata:主要用于紧凑模式,能访问1页(256字节)的外部RAM,即在访问使用,pdata定义的数据时,不会影响P2口的输出电平(在访问某些自身内部扩展的外部RAM时本身就不会影响I/O端口)。
例 unsigned char pdata i;则表示 i为无符号字符型数据存放区域为外部数据存储区域(RAM)内(只能在一页范围内)具体操作哪一页,可由其他i/o口设定。
xdata:可访问64k的外部数据存储区,地址范围0X0000~0XFFFF,同pdata一样在访问芯片自身内部扩展的RAM时也不会影响I/O端口。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论