单片机魏第3章幻灯片课件

上传人:youn****329 文档编号:231036615 上传时间:2021-12-28 格式:PPT 页数:46 大小:524.50KB
返回 下载 相关 举报
单片机魏第3章幻灯片课件_第1页
第1页 / 共46页
单片机魏第3章幻灯片课件_第2页
第2页 / 共46页
单片机魏第3章幻灯片课件_第3页
第3页 / 共46页
单片机魏第3章幻灯片课件_第4页
第4页 / 共46页
单片机魏第3章幻灯片课件_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《单片机魏第3章幻灯片课件》由会员分享,可在线阅读,更多相关《单片机魏第3章幻灯片课件(46页珍藏版)》请在金锄头文库上搜索。

1、复习:MCS-51单片机的控制转移指令有以下类型:无条件转移:无需判断,执行该指令就转移到目的地址。条件转移:需判断标志位是否满足条件,满足条件转移到目的地址,否则顺序执行。绝对转移:转移的目的地址用绝对地址指示,通常为无条件转移。相对转移:转移的目的地址用相对于当前PC的偏差(偏移量)指示,通常为条件转移。长转移或长调用:目的地址距当前PC 64KB地址范围内。短转移或短调用:目的地址距当前PC 2KB地址范围。根据程序可知A=10+9+8+7+6+5+4+3+2+1=55=37H试说明以下一段程序运行后A中的结果。 MOV 23H,#0AH CLR ALOOP:ADD A,23H DJNZ

2、 23H,LOOP SJMP $第三章 汇编语言程序设计一、汇编程序功能 源程序 (汇编指令程序) 汇编 目标程序(机器码指令程序) 汇编指令与机器码指令有一一对应的关系。汇编程序是一种翻译程序,将源程序翻译成目标程序。 源程序 目标程序 地址 ORG 1000H START:MOV R0,2FH MOV R2,#00H MOV A,R0 MOV R3,A INC R3 SJMP NEXT LOOP:INC R0 CJNE R0,#44H,NEXT INC R2 NEXT:DJNZ R3,LOOP MOV 2AH,R2 SJMP $ END 第一次汇编第二次汇编1000 A82F1002 7A

3、001004 E61005 FB1006 0B1007 80NEXT1009 08100A B644NEXT100D 0A100E DBLOOP1010 8A2A1012 80FEA82F7A00E6FB0B800508B644010ADBF98A2A80FE2、机器汇编两次扫描过程。第一次扫描:检查语法错误,确定符号名字; 建立使用的全部符号名字表; 每一符号名字后跟一对应值(地址或数)。第二次扫描:是在第一次扫描基础上,将符号地址转换成 地址(代真); 利用操作码表将助记符转换成相应的目标码。 三、伪指令 伪指令是告诉汇编程序,如何汇编源程序的指令。 伪指令既不控制机器的操作,也不能被汇编

4、成机器代码, 故称为伪指令。 1、起始地址伪指令 ORG addr16 用于规定目标程序段或数据块的起始地址, 设置在程序开始处。 2、汇编结束伪指令 END 告诉汇编程序,对源程序的汇编到此结束。 一个程序中只出现一 次,在末尾。 3、赋值伪指令 EQU 告诉汇编程序,将汇编语句操作数的值赋予本语句的标号。 格式: 标号名称 EQU 数值或汇编符号 “标号名称”在源程序中可以作数值使用,也可以作数据地址、 位地址使用。 先定义后使用,放在程序开头。4、定义字节伪指令 DB 告诉汇编程序从指定的地址单元开始,定义若干字节存储单 元并赋初值。 格式: 标号: DB 字节数据或字节数据表5、定义字

5、伪指令 DW 从指定地址开始,定义若干个16个位数据,高八位存入低地址;低八位存入高地址。 例、 ORG 1000H PIOI:DW 7654H,40H、12、AB 6、数据地址赋值伪指令 DATA 将表达式指定的数据地址赋予规定的字符名称 格式: 字符名称 DATA 表达式注:该指令与EQU指令相似,只是,可先使用后定义, 放于程序开头、结尾均可。7、定义空间伪指令 DS 从指定地址开始,保留由表达式指定的若干字节空间作 为备用空间。 格式: 标号: DS 表达式例2、 ORG 1000H DS 0AH DB 71H,11H,11H ;从100BH开始存放 ;71H、11H、11H。 注:D

