单片机的程序设计优秀课件.ppt
《单片机的程序设计优秀课件.ppt》由会员分享,可在线阅读,更多相关《单片机的程序设计优秀课件.ppt(82页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机的程序设计单片机的程序设计第1页,本讲稿共82页教学目的教学目的 n了解汇编语言程序设计的特点。n掌握汇编语言程序的基本结构及简单应用的设计方法。n用循环程序设计一个控制信号灯的程序。n用循环程序设计一个控制步进电动机的程序。n用分支程序设计一个控制汽车信号灯的程序。n用分支程序设计一个控制水塔水位的程序。学习重点和难点学习重点和难点 n分支程序、循环程序的设计特点。n子程序的编写和应用。第2页,本讲稿共82页第第4 4章章 汇编语言程序设计汇编语言程序设计n4.1 4.1 程序设计概述程序设计概述 n4.2 4.2 顺序程序设计顺序程序设计 n4.3 4.3 循环程序设计循环程序设计
2、n4.4 4.4 分支程序设计分支程序设计 n4.5 4.5 子程序设计子程序设计 n4.6 4.6 查表程序设计查表程序设计 n本章小结本章小结n习题习题 第3页,本讲稿共82页4.1 4.1 程序设计概述程序设计概述n4.1.1 4.1.1 程序设计语言程序设计语言 n4.1.2 4.1.2 汇编语言源程序的编辑与汇编汇编语言源程序的编辑与汇编 n4.1.3 4.1.3 汇编语言程序的基本结构汇编语言程序的基本结构 n4.1.4 4.1.4 程序设计方法和技巧程序设计方法和技巧 第4页,本讲稿共82页4.1.1 4.1.1 程序设计语言程序设计语言1.机器语言(Machine Langua
3、ge)这是一种用二进制代码“0”和“1”表示指令和数据的程序设计语言。计算机只能识别二进制代码,这种语言是能被计算机直接识别和执行的机器级语言。特点:机器语言能够被计算机立即识别并加以执行,具有执行速度快、占用内存少等优点。但对于使用者来说,用机器语言编写程序具有编写难、识别难、记忆难、查错难、交流难等缺点。第5页,本讲稿共82页4.1.1 4.1.1 程序设计语言程序设计语言2.汇编语言(Assembly Language)汇编语言是一种用助记符来表示的面向机器的程序设计语言。不同的机器所使用的汇编语言一般是不同的。但计算机的CPU不能直接识别汇编语言,所以计算机不能立即执行汇编语言程序。用
4、汇编语言编写的源程序,在由计算机执行之前,必须将它翻译成机器语言程序。特点:这种语言弥补了机器语言的不足,用汇编语言编写程序比用机器语言方便、直观、易懂、易用、易记。可以编写出结构紧凑、运行时间精确的程序。所以,这种语言非常适合于实时控制的需要。第6页,本讲稿共82页4.1.1 4.1.1 程序设计语言程序设计语言3.高级语言(High-Level Language)高级语言是面向过程并能独立于计算机硬件结构的通用程序设计语言,是一种接近人类语言和数学表达式的计算机语言。比如:BASIC、FORTRAN、COBOL、PASCAL、C语言等。高级语言不能被计算机直接识别和执行,需要用编译程序或解
5、释程序将高级语言编写的源程序翻译为机器语言。特点:它比汇编语言易学、易懂,具有通用性强、易于移植等优点。高级语言的语句功能强,它的一条语句往往相当于许多条指令,因而用于翻译的程序要占用较多的存储空间,而且执行时间长,且不易精确掌握,故在高速实时控制中一般是不适用的。第7页,本讲稿共82页4.1.2 4.1.2 汇编语言源程序的编辑与汇编汇编语言源程序的编辑与汇编 基本概念基本概念n在目前单片机的开发应用中,经常采用C语言和汇编语言共同编写程序。要想很好地掌握和应用单片机首先要掌握汇编语言。n汇编语言是面向机器的程序设计语言,对于CPU不同的单片机,其汇编语言一般是不同的。用汇编语言编写的程序称
6、为汇编语言源程序。n汇编语言源程序是由汇编语言语句构成的。汇编语言语句可分为两大类:指令性语句和指示性语句。n指令性语句是由指令组成的由CPU执行的语句,n指示性语句是由伪指令组成的,它不被CPU执行,用来告诉汇编程序如何对程序进行汇编的指令;由于它不能生成机器语言,故又被称为伪指令语句。第8页,本讲稿共82页4.1.2 4.1.2 汇编语言源程序的编辑与汇编汇编语言源程序的编辑与汇编 1.指令性语句格式 标号:操作码助记符 目的操作数,源操作数;注释 n每条汇编语句一般由若干部分组成,每一部分称为一个字段。n每个字段之间应该严格地用分界符加以分隔。n分界符包括冒号、空格符、逗号、分号等。标号
7、段与操作码之间要加冒号“:”;操作码与操作数之间要用空格相隔;各操作数之间要用逗号“,”相隔;操作数与注释段之间要加分号“;”相隔。第9页,本讲稿共82页4.1.2 4.1.2 汇编语言源程序的编辑与汇编汇编语言源程序的编辑与汇编 2.伪指令的指示性语句格式 标号:伪操作 操作数,操作数,.;注释 n伪指令不是真正的指令,是在汇编时供汇编程序识别的指令,又称为汇编指令。n它不属于指令系统,也无对应的机器码,只是用来对汇编过程进行某种控制。利用伪指令告诉汇编程序如何进行汇编,为编程提供方便。第10页,本讲稿共82页4.1.2 4.1.2 汇编语言源程序的编辑与汇编汇编语言源程序的编辑与汇编 3.
8、汇编语言源程序的汇编 汇编语言源程序必须要转换为机器码(即目的程序),计算机才能执行,这个转换过程称为汇编。汇编语言源程序的汇编可分为手工汇编和机器汇编两类。n手工汇编是指用人脑通过查指令编码表(见附录中的指令表)把汇编语言源程序翻译成机器码的过程,又称为人工代真。n机器汇编是用机器代替人脑并由专门的程序来进行的,这种程序称为汇编程序(不同的指令系统汇编程序不同)。机器汇编由计算机自动完成,汇编程序把用汇编语言编写的源程序翻译成由机器语言表示的目的程序。n反汇编是在分析程序存储器已有的程序时,将机器语言翻译成汇编语言的转换过程。第11页,本讲稿共82页4.1.2 4.1.2 汇编语言源程序的编
9、辑与汇编汇编语言源程序的编辑与汇编 源程序、汇编程序和目的程序之间的关系如下图所示 4.汇编语言源程序的编辑 汇编语言源程序一般在微机上借助编辑软件进行编写,可供使用的编辑工具有许多,如行编辑软件、屏幕编辑软件等。第12页,本讲稿共82页常用伪指令简介(一)1.ORG(Origin)汇编起始指令 ORG是程序汇编起始地址定位伪指令,功能:是规定对汇编语言源程序进行汇编时,目的程序在程序存储器中存放的起始地址。格式:标号:ORG 16位地址或标号注意:在一个源程序中,可多次使用ORG指令,以规定不同程序段的起始位置,地址应从小到大顺序排列,不允许重叠。例如:ORG 1000H MOV A,#12
10、H ;该指令的机器码是74H、12H ADD A,#34H ;该指令的机器码是24H、34H 在上述源程序中,第一条指令的首字节74H存放到程序存储器的1000H地址单元中,其他字节和后续指令的数据顺序存放到后面的存储单元中。第13页,本讲稿共82页常用伪指令简介(二)常用伪指令简介(二)2.END(End)汇编结束指令 END是汇编语言程序结束伪指令。功能:是表示程序已结束,汇编程序对END后面的指令不再汇编。格式:标号:END注意:在一个源程序中,只能有一条END指令,而且必须放在整个程序的末尾。第14页,本讲稿共82页常用伪指令简介(三)3.EQU(Equate)赋值指令 EQU是赋值(
11、也称等值)伪指令。功能:把操作数段中的数据或地址赋值给标号字段中的字符名称。格式:字符名称 EQU 数值或汇编符号 注意:字符名称必须先赋值后使用,故EQU指令通常放在源程序 的开头。EQU可定义8位或16位的数据或地址,例如:ABC EQU 30H ;AB与30H等值 ACB EQU R3 ;AC与R3等值 MOV A,ABC ;把片内RAM30H单元中的数据送入A中 MOV A,ACB ;把R3中的数据送入累加器A中 第15页,本讲稿共82页常用伪指令简介(四)4.DATA(Data)数据地址赋值指令 DATA是数据地址赋值伪指令。功能:把操作数段中的表达式的值赋给标号字段中的字符名称。格
12、式:字符名称 DATA 表达式 注意:DATA指令功能与EQU指令类似,它们的主要区别如下:nDATA定义的字符名称可以先使用后定义,DATA指令可以放在源程序的任何位置。nDATA只能用来定义8位的数据或地址。nEQU可以把汇编符号赋给字符名称,而DATA只能把数据赋给字符名称。nDATA可以把表达式的值赋给字符名称,这个表达式是可以进行求值运算的。第16页,本讲稿共82页常用伪指令简介(五)5.XDATA数据地址赋值指令 XDATA是数据地址赋值伪指令。功能:把操作数段中的表达式的值赋给标号字段中的字符名称。格式:字符名称 XDATA 表达式 注意:XDATA指令功能与DATA指令类似,它
13、们的主要区别是XDATA可定义16位的数据或地址。第17页,本讲稿共82页常用伪指令简介(六)6.BIT(Bit)位地址赋值指令 BIT是位地址赋值伪指令。功能:把位地址赋给字符名称。格式:字符名称 BIT 位地址例如:AB BIT 30H ;AB与30H等值 AC BIT P1.0 ;AC与P1.0等值 MOV C,AB ;把位地址区30H单元中的数据送入 位累加器C中 CLR AC ;把P1.0中的内容清零 第18页,本讲稿共82页常用伪指令简介(七)常用伪指令简介(七)7.DB(Define Byte)定义字节指令 DB是定义字节伪指令。功能:从程序存储器指定地址单元开始存放若干个字节的
14、数值或ASCII码字符。格式:标号:DB 字节数据或ASCII码字符 注意:多个字节数据或ASCII码字符之间要用逗号相隔,DB指令常用于定义8位的数据常数表。例如:ORG 1000H TAB:DB 50H,60,ADB 01010111B,6 第19页,本讲稿共82页常用伪指令简介(八)常用伪指令简介(八)8.DW(Define Word)定义字指令 DW是定义字伪指令。功能:从程序存储器指定地址单元开始存放若干个字的数值。格式:标号:DW 字节数据或ASCII码字符 注意:多个字数据之间要用逗号相隔,DW指令常用于定义16位的地址表。例如:ORG 1000H TAB:DW 20H,50H,
15、00H,60H 第20页,本讲稿共82页常用伪指令简介(九)常用伪指令简介(九)9.DS(Define Space)定义存储空间指令 DS是定义存储空间伪指令。功能:从程序存储器指定地址单元开始保留表达式的值所规定的存储单元。格式:标号:DS 表达式 例如:ORG 1000H TAB:DS 06H DB 25H,35H 在上述源程序中,程序存储器从1000H单元开始保留6个单元,1006H单元存放25H,1007H单元存放35H。第21页,本讲稿共82页4.1.3 4.1.3 汇编语言程序的基本结构汇编语言程序的基本结构 汇编语言程序具有四种结构形式,即顺序结构、循环结构、分支结构和子程序结构
16、。1.顺序程序 顺序程序是一种最简单、最基本的程序结构,又称为简单程序或直线程序。程序按顺序一条一条地执行指令,程序流向不变。2.循环程序 循环程序是把需要多次重复执行的某段程序,利用条件转移指令反复转向执行,可减小整个程序的长度,优化程序结构。循环程序一般由循环初始化、循环处理、循环控制和循环结束四部分组成。第22页,本讲稿共82页4.1.3 4.1.3 汇编语言程序的基本结构汇编语言程序的基本结构 3.分支程序 分支程序是根据条件进行判断决定程序的执行,满足条件则进行程序转移,不满足条件就顺序执行程序。判断是通过条件转移指令实现的。分支程序又分为单分支结构和多分支结构。4.子程序 子程序是
17、指完成某一确定任务并能被其他程序反复调用的程序段。使用子程序可以减小整个程序的长度,实现模块化程序结构。第23页,本讲稿共82页4.1.3 4.1.3 汇编语言程序的基本结构汇编语言程序的基本结构 顺序程序流程图 循环程序流程图 分支程序流程图 第24页,本讲稿共82页4.1.4 4.1.4 程序设计方法和技巧程序设计方法和技巧 1.程序设计的一般步骤(1)分析工作任务,明确要达到的工作目的、技术指标等。(2)确定解决问题的算法。算法就是如何将实际问题转化成程序模块来处理,要对不同的算法进行分析、比较,找出最适宜的算法。(3)画程序流程图。其图形的符号规定均与高级语言流程图相同,如桶形框表示程
18、序的开始或结束,矩形框表示需要进行的工作,菱形框表示需要判断的事情,指向线表示程序的流向等。(4)分配内存工作单元,确定程序与数据的存放地址。(5)编写源程序。(6)上机调试、修改源程序。第25页,本讲稿共82页4.1.4 4.1.4 程序设计方法和技巧程序设计方法和技巧 2.程序设计的一般原则n按照尽可能使程序简短和缩短运行时间两个原则编写程序。n应用程序一般都由一个主程序(包括若干个功能模块)和多个子程序构成,即采用模块化的程序设计方法。n每一功能模块或子程序都能完成一个明确的任务,实现某个具体功能,如检测输入信号、码制转换、输出控制信号、发送数据、接收数据、延时、显示、打印等。第26页,
19、本讲稿共82页4.1.4 4.1.4 程序设计方法和技巧程序设计方法和技巧 3.模块化程序设计方法的特点n单个模块结构的程序功能单一,易于编写、调试和修改。n对程序的局部修改,可以使无关的部分保持不变。n程序可读性好,便于功能扩展和版本升级。n对于使用频繁的子程序可以建立子程序库,便于多个模块调用。n可实现多人同时进行程序的编写和调试工作,缩短程序编写时间。第27页,本讲稿共82页4.1.4 4.1.4 程序设计方法和技巧程序设计方法和技巧 4.划分模块应遵循的原则n高内聚性。每个模块应具有独立的功能,能产生一个明确的结果。n低耦合性。模块之间的控制耦合应尽量简单,数据耦合应尽量少。控制耦合是
20、指模块进入和退出的条件及方式,数据耦合是指模块间的信息交换(传递)方式、交换量的多少及交换的频繁程度。n模块长度适中。模块语句的长度为20100条的范围较合适。模块太长时,分析和调试比较困难,失去了模块化程序结构的优越性;过短则模块的连接太复杂,信息交换太频繁。第28页,本讲稿共82页4.1.4 4.1.4 程序设计方法和技巧程序设计方法和技巧 5.程序设计的一般技巧n尽量采用循环结构和子程序结构。这样可以使程序的总容量大大减少,提高程序的效率,节省内存。n尽量少用无条件转移指令。这样可以使程序条理更加清楚,从而减少错误。n对于通用的子程序,除了用于存放子程序入口参数的寄存器外,子程序中用到的
21、其他寄存器的内容应压入堆栈,即保护现场。一般不必把标志寄存器压入堆栈。n在中断处理程序中,除了要保护中断处理程序中用到的寄存器外,还要保护标志寄存器。n用累加器传递入口参数或返回参数比较方便,在子程序中,一般不必把累加器内容压入堆栈。第29页,本讲稿共82页4.2 4.2 顺序程序设计顺序程序设计 n4.2.1 4.2.1 顺序程序设计方法顺序程序设计方法 n4.2.2 4.2.2 顺序程序设计实例顺序程序设计实例 第30页,本讲稿共82页4.2.1 4.2.1 顺序程序设计方法顺序程序设计方法 n顺序结构程序是最简单、最基本的程序。要设计出高质量的程序需要掌握一定的技巧,需要熟悉指令系统,正
22、确地选择指令,掌握程序设计的基本方法和技巧,以达到提高程序执行效率、减少程序长度、最大限度地优化程序的目的。n顺序程序的特点和设计方法。n结构比较单一和简单,按程序编写的顺序依次执行,中间没有任何分支,程序流向不变。n数据传送指令使用得较多,没有控制转移类指令。n作为复杂程序的某个组成部分,如循环结构程序中需多次重复执行的某段程序(称为循环处理)。第31页,本讲稿共82页4.2.2 4.2.2 顺序程序设计实例顺序程序设计实例【例例1】有两个有两个6位位BCD码分别存放在片内码分别存放在片内RAM 30H、31H、32H单元和单元和40H、41H、42H单元内,求它们的和并将和存放到片内单元内
23、,求它们的和并将和存放到片内RAM 50H、51H、52H单元中。单元中。解:设定片内解:设定片内RAM 30H单元存放高位,片内单元存放高位,片内RAM 32H单元存放单元存放低位,其他单元与之类同。低位,其他单元与之类同。BCD码加法运算后,要用码加法运算后,要用DA指令进指令进行调整。行调整。第32页,本讲稿共82页参考程序:地址机器码程序注释 ORG 0000H0000H02 00 30 LJMP MAIN ORG 0030H0030HE5 32MAIN:MOV A,32H;低2位被加数送入累加器A0032H25 42 ADD A,42H0034HD4 DA A;BCD码调整0035H
24、F5 52 MOV 52H,A;存放和的低2位0037HE5 31 MOV A,31H;中2位被加数送入累加器A0039H35 41 ADDC A,41H;加上低位的进位003BHD4 DA A;BCD码调整003CHF5 51 MOV 51H,A;存放和的中2位003EHE5 30 MOV A,30H;高2位被加数送入累加器A0040H35 40 ADDC A,40H;加上中位的进位0042HD4 DA A;BCD码调整0043HF5 50 MOV 50H,A;存放和的高2位0045H80 FE SJMP$;暂停 END第33页,本讲稿共82页4.2.2 4.2.2 顺序程序设计实例顺序程序
25、设计实例【例例2】有一个有一个16位二进制负数的补码存放在片内位二进制负数的补码存放在片内RAM 30H、31H单元内,求它的原码的绝对值并将它存放到片内单元内,求它的原码的绝对值并将它存放到片内RAM 40H、41H单元。单元。解:设定片内解:设定片内RAM 30H单元存放高位,片内单元存放高位,片内RAM 31H单元存放低位,单元存放低位,其他单元与之类同。补码取反后要加其他单元与之类同。补码取反后要加1,绝对值要去掉符号位。,绝对值要去掉符号位。第34页,本讲稿共82页地址机器码程序注释ORG 0000H0000H02 00 30LJMP MAINORG 0030H0030HE5 31M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 程序设计 优秀 课件
限制150内