C51单片机程序设计
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.3 软件的调试
2
第五章 C51程序设计基础
5.1 C程序设计的基本概念 • C语言是一种通用的计算机程序设计语言,在国际上十分
流行,它既可用来编写计算机的系统程序,也可用来编写 一般的应用程序。 • C5l是在5l系列单片机上使用的C语言。 • C51程序结构与一般C语言没有什么差别。一个C5l程序大 体上是一个函数定义的集合,在这个集合中仅有一个名为 main的函数(主函数)。主函数是程序的入口,主函数中 的所有语句执行完毕,则程序执行结束。 • C51中使用的编译器主要是Keil C5l。Keil C51完全支持C 的标准指令,并有很多用来优化805l指令结构的C的扩展 指令。
(2)浮点型常量可分为十进制和指数表示形式 。十进制由 数字和小数点组成,如:0.0,.25,5.789,0.13,5.0, 300.,-267.8230等均为合法的实数,整数或小数部分为 0,能省略但必须有小数点。指数形式由十进制数加阶码 标志“e”或“E”以及阶码(只能为整数,可以带符号) 组成。其一般形式为aEn(a为十进制数,n为十进制整数) 其值为a*10n,如:2.1E5 (等于2.1*105)。
3
5.1.1 主函数(C51的程序结构)
预处理命令 函数说明
功能函数1
#include<reg51.h> long funl(); float fun2(); fun1()
{
函数体
….
主函数
}
main()
{
函数体
……
}
功能函数2 fun2()
函数体
{ ……..
}
4
5.1.2 标识符和关键字
• 包括c语言ANSI C标准规定的32个关键字: Auto,break,case,char,const, continue,default,do,double,else, enum,extern,float,for,goto,if,int, long,register,return,short,signed, sizeof,static,struct,switch,typedef, union,unsigned,void,volatile,while
• C51编译器除了支持ANSI C标准的关键字以 外,还扩展了13个关键字。
5
C51扩展的关键字
6
5.1.3 数据类型长度
• Keil编译器除了少数一些关键地方外,基本类似于 ANSI C,差异主要是Keil可以让用户针对8051的结 构进行程序设计,其它差异主要是8051的一些局限 引起的。
sfr: 定义8位特殊功能寄存器。
sfrl6:定义16位特殊功能寄存器,如DPTR。
通过名字或地址来引用特殊功能寄存器。
sbit、sfr和sfrl6为805l硬件和C5l编译器特有,它们不是 ANSI C的一部分,也不能用指针对它们进行存取。
10
例:
sfr P0=0x80; /*声明一个变量P0,并 把它和位于
处的特殊功能寄
0x80 (805l的端口0)
存器联系在一起*/
sfr SCON=0x98 ; /*定义SCON*/
sbit SM0=0x9F; */
/*定义SCON的一位
11
5.1.4 常量和变量
1. 常量 常量不变的量,如固定的数据表,字库等。常量区分为不 同的数据类型,说明如下:
(1)整型常量能表示为十进制如123,0,-89 等。十六进 制则以0x开头如 0x34,-0x3B等。长整型就在数字后面 加字母L,如 104L,034L,0xF340等。
(5)位标量,它的值是一个二进制。
13
5.1.1 常量和变量
2. 变量 在程序中使用变量必须先用标识符作为变量名,并指
出所用的数据类型和存储器类型,这样编译系统才能为变 量分配相应的存储空间。定义一个变量的格式如下:
[存储种类] 数据类型 [存储器类型] 变量名表 在定义格式中除了数据类型和变量名表是必要的,其它都 是可选项。存储种类有四种:自动(auto),外部 (extern),静态(static)和寄存器(register),缺 省类型为自动(auto)。存储器类型的说明就是指定该变量 在单片机c语言硬件系统中所使用的存储区域,并在编译 时准确的定位。
第4章 Keil C51简介及软件设计
4.1 Keil开发工具简介
4.1.2 启动程序 4.1.3 工作环境介绍
4.2 单片机软件开发流程 创建工程项目->设置项目文件->编译 与连接软件->调试软件
1
4.2 单片机软件开发流程
4.2.1 4.2.2 4.2.3 4.2.4
建立工程 建立源代码文件 工程设置 软件的编译与连接
12
5.1.1 常量和变量
(3)字符型常量是单引号内的字符,如‘a’,‘d’等, 不能显示的控制字符,能在该字符前面加一个反斜杠“\” 组成专用转义字符。常用转义字符的含义见表5-4。
(4)字符串型常量由双引号内的字符组成,如“test”, “OK”等。当引号内的没有字符时,为空字符串。在使用 特殊字符时同样要使用转义字符如双引号。在C语言中字 符串常量是做为字符类型数组来处理的,在存储字符串时 系统会在字符串尾部加上“\o” 转义字符以作为该字符 串的结束符。字符串常量“A”和字符常量‘A’是不一样 的,前者在存储时多占用一个字节的译器完全支持51系列单片机的硬件结构,可以 访问其硬件系统的所有部分,对于每个变量可以准 确地赋予其存储器类型,从而可使之能够在单片机 系统内准确地定位。表5-5中是C51所能认别的存储 器类型。
• KeilC 有ANSI C 的所有标准数据类型,除此之外, 为了更加有利地利用805l的结构还加入了一些特殊 的数据类型。
• 除了标准数据类型外,C5l编译器还支持一种位数 据类型。一个位变量存在于内部RAM的可位寻址区 中。可像操作其它变量那样对位变量进行操作。
• 位数组和位指针是违法的。
7
8
特殊功能寄存器的数据类型
bit:
定义一个位变量或函数(地址自动分配)
sbit: 定义可位寻址RAM和特殊功能寄存器的位变量
(类似给地址一个别名)。
例如可:
bit ksw 但不能 sbit ksw 而只能是 sbit ksw=0x90(地址)
bit ksw=0(或1)等号后是数值
sbit ksw=0x90 等号后是地址
2
第五章 C51程序设计基础
5.1 C程序设计的基本概念 • C语言是一种通用的计算机程序设计语言,在国际上十分
流行,它既可用来编写计算机的系统程序,也可用来编写 一般的应用程序。 • C5l是在5l系列单片机上使用的C语言。 • C51程序结构与一般C语言没有什么差别。一个C5l程序大 体上是一个函数定义的集合,在这个集合中仅有一个名为 main的函数(主函数)。主函数是程序的入口,主函数中 的所有语句执行完毕,则程序执行结束。 • C51中使用的编译器主要是Keil C5l。Keil C51完全支持C 的标准指令,并有很多用来优化805l指令结构的C的扩展 指令。
(2)浮点型常量可分为十进制和指数表示形式 。十进制由 数字和小数点组成,如:0.0,.25,5.789,0.13,5.0, 300.,-267.8230等均为合法的实数,整数或小数部分为 0,能省略但必须有小数点。指数形式由十进制数加阶码 标志“e”或“E”以及阶码(只能为整数,可以带符号) 组成。其一般形式为aEn(a为十进制数,n为十进制整数) 其值为a*10n,如:2.1E5 (等于2.1*105)。
3
5.1.1 主函数(C51的程序结构)
预处理命令 函数说明
功能函数1
#include<reg51.h> long funl(); float fun2(); fun1()
{
函数体
….
主函数
}
main()
{
函数体
……
}
功能函数2 fun2()
函数体
{ ……..
}
4
5.1.2 标识符和关键字
• 包括c语言ANSI C标准规定的32个关键字: Auto,break,case,char,const, continue,default,do,double,else, enum,extern,float,for,goto,if,int, long,register,return,short,signed, sizeof,static,struct,switch,typedef, union,unsigned,void,volatile,while
• C51编译器除了支持ANSI C标准的关键字以 外,还扩展了13个关键字。
5
C51扩展的关键字
6
5.1.3 数据类型长度
• Keil编译器除了少数一些关键地方外,基本类似于 ANSI C,差异主要是Keil可以让用户针对8051的结 构进行程序设计,其它差异主要是8051的一些局限 引起的。
sfr: 定义8位特殊功能寄存器。
sfrl6:定义16位特殊功能寄存器,如DPTR。
通过名字或地址来引用特殊功能寄存器。
sbit、sfr和sfrl6为805l硬件和C5l编译器特有,它们不是 ANSI C的一部分,也不能用指针对它们进行存取。
10
例:
sfr P0=0x80; /*声明一个变量P0,并 把它和位于
处的特殊功能寄
0x80 (805l的端口0)
存器联系在一起*/
sfr SCON=0x98 ; /*定义SCON*/
sbit SM0=0x9F; */
/*定义SCON的一位
11
5.1.4 常量和变量
1. 常量 常量不变的量,如固定的数据表,字库等。常量区分为不 同的数据类型,说明如下:
(1)整型常量能表示为十进制如123,0,-89 等。十六进 制则以0x开头如 0x34,-0x3B等。长整型就在数字后面 加字母L,如 104L,034L,0xF340等。
(5)位标量,它的值是一个二进制。
13
5.1.1 常量和变量
2. 变量 在程序中使用变量必须先用标识符作为变量名,并指
出所用的数据类型和存储器类型,这样编译系统才能为变 量分配相应的存储空间。定义一个变量的格式如下:
[存储种类] 数据类型 [存储器类型] 变量名表 在定义格式中除了数据类型和变量名表是必要的,其它都 是可选项。存储种类有四种:自动(auto),外部 (extern),静态(static)和寄存器(register),缺 省类型为自动(auto)。存储器类型的说明就是指定该变量 在单片机c语言硬件系统中所使用的存储区域,并在编译 时准确的定位。
第4章 Keil C51简介及软件设计
4.1 Keil开发工具简介
4.1.2 启动程序 4.1.3 工作环境介绍
4.2 单片机软件开发流程 创建工程项目->设置项目文件->编译 与连接软件->调试软件
1
4.2 单片机软件开发流程
4.2.1 4.2.2 4.2.3 4.2.4
建立工程 建立源代码文件 工程设置 软件的编译与连接
12
5.1.1 常量和变量
(3)字符型常量是单引号内的字符,如‘a’,‘d’等, 不能显示的控制字符,能在该字符前面加一个反斜杠“\” 组成专用转义字符。常用转义字符的含义见表5-4。
(4)字符串型常量由双引号内的字符组成,如“test”, “OK”等。当引号内的没有字符时,为空字符串。在使用 特殊字符时同样要使用转义字符如双引号。在C语言中字 符串常量是做为字符类型数组来处理的,在存储字符串时 系统会在字符串尾部加上“\o” 转义字符以作为该字符 串的结束符。字符串常量“A”和字符常量‘A’是不一样 的,前者在存储时多占用一个字节的译器完全支持51系列单片机的硬件结构,可以 访问其硬件系统的所有部分,对于每个变量可以准 确地赋予其存储器类型,从而可使之能够在单片机 系统内准确地定位。表5-5中是C51所能认别的存储 器类型。
• KeilC 有ANSI C 的所有标准数据类型,除此之外, 为了更加有利地利用805l的结构还加入了一些特殊 的数据类型。
• 除了标准数据类型外,C5l编译器还支持一种位数 据类型。一个位变量存在于内部RAM的可位寻址区 中。可像操作其它变量那样对位变量进行操作。
• 位数组和位指针是违法的。
7
8
特殊功能寄存器的数据类型
bit:
定义一个位变量或函数(地址自动分配)
sbit: 定义可位寻址RAM和特殊功能寄存器的位变量
(类似给地址一个别名)。
例如可:
bit ksw 但不能 sbit ksw 而只能是 sbit ksw=0x90(地址)
bit ksw=0(或1)等号后是数值
sbit ksw=0x90 等号后是地址