单片机程序设计

上传人:wt****50 文档编号:50938476 上传时间:2018-08-11 格式:PPT 页数:79 大小:376KB
返回 下载 相关 举报
单片机程序设计_第1页
第1页 / 共79页
单片机程序设计_第2页
第2页 / 共79页
单片机程序设计_第3页
第3页 / 共79页
单片机程序设计_第4页
第4页 / 共79页
单片机程序设计_第5页
第5页 / 共79页
点击查看更多>>
资源描述

《单片机程序设计》由会员分享,可在线阅读,更多相关《单片机程序设计(79页珍藏版)》请在金锄头文库上搜索。

1、第四章第四章 汇编语言程序设计知识汇编语言程序设计知识计算机在完成一项工作时,必须按顺序执行 各种操作。这些操作是程序设计人员用计算机所 能接受的语言把解决问题的步骤事先描述好的, 也就是事先编制好计算机程序,再由计算机去执 行。汇编语言程序设计:要求设计人员对单片机 的硬件结构有较详细的了解。编程时,对数据的 存放、寄存器和工作单元的使用等要由设计者安 排。4-24-2 汇编语言源程序的编辑与汇编汇编语言源程序的编辑与汇编单片机的程序设计通常都是借助于微机实现 的,即在微机上使用编辑软件编写源程序,使用 交叉汇编程序对源程序进行汇编,然后采用串行 通信方法,把汇编得到的目标程序传送到单片机

