0522单片机实训教程电子教案第3章

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
39H
1
F9H
06H
D
A1H
5EH
2
A4H
5BH E
86H
79H
3
B0H
4FH F
8EH
71H
4
99H
66H P
8CH
73H
5
92H
6DH Y
91H
6EH
第3章 汇编语言程序设计
6
82H
7DH U
C1H
3EH
7
F8H
07H H
89H
76H
8
80H
7FH L
C7H
38H
9
90H
6FH
BFH
40H

A
00 00 00
DEF7 DDF3
22
28 ORG 2050H 29 DELY:MOV R5,#4 30 L3: MOV R6,#250 31 L2: MOV R7,#100 32 L1: NOP 33 NOP 34 NOP 35 DJNZ R7,L1 36 DJNZ R6,L2 37 DJNZ R5,L3 38 RET 39 END
11
2014
3543
12
2016
F553
13
2018
9200
14
201A 532001 15
201D 852054 16
17
ADDC A,42H MOV 52H,A MOV A,33H ADDC A,43H MOV 53H,A MOV 00H,C ANL 20H,#01H MOV 54H,20H
END
88H
77H
FFH
00H
“灭”
B
83H
7CH



第3章 汇编语言程序设计
3.3.4 实训器材 MCS-51单片机开发系统
3.3.5 程序流程及实训参考程序 实训程序流程如图3-2所示。实训参考程序如表3-5所
示。
第3章 汇编语言程序设计
0字循环
开始 (A)+散转地址 (A)←(20H)
1字循环
第3章 汇编语言程序设计
进行多字节加法运算时,低字节应选择不带进位加法指 令ADD。其它字节相加时应选择带进位加法指令ADDC, 将低位的进位值加入。 (2)双字节二进制无符号数乘法
双字节二进制无符号数乘法的运算过程类似于一般十进 制运算。首先进行资源分配:设被乘数存放在工作寄存器 R2、R3中,乘数存放在R6、R7中。乘积存放在R2、R3、 R4和R5中。然后进行运算,先算低字节,并保存中间和, 再计算高字节,将中间和累加。
第3章 汇编语言程序设计
3.3.2 实训要求
设单片机片内数据存储器20H单元存放00H~03H四个不 同的数。根据20H中存放数据的不同,在LED七段显示器 上显示循环左移的数字0、1、2、3。即:
第3章 汇编语言程序设计
3.3.3 实训预习 JMP @A+DPTR 是一条散转指令。它常用于多分支选择
入口
入口
入口
M N P 出口
满足条件?
M
N
出口
满足条件?
M 改变条件?
出口
第3章 汇编语言程序设计
3 .2 实训9 顺序程序设计训练
3.2.1 实训目的 通过本节实训,主要学习下面内容:
顺序程序的结构。 顺序程序设计的编程方法。 顺序结构程序的调试方法。
第3章 汇编语言程序设计
3.2.2 实训要求 1.双字求和。设有两个四字节二进制数,分别存放在片 内RAM30H和40H开始的单元中,先存低字节。求两数 之和,并将和存于50H开始的单元中。 2.双字节二进制无符号数乘法。
第3章 汇编语言程序设计
第3章 汇编语言程序设计
3 .1 实 训 概 要
程序是一系列有序指令的集合。单片机通过执行程序 完成相应的任务。
程序设计的任务就是根据任务的要求,给出解决问题 的步骤和算法,编制程序的过程。学习完指令系统后,就 具备了程序设计的基础。汇编语言程序设计不但技巧性强, 而且还有软硬件结合的特点。设计出的程序质量好坏,直 接关系到单片机应用系统的特性和运行效率。为了能够编 制出高质量的程序,必须从一个个程序模块的学习开始, 通过熟读多练,反复上机训练,才能逐步掌握程序设计的
第3章 汇编语言程序设计
202D
022030
18 LJMP BB
2030
E520
19 BB: MOV A,20H
2032 2034 2036
7822 7921 F2
20 MOV R0,#22H 21 MOV R1,#21H 22 MOVX @R0,A
2037 2039
7401 F3
23 MOV A,#01H 24 BB1:MOVX @R1,A
第3章 汇编语言程序设计
201E 2020 2021 2022 2023 2024 2026
8EF0 A4 2B FB EA 35F0 FA
26
MOV B,R6
27
MUL AB
28
ADD A,R3
29
MOV R3,A
30
MOV A,R2
31
ADDC A,B
32
MOV R2,A
33
END
第3章 汇编语言程序设计
(5)对于双字节乘法实训程序,运行程序前,将被乘数和 乘数分别送入工作寄存器R2、R3和R6、R7中,执行程序, 并记录结果。程序运行结果表格请读者自行设计。
第3章 汇编语言程序设计
程序运行前
30H
40H
31H
41H
32H
42H
33H
43H
程序运行后 50H 51H 52H 53H 54H
第3章 汇编语言程序设计
011E
7 KK: AJMP A0 8 AJMP A1
注释 索引 转移指令表首地址
转移指令表
第3章 汇编语言程序设计
2014
2016
2018 201B
201E 2021
2024 2027
202A
0124
012A
7520C0 022030
7520F9 022030
7520A4 022030
7520B0
方法和技巧。
第3章 汇编语言程序设计
实训内容: 顺序程序设计。 分支程序设计。 循环程序设计。 子程序设计。
第3章 汇编语言程序设计
预备知识: 汇编语言程序设计的一般步骤: • 分析问题。根据给出的问题,熟悉和明确问题的要求,
明确已知条件及对运算和控制的要求,建立数学模型。 • 确定解题算法。根据实际问题的要求和指令系统的特点,
寻址方式
第3章 汇编语言程序设计
2008 8EF0 8 MOV B,R6 200A A4 9 MUL AB 200B 2C 10 ADD A,R4 200C FC 11 MOV R4,A 200D E4 12 CLR A 200E 35F0 13 ADDC A,B 2010 FB 14 MOV R3,A 2011 EA 15 MOV A,R2 2012 8FF0 16 MOV B,R7
第3章 汇编语言程序设计
2014 A4 17 MUL AB 2015 2C 18 ADD A,R4 2016 FC 19 MOV R4,A 2017 EB 20 MOV A,R3 2018 35F0 21 ADDC A,B 201A FB 22 MOV R3,A 201B E4 23 CLR A 201C 33 24 RLC A 201D CA 25 XCH A,R2
第3章 汇编语言程序设计
3.2.4 实训器材 MCS-51单片机开发系统
3.2.5 实训程序 1.多字节加法实训程序如表3-1所示。
第3章 汇编语言程序设计
存储 机器 行 地址 码 号
2000
1
源程序 ORG2000H
2000 E530 2 MOV A,30H
2002 2540 3 ADD A,40H
程序中。数据指针DPTR作为基址寄存器,决定多分支程 序的首地址,用累加器ACC作为变址寄存器来动态地选择 某一分支,来实现多分支转移。该指令采用基址寄存器加 变址寄存器间接寻址方式,将DPTR和ACC内容相加作为 地址,该地址传送到程序计数器PC中。
第3章 汇编语言程序设计
为了在单片机开发系统上显示数字,必须了解所使用的 单片机开发系统的显示器控制接口,通常用多功能接口芯片 8155控制键盘和显示器。了解其字形口和字位口地址。(本 系统字形口地址为0FF22H,字位口地址为0FF21H)。
根据程序流程图及资源分配情况,写出汇编语言源程序。 上机调试。 汇编语言源程序的一般结构:
在程序设计中将会遇到各种类型的程序,但不论程序如何 复杂,都可以分为如下基本结构:
顺序结构 分支结构 循环结构 子程序结构
第3章 汇编语言程序设计
其中顺序结构、分支结构和循环结构为三中基本结构。其 结构流程如图3-1所示。
定次数循环实现多字节相加。 双字节乘法程序由于要保护中间和,占用的片内RAM
单元较多,可考虑使用堆栈,但不能和工作寄存器组发生 冲突。
第3章 汇编语言程序设计
3 .3 实训10 分支程序设计训练
3.3.1 实训目的 通过本节实训,主要学习下面内容: 分支程序的结构。 分支程序设计的编程方法。 分支结构程序的调试方法。 通过散转指令实现多分支程序设计方法。
2字循环
3字循环
第3章 汇编语言程序设计
存储地 址
2000
机器码
行号
源程序
1 ORG 2000H
2000 2002 2005
E520 902010
23
2 MOV A,20H 3 MOV DPTR,#KK 4 RL A
2006
73
5 JMP @A+DPTR
2010
6 ORG 2010H
2010 2012
9 AJMP A2
10 AJMP A3
11 A0: MOV 20H,#0C0H 12 LJMP BB
13 A1: MOV 20H,#0F9H 14 LJMP BB
15 A2: MOV 20H,#0A4H 16 LJMP BB
17 A3: MOV 20H,#0B0H
“0”字形码 “1”字形码 “2”字形码 “3”字形码
选择解决问题的方法。算法是程序设计的依据,它决定 了程序的正确性和程序的质量。 • 画出程序流程图。程序流程图就是用各种规定的图形、 流程线和简洁的文字表达解题步骤的一种图形。它直观、 清晰地体现了程序设计思路,是程序的逻辑设计过程。
第3章 汇编语言程序设计
•资源分配。算法确定后,要为每一个变量、各种指针、计数器 等分配工作单元,定义数据类型和数据结构。
3.2.6 实训步骤 (1)阅读并理解程序,并画出两个程序的流程图。 (2)将机器码送入单片机系统中,并检查是否正确。 (3)对于多字节加法实训程序,运行程序前,将两个四字节 数据分别送入30H和40H开始的单元中。
第3章 汇编语言程序设计
(4)单步执行程序,并将运行结果记录在表3-3中。 12 34 56 78H + 23 45 67 89H = ? AB CD EF 01H + 94 39 82 71H = ? 2A 3B 4C 5DH + 3F 4E 5D 6CH = ?
203A 203D
122050 23
25 LCALL DELY 26 RL A
203E
80F9
27 SJMP BB1
8155字位口地址 8155字形口地址
位置号
延时
第3章 汇编语言程序设计
2050 2050 2052 2054 2056 2057 2058 2059 205B 205D 205F
7D04 7EFA 7F64
2.双字节乘法实训程序如表3-2所示。
第3章 汇编语言程序设计
存储地址 2000
机器码
行号 1
源程序 ORG 2000H
2000
EB
2 MOV A,R3
2001
8FF0
3 MOV B,R7
2003
A4
4 MUL AB
2004
ACF0
5 MOV R4,B
2006
FD
6 MOV R5,A
2007
EB
7 MOV A,R3பைடு நூலகம்
3.2.7 思考与讨论 1.如何将程序改成十字节加法运算,编写程序并上机验证。 2.编写四字节减法程序,要求被减数和减数分别存放在片内 RAM30H和50H开始的单元中,差存放在60H开始的单元。上 机验证。 3.使用减法指令时应注意什么问题?
第3章 汇编语言程序设计
提示: 多字节加法实训程序可以考虑用循环结构完成,通过固
3.2.3 实训预习 预习内容 (1)掌握顺序程序的结构。 (2)复习片内数据存储器地址范围。 (3)复习数据传送指令和二进制加法指令的功能。 (4)复习乘法指令的功能。
第3章 汇编语言程序设计
程序设计基本思路 (1)双字求和
编写程序前要掌握片内RAM的结构。MCS-51单片机片内 RAM一个存储单元为一个字节,以字节为单位编址。因此, 每个加数和结果各占四个字节。按照加法的相加思路,先 做低字节相加,然后做高位字节相加。 例如:
同时,还应了解所用单片机开发系统的LED显示器是共 阴极型还是共阳极型。以便给出其不同的字形码。不同类型 LED字形码如表3-4所示。本系统采用共阳极型LED。 表3-4 七段LED字形码
第3章 汇编语言程序设计
字 共阳字 符 形码
0
C0H
共阴字 形码
3FH
字 共阳字 符 形码
C
C6H
共阴字 形码
2004 F550 4 MOV 50H,A
2006 E531 5 MOV A,31H
2008 3541 6 ADDC A,41H
200 F551 7 A
200 E532 8 C
MOV 51H,A MOV A,32H
寻址方式
第3章 汇编语言程序设计
200E
3542
9
2010
F552
10
2012
E533
相关文档
最新文档