单片机第5-1章课件

上传人:我*** 文档编号:141498403 上传时间:2020-08-09 格式:PPT 页数:48 大小:340.50KB
返回 下载 相关 举报
单片机第5-1章课件_第1页
第1页 / 共48页
单片机第5-1章课件_第2页
第2页 / 共48页
单片机第5-1章课件_第3页
第3页 / 共48页
单片机第5-1章课件_第4页
第4页 / 共48页
单片机第5-1章课件_第5页
第5页 / 共48页
点击查看更多>>
资源描述

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

1、1,第5章 MCS-51单片机汇编语言程序设计,5.1 概述 5.2 顺序与循环程序设计 5.3 分支程序设计 5.4 查表程序设计 5.5 子程序设计 5.6 综合程序设计,2,5.1 概述,5.1.1 程序设计语言 1.机器语言: 用二进制代码0和1表示指令和数据的最原始的程序设计语言。 2.汇编语言(低级语言):用助记符来表示的面向机器的程序设计语言。 3.高级语言:面向过程且独立于计算机硬件结构的通用计算机语言,如BASIC,FORTRAN,C等。,3,5.1 概述,5.1.1 程序设计语言 源程序 目标程序 低级语言 机器语言 高级语言 机器语言,汇编,编译,4,5.1.2 汇编语言

2、的规范,1.汇编语言源程序的格式,标号: 操作码 操作数或操作数地址 ; 注释,LP: MOV A, #20H; 20H A,5,2. 伪指令 伪指令又称汇编控制指令,是为了便于对汇编语言源程序的汇编过程进行控制,在编制汇编语言程序时加进的一些特殊指令。 伪指令用来设置符号值、保留和初始化存储空间、控制用户程序代码的位置。 伪指令仅起到帮助汇编顺利进行的作用,不产生任何机器码,也不影响程序的执行。,6,(1)汇编起始地址伪指令 ORG(origin) 格式: ORG 功能:规定其后面目标程序的起始地址。它放在一段源程序(主程序、子程序)或数据块的前面,说明紧跟在其后的程序段或数据块的起始地址就

3、是指令中的16位绝对地址或用标号、表达式表示的地址。 例如: ORG 2000H START: MOV A, #2CH 它表明标号为START的目标程序是从2000H单元开始存放的。,7,说 明: 一般在汇编语言源程序的开始,都用一条ORG伪指令来规定该程序存放的起始位置。 在一个源程序中可以多次使用ORG指令,以规定不同的程序段的起始位置。但所规定的地址应该是从小到大,不允许有重叠,即不同的程序段之间不能有重叠。 一个源程序若没有ORG伪指令,则从0000H开始存放目标代码。,8,(2)结束汇编伪指令END 格式: END 功能:END是汇编语言源程序的结束标志,表示汇编结束。在END以后所

4、写的指令,汇编程序都不予以处理。 在一个源程序中只能有1条END命令。在同时包含有主程序和子程序的源程序中,也只能有一个END命令,并放到所有指令的最后;否则,就有一部分指令不能被汇编。,9,(3) 赋值伪指令EQU 格式: EQU 功能:用于给字符名称赋值。赋值后,其值在整个程序中有效(不能再改变)。其中可以是常数、 地址、标号或表达式,其值为8位或16位二进制数。赋值以后的字符名称既可以作地址使用,也可以作立即数使用。 例如:TAB EQU 3000H TAB1 EQU TAB 前一条伪指令表示TAB地址的值为3000H,后一条表示符号地址TAB1与TAB等值(可以互换)。,10,(4)定

5、义字节伪指令 DB 格式: DB 功能:用于从指定的地址开始,在程序存储器的连续单元中定义字节数据。8位数表可以是一字节常数或字符,或用逗号分开的字节串,或用引号括起来的字符串。 例如: ORG 1000H TAB1: DB 76H, 73,C, B, DB 0ACH,76H,1008H,49H,1007H,43H,1006H,42H,1005H,0ACH,1004H,1003H,1002H,1001H,1000H,由于ORG 1000H,所以TAB1的地址为1000H,因此以上伪指令经汇编以后,将对1000H开始的若干内存单元赋值。,11,(5)定义数据字伪指令 DW 格式: DW 功能:用

6、于从指定地址开始,在程序存储器的连续单元中定义16位的数据字。存放时,数据字的高8位在前(低地址),低 8位在后(高地址)。 例如,DW“AA”;存入41H,41H DW“A” ;存入00H,41H DW“ABC”; 超过两字节,不合法 DW 100H, 1ACH ;按顺序存入01H、00H、01H、0ACH,12,例如: ORG 1800H TAB2: DW 1234H, 80H,10 汇编以后: (1800H)=12H (1801H)=34H (1802H)=00H (1803H)=80H (1804H)=00H (1804H)=0AH,12H,1803H,34H,1802H,00H,18

7、01H,80H,1800H,0AH,00H,1804H,1805H,13,(6) 预留存储空间伪指令 DS 格式: DS 表达式 功能:从指定地址开始保留DS之后表达式的值所规定的存储单元以备使用。源程序汇编时,对预留单元不赋值。 例如:LOOP : DS 20 ;从标号LOOP代表的地址开始,预留20个连续的地址单元 ORG1100H DS02H ;从1100H地址开始,保留2个连续的地址单元,14,例如: ORG 1000H DS 20H DB 30H, 8FH 汇编后:从1000H开始,预留 32(20H)个字节的内存单元,然后从1020H开始,按照下一条DB指令赋值,即(1020H)=

