MCS-51单片机程序设计.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《MCS-51单片机程序设计.ppt》由会员分享,可在线阅读,更多相关《MCS-51单片机程序设计.ppt(61页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第3章51单片机程序设计单片机原理、接口及应用单片机原理、接口及应用第3章程序设计林海波林海波第3章51单片机程序设计内内 容容 提提 要要概述汇编语言程序设计C语言程序设计第3章51单片机程序设计3.1概述MCS-51单片机的编程语言可以是汇编语言也可以是高级语言(如C语言),高级语言编程快捷,但程序长,占用存储空间大,执行慢;汇编语言产生的目标程序简短,占用存储空间小,执行快,能充分发挥计算机的硬件功能。无论是高级语言还是汇编语言,源程序都要转换成目标程序(机器语言)单片机才能执行。第3章51单片机程序设计连接连接/定位器定位器L51汇编语言汇编语言源程序源程序汇编器汇编器A51符号转换程
2、序符号转换程序OHS51绝对地址绝对地址目标程序目标程序.BINC语言程序语言程序浮浮动动地地址址目目标标程程序序编译器编译器C51 HEX图图 3-1 两种语言源程序转换成目标程序两种语言源程序转换成目标程序第3章51单片机程序设计 目前很多公司将编辑器、汇编器、编译器、连接/定位器、符号转换程序做成集成软件包,用户进入该集成环境,编辑好程序后,只需点击相应菜单就可以完成上述的各步,如WAVE、KEIL、IAR等。汇汇编编:将将汇汇编编语语言言源源程程序序转转换换成成机机器器语语言言目目标标程程序序的的过程称为汇编。过程称为汇编。汇汇编编程程序序:能能将将汇汇编编语语言言源源程程序序转转换换
3、成成机机器器语语言言目目标标程序的系统软件称为汇编程序。程序的系统软件称为汇编程序。第3章51单片机程序设计汇编的方法汇编的方法:汇编的方法有两种:汇编的方法有两种1.手工汇编手工汇编:人工查指令表,查出程序中每条指令对应的机人工查指令表,查出程序中每条指令对应的机器代码。早期的计算机使用。器代码。早期的计算机使用。2.机器汇编机器汇编:用计算机中的汇编程序对用户源程序进行汇编。用计算机中的汇编程序对用户源程序进行汇编。用机器汇编要提供给汇编一些信息,遵循汇编程用机器汇编要提供给汇编一些信息,遵循汇编程序的一些约定。这些由伪指令指定。序的一些约定。这些由伪指令指定。第3章51单片机程序设计1)
4、确定程序中每条汇编语言指令的指令机器码确定程序中每条汇编语言指令的指令机器码2)确定每条指令在存储器中的存放地址确定每条指令在存储器中的存放地址3)提供错误信息提供错误信息4)提供目标执行文件提供目标执行文件(*.OBJ/*.HEX)和列表文件和列表文件(*.LST)地址地址 机器码机器码源程序源程序 ORG 2000H 2000H 78 30 MAIN:MOV R0,#30H 2002H E6 MOV A,R0 第3章51单片机程序设计1.机器指令:指令系统中的全部指令。每条机器指令都机器指令:指令系统中的全部指令。每条机器指令都有对应的机器代码,可以被有对应的机器代码,可以被CPU执行。执
5、行。2.伪指令:伪指令:汇编控制指令,没有指令代码,只用于汇编汇编控制指令,没有指令代码,只用于汇编过程,为汇编程序提供汇编信息。过程,为汇编程序提供汇编信息。一、汇编语言指令类型一、汇编语言指令类型 宏汇编功能:将需要反复多次执行的程序段定义成一个宏宏汇编功能:将需要反复多次执行的程序段定义成一个宏指令名(宏定义)。编程时,可在程序中使用宏指令名来替指令名(宏定义)。编程时,可在程序中使用宏指令名来替代被定义的程序段(宏调用)。代被定义的程序段(宏调用)。3.2 伪指令伪指令第3章51单片机程序设计宏定义过程宏定义过程:宏调用过程:宏调用过程:宏指令名宏指令名 实际参数实际参数 宏指令名宏指
6、令名 实际参数实际参数宏指令名宏指令名 MACRO 形式参数形式参数 ;被定义的程序段;被定义的程序段 ENDM第3章51单片机程序设计二伪指令二伪指令 常用伪指令及功能:常用伪指令及功能:1.起始指令起始指令 ORG nn功能:定义程序或数据块的起始地址。功能:定义程序或数据块的起始地址。指示此语句后面的程序指示此语句后面的程序或数据块以或数据块以nn为起始地址,连续存放在程序存储器中。为起始地址,连续存放在程序存储器中。指令地址指令地址 机器码机器码源程序源程序 ORG 2000H 2000H 78 30 MAIN:MOV R0,#30H 2002H E6 MOV A,R0 ORG 300
7、0H 3000H 23 TAB:DB 23H,100,A 3001H 64 3002H 41第3章51单片机程序设计2.字字节节定定义义 标标号号:DB(字字节节常常数数,或字符或表达式)或字符或表达式)功功能能:指指示示在在程程序序存存储储器器中中以以标标号号为为起起始始地地址址的的单单元元里里存存放放的的数数为为字字节节数数据据(八八位位二二进进制数)。制数)。例例如如 LN:DB 32,C,25H,-1;LNLN+2 地地址址单单元元依依次次存存放放20H,43H,25H,FFH地址地址数据数据LN20LN+143LN+225LN+3FF3.字定义字定义 标号:标号:DW(字常数或表达式
8、(字常数或表达式)作用:作用:指示在程序存储器中以标号为起始地址指示在程序存储器中以标号为起始地址的单元里存放的数为字数据(即的单元里存放的数为字数据(即16位的二进制数),位的二进制数),例如:例如:GH:DW 1234H,5678H,08GH1234GH+25678GH+40008第3章51单片机程序设计 5.等值指令等值指令 标号标号 EQU(数值表达式)(数值表达式)表示表示EQU两边的量等值,用于为标号或标识符赋值。两边的量等值,用于为标号或标识符赋值。例如:例如:X1 EQU 2000H X2 EQU 0FH MAIN:MOV DPTR,#X1 ;DPTR=2000H ADD A,
9、#X2 ;A=A+0FH4保留字节保留字节 标号:标号:DS(数值表达式)(数值表达式)作用:作用:指示在程序存储器中保留以标号为起始地址的若指示在程序存储器中保留以标号为起始地址的若干字节单元,其单元个数由数值表达式指定。干字节单元,其单元个数由数值表达式指定。例如例如 L1:DS 32;从从L1地址开始保留地址开始保留32个存储单元。个存储单元。第3章51单片机程序设计6.位定义位定义 标号标号 BIT 位地址位地址 作用:作用:同同EQU指令,不过定义的是位操作地址。指令,不过定义的是位操作地址。例如例如 AIC BIT P1.1。7.汇编结束汇编结束 END作用:指示源程序段结束。作用
10、:指示源程序段结束。END指令放在程序的最后。指令放在程序的最后。A51汇编程序还有一些其它的伪指令,列在教材表汇编程序还有一些其它的伪指令,列在教材表3-1中。中。第3章51单片机程序设计汇编语言程序设计步骤汇编语言程序设计步骤一.确定方案和计算方法二.了解应用系统的硬件配置、性能指标三.建立系统数学模型,确定控制算法和操作步骤四.合理分配存储器单元和了解I/O接口地址五.编制源程序1.按功能设计程序,明确各程序之间的相互关系2.用流程图表示程序结构和功能开始1 YN?3.程序中用注释说明指令在程序中的作用,方便阅读、调试和修改第3章51单片机程序设计单片机原理、接口及应用单片机原理、接口及
11、应用单片机原理、接口及应用单片机原理、接口及应用第10章C语言编程林海波林海波第3章51单片机程序设计内内 容容 提提 要要 C51程序结构程序结构 C51的数据类型的数据类型 数据的存贮类型和存贮模式数据的存贮类型和存贮模式 SFR、可寻址位、存储器和、可寻址位、存储器和I/O口的定义口的定义 C51的运算符的运算符 函函 数数 变量使用变量使用 第3章51单片机程序设计51系列单片机支持三种高级语言,即PL/M,C和BASIC。8052单片机内固化有解释BASIC语言,BASIC语言适用于简单编程而对编程效率运行速度要求不高的场合;PL/M是一种结构化的语言,很象PASCAL,PL/M编译
12、器好象汇编器一样产生紧凑的机器代码,可以说是高级汇编语言,但它不支持复杂的算术运算,无丰富库函数支持,学习PL/M无异于学习一种新的语言。C语言是一种通用的程序设计语言,其代码率高,数据类型及运算符丰富,并具有良好的程序结构,适用于各种应用的程序设计,是目前使用较广的单片机编程语言。第3章51单片机程序设计单片机的C语言采用C51编译器(简称C51)。由C51产生的目标代码短、运行速度高、所需存储空间小、符合C语言的ANSI标准,生成的代码遵循Intel目标文件格式,而且可与A51汇编语言或PL/M51语言目标代码混和使用。第3章51单片机程序设计应用C51编程具有以下优点:(1)C51管理内
13、部寄存器和存贮器的分配,编程时,无需考虑不同存储器的寻址和数据类型等细节问题;()程序由若干函数组成,具有良好的模块化结构;()有丰富的子程序库可直接引用,从而大大减少用户编程的工作量。()C语言和汇编语言可以交叉使用.汇编语言程序代码短、运行速度快、但复杂运算编程耗时。如果用汇编语言编写与硬件有关的部分程序,用C语言编写与硬件无关的运算部分程序,充分发挥两种语言的长处,可以提高开发效率。第3章51单片机程序设计10.1 C51程序结构程序结构 同标准C一样,C51的程序由一个个函数组成,这里的函数和其他语言的“子程序”或“过程”具有相同的意义。其中必须有一个主函数main(),程序的执行从m
14、ain()函数开始,调用其他函数后返回主函数main(),最后在主函数中结束整个程序而不管函数的排列顺序如何。第3章51单片机程序设计C语言程序的组成结构如下所示语言程序的组成结构如下所示:全局变量说明/*可被各函数引用*/main()/*主函数*/局部变量说明/*只在本函数引用*/执行语句(包括函数调用语句)fun1(形式参数表)/*函数1*/形式参数说明局部变量说明执行语句(包括调用其他函数语句)funn(形式参数表)/*函数n*/形式参数说明局部变量说明执行语句第3章51单片机程序设计C语言的语句规则:1.每个变量必须先说明后引用,变量名英文大小写是有差别的。2.C语言程序一行可以书写多
15、条语句,但每个语句必须以“;”结尾,一个语句也可以多行书写为好。3.C语言的注释用/*/表示。4.“”花括号必须成对,位置随意,可在紧挨函数名后,也可另起一行,多个花括号可以同行书写,也可逐行书写,为层次分明,增加可读性,同一层的“”花括号对齐,采用逐层缩进方式书写。第3章51单片机程序设计10.2 C51的数据类型的数据类型 C51的数据有常量和变量之分。常量在程序运行中其值不变的量,可以为字符,十进制数或十六进制数(用0 x表示)。常量分为数值型常量和符号型常量,如果是符号型常量,需用宏定义指令(#define)对其进行定义(相当于汇编的“EQU”伪指令)如:#definePI3.1415
16、那么程序中只要出现PI的地方,编译程序都译为3.1415。变量在程序运行中其值可以改变的量。一个变量由变量名和变量值构成,变量名即是存贮单元地址的符号表示,而变量的值就是该单元存放的内容。定义一个变量,编译系统就会自动为它安排一个存贮单元,具体的地址值用户不必在意。第3章51单片机程序设计10.2.1 C51变量的数据类型变量的数据类型 无论哪种数据都是存放在存贮单元中的,每一个数据究竟要占用几个单元(即数据的长度)都要提供给编译系统,正如汇编语言中存放数据的单元要用DB或DW伪指令进行定义一样,编译系统以此为根据预留存贮单元,这就是定义数据类型的意义.C51编译器支持数据类型见表10.1。第
17、3章51单片机程序设计表10-1C51的数据类型第3章51单片机程序设计对表10.1作如下说明:1.字符型(char)、整型(int)和长整型(long)均有符号型(signed)和无符号型(unsigned)两种,如果不是必须,尽可能选择unsigned型,这将会使编译器省却符号位的检测,使生成的程序代码比signed类型短得多。2.程序编译时,C51编译器会自动进行类型转换,例如将一个位变量赋值给一个整型变量时,位型值自动转换为整型值;当运算符两边为不同类型的数据时,编译器先将低级的数据类型转换为较高级的数据类型,运算后,运算结果为高级数据类型。3.51单片机内部数据存贮器的可寻址位(20
18、H2FH)定义为bit型,而特殊功能寄存器的可寻址位(即地址为X0H和X8H的SFR的各位)只能定义为sbit类型。第3章51单片机程序设计10.2.2 关于指针型数据关于指针型数据(1)关于指针型变量在汇编语言程序中,要取存贮单元m的内容可用直接寻址方式,也可用寄存器间接寻址方式,如果用R1寄存器指示m的地址,用R1取m单元的内容。相对应的在C语言中用变量名表示取变量的值(相当于直接寻址),也可用另一个变量(如P)存放m的地址,P就相当于R1寄存器。用*P取得m单元的内容(相当于汇编的间接寻址方式)这里P即为指针型变量。下面表格表示两种语言将m单元的内容送n单元的对照语句。注:注:上表省略了
19、汇编语言程序中对符号地址上表省略了汇编语言程序中对符号地址n和和m用用EQU伪指令进行具体地伪指令进行具体地址定义的址定义的 语句以及语句以及C语言对变量语言对变量n、m和指针变量和指针变量P进行类型定义的语句,实进行类型定义的语句,实际程序设计中,此步是不可际程序设计中,此步是不可 缺少的。表中缺少的。表中&为取地址运算符,为取地址运算符,*为取内容运为取内容运算符。算符。表10-2汇编语言和C语言的对照第3章51单片机程序设计(2)指针型数据的类型指针型数据的类型 由于C51是结合51单片机硬件的,51单片机的不同存贮空间,有不同的地址范围,即使对于同一外部数据存贮器,又有用Ri分页寻址(
20、Ri为八位)和用DPTR寻址(DPTR为十六位)两种寻址方式,而指针本身也是一个变量,有它存放的存贮区和数据长度。因此,在指针类型的定义中要说明:被指的变量的数据类型和存贮类型;指针变量本身的数据类型(占几个字节)和存贮类型(即指针本身存放在什么存贮区)。例如类型定义为data或idata,表示指针指示内部数据存贮器;而pdata表示指针指向外部数据存贮器,用Ri间址。以上均为八位地址;而类型code/xdata表示指针指向外部程序存贮器或外部数据存贮器指针,本身(即被指示地址)应为十六位长度。如果想使指针能适用于指向任何存贮空间,则可以定义指针为通用型,此时指针长度为3字节,第一字节表示存贮
21、器类型编码,第二、三字节分别表示所指地址的高位和低位。第一字节表示的存贮器类型编码见表10-3:表10-3通用型指针的存贮类型编码 第3章51单片机程序设计10.3 数据的存贮类型和存贮模式数据的存贮类型和存贮模式 数据的存贮类型数据的存贮类型 C51是面向8XX51系列单片机及硬件控制系统的开发语言,它定义的任何变量必须以一定的存贮类型的方式定位在8XX51的某一存贮区中,否则便没有意义。因此在定义变量类型时,还必须定义它的存贮类型,C51的变量的存贮类型如表10-4所示:第3章51单片机程序设计表10-4C51的变量的存贮类型 访问内部数据存贮器(idata)比访问外部数据存贮器(xdat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCS 51 单片机 程序设计
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内