系列单片机程序设计.ppt
《系列单片机程序设计.ppt》由会员分享,可在线阅读,更多相关《系列单片机程序设计.ppt(87页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2010/5/18单片机原理与接口技术第四章第四章 MCS-51系列单片机程序设计系列单片机程序设计4.1 汇编语言程序设计概述n计算机是仿照人的思维方式顺序执行一条条指令来完成特定计算机是仿照人的思维方式顺序执行一条条指令来完成特定任务的机器,计算机程序因此被定义为指令或语句的任务的机器,计算机程序因此被定义为指令或语句的“有序有序集合集合”,程序设计是指编写计算机程序的过程程序设计是指编写计算机程序的过程。n汇编语言是用指令助记符等表示的计算机指令,汇编语言是用指令助记符等表示的计算机指令,采用汇编语采用汇编语言编写的程序被称为汇编语言程序言编写的程序被称为汇编语言程序。汇编语言程序具有代
2、码。汇编语言程序具有代码效率高(编译后的指令代码占用存储空间小)和执行时间短效率高(编译后的指令代码占用存储空间小)和执行时间短等优势和特点。等优势和特点。n由于单片机的存储器等资源有限,单片机应用程序中经常需由于单片机的存储器等资源有限,单片机应用程序中经常需要面对硬件操作,且对程序执行的时间有较为严格的要求或要面对硬件操作,且对程序执行的时间有较为严格的要求或限制。因此,限制。因此,汇编语言程序设计汇编语言程序设计是单片机应用系统设计的重是单片机应用系统设计的重要基础之一。要基础之一。4.1 汇编语言程序设计概述1、汇编语言的特点、汇编语言的特点:汇编语言的特点归纳如下:汇编语言的特点归纳
3、如下:助记符指令与机器指令一一对应;助记符指令与机器指令一一对应;程序代码效率高,占用存储空间小,运行速度快,程序代码效率高,占用存储空间小,运行速度快,汇编语言程序往往是最优化的程序;汇编语言程序往往是最优化的程序;助记符指令(汇编指令)与计算机硬件联系紧密,助记符指令(汇编指令)与计算机硬件联系紧密,要求编程人员对计算机硬件较为熟悉;要求编程人员对计算机硬件较为熟悉;汇编语言程序缺乏通用性,移植性较差。汇编语言程序缺乏通用性,移植性较差。4.1.1 汇编语言的特点及语句格式汇编语言的特点及语句格式4.1 汇编语言程序设计概述2、汇编语言的语句格式、汇编语言的语句格式MCS-51系列单片机汇
4、编语言的语句格式如下:系列单片机汇编语言的语句格式如下:;标号是汇编语句地址的符号表示。标号是汇编语句地址的符号表示。用于规定该语句所执行的操作。用于规定该语句所执行的操作。操作数为汇编指令的操作提供数据或地址操作数为汇编指令的操作提供数据或地址 注释是指对一条汇编语句或一段汇编语言程序注释是指对一条汇编语句或一段汇编语言程序的说明,以增加汇编语言程序的可读性。的说明,以增加汇编语言程序的可读性。4.1.1 汇编语言的特点及语句格式汇编语言的特点及语句格式4.1 汇编语言程序设计概述 1、起始地址定位伪指令、起始地址定位伪指令ORG 格式:格式:标号标号:ORG 操作数操作数 说明:其功能是指
5、出紧接其后的指令的目标代码的说明:其功能是指出紧接其后的指令的目标代码的第一个字节在程序存储器中的绝对地址。例如:第一个字节在程序存储器中的绝对地址。例如:ORG 0030H START:MOV A,#33H .n即定义标号即定义标号START表示的起始地址值为表示的起始地址值为0030H,该,该段程序的指令代码从该地址开始顺序存放。段程序的指令代码从该地址开始顺序存放。4.1.2 汇编语言伪指令汇编语言伪指令 4.1 汇编语言程序设计概述 2、赋值伪指令、赋值伪指令EQU 格式:字符名称格式:字符名称 EQU 操作数操作数 说明:该指令用于说明:该指令用于字符名称赋值字符名称赋值。在同一个源
6、。在同一个源程序中,任何一个字符名称只能赋值一次。且程序中,任何一个字符名称只能赋值一次。且一旦赋值之后,整个源程序中该字符的值就固一旦赋值之后,整个源程序中该字符的值就固定不变了。例如:定不变了。例如:ADPORT EQU 1001Hn即给字符名称即给字符名称ADPORT 赋值赋值16进制数进制数1001H。4.1.2 汇编语言伪指令汇编语言伪指令 4.1 汇编语言程序设计概述 3、数据地址赋值伪指令、数据地址赋值伪指令DATA格式:字符名称格式:字符名称 DATA 操作数操作数说明:说明:DATA伪指令的功能与伪指令的功能与EQU伪指令相似,不同之伪指令相似,不同之处在于处在于DATA伪指
7、令所定义的字符名称伪指令所定义的字符名称可先使用后定可先使用后定义(赋值),也可先定义(赋值)后使用义(赋值),也可先定义(赋值)后使用。在程序。在程序中它常用来定义(赋值)中它常用来定义(赋值)数据地址数据地址。4.1.2 汇编语言伪指令汇编语言伪指令 4.1 汇编语言程序设计概述 4、字节数据赋值伪指令、字节数据赋值伪指令DB格式:格式:标号:标号:DB数据表(字节)数据表(字节)说明:该伪指令用于定义(赋值)若干说明:该伪指令用于定义(赋值)若干字节数据表字节数据表(固定常数),并存放在指定地址单元开始的程序(固定常数),并存放在指定地址单元开始的程序存储器中。存储器中。例如:例如:OR
8、G 0050HTABLE:DB 99H,88H 即表示在地址即表示在地址0050H(标号(标号TABLE)开始定义(赋)开始定义(赋值)两个字节数据(值)两个字节数据(99H,88H)。)。4.1.2 汇编语言伪指令汇编语言伪指令 4.1 汇编语言程序设计概述 5、双字节数据赋值伪指令、双字节数据赋值伪指令DW格式:格式:标号:标号:DW数据表(双字节)数据表(双字节)说明:该伪指令与说明:该伪指令与DB伪指令的不同之处在于伪指令的不同之处在于DW定义(赋值)定义(赋值)的是双字节数据,而的是双字节数据,而DB定义(赋值)的是单字节数据。定义(赋值)的是单字节数据。高高8位数据安排在低地址单元
9、,低位数据安排在低地址单元,低8位数据安排在高地址单元位数据安排在高地址单元。6、预留空间定义伪指令、预留空间定义伪指令DS格式:格式:标号:标号:DS 操作数操作数说明:该伪指令的作用是通知汇编程序,从指定的地址单元开说明:该伪指令的作用是通知汇编程序,从指定的地址单元开始(通常由标号指定首地址),保留由操作数(常数或表达始(通常由标号指定首地址),保留由操作数(常数或表达式)规定的字节空间。式)规定的字节空间。4.1.2 汇编语言伪指令汇编语言伪指令 4.1 汇编语言程序设计概述 7、位地址赋值伪指令、位地址赋值伪指令BIT格式:字符名称格式:字符名称 BIT 位地址位地址说明:该伪指令给
10、字符名称说明:该伪指令给字符名称赋予位地址赋予位地址(片内(片内RAM和和SFR中的中的位地址),常用于位操作程序中。例如:位地址),常用于位操作程序中。例如:FLAG BIT 20H 即将位地址即将位地址20H赋予字符名称赋予字符名称FLAG。8、定义汇编结束伪指令、定义汇编结束伪指令END格式:格式:标号:标号:END说明:汇编结束伪指令说明:汇编结束伪指令END的作用是的作用是通知汇编程序,汇编源程通知汇编程序,汇编源程序到此结束序到此结束。在一个汇编程序中,只允许出现一条。在一个汇编程序中,只允许出现一条END伪指伪指令,且必须安排在整个源程序的末尾处。令,且必须安排在整个源程序的末尾
11、处。4.1.2 汇编语言伪指令汇编语言伪指令 4.1 汇编语言程序设计概述4.2 基本程序结构基本程序结构1、顺序结构程序2、分支结构程序3、循环结构程序4、子程序5、中断程序基本程序结构4.2 基本程序结构基本程序结构 顺序结构是各类程序中最简单的,也是最基本的顺序结构是各类程序中最简单的,也是最基本的程序结构。顺序结构程序的特征是程序结构。顺序结构程序的特征是整个程序段没有整个程序段没有任何转移指令任何转移指令。主要由数据传递类指令和数据运算。主要由数据传递类指令和数据运算类指令组成,通常用于执行数据传送和较为简单的类指令组成,通常用于执行数据传送和较为简单的算术或逻辑运算任务。算术或逻辑
12、运算任务。4.2.1 顺序结构顺序结构4.2 基本程序结构基本程序结构例例4-1,将内部,将内部 RAM 中中 20H 单元和单元和 30H 单元的无符号数单元的无符号数相加,存入相加,存入R0(高位)和(高位)和R1(低位)中。源程序如下:(低位)中。源程序如下:MOV A,20H ;取出被加数;取出被加数ADD A,30H ;两数相加;两数相加MOV R1,A ;低位存入;低位存入R1CLR A ;ADDC A,#00H ;取进位标志;取进位标志MOV R0,A ;高位存入;高位存入R0RET 4.2.1 顺序结构顺序结构4.2 基本程序结构基本程序结构 分支结构程序利用分支结构程序利用条
13、件转移指令条件转移指令,使程序在执行,使程序在执行某一指令后(产生测试条件),根据所规定的条件某一指令后(产生测试条件),根据所规定的条件满足与否改变其后程序执行的顺序(产生分叉),满足与否改变其后程序执行的顺序(产生分叉),即即根据判断条件的成立与否来确定程序的走向根据判断条件的成立与否来确定程序的走向。分。分支结构程序的特征是程序段中有控制转移类指令支结构程序的特征是程序段中有控制转移类指令(条件转移指令)。(条件转移指令)。依据程序分叉的数目,可将分支结构程序细分为依据程序分叉的数目,可将分支结构程序细分为单分支选择结构单分支选择结构和和多分支选择结构多分支选择结构两类。两类。4.2.2
14、 分支结构分支结构4.2 基本程序结构基本程序结构1、单分支选择结构、单分支选择结构 当程序的判断仅有两个出口(分叉),即两者选一时,称为当程序的判断仅有两个出口(分叉),即两者选一时,称为单分支结构。通常用条件判断指令来选择并确定程序的出口。单分支结构。通常用条件判断指令来选择并确定程序的出口。例例4-3.设内部设内部RAM 40H和和41H单元中存放单元中存放2个个8位无符号二进制位无符号二进制数,试编程找出其中的大数存人数,试编程找出其中的大数存人30H单元中。源程序如下:单元中。源程序如下:MOV A,40H CJNE A,41H,LOOP;取取2个数进行比较个数进行比较 LOOP:J
15、NC LOOP1 ;根据根据CY值,判断单分支出值,判断单分支出 MOV A,41H ;41H单元中是大数单元中是大数 LOOP1:MOV 30H,A ;40H单元中是大数单元中是大数 RET 4.2.2 分支结构分支结构4.2 基本程序结构基本程序结构2、多分支选择结构、多分支选择结构 当程序的判别部分有两个以上的出口(分叉)时,当程序的判别部分有两个以上的出口(分叉)时,称为多分支选择结构。称为多分支选择结构。例例4-4,设变量,设变量X的值存放在内部的值存放在内部RAM的的30H单元中,单元中,编程求解下列函数式,将求得的函数值编程求解下列函数式,将求得的函数值Y存人存人40H单单元。元
16、。X1 (X100)Y 0 (10X100)X一一1 (X10)4.2.2 分支结构分支结构4.2 基本程序结构基本程序结构 MOV A,30H ;取自变量取自变量X值值 CJNE A,#10,LOOP ;与与10比较,比较,A中值不改变中值不改变LOOP:JC LOOP2 ;若;若X100,转,转LOOP3 MOV 40H,00H ;因;因10X100,故,故Y=0 SJMP EXITLOOP2:DEC A ;因;因X100,故,故Y=X1 MOV 40H,AEXIT:RET4.2 基本程序结构基本程序结构 在程序设计中,遇到一段程序需要多次重复执行的情况,在程序设计中,遇到一段程序需要多次
17、重复执行的情况,通常应该采用循环结构程序。通常应该采用循环结构程序。n1、循环结构程序组成、循环结构程序组成 循环结构程序由初始化、循环处理、循环控制和循环结束循环结构程序由初始化、循环处理、循环控制和循环结束4部分组成。部分组成。(1)初始化部分初始化部分 初始化部分设置循环处理之前的初始状态,如初始化部分设置循环处理之前的初始状态,如循环次数、循环次数、变量初值、地址指针初值变量初值、地址指针初值等。等。(2)循环处理部分循环处理部分 循环处理部分又称循环处理部分又称循环体循环体,是,是重复执行的数据处理程序段重复执行的数据处理程序段,它是循环程序的它是循环程序的核心部分核心部分(功能主体
18、)。(功能主体)。4.2.3 循环结构循环结构4.2 基本程序结构基本程序结构(3)循环控制部分循环控制部分控制部分控制部分控制循环继续与否控制循环继续与否。(4)结束部分结束部分结束部分对循环程序全部执行结束后的结果进行结束部分对循环程序全部执行结束后的结果进行分析、处理和保存。分析、处理和保存。循环结构程序一般分为循环结构程序一般分为“单重循环单重循环”和和“多重循多重循环环”两类,循环次数的控制有多种方式,当循环次两类,循环次数的控制有多种方式,当循环次数已知时,可采用循环次数计数器控制循环;若循数已知时,可采用循环次数计数器控制循环;若循环次数未知时,可按条件满足与否控制循环。环次数未
19、知时,可按条件满足与否控制循环。4.2.3 循环结构循环结构4.2 基本程序结构基本程序结构n 2循环程序设计循环程序设计在一个循环程序的循环体中不包含另外的循环结构称为单重在一个循环程序的循环体中不包含另外的循环结构称为单重循环。循环。例例4-5,设某字符串以回车符(,设某字符串以回车符(0DH)为结束标志,并存放在)为结束标志,并存放在内部内部RAM40H单元开始的连续存储单元之中,编写测试字符单元开始的连续存储单元之中,编写测试字符串长度的汇编语言程序。串长度的汇编语言程序。编程思路编程思路 为测试字符串(为测试字符串(0DH)的长度,应使用逐个)的长度,应使用逐个字符依次与回车符字符依
20、次与回车符(ODH)比较的方法。为此需要设一个字符比较的方法。为此需要设一个字符串指针和一个长度计数器,字符串指针用于指定字符,长度串指针和一个长度计数器,字符串指针用于指定字符,长度计数器用于累加字符串的长度。如比较不相等,则长度计数计数器用于累加字符串的长度。如比较不相等,则长度计数器和字符串指针都加器和字符串指针都加1,以继续往下比较;如果比较相等,则,以继续往下比较;如果比较相等,则表示该字符为回车符,字符串结束,长度计数器的值就是字表示该字符为回车符,字符串结束,长度计数器的值就是字符串的长度。符串的长度。4.2.3 循环结构循环结构4.2 基本程序结构基本程序结构n 2循环程序设计
21、循环程序设计 程序如下:程序如下:MOV R7,0FFH ;设长度计数器初值设长度计数器初值 MOV R0,3FH ;字符串指针字符串指针 初值初值LOOP:INC R7 INC R0 CJNE R0,ODH,LOOP RET 4.2.3 循环结构循环结构4.2 基本程序结构基本程序结构 4.2.4 子程序结构子程序结构 在在编编写写程程序序过过程程中中,如如果果遇遇到到在在几几个个程程序序段段中中都都需需要要执执行行某某段段相相同同程程序序的的情情况况(功功能能独独立立),为为减减少少编编程程工工作作量量和和节节省省程程序序存存储储空空间间,就就应应该该采采用用子子程程序序结结构构,将将重重
22、复复执执行行的的相相同同程程序序段段编编写写成成为一个子程序为一个子程序(功能子程序)。(功能子程序)。返回返回调用调用断点断点子程序子程序主程序主程序4.2 基本程序结构基本程序结构MAIN:;进入主程序;进入主程序MOV R0,#03H ;设置入口参数(延时;设置入口参数(延时1)ACALL SUBPRO ;调用子程序;调用子程序 ;子程序返回,继续执行主程序;子程序返回,继续执行主程序;#;子程序入口地址(子程序名称);子程序入口地址(子程序名称):SUBPRO;功能:延时子程序(延时时间由;功能:延时子程序(延时时间由R0初值设置)初值设置);入口参数:;入口参数:R0内存放延时计数初
23、值内存放延时计数初值 ;出口参数:无;出口参数:无;使用寄存器:;使用寄存器:R0、R1;#SUBPRO:MOV R1,#03HDJNZ R1,$DJNZ R0,SUBPRORET ;子程序返回;子程序返回 END 4.2.3 子程序结构子程序结构4.2 基本程序结构基本程序结构单片机中断程序设计主要有以下三个方面:单片机中断程序设计主要有以下三个方面:1、中断向量设置、中断向量设置2、中断初始化、中断初始化3、中断服务程序、中断服务程序 4.2.5 中断程序结构中断程序结构4.2 基本程序结构基本程序结构例例4-7,设,设89C51单片机外中断单片机外中断0(EX0)下降沿有效,每次进入)下
24、降沿有效,每次进入中断服务程序,要求将中断服务程序,要求将89C51单片机的单片机的P1.7P1.0取反。取反。主程序如下:主程序如下:ORG 0000H STAR:AJMP MAIN ;主程序原始入口;主程序原始入口 ORG 0003H ;外部中断;外部中断0中断向量中断向量 AJMP EXTR ;跳转到;跳转到EX0中断服务子程序实际入中断服务子程序实际入口地址口地址 ORG 0030H MAIN:SETB IT0 ;主程序实际入口,边沿触发设置;主程序实际入口,边沿触发设置 SETB EX0 ;外部中断;外部中断0允许允许 SETB EA ;总中断允许;总中断允许HERE:AJMP HE
25、RE ;等待再次进入中断服务程序;等待再次进入中断服务程序 4.2.5 中断程序结构中断程序结构4.2 基本程序结构基本程序结构中断服务子程序:中断服务子程序:ORG 1200H EXTR:PUSH PSW ;保护现场;保护现场 CPL A ;累加器;累加器A数据取反数据取反 MOV P1,A ;数据输出至;数据输出至P1端口端口 POP PSW ;恢复现场;恢复现场 RETI ;中断返回;中断返回 4.2.5 中断程序结构中断程序结构4.3 汇编语言程序设计实践汇编语言程序设计实践汇编语言程序设计的一般步骤如下:汇编语言程序设计的一般步骤如下:建立数学模型建立数学模型 用适用的数学方法描述所
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系列 单片机 程序设计
限制150内