6、B、DW、DS 只能用于程序存储器; 而不能用于数据存储器。 8、位地址赋值伪指令 BIT将位地址赋予规定的字符名称。格式: 字符名称 BIT 位地址 例3、 X1 BIT P1.2 相当于 X1 EQU 92H 小结:1、为什么要对汇编程序进行汇编? 2、机器汇编的过程是怎样的? 3、常用伪指令的功能各是什么? 3-1 汇编语言程序的基本结构及应用举例程序编写做到:占用存储空间少;运行时间短;程序的编制、调试及排错所需时间短;结构清晰,易读、易于移植。 按结构化程序设计思想,任何复杂程序都可由顺序结构、分支结构、循环结构 等构成。 语句 3语句 2顺序结构 入口语句 1 出口分支结构入口条件

7、满足否? 分支 1 出口YN 分支 2循环结构入口 处理 修改条件条件满足否?Y 出口N程序设计的几点启示: 1.整体构思 2.构建整体流程框图 3.结构合理,流程清晰,简单明了 4.局部模块化为什么要用流程图? 1.符合人进行逻辑思考得习惯 2.计算机从根本来说,没有任何逻辑性,你必须告诉它,先做什么,后做什么,遇到什么情况由该做什么,等等 3.流程图设计本身是一个逐步求精的过程,最终将任务划分为若干能由机器指令时显得小模块例1:将20H单元的两个压缩BCD码拆开变成ASC码,存入21H,22H单元 开始20H A10H B A/BB+30H BB 22HA+30H AA 21H 结束ORG

8、 0000HMOV A, 20HMOV B, #10HDIV ABORL B, #30HMOV 22H, BORL A, #30HMOV 21H, ASJMP $程序设计的基本步骤: 1.题意分析 2.画出流程图 3.分配内存及端口 4.编制源程序 5.仿真、调试程序 6.固化程序例2:有两组BCD码(1183H和5678H)分别存放在23H,22H单元和33H,32H单元,求它们的和并送入43H、42H单元中去 开始22H A32H+A A十进制调整A 42H23H A33H+A A十进制调整A 43HORG 0000HMOV A, 22HADD A, 32HDA AMOV 42H, AMO

9、V A, 23HADDC A,33HDA AMOV 43H, ASJMP $结束一、顺序程序举例例1、设在外RAM的60H单元存有1个字节代码,要求将其分解成两个4位字段,高4位存入原单元的低4位,其低4位存入61H单元的低4位,且要求这两个单元的高4位均为0,试编制完整程序。 分析:# # # # ¥ ¥解:核心指令 ANL ORL 1000H MODE:MOV R0,#60H MOVX A,R0 MOV B,A ANL A,#0F0H SWAP A MOVX R0,A ANL B,#0FH MOV A,B INC R0 MOVX R0,A END二、分支结构与分支程序设计结构:根据不同的条

10、件,进行相应的处理。通常用条件转移指令形成简单分支结构。如: 判(A) = Z 或 NZ ,转移 判(CY)= 1 或 0 ,转移 判(bit)=1 或 0 ,转移 CJNE 比较不相等转移 结构特点:不一定按指令的先后顺序依次运行程序,程序的流向有两个或两个以上分支,根据指定条件选择程序的流向。例2、已知30H单元中有一变量X,要求编写一程序按下述要求给Y赋值,结果存入31H单元。 X+1 ( X0 ) Y = 0 ( X =0 ) -1 (X 0) 解: ORG 2000H MOV A, 30H JZ LP1 JNB ACC.7,LP2 MOV A,#0FFH SJMP LP1LP2: A

11、DD A,#01LP1: MOV 31H, A SJMP 散转程序:是指通过修改某个参数后,程序可以有三个以上的流向,多用于键盘程序 常用的指令: JMP A+DPTR,该指令是把16位数据指针DPTR的内容与累加器A中8位无符号数相加,形成地址,装入程序计数器PC,形成散转的目的地址。例:根据R7的内容,转向各自对应的操作程序。(R7=0,转入OPR0,R7=1,转入OPR1.R7=n转入OPRn) JUMP1:MOV DPTR ,#JPTAB1 MOV A,R7 ADD A,R7 JNC NOAD INC DPH NOAD: JMP A+DPTR JPTAB1: AJMP OPR0 AJM

