单片机原理及应用C51 语言程序设计基础
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 1.低级语言 • 2.高级语言
3
8.2 C51 语言的变量
• 8.2.1 变量的数据类型 • 8.2.2 变量的存储
4
8.2.1 变量的数据类型
5
8.2.1 变量的数据类型
6
8.2.1 变量的数据类型
• 1.bit 位型 – bit 可以定义位变量,但是不能定义位指针变量和位数 组。如,“bit a;”是正确的,而“bit *z;”和“bit z[2];”是错误的。
• code 类型的变量 – 存放在程序存储器中 – 不能修改,仅用于查询的数据表格可定义成该类型
16
2.变量的存储类型
• 访问这几种存储器类型的变量时 – 需用到头文件“absacc.h”中的宏定义
17
8.3 C51 语言的常量
• 1.整型常量 – 整型常数,可写成十进制或十六进制形式
• 2.浮点型常量 – 有小数部分
– Keil C51 编译器预定义了一些sbit、sfr 和sfr16 变量
,如:P0 是预定义的sfr 型变量,并且已经在头文件
“reg51.h”中进行了定义,若需在程序中使用这些预
定义变量,仅需在程序中加入“# include<reg51.h>”
即可。
13
8.2.2 变量的存储
• 1.变量的分类 • 2.变量的存储类型
7
8.2.1 变量的数据类型
• 3.int 整型 – signed short int 和unsigned short int 均用于整型变 量定义,前者定义有符号数,后者定义无符号数。另 外,signed short int 和unsigned short int 可分别简 写为signed int 和unsigned int。
• 6.指针型 – *可以加在字符型、整型、长整型和浮点型变量定义之 前,从而形成相应类型的指针型变量。如,指令 “char *x;”定义char 型的指针变量x。指针型变量中 存放存储器或特殊功能寄存器的地址,通过该地址可 以访问存储器或特殊功能寄存器中存放的数据。
9
8.2.1 变量的数据类型
• 7.可寻址位 – sbit 用于定义单片机特殊功能寄存器中可寻址的位。 – 例如,指令“sbit f=P2^1;”定义的变量f 被初始化为 特殊功能寄存器P2 的第1ຫໍສະໝຸດ Baidu位。严格来说,sbit 并不是 变量定义,而只是给特殊功能寄存器的可寻址位赋予 一个别名而已。
• 3.字符型常量 – 由单引号括起来单个字符 – 转义符 • 不能被显示的字符型常量,常用的转义符见表8-3
• 4.字符串型常量 – 用双引号括起来一串字符
18
8.3 C51 语言的常量
19
8.4 运算符
• 1.赋值运算符“=” • 2.复合的赋值运算符 • 3.算数运算符 • 4.增量和减量运算符 • 5.关系运算符 • 6.逻辑运算符 • 7.位运算符 • 8.指针和地址运算符
第8章 C51 语言程序设计基础
第8 章 C51 语言程序设计基础
• 8.1 计算机程序设计语言概述 • 8.2 C51 语言的变量 • 8.3 C51 语言的常量 • 8.4 运算符 • 8.5 数组 • 8.6 C51 语言的基本语句 • 8.7 函数 • 8.8 C51 程序设计实例
2
8.1 计算机程序设计语言概述
14
1.变量的分类
• 按照作用范围和存放方式的差别,可分为 – 自动(Auto)变量 – 全局(Global)变量 – 局部(Local)变量 – 外部(Extern)变量 – 静态(Static)变量 – 寄存器(register)变量
15
2.变量的存储类型
• 可按变量存放位置和访问方式,分为6 种 – code、data、bdata、idata、pdata 和xdata
– 另外,在C51 语言中,十六进制需以“0X”或“0x” 开头,且数字末尾不加字母“H”或“h”。
11
8.2.1 变量的数据类型
• 8.特殊功能寄存器
– sfr 可定义特殊功能寄存器变量。 – 严格来说,sfr 并未定义变量,而仅是给单片机的特殊
功能寄存器赋予一个别名。例如,指令“sfr W= 0x80;”将特殊功能寄存器P0 的地址赋予变量W,之 后,变量W与P0 等价。需要注意的是,sfr 定义中出 现的地址只能是特殊功能寄存器的地址。
• 4.long 长整型 – signed long int 和unsigned long int 均用于长整型 变量定义,前者定义有符号数,后者定义无符号数。
8
8.2.1 变量的数据类型
• 5.浮点型 – float 和double 型变量都是浮点型变量,这两种变量 类型完全等价,其取值范围和位数等完全相同。这与 PC 的C 语言不同,在PC 的C 语言中,float 型变量和 double 型变量的取值范围和位数等均不同。
10
8.2.1 变量的数据类型
• 7.可寻址位 – 需要注意的是,因为sbit 定义的变量来自于特殊功能 寄存器,所以sbit 型变量的位地址必须在0x80~0xFF 范围内,即特殊功能寄存器区的位地址范围。例如, 指令“sbit A_0 =0xe0;”为累加器A 的最低位定义了 位变量A_0,指令“A_0=1;”将累加器A 的最低位设 置为1;而指令“sbit somebit = 0x7f;”是错误的, 因为0x7f 作为一个位地址不在特殊功能寄存器区的位 地址范围内。
• 2.char 字符型 – signed char 和unsigned char 均用于字符型变量定 义,前者定义有符号数,后者定义无符号数。无符号 数不能为负数,若将负数赋值给无符号数,则该负数 将被转换成其补码。如,指令“unsigned char x=1;”使x 的实际值为255(255 是-1 的8 位补码)。
12
8.2.1 变量的数据类型
• 9.16 位特殊功能寄存器
– sfr16 用于定义16 位特殊功能寄存器变量。例如,指 令“sfr16 Time = 0x8C;”定义了16位的特殊功能寄存 器变量Time,该变量由字节地址为0x8C 和0x8C+1 的 两个8 位特殊功能寄存器拼接而成,其中,字节地址为 0x8C 的TH0 为Time 的低8 位,字节地址为0x8D 的 TH1 为Time 的高8 位。
3
8.2 C51 语言的变量
• 8.2.1 变量的数据类型 • 8.2.2 变量的存储
4
8.2.1 变量的数据类型
5
8.2.1 变量的数据类型
6
8.2.1 变量的数据类型
• 1.bit 位型 – bit 可以定义位变量,但是不能定义位指针变量和位数 组。如,“bit a;”是正确的,而“bit *z;”和“bit z[2];”是错误的。
• code 类型的变量 – 存放在程序存储器中 – 不能修改,仅用于查询的数据表格可定义成该类型
16
2.变量的存储类型
• 访问这几种存储器类型的变量时 – 需用到头文件“absacc.h”中的宏定义
17
8.3 C51 语言的常量
• 1.整型常量 – 整型常数,可写成十进制或十六进制形式
• 2.浮点型常量 – 有小数部分
– Keil C51 编译器预定义了一些sbit、sfr 和sfr16 变量
,如:P0 是预定义的sfr 型变量,并且已经在头文件
“reg51.h”中进行了定义,若需在程序中使用这些预
定义变量,仅需在程序中加入“# include<reg51.h>”
即可。
13
8.2.2 变量的存储
• 1.变量的分类 • 2.变量的存储类型
7
8.2.1 变量的数据类型
• 3.int 整型 – signed short int 和unsigned short int 均用于整型变 量定义,前者定义有符号数,后者定义无符号数。另 外,signed short int 和unsigned short int 可分别简 写为signed int 和unsigned int。
• 6.指针型 – *可以加在字符型、整型、长整型和浮点型变量定义之 前,从而形成相应类型的指针型变量。如,指令 “char *x;”定义char 型的指针变量x。指针型变量中 存放存储器或特殊功能寄存器的地址,通过该地址可 以访问存储器或特殊功能寄存器中存放的数据。
9
8.2.1 变量的数据类型
• 7.可寻址位 – sbit 用于定义单片机特殊功能寄存器中可寻址的位。 – 例如,指令“sbit f=P2^1;”定义的变量f 被初始化为 特殊功能寄存器P2 的第1ຫໍສະໝຸດ Baidu位。严格来说,sbit 并不是 变量定义,而只是给特殊功能寄存器的可寻址位赋予 一个别名而已。
• 3.字符型常量 – 由单引号括起来单个字符 – 转义符 • 不能被显示的字符型常量,常用的转义符见表8-3
• 4.字符串型常量 – 用双引号括起来一串字符
18
8.3 C51 语言的常量
19
8.4 运算符
• 1.赋值运算符“=” • 2.复合的赋值运算符 • 3.算数运算符 • 4.增量和减量运算符 • 5.关系运算符 • 6.逻辑运算符 • 7.位运算符 • 8.指针和地址运算符
第8章 C51 语言程序设计基础
第8 章 C51 语言程序设计基础
• 8.1 计算机程序设计语言概述 • 8.2 C51 语言的变量 • 8.3 C51 语言的常量 • 8.4 运算符 • 8.5 数组 • 8.6 C51 语言的基本语句 • 8.7 函数 • 8.8 C51 程序设计实例
2
8.1 计算机程序设计语言概述
14
1.变量的分类
• 按照作用范围和存放方式的差别,可分为 – 自动(Auto)变量 – 全局(Global)变量 – 局部(Local)变量 – 外部(Extern)变量 – 静态(Static)变量 – 寄存器(register)变量
15
2.变量的存储类型
• 可按变量存放位置和访问方式,分为6 种 – code、data、bdata、idata、pdata 和xdata
– 另外,在C51 语言中,十六进制需以“0X”或“0x” 开头,且数字末尾不加字母“H”或“h”。
11
8.2.1 变量的数据类型
• 8.特殊功能寄存器
– sfr 可定义特殊功能寄存器变量。 – 严格来说,sfr 并未定义变量,而仅是给单片机的特殊
功能寄存器赋予一个别名。例如,指令“sfr W= 0x80;”将特殊功能寄存器P0 的地址赋予变量W,之 后,变量W与P0 等价。需要注意的是,sfr 定义中出 现的地址只能是特殊功能寄存器的地址。
• 4.long 长整型 – signed long int 和unsigned long int 均用于长整型 变量定义,前者定义有符号数,后者定义无符号数。
8
8.2.1 变量的数据类型
• 5.浮点型 – float 和double 型变量都是浮点型变量,这两种变量 类型完全等价,其取值范围和位数等完全相同。这与 PC 的C 语言不同,在PC 的C 语言中,float 型变量和 double 型变量的取值范围和位数等均不同。
10
8.2.1 变量的数据类型
• 7.可寻址位 – 需要注意的是,因为sbit 定义的变量来自于特殊功能 寄存器,所以sbit 型变量的位地址必须在0x80~0xFF 范围内,即特殊功能寄存器区的位地址范围。例如, 指令“sbit A_0 =0xe0;”为累加器A 的最低位定义了 位变量A_0,指令“A_0=1;”将累加器A 的最低位设 置为1;而指令“sbit somebit = 0x7f;”是错误的, 因为0x7f 作为一个位地址不在特殊功能寄存器区的位 地址范围内。
• 2.char 字符型 – signed char 和unsigned char 均用于字符型变量定 义,前者定义有符号数,后者定义无符号数。无符号 数不能为负数,若将负数赋值给无符号数,则该负数 将被转换成其补码。如,指令“unsigned char x=1;”使x 的实际值为255(255 是-1 的8 位补码)。
12
8.2.1 变量的数据类型
• 9.16 位特殊功能寄存器
– sfr16 用于定义16 位特殊功能寄存器变量。例如,指 令“sfr16 Time = 0x8C;”定义了16位的特殊功能寄存 器变量Time,该变量由字节地址为0x8C 和0x8C+1 的 两个8 位特殊功能寄存器拼接而成,其中,字节地址为 0x8C 的TH0 为Time 的低8 位,字节地址为0x8D 的 TH1 为Time 的高8 位。