新手必看 什么是c语言程序设计( 二 )


sfr16是一种扩充数据类型,占用两个内存单元,sfr16和sfr一样用于操作特殊功能寄存器,所不同的是,此类型的变量可访问16为特殊功能寄存器 。
定义格式:sfr16 变量名=变量地址 。
此处的变量地址为16位中的低8位地址,其地址范围为0x80~0xFF 。通过sfr16变量读16位特殊功能寄存器时,先读低字节,后读高字节;写特殊功能寄存器时先写高字节,后写低字节 。
9. sbit可位寻址位
sbit是C51中的一种扩充数据类型,利用它可以访问芯片内部的RAM中的可寻址位或特殊功能寄存器中的可寻址位 。
定义格式:
sbit 变量名=位地址;sbit 变量名=SFR地址^位序号;sbit 变量名=sfr16变量^位序号 。
因P1端口的寄存器是可位寻址的,所以我们可以定义P1_1为P1中的P1.1引脚,同样我们可以用P1.1的地址去写,这样在以后的程序语句中就可以用P1_1来对P1.1引脚进行读写操作了 。
例如:
sbit P1_1=P1^1;
sbit P1_1=0x91
常量与变量
(一)常量
常量是在程序运行过程中不能改变的量,如固定的数据表、字符等 。常量的数据类型只有整型、浮点型、字符型、字符串型和位标量 。
1. 整型常量
不同数据类型的整型常量表示方法不同,十进制如123,0,-89等;十六进制则以0x开头如0x34,-0x3B等;长整型就在数字后面加字母L,如104L,034L,等 。
2. 浮点型常量
浮点型常量可分为十进制和指数表示形式 。
十进制浮点型常量由数字和小数点组成,整数或小数部分为0,可以省略但必须有小数点,如0.888,3345.345,0.0等 。
指数浮点型常量表示形式为:[±]数字[.数字]e[±]数字
[]中的内容为可选项,如125e3,7e9,-3.0e-3等 。
3. 字符型常量
字符型常量是单引号内的字符,如‘a’,‘d’等 。表示不显示的控制字符,可以在该字符前面加一个反斜杠“”组成专用转义字符,常用转义字符如表3-3所示 。
4. 字符串型常量
字符串型常量由双引号内的字符组成,如“test”,“OK”等 。当引号内没有字符时,为空字符串 。
在C中字符串常量是做为字符类型数组来处理的,在存储字符串时系统会在字符串尾部加上“”转义字符以作为该字符串的结束符 。字符串常量“A”和字符常量‘A’是不同的,前者在存储时多占用一个字节的空间 。

新手必看  什么是c语言程序设计

文章插图
表3-3常用转义字符表
5. 位标量
位标量是C51编译器的一种扩充数据类型,它的值是一个二进制位,不是0就是1 。
下面我们来看一些常量定义的例子:
新手必看  什么是c语言程序设计

文章插图
以上两句它们的值都保存在程序存储器中,而程序存储器在运行中是不允许被修改的,所以如果在这两句后面用了类似a=110,a++这样的赋值语句,编译时将会出错 。
(二)变量
变量是可以在程序运行过程中不断变化的量,变量的定义可以使用所有C51编译器支持的数据类型 。要在程序中使用变量必须先用标识符作为变量名,并指出所用的数据类型和存储模式,这样编译系统才能为变量分配相应的存储空间 。
1. 变量的定义和作用范围
定义一个变量的格式如下:
[存储类型] 数据类型 [存储器类型] 变量名表
在定义格式中除了数据类型和变量名表是必要的,其它都是可选项 。
(1)存储类型
不同存储类型的变量以及不同位置定义的变量具有不同的代码有效范围,也就是变量的作用域 。在单片机程序中,按照变量的存储类型,可以分为:自动变量、全局变量、静态变量和寄存器变量 。