12、P OPR1 AJMP OPR2 AJMP OPRn小结: 1、汇编程序有哪三种基本结构? 2、构成分支程序,常用到哪些判断语句? 顺序程序 每条指令只执行一次;分支程序 根据不同条件,会跳过一些指令,而转去 执行另一些指令共同点:每条指令至多执行一次。但是,实际中有时要求某程序段多次重复执行,需要采用循环结构。 循环结构不但使程序简练,而且大大节省存储空间。循环程序包含四部分:、初始化部分(循环计数器、变量置初值)、循环处理部分(主体,需要重复执行的部分) 、循环控制部分(修改地址指针、修改变量、检测循环结束条件)、循环结束部分(对结果分析、处理,存放结果)先修理,后判断: 开始初始化部分处

13、理部分修改变量循环结束?结束部分结束先判断,后处理: 开始初始化部分修改变量循环结束?结束部分结束处理部分例:设计延时1秒的子程序(晶振为12MHz) DELAY: MOV R2, #10 DEL3:MOV R3,#200 DEL2: MOV R4,#125 DEL1: NOP NOP DJNZ R4, DEL1 DJNZ R3, DEL2 DJNZ R2, DEL3 RET循环有:单循环、多重循环。循环次数已知,可用计数器控制循环次数;循环次数未知,按问题条件控制循环是否结束。 1、单循环程序(1)循环次数是已知的程序例1、已知片外RAM的10H单元存放8位二进制数,要求将其转移成相应的AS

14、CII码,并以高位在前,低位在后的顺序,依次存放到片外RAM以11H为首地址的连续单元中,试编程。解:先将中间单元置成30H,然后判欲转换位是否为1, 若是,则将中间单元内容加1;否则,中间单元内容保持不变。 通过左移指令实现由高到低的顺序进行转换。 START:MOV R2,#08H ;循环计数初值(循环次数已知) MOV R0,#10H ;地址指针初值 MOVX A,R0 ;取数 MOV B,A ;暂存B中 LOOP:MOV A,#30H ;将中间单元(A)置成30H JNB B.7,NA ;判断转换的二进制位为0否? INC A ;若为1,则变成1的ASCII码“31H” NA:INC

15、R0 ;修改地址指针 MOVX R0,A ;存放转换的结果 MOV A,B RL A ;作好准备,判断下一位 MOV B,A ;暂存 DJNZ R2,LOOP ;判断转换结束否?未完继续 SJMP (2)循环次数未知的程序例2、设用户用键盘输入长度不超过100字节的字符串放在8031单片机外部RAM以20H为首地址的连续单元,该字符串用回车符CR(CR= 0DH)作为结束标志,要求统计此字符串的长度并存入内部RAM的1FH单元中。解:从首单元开始取数,每取一数判断其是否为CR,是则结束。 ORG 1000HSTADA DATA 20HSLANG DATA 1FHCMCR2:MOV R0,#ST

16、ADA-1 MOV B,#0FFH CRLOP:INC R0 INC B MOVX A,R0 CJNE A,#0DH,CRLOP MOV SLANG,B SJMP END 2、多重循环设计循环体中还包含着一个或多个循环结构,即双重或多重循环。例3、设8031使用12MHz晶振,试设计延迟100ms的延时程序。内循环外循环解:延时程序的延迟时间就是该程序的执行时间,通常采用MOV和DJNZ二指令。 T = 12 / fosc = 12 / (12106)= 1us ORG 1000H DELAY:MOV R2,#CTS ;T = 1us LOOPS:MOV B,#CTR ;T = 1us LOOPR:DJNZ B,LOOPR ;2T = 2us DJNZ R2,LOOPS ;2T = 2us END 内循环延时:(1 + 2 CTR)T = 500us(假设)则CTR = 250 实际延时:1 + 2 250 1us = 501us外循环延时:T +(501 + 2T) CTS = 100ms = 100 000us 所以 , CTS = 198.8 取 199 实际延时:1 + (50

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

当前位置:首页 > 高等教育 > 大学课件

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