8、30H,(1021H)=8FH。,8FH,1021H,30H,1020H,101FH,1001H,1000H,1002H,15,(7) 位定义伪指令 BIT 格式: BIT 功能:用于给字符名称赋以位地址。经赋值后就可用指令中BIT左面的字符名称来代替BIT右边所指出的位。 其中可以是绝对地址,也可以是符号地址(位符号名称)。 例如:TL BIT F0 AB BIT P1.0 经以上伪指令定义后,在编程中就可以把TL和AB作为位地址来使用。,16,(8) 定义标号数值伪指令 DATA 格式: DATA 功能:用于给标号段中的标号赋予数值。 例如:MN DATA 3000H 汇编后,MN的值为3

9、000H,17,5.1.3 汇编语言程序设计步骤,1.题意分析; 2.确定方法; 3.画流程图; 4.分配内存工作单元,确定程序与数据区存放地址; 5.按照流程图编写源程序; 6.仿真、调试程序。,18,5.2 汇编语言程序的基本结构形式,5.2.1 顺序结构程序,结构特点:按照指令的先后顺序依次执行,每条指令均被执行一遍。,19,ORG 0200H MOV A, 51H ADD A, 52H ADDC A, 53H MOV 60H, A END,51H,52H,53H,60H,【例1】已知三角形的三边长度,求三角形的周长。设三角形的3条边长分别存放在51H、52H、53H单元中,它们的边长值

10、分别为12H、07H和09H,周长存放在60H单元中。,开始,(52H)+A A,A ( 60H),(53H)+A A,(51H) A,结束,20,解题思路: 要得到正确的BCD数,每做一次加法运算就要进行一次BCD码调整。 对于双字节加法要分为高、低字节相加,高位相加时要用带进位的加法运算。,【例2】设有两个4位BCD码,分别存放在23H、22H和33H、32H单元中,要求编制程序,求这两个BCD数的和,并将和送到43H、42H单元中。(以上均为高位放高字节,低位放低字节),21,ORG 1000H MOV A, 22H ADD A, 32H DA A MOV 42H, A MOV A, 2

11、3H ADDC A, 33H DA A MOV 43H, A END,开始,(32H)+A A,A ( 42H),BCD码调整,(22H) A,结束,(23H) A,(33H)+A A,BCD码调整,A ( 43H),22,解题思路: BCD码是用4位二进制数给0-9这10个数字编码; ASCII码0-9为30H-39H。,【例3】将20H单元的两个压缩BCD码拆变成ASCII码,分别存入21H、22H单元中。,开始,#30HA,A ( 21H),A的低4位(20H)的低4位,#20H R0,结束,(20H) A,03H+A A,A高、低4位互换,A ( 22H),ORG 0200H MOV

12、R0, #20H MOV A, #30H XCHD A, R0 MOV 21H, A MOV A, 20H ORL A, #03H SWAP A MOV 22H, A END,24,5.2.2 循环程序设计,循环结构是利用转移指令反复执行某一程序段。当程序处理的对象具有某种重复性的规律时,就要用到循环结构。 循环程序的结构一般由 3 部分组成: 循环初态:用来设置循环初值,如循环次数、工作寄存器以及其他变量的初始值等,为进入循环做准备。 循环体:也称为循环处理部分,也是重复执行的部分。在循环体中,要不断修改和判断循环变量,直到符合结束条件,否则程序可能将是一个死循环。 循环结束处理:用于存放执

13、行循环程序所得结果以及恢复各工作单元的初始值等。,25,1. 定时程序设计 定时功能的实现有硬件和软件两种方法:软件定时是通过编写程序实现;硬件定时即使用定时器/计数器进行定时(第六章)。 定时程序是使用汇编语言(或其他语言)编写的循环程序,通过执行一个具有固定延迟时间的循环体来实现延时。,26,单循环定时程序 【例1】下面是一个最简单的单循环定时程序: 周期数 源程序 MOV R1, #MT DL1: NOP NOP DJNZR1, DL1 【说明】:如单片机的晶振频率为6MHz,则1个机器周期为2ms,因此,1次循环的延迟时间为8ms。 定时程序的总延时时间是循环程序段延时时间的整数倍,故

14、此程序的延时时间为8MT(ms),MT是装入8位寄存器R1的时间常数。此程序的最长定时时间为2568=2048(ms)。 若要延时1000s,则MT=125=7DH。,1 1 1 2,27, 多重循环定时程序 【例2】已知80C51单片机使用的晶振频率为6MHZ,要求设计一个软件延时程序,延时时间为10ms。 周期数 源程序 MOVR0, #0AH DL2:MOVR1, #MT DL1:NOP NOP DJNZR1, DL1 DJNZR0, DL2 精确延时时间:2s1+(1+2)2s +(1+1+2)2s 125 10=10062s 最长定时时间计算公式为:2s1+(1+2)2s +(1+1

15、+2)2s 256 256=525826s,1 1 1 1 2 2,28,【例3】:将00H0FH这16个数顺序地置入片内RAM 20H2FH单元中。,MOV R0, #20H MOV R7, #16 CLR A LOOP:MOV R0,A INC A INC R0 DJNZ R7,LOOP SJMP $,【例4】编程实现P1口连接的8个发光二极管LED显示方式如下:从P1.0到P1.7的顺序,依次点亮其连接的LED。,设80C51单片机的P1口作为输出口,经驱动电路74LS240(8反相三态缓冲/驱动器)接8只发光二极管,如图4-8所示。当输出位为“1”时,发光二极管点亮,输出位为“0”时为暗。,ORG 0500H START: MOV R2, #08H MOV A, #01H NEXT: MOV P1, A LCALL DELAY RL A DJNZ R2, NEXT SJMP START DELAY: MOVR0, #0AH DL2: MOVR1, #MT DL1: NOP NOP DJNZR1, DL1

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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