单片机原理与接口技术第5章MCS-51单片机C51:程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
值域为0~255。
利用它可以访问MCS-51单片机内部的所有特殊功 能寄存器。
如用sfr P1 = 0x90定义一个特殊功能寄存器变 量“P1”,0x90是指51单片机的P1端口地址90H,变 量P1即指51单片机的P1端口。
在后面的语句中可以用P1 = 255(对P1端口的所 有引脚置高电平)之类的语句操作特殊功能寄存器。
02:57
返回目录
2
5.1 C51概述
------ C51编译器
C语言是一种通用的程序设计语言,其代码率高, 数据类型及运算符丰富,位操作能力强,适用于各种 应用的程序设计。使用C语言进行单片机应用系统开 发,具有编程灵活、调试方便、目标代码编译效率高 的特点。C语言也是目前使用最广的单片机应用系统 编程语言。
由C语言编程的单片机应用程序,称为单片机C语 言程序。MCS-51系列单片机开发系统的编译软件可以 对51单片机C语言源程序进行编译,称为C51编译器。 在C51编译软件中可进行51单片机C语言程序的调试。
02:57
返回目录
3
5.1 C51概述
------ C51特点
C51编译器针对MCS-51单片机硬件在下列几方面 对ANSI C进行了扩展。
unsigned long表示的数值范围是0~4294967295。
02:57
返回目录
16
Hale Waihona Puke 5.2.2 数据类型-----float浮点型
4.float浮点型
float浮点型在十进制中具有7位有效数 字,是符合IEEE-754标准(32)的单精度浮 点型数据,占用4B。具有24位精度。
02:57
返回目录
1) 扩展了专门访问MCS-51单片机硬件的数据类型; 2) 存储类型按MCS-51单片机存储空间分类; 3) 存储模式遵循存储空间选定编译器模式; 4) 指针分为通用指针和存储器指针; 5) 函数增加了中断函数和再入函数。
02:57
返回目录
4
5.1 C51概述
------ C51特点
使用具有C51编译扩展功能的C语言进行MCS-51单片机应用 系统的开发编程,简称C51编程。C51编程具有以下特点:
02:57
返回目录
8
5.2.1 标识符和关键字
------关键字列表
02:57
返回目录
9
5.2.1 标识符和关键字
------关键字列表
02:57
返回目录
10
5.2.1 标识符和关键字
------关键字列表
02:57
返回目录
11
5.2.2 数据类型
-----C51的数据类型
C51具有ANSI C的所有标准数据类型。
单片机原理与接口技术
第5章 MCS-51单片机 C51程序设计
02:57
返回目录
1
本章教学要求
第5章 MCS-51单片机C51程序设计
熟悉C51语法基础和程序结构; 掌握C51结构化程序设计; 掌握C51对单片机硬件的访问方法; 掌握C51函数定义与调用; 了解汇编语言和C51的混和编程。
02:57
返回目录
14
5.2.2 数据类型
-----int整型
2.int整型
int整型长度为2B,用于存放一个双字节数据。
signed int表示的数值范围是-32768~+32767,字
节中最高位表示数据的符号,0表示正数,1表示负 数。
unsigned int表示的数值范围是0~65535。
02:57
02:57
返回目录
13
5.2.2 数据类型
----char字符类型
1.char字符类型
char类型的长度是1B,通常用于定义处理字符数 据的变量或常量。
unsigned char类型用字节中所有的位表示数值, 可以表达的数值范围是0~255。
signed char类型用字节中最高位表示数据的符 号,0表示正数,1表示负数,负数用补码表示,能表 示的数值范围是-128~+127。unsigned char常用于处 理ASCII字符或用于处理小于或等于255的整型数。
以“0”代表假,以“1”代表真。
02:57
返回目录
28
5.2.3 运算符和表达式
-----4.位操作运算符
C51按位操作运算符有六种。
&
按位与
|
按位或
^
按位异或
~
位取反
<<
位左移
>>
位右移
注:移位操作为补零移位。位运算符只能对整形和字符型运算, 不能对实型数据运算。
如:char a = 0x0f;表达式a = ~a值为0xf0。
另外,bit还可访问MCS-51单片机片内20H~
2FH范围内的位对象。C51编译器提供了一个bdata 存储器类型,允许将具有bdata类型的对象放入 MCS-51单片机片内可位寻址区。
02:57
返回目录
24
5.2.2 数据类型
-----sbit和bit
sbit和bit的区别:sbit定义特殊功能 寄存器中的可寻址位;而bit则定义了一个 普通的位变量,一个函数中可包含bit类型 的参数,函数返回值也可为bit类型。
关键字则是编程语言保留的特殊标识符,它们具有固定的 名称和含义,在程序编写中不允许将关键字另做他用。C51中的 关键字除了有ANSI C标准的32个关键字外,还根据MCS-51单片 机的特点扩展了相关的关键字。C51关键字如表5-1所示。
在C51的文本编辑器中编写C程序,系统可以把保留关键字 以不同颜色显示,如int关键字的默认颜色为天蓝色。
02:57
返回目录
20
5.2.2 数据类型
8.sfr16 16位特殊功能寄存器
-----16位特殊功能寄存器
sfr16也是一种C51扩充数据类型,用 于定义存在于MCS-51单片机内部RAM的16位 特殊功能寄存器,如定时器T0和T1。
sfr16型数据占用2个内存单元,取值范
围为0~65535。
02:57
返回目录
15
5.2.2 数据类型
3.long长整型
----long长整型
long长整型长度为4B,用于存放一个四字节数据。
分 有 符 号 long 长 整 型 signed long 和 无 符 号 long 长 整 型 unsigned long,默认值为signed long类型。
signed int表示的数值范围是-2147483648~+2147483647, 字节中最高位表示数据的符号,0表示正数,1表示负数。
如:char a = 0x22;表达式a<<2值为0x88,即a值左移两位, 移位后空白位补0。
02:57
返回目录
29
5.2.3 运算符和表达式
-----++ --运算符
5.自增、自减运算符
++
自增1
--
自减1
自增、自减运算符可以在变量的前面或后面使用。
如,++i或--I,意为在使用i之前,先使i值加1或减1。
1) 可管理内部寄存器和存储器的分配,编程时,无需考虑 不同存储器的寻址和数据类型等细节问题;
2) 程序由若干函数组成,具有良好的模块化结构、可移植 性好、便于项目维护管理;
3) 有丰富的子程序库可直接引用,从而大大减少用户编程 工作量,提高编程效率;
4) 与汇编语言交叉编程。用汇编语言编写与硬件有关的程 序,用C51编写与硬件无关的运算程序,充分发挥两种语言的长 处,提高开发效率。
C51语言是区分大小写的一种高级语言,如“a_1” 和“A_1”是两个完全不同的标识符。
02:57
返回目录
7
5.2.1 标识符和关键字
------关键字
C51中有些库函数的标识符是以下划线开头的,所以一般不 要以下划线开头命名用户自定义标识符。标识符在命名时应当 简单,含义清晰,这样有助于阅读理解程序。
如,i++或i--,意为在使用变量i之后,再使i值加1或 减1。
例如,定义整型变量:int i=6,并有j=++i,则j值为7, i值也为7。而如有j=i++,则j值为6,i值为7。
02:57
返回目录
30
5.2.3 运算符和表达式
6.赋值运算符
02:57
返回目录
22
5.2.2 数据类型
-----sbit可寻址位
9.sbit可寻址位
(2)sbit 位变量名 = 特殊功能寄存器名^位位置 当可寻址位位于特殊功能寄存器中时,可采用这种
方法。位位置是一个0~7之间的常数。
(3)sbit 位变量名 = 字节地址^位位置 这种方法是以一个常数(字节地址)作为基地址,
该常数必须在80H~FFH(特殊功能寄存器的字节地址) 之间。位位置是一个0~7之间的常数。
02:57
返回目录
23
5.2.2 数据类型
-----reg51.h
MCS-51单片机中的特殊功能寄存器及其可寻 址位,已被预先定义放在文件reg51.h中,在程序 的 开 头 只 需 加 上 #include<reg51.h> 或 #include<reg52.h>即可。
17
5.2.2 数据类型
-----*指针型
5.*指针型
指针型本身就是一个变量,在这个变量中存 放着指向另一个数据的地址。这个指针变量要占 据一定的内存单元,对不同的处理器长度也不尽
相同,在C51中它的长度一般为1~3个字节。
02:57
返回目录
18
5.2.2 数据类型
-----bit位标量
6.bit位标量
其基本数据类型包括:char、int、short、 long、float和double。
对C51编译器来说,short类型和int类型相 同,double类型和float类型相同。
02:57
返回目录
12
5.2.2 数据类型
-----C51的数据类型
除此之外,为了更加有利地利用MCS-51的结构,C51还增 加了一些特殊的数据类型,包括bit、sbit、sfr、sfr16。 数据类型如表5-2所示。
返回目录
21
5.2.2 数据类型
-----sbit可寻址位
9.sbit可寻址位
sbit也是一种C51扩充数据类型,利用它可以 访问芯片内部RAM中的可寻址位或特殊功能寄存器 中的可寻址位。 定义方法有如下三种: (1)sbit 位变量名 = 位地址 将位的绝对地址赋给位变量,位地址必须位于 80H~FFH(特殊功能寄存器的位地址)之间。
02:57
返回目录
27
5.2.3 运算符和表达式
------逻辑运算符
3.C51逻辑运算符
C51逻辑运算符有三种。 && 逻辑与 || 逻辑或 ! 逻辑非
优先级:逻辑非“!”最高。 结合性:“&&”和“||”自左至右方向。“!”自右至左方向。 运算符的两边为关系表达式。逻辑表达式和关系表达式的值相同,
02:57
返回目录
26
5.2.3 运算符和表达式
------关系运算符
2.C51关系运算符
C51关系运算符有六种。
< 小于
> 大于
<=
小于等于
>=
大于等于
==
相等
!=
不相等
优先级:前四个高,后两个“= =”和“! =”级别低。
结合性:自左至右方向。
关系表达式的结果是逻辑值“真”或“假”,C51中以“1”代表真, “0”代表假。
bit位标量是C51编译器的一种扩充数据类 型,利用它可定义一个位标量。它的值是一个 二进制位,不是0,就是1,类似一些高级语言 中的boolean型数据的True和False。
02:57
返回目录
19
5.2.2 数据类型
7.sfr特殊功能寄存器
-----sfr特殊功能寄存器
sfr是一种C51扩充数据类型,占用一个内存单元,
02:57
返回目录
6
5.2 C51 语法基础
------标识符
5.2.1 标识符和关键字
标识符用来标识源程序中某个对象的名字,这些对 象可以是语句、数据类型、函数、变量、数组等。
标识符由字符串、数字和下划线等组成,应该注意 的是第一个字符必须是字母或下划线,不能用数字开头, 如“1_a”是错误的,编译时会有错误提示。在C51编译 器中,只支持标识符的前32位为有效标识。
02:57
返回目录
25
5.2.3 运算符和表达式
1.C51的算术运算符
C51算术运算符有五种。 + 加法运算符或正号 - 减法运算符或负号 * 乘法运算符 / 除法运算符 % 模(求余)运算符
-----算术运算符
优先级:先乘除,后加减,先括号内,再括号外。 结合性:自左至右方向。 模运算即求余数,如7%3,结果是7除以3所得余数1。
02:57
返回目录
5
5.1 C51概述
------ C51特点
C51编程和汇编语言编程过程一样。单片机C语言源程 序经过编辑、编译、连接后生成目标程序(.BIN和.HEX) 文件,然后运行即可。调试51单片机C语言程序可用Keil C51编译器。
注意,使用C51编程可以取代繁琐的汇编语言编程,但 仍需要了解MCS-51单片机的硬件结构。所以对于单片机系 统的开发应采用汇编语言与C51混合编程的方法更为有效。
相关文档
最新文档