2、内,并进行程序调试和运行。汇编语言程序: 用汇编语言编写的、完成特定功能的指令序列。 汇编程序: 能将汇编语言源程序转换成机器语言目标程序的 系统软件。汇编语言程序到机器语言程序的转换过程称为汇编 。 1.手工汇编:人工查指令表汇编。用于设计短小程序 或调试程序的场合。 2.机器汇编:用汇编程序进行汇编。汇编的主要任务:1)确定程序中每条汇编语言指令的指令机器码。 2)确定每条指令在存储器中的存放地址。 3)提供错误信息。 4)提供目标执行文件(*.OBJ/*.HEX)和列表文件( *.LST)。4.2.3 伪指令n伪指令不是真正的指令,无对应的机器码,在汇编时不产生目标程序,只是用来对汇编过

3、程进行某种控制。1 1、ORG ORG 汇编起始命令汇编起始命令格式:ORG 16位地址功能:规定该伪指令后面程序的汇编地址,即汇编后 生成目标程序存放的起始地址。指令地址 机器码源程序 ORG 2000H2000H 78 30 MAIN:MOV R0,#30H2002H E6MOV A,R0 ORG 3000H3000H 23DB 23H,100,A 3001H 643002H 412、END 汇编结束指令格式:END功能:通知汇编程序结束汇编。在END之后所有的汇编指令均不予以处理。3、EQU 赋值命令格式:字符名称 EQU 项(数或汇编符号)功能:把“项”赋给“字符名称”。n注意:字符名

4、称不等于标号(其后没有冒号);其 中的项,可以是数,也可以是汇编符号。EQU赋值过的符号名可以用作数据地址、代码地址、位地址或一 个立即数。可以是8位的,也可以是16位的。例1:AA EQU R1MOV A,AA;AA代表工作寄存器R1例2:A10 EQU 10DELY EQU 07EBHMOV A,A10;A10作为片内的一个直接地址LCALL DELY;DELY作为一个16位子程序的入口地 址4 4、DATA DATA 数据地址赋值命令数据地址赋值命令格式:字符名称 DATA 表达式功能:与EQU类似,但有以下差别:n(1)EQU定义的字符名必须先定义后使用,而DATA 定义的字符名可以后

5、定义先使用。n(2)用EQU伪指令可以把一个汇编符号赋给一个名字 ,而DATA只能把数据赋给字符名。n(3)DATA语句可以把一个表达式的值赋给字符名称, 其中的表达式应是可求值的。DATA伪指令在程序中用来定义数据地址。5、DB 定义字节命令格式:DB(项或项表)功能:通知汇编程序从当前ROM地址开始,保留一 个字或字节串的存储单元,并存入DB后的数据。注意:项或项表可以是一个字节、用逗号隔开的字 节串或括在单引号中的ASCII字符串。例如: ORG 2000HDB 0A3H LIST:DB 26H,03HSTR:DB ABC 经汇编后(2000H)=A3H(2001H)=26H(2002H

6、)=03H(2003H)=41H(2004H)=42H(2005H)=43H (41H,42H,43H分别为A,B,C的ASCII码)6、DW 定义字命令格式:DW 16位数据项或项表功能:把DW后的16位数据项或项表从当前地址连续 存放。每项数值为16位二进制数,高8位先放,低8位 后存放。DW用于定义一个地址表。例如 : ORG 1500H TABLE:DW 7234H,8AH,10H 经汇编后(1500H)=72H, (1501H)=34H, (1502H)=00H, (1503H)=8AH,(1504H)=00H, (1505H)=10H7、DS 定义存储空间命令格式:DS 表达式功能

7、:在汇编时,从指定地址开始保留DS之后表达 式的值所规定的存储单元以备后用。例如: ORG 1000HDS 08HDB 30H,8AH汇编后:从1000H保留8个单元,然后从1008H按DB命令给内存赋值。即:(1008H)=30H, (1009H)=8AH8、BIT 位地址符号命令格式:字符名 BIT 位地址功能:把BIT后的位地址值赋给字符名。其中字符名不是标号,其后没有冒号,但字符名是必须的。例如: A1 BIT P1.0A2 BIT 02H汇编后:P1口第0位的位地址90H就赋给了A1,而A2的值则为02H。课堂练习:P87 35答案:(1000H)=53H, (1001H)=54H,

8、 (1002H)=41H,(1003H)=52H, (1004H)=54H, (1005H)=12H,(1006H)=34H, (1007H)=30H, (1008H)=00H,(1009H)=00H, (100AH)=70H根据要实现的目标,如被控对象的功能和工作 过程要求,首先设计硬件电路;然后再根据具体的 硬件环境进行程序设计。4.1 4.1 编程的步骤、方法和技巧编程的步骤、方法和技巧4.1.1 4.1.1 编程的步骤编程的步骤一、分析问题对需要解决的问题进行分析,以求对问题有正 确的理解。如:n解决问题的任务是什么?n工作过程?n现有的条件,已知数据,对运算的精度和速度方 面的要求?

9、n设计的硬件结构是否方便编程?二、确定算法n算法是如何将实际问题转化成程序模块来处理。n在编程以前,先要对几种不同的算法进行分析、比 较,找出最适宜的算法三、画程序流程图程序流程图是使用各种图形、符号、有向线段等来说明程序设计过程的一种直观的表示。n流程图步骤分得越细致,编写程序也越方便。一个程序按其功能可分为若干部分,通过流程图把具有一定功 能的各部分有机地联系起来,从而使人们能够抓住程序的基本线索 ,对全局有完整的了解。n一个系统软件有总的流程图(主程序框图)和局部的流程图。主程序框图:侧重反映各模块之间的相互联系;局部的流程图:反映某个模块的具体实现方案。流程图常采用的图形和符号:椭圆框

10、或桶形框:表示程序的开始或结束。矩形框:表示要进行的工作。菱形框:表示要判断的事情,菱形框内 的表达式表示要判断的内容。圆圈:表示连接点指向线:表示程序的流向四、编写程序n用89C51汇编语言编写的源程序行(一条语句)包 括四个部分,也叫四个字段:标号:操作码操作数;注释n 每个字段之间要用分隔符分隔,而每个字段内部不 能使用分隔符。可以用作分隔符的符号:空格“ ”、冒 号“:”、逗号“,”、分号“;”等。例:LOOP:MOV A,#00H;立即数00HA标号n标号是用户定义的符号地址。n一条指令的标号是该条指令的符号名字,标 号的值是汇编这条指令时指令的地址。n标号由以英文字母开始的18个字

11、母或数字 组成,以冒号“:”结尾。n标号可以由赋值伪指令赋值,如果没有赋值 ,汇编程序把存放该指令目标码第一字节的存 储单元的地址赋给该标号,所以,标号又叫指 令标号。操作码n操作码是必不可少的。n它用一组字母符号表示的。在89C51中 ,由89C51的指令助记符组成。操作数n汇编语言指令可能要求或不要求操作数,所以这一字段可能有也 可能没有。n若有两个操作数,操作数之间用逗号“,”分开。n操作数包括的内容有:(1)工作寄存器:由PSW.3和PSW.4规定的当前工作寄存器区中 的R0R7。(2)特殊功能寄存器:21个SFR的名字。(3)标号名:赋值标号由汇编指令EQU等赋值的标号;指令标 号指

12、令标号指示的指令的第一字节地址是该标号的值。(4)常数:可用二进制(B)、十进制、十六进制(H),若常数 以字符开头,前面加0。(5)$:用来表示程序计数器的当前值。(6)表达式:汇编时,计算出表达式的值填入目标码。注释n注释部分不是汇编语言的功能部分,只用 于增加程序的可读性。n良好的注释是汇编语言程序编写中的重要 组成部分。4.1.2 4.1.2 编程的方法和技巧编程的方法和技巧一、模块化的程序设计方法一、模块化的程序设计方法实际的应用程序一般都由一个主程序(包括 若干个功能模块)和多个子程序构成。每一程序 模块都能完成一个明确的任务,实现某个具体功 能。1 1、程序功能模块化的优点、程序

13、功能模块化的优点n单个模块结构的程序功能单一,易于编写、调试和修改 。n便于分工,从而可使多个程序员同时进行程序的编写和 调试工作,加快软件研发进度。n程序可读性好,便于功能扩充和版本升级。n对程序的修改可局部进行,其它部分可以保持不变。n对于使用频繁的子程序可以建立子程序库,便于多个模 块调用。2 2、划分模块的原则、划分模块的原则n每个模块应具有独立的功能,能产生一个明确的结果。n模块之间的控制耦合应尽量简单,数据耦合应尽量少。控制耦合是指模块进入和退出的条件及方式;数据耦合是指模块间的信息交换方式、交换量的多少及交换频繁程度。n模块长度适中。20条100条的范围较合适。二、编程技巧二、编

14、程技巧1、尽量采用循环结构和子程序。2、尽量少用无条件转移指令。3、对于通用的子程序,考虑到其通用性,除了用于存放子程序入口参数的寄存器外,子程序中用到的其他寄存器 的内容应压入堆栈(返回前再弹出),即保护现场。4、在中断处理程序中,除了要保护处理程序中用到的寄存器外,还要保护标志寄存器。5、用累加器传递入口参数或返回参数比较方便,在子程序中,一般不必把累加器内容压入堆栈。4.1.3 4.1.3 汇编语言程序的基本结构汇编语言程序的基本结构一、顺序程序一、顺序程序n顺序程序是最简单的程序结构,即顺序结 构。n程序按顺序一条一条地执行指令。常用程序结构常用程序结构:顺序程序、分支程序、循环程序、

15、子程序b顺序程序又称简单程序,程序走向只有一条路径 。 例1:16位数求补。设16位二进制数在R1和R0中, 求补结果存于R3和R2中。MOV A,R0;取低字节bCPL AbADD A,#1;低字节变补bMOV R2,AbMOV A,R1;取高字节bCPL AbADDC A,#0;高字节变补bMOV R3,A例 2: 内部RAM的2AH2EH单元中存储的数据 如图所示。试编写程序实现图示的数据传送结果。程序1:MOV A, 2EH ;2字节,1个机器周期 MOV 2EH,2DH ;3字节,2个机器周期 MOV 2DH,2CH ;3字节,2个机器周期 MOV 2CH,2BH ;3字节,2个机器周期 MOV 2BH,#00H ;3字节,2个机器周期程序2: CLR A ;1字节,1个机器周期 XCH A,2BH ;2字节,1个机器周期 XCH A,2CH ;2字节,1个机器周期 XCH A,2DH ;2字节,1个机器周期 XCH A,2EH ;2字节,1个机器周期实际应用中应尽量采用指令代码字节数少、执 行时间短的高效率程序,即注意程序的优化。例3: 压缩式BCD码分解成为单字节BCD码。bMOV R0,#40H ;设指针bMOV

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 教育/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号