单片机原理及其应用课件--第四章
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
┇
; 转移指令表首地址 取分支转移参量送A 乘数3送B (3字节指令) 形成转移偏移量 暂存偏移量低8位 A←偏移量高8位 加到DPH中 取回偏移量低8位 分支跳转[PC ← (A)+(DPTR)]
TAB5: LJMP LJMP
┇
PRG0 PRG1
; 转移指令表
LJMP
PRGn
29
单片机原理及其应用
30
单片机原理及其应用
扬州大学
MOV A , R3 JMP @A+DPTR ┇ TAB6: LJMP PRG0 LJMP PRG1 ┇ LJMP PRGn
21
开始
取数据X 求X2 暂存X2 取数据Y 求Y2 求X2+Y2 保存平方和
结束
图4-2 例4.2程序流程图
单片机原理及其应用
扬州大学
参考程序如下: ORG 2000H MOV A,30H MOV B,A MUL AB MOV R1,A MOV A,31H MOV B,A MUL AB ADD A,R1 MOV 32H,A SJMP $ END
扬州大学
【例4.5】(4-14)根据(31H 30H)的内容决定程序流向 (31H)<80 (p.90) JMP6: MOV DPTR,#TAB6 ; 转移指令表首地址 MOV A,30H ; 取低字节分支转移参量送A MOV B,#3 ; 乘数3送B (3字节指令) MUL AB ; 形成低字节转移偏移量 MOV R3, A ; 暂存 MOV A, B ; A←低字节偏移量高8位 ADD A, DPH MOV DPH, A ; 加到DPH中 MOV A, 31H ; 取高字节分支转移参量送A MOV B,#3 ; 乘数3送B (3字节指令) MUL AB ; 形成高字节转移偏移量 ADD A, DPH ; 加入DPH MOV DPH, A
;取数 ;取低4位 ;转换成ASCII码 ;保存结果 ;取数 ;高4位与低4位互换 ;取低4位(原来的高4位) ;转换成ASCII码 ;保存结果
20
单片机原理及其应用
扬州大学
【例4.2】 设X、Y两个小于10的整数分别存于片内 30H、31H单元,试求两数的平方和并将结果存于 32H单元。
解:两数均小于10,故两数的平方和可存放于一个 字节,可利用乘法指令求平方。 程序流程如图4-2所示。
1000H A, 40H ; 取数 A, #0,NZEAR ; 非零,转 NEGT ;(A)=0,转存结果 ACC.7,POSI ; (A)>0,转 A, #81H(原码); A ← -1 NEGT A,#1H ;A←1 41H,A ; 存结果 $ ; 暂停
27
单片机原理及其应用
扬州大学
3.多向分支程序设计举例
单片机原理及其应用
扬州大学
3.高级语言:高级语言是接近于人的自然语言,面 向过程而独立于机器的通用语言。 近年来单片机也流行采用高级语言编程。
如C51
6
单片机原理及其应用
扬州大学
4.1.2 汇编语言的语句结构
1.汇编语言的指令类型 MCS-51单片机汇编语言,包含两类不同性质的 指令。
(1)基本指令:即指令系统中的指令。它们都是机 器能够执行的指令,每一条指令都有对应的机器 代码。 (2)伪指令:汇编时用于控制汇编的指令。它们都 不是机器的指令,无机器码产生。
【例4.4】(4-13) 根据R2的值转向n个分支程序。(p.90) (R2)=0,转向PRG0; (R2)=1,转向PRG1;
┇
(R2)=n,转向PRGN; 解:利用JMP @A+DPTR 指令直接给PC赋值,使程 序实现转移。
28
单片机原理及其应用
扬州大学
参考程序如下: JMP6: MOV DPTR,#TAB5 MOV A,R2 ; MOV B,#3 ; MUL AB ; MOV R6, A ; MOV A, B ; ADD A, DPH MOV DPH, A ; MOV A, R6 ; JMP @A+DPTR ;
2
单片机原理及其应用
扬州大学
第4章 MCS-51汇编程序设计
4.1 汇编语言基本概念
4.2 汇编语言程序设计
3
源自文库
单片机原理及其应用
扬州大学
4.1 汇编语言基本概念
4.1.1 程序设计语言 4.1.2 汇编语言的语句结构 4.1.3 伪指令
4
单片机原理及其应用
扬州大学
4.1.1 程序设计语言
程序设计语言的结构及其功能可以分为三种: 1.机器语言:机器语言是用二进制代码0和1表示指 令和数据的最原始的程序设计语言。 机器语言编程困难,一般不再用其编程。 2.汇编语言:在汇编语言中,指令用助记符表示, 地址、操作数可用标号、符号地址及字符等形式来 描述。 比机器语言编程方便,但要熟悉机器硬件结构、 指令系统才能用好它。 汇编语言与机器语言一样是面向机器的,无通 用性。 5
单片机原理及其应用
扬州大学
4.2.2 汇编语言程序的汇编
汇编语言源程序翻译成机器代码的过程称为“汇编” 1. 手工汇编 通过查指令代码将指令逐条翻译成机器代码并输入到 单片机中。这种方法要求自行按绝对地址定位指令,并计 算偏移量。工作量大、繁琐、易错,修改不易,已被机器 汇编取代。 2. 机器汇编 在系统机上用相应的汇编程序对源程序文件(*.asm) 自动翻译。由于使用不同种类的计算机进行汇编工作,称 为交叉汇编 (汇编后的机器代码不能直接在系统机上运行)。 机器汇编三步骤:(1)编辑输入源程序;(2)机器汇编; (3)下载机器代码并运行调试。 16
单片机原理及其应用
扬州大学
单片机原理接口及其应用
(Principle and Application of Single Chip Microcomputer)
1
单片机原理及其应用
扬州大学
第1章 第2章 第3章 第4章 第5章 第6章 第7章 第8章 第9章
概述 MCS-51单片机硬件结构 MCS-51寻址方式和指令系统 MCS-51汇编程序设计 中断系统 定时器/计数器及串行口 存储器扩展 接口电路扩展 应用举例
12
单片机原理及其应用
扬州大学
4.2 汇编语言程序设计
4.2.1 汇编语言程序设计步骤
4.2.2 汇编语言程序的汇编
4.2.3 顺序程序 4.2.4 分支程序 4.2.5 循环程序 4.2.6 子程序
4.2.7 查找程序
4.2.8 码制转换程序
4.2.9 程序举例
13
单片机原理及其应用
扬州大学
4.2.1 汇编语言程序设计步骤
Y= 1 0 -1 X>0 X=0 X<0
解:X为有符号数,存在40H单元。Y存在41H单元。 程序流程如图4-4所示。
25
单片机原理及其应用
扬州大学
图4-4 例4.3程序流程图
26
单片机原理及其应用
扬州大学
参考程序如下: ORG MOV CJNE AJMP NZEAR: JNB MOV AJMP POSI: MOV NEGT: MOV SJMP END
7
单片机原理及其应用
扬州大学
2.汇编语言的语句格式 汇编语言源程序是由汇编语句(即指令) 组成的。汇编语言一般由四部分组成。 其典型的汇编语句格式如下:
标号: 操作码 START: MOV 操作数 A,30H ;注释 ;A←(30H)
8
单片机原理及其应用
扬州大学
MOV A, #0 ; 赋初值 (4-1) (p.69) MOV R1, #10 ;计数器赋初值 MOV R2, #00000011B LOOP: ADD A, R2 ;累加 DJNZ R1, LOOP HERE: SJMP HERE 标号:即符号地址,需要时加上。标号后加冒号;标号由 字母开头(1-8字符),标号不能与指令助记符、预定 义符号相同。 操作数:数值操作数,根据需要可用16进制 (后缀H)、10 进制、二进制 (后缀B) 表示。16进制数以A~F开头时, 前面要加’0’。 $符号的使用:程序最后一句可用 SJMP $ 代替。 注释:以分号开头,根据需要对于指令的作用加以解释。 9 START:
17
单片机原理及其应用
扬州大学
4.2.3 顺序程序
顺序程序是一种最简单,最基本的程序。 特点:程序按编写的顺序依次往下执行每一 条指令,直到最后一条。 【例4.1】 将30H单元内的两位BCD码拆开并 转换成ASCII码,存入RAM两个单元中(低位 在31H,高位在32H)。 程序流程如图4-1所示。
单片机原理及其应用
扬州大学
4.1.3 伪指令
用汇编语言编写的程序必须经汇编(翻译)成机 器代码,单片机才可运行它。为了控制汇编程序如何 完成源程序的汇编过程并产生目标程序,需要在源程 序中加入汇编控制命令,即伪指令。 1.ORG :汇编起始地址命令 用来说明ORG指令以下程序段在存储器中存放的起 始地址。 例如 ORG 1000H START: MOV A,#20H MOV B,#30H ┇ 一个程序中可多次使用ORG指令,地址要由小到大 排列。 10
条件满足?
N
条件满足?
N B
Y A (a) A (b) K=? K=0 K=1 … K=n A0 A1 …… An
Y
(c)
图4-3 分支程序结构流程图
24
单片机原理及其应用
扬州大学
分支程序的设计要点如下: (1)先建立可供条件转移指令测试的条件。 (2)选用合适的条件转移指令。 (3)在转移的目的地址处设定标号。 2.双向分支程序设计举例 【例4.3】(4-12) 求符号函数的值 (p.88)
单片机原理及其应用
扬州大学
2.EQU :赋值命令 给标号赋予一个确定的数值。其它语句可以引用这 个标号 TTY: EQU 1080H
3.DB :定义数据字节命令 把数据以字节的形式存放在连续存储单元中。 ORG 1500H HERE: DB 56H,0A7H,35,‘A’ (1500h 56H A7H 23H 41H) 4.DW :定义数据字命令 按字的形式把数据存放在连续存储单元中。
单片机原理及其应用
扬州大学
伟福汇编器 V5.00
(4-2) (p.75)
地址 机器码
源程序 ORG 0H 0000 022000 LJMP 2000H ORG 2000H 2000 7408 START: MOV A,#8 2002 8576F0 MOV B,#76H 2005 25E0 ADD A,ACC 2007 25F0 ADD A,B 2009 80F5 SJMP START END 2000-(2009+2)=FFF5
;取30H单元的数据X ;将X送入B寄存器 ;求X2,结果在累加器中 ;将结果暂存于R1寄存器中 ;取31H单元数据Y ;将Y送入B寄存器 ;求Y2,结果在累加器中 ;求X2+ Y2 ;保存结果 ;暂停
23
单片机原理及其应用
扬州大学
4.2.4 分支程序
1.分支程序的基本形式 分支程序有三种基本形式,如图4-3所示。
18
开始 取数据低4位 转换成ASCII码 存ASCII码 取数据高4位 转换成ASCII码 存ASCII码 结束
图4-1 拆字程序流程图
单片机原理及其应用
扬州大学
参考程序如下: ORG 2000H MOV A,30H ANL A,#0FH ADD A,#30H MOV 31H,A MOV A,30H SWAP A ANL A,#0FH ADD A,#30H MOV 32H,A SJMP $ END
1.分析问题 完成什么任务,解决什么问题;已知的数据,运算 精度和速度; 2.确定算法 用何种方法解决问题;多个算法的比较;怎样组织 数据;
3.设计程序流程图 把算法和解决问题的步骤具体化;通过流程图掌握 程序的总体结构;
14
单片机原理及其应用
扬州大学
4.分配内存单元和I/O端口地址 片内RAM划分:工作寄存器组;堆栈区;其它暂 存区和缓冲区等;片外RAM; 确定各I/O端口的地址 5.编写汇编语言源程序 按流程图编写源程序;程序通常由主程序、子程 序、中断服务程序等构成。 6.调试程序 对程序的各个部分分别调试;有些还要与硬件系 统连接后调试; 切记:编程不易,调试更难。 15 只有掌握了程序的调试、测试才算会编程。
11
单片机原理及其应用
扬州大学
ORG 1600H ABC: DW 1234H, 4567H (1600h 12H 34H 45H 67H)
5.DS :定义存储区命令 从指定的地址单元开始,保留一定数量存储单元。 ORG 1000H BASE: DS 50H 6.BIT:位定义命令 赋字符名为某个位地址值。 EA: BIT 0AFH 7.END:汇编结束命令 告知汇编程序源程序结束
; 转移指令表首地址 取分支转移参量送A 乘数3送B (3字节指令) 形成转移偏移量 暂存偏移量低8位 A←偏移量高8位 加到DPH中 取回偏移量低8位 分支跳转[PC ← (A)+(DPTR)]
TAB5: LJMP LJMP
┇
PRG0 PRG1
; 转移指令表
LJMP
PRGn
29
单片机原理及其应用
30
单片机原理及其应用
扬州大学
MOV A , R3 JMP @A+DPTR ┇ TAB6: LJMP PRG0 LJMP PRG1 ┇ LJMP PRGn
21
开始
取数据X 求X2 暂存X2 取数据Y 求Y2 求X2+Y2 保存平方和
结束
图4-2 例4.2程序流程图
单片机原理及其应用
扬州大学
参考程序如下: ORG 2000H MOV A,30H MOV B,A MUL AB MOV R1,A MOV A,31H MOV B,A MUL AB ADD A,R1 MOV 32H,A SJMP $ END
扬州大学
【例4.5】(4-14)根据(31H 30H)的内容决定程序流向 (31H)<80 (p.90) JMP6: MOV DPTR,#TAB6 ; 转移指令表首地址 MOV A,30H ; 取低字节分支转移参量送A MOV B,#3 ; 乘数3送B (3字节指令) MUL AB ; 形成低字节转移偏移量 MOV R3, A ; 暂存 MOV A, B ; A←低字节偏移量高8位 ADD A, DPH MOV DPH, A ; 加到DPH中 MOV A, 31H ; 取高字节分支转移参量送A MOV B,#3 ; 乘数3送B (3字节指令) MUL AB ; 形成高字节转移偏移量 ADD A, DPH ; 加入DPH MOV DPH, A
;取数 ;取低4位 ;转换成ASCII码 ;保存结果 ;取数 ;高4位与低4位互换 ;取低4位(原来的高4位) ;转换成ASCII码 ;保存结果
20
单片机原理及其应用
扬州大学
【例4.2】 设X、Y两个小于10的整数分别存于片内 30H、31H单元,试求两数的平方和并将结果存于 32H单元。
解:两数均小于10,故两数的平方和可存放于一个 字节,可利用乘法指令求平方。 程序流程如图4-2所示。
1000H A, 40H ; 取数 A, #0,NZEAR ; 非零,转 NEGT ;(A)=0,转存结果 ACC.7,POSI ; (A)>0,转 A, #81H(原码); A ← -1 NEGT A,#1H ;A←1 41H,A ; 存结果 $ ; 暂停
27
单片机原理及其应用
扬州大学
3.多向分支程序设计举例
单片机原理及其应用
扬州大学
3.高级语言:高级语言是接近于人的自然语言,面 向过程而独立于机器的通用语言。 近年来单片机也流行采用高级语言编程。
如C51
6
单片机原理及其应用
扬州大学
4.1.2 汇编语言的语句结构
1.汇编语言的指令类型 MCS-51单片机汇编语言,包含两类不同性质的 指令。
(1)基本指令:即指令系统中的指令。它们都是机 器能够执行的指令,每一条指令都有对应的机器 代码。 (2)伪指令:汇编时用于控制汇编的指令。它们都 不是机器的指令,无机器码产生。
【例4.4】(4-13) 根据R2的值转向n个分支程序。(p.90) (R2)=0,转向PRG0; (R2)=1,转向PRG1;
┇
(R2)=n,转向PRGN; 解:利用JMP @A+DPTR 指令直接给PC赋值,使程 序实现转移。
28
单片机原理及其应用
扬州大学
参考程序如下: JMP6: MOV DPTR,#TAB5 MOV A,R2 ; MOV B,#3 ; MUL AB ; MOV R6, A ; MOV A, B ; ADD A, DPH MOV DPH, A ; MOV A, R6 ; JMP @A+DPTR ;
2
单片机原理及其应用
扬州大学
第4章 MCS-51汇编程序设计
4.1 汇编语言基本概念
4.2 汇编语言程序设计
3
源自文库
单片机原理及其应用
扬州大学
4.1 汇编语言基本概念
4.1.1 程序设计语言 4.1.2 汇编语言的语句结构 4.1.3 伪指令
4
单片机原理及其应用
扬州大学
4.1.1 程序设计语言
程序设计语言的结构及其功能可以分为三种: 1.机器语言:机器语言是用二进制代码0和1表示指 令和数据的最原始的程序设计语言。 机器语言编程困难,一般不再用其编程。 2.汇编语言:在汇编语言中,指令用助记符表示, 地址、操作数可用标号、符号地址及字符等形式来 描述。 比机器语言编程方便,但要熟悉机器硬件结构、 指令系统才能用好它。 汇编语言与机器语言一样是面向机器的,无通 用性。 5
单片机原理及其应用
扬州大学
4.2.2 汇编语言程序的汇编
汇编语言源程序翻译成机器代码的过程称为“汇编” 1. 手工汇编 通过查指令代码将指令逐条翻译成机器代码并输入到 单片机中。这种方法要求自行按绝对地址定位指令,并计 算偏移量。工作量大、繁琐、易错,修改不易,已被机器 汇编取代。 2. 机器汇编 在系统机上用相应的汇编程序对源程序文件(*.asm) 自动翻译。由于使用不同种类的计算机进行汇编工作,称 为交叉汇编 (汇编后的机器代码不能直接在系统机上运行)。 机器汇编三步骤:(1)编辑输入源程序;(2)机器汇编; (3)下载机器代码并运行调试。 16
单片机原理及其应用
扬州大学
单片机原理接口及其应用
(Principle and Application of Single Chip Microcomputer)
1
单片机原理及其应用
扬州大学
第1章 第2章 第3章 第4章 第5章 第6章 第7章 第8章 第9章
概述 MCS-51单片机硬件结构 MCS-51寻址方式和指令系统 MCS-51汇编程序设计 中断系统 定时器/计数器及串行口 存储器扩展 接口电路扩展 应用举例
12
单片机原理及其应用
扬州大学
4.2 汇编语言程序设计
4.2.1 汇编语言程序设计步骤
4.2.2 汇编语言程序的汇编
4.2.3 顺序程序 4.2.4 分支程序 4.2.5 循环程序 4.2.6 子程序
4.2.7 查找程序
4.2.8 码制转换程序
4.2.9 程序举例
13
单片机原理及其应用
扬州大学
4.2.1 汇编语言程序设计步骤
Y= 1 0 -1 X>0 X=0 X<0
解:X为有符号数,存在40H单元。Y存在41H单元。 程序流程如图4-4所示。
25
单片机原理及其应用
扬州大学
图4-4 例4.3程序流程图
26
单片机原理及其应用
扬州大学
参考程序如下: ORG MOV CJNE AJMP NZEAR: JNB MOV AJMP POSI: MOV NEGT: MOV SJMP END
7
单片机原理及其应用
扬州大学
2.汇编语言的语句格式 汇编语言源程序是由汇编语句(即指令) 组成的。汇编语言一般由四部分组成。 其典型的汇编语句格式如下:
标号: 操作码 START: MOV 操作数 A,30H ;注释 ;A←(30H)
8
单片机原理及其应用
扬州大学
MOV A, #0 ; 赋初值 (4-1) (p.69) MOV R1, #10 ;计数器赋初值 MOV R2, #00000011B LOOP: ADD A, R2 ;累加 DJNZ R1, LOOP HERE: SJMP HERE 标号:即符号地址,需要时加上。标号后加冒号;标号由 字母开头(1-8字符),标号不能与指令助记符、预定 义符号相同。 操作数:数值操作数,根据需要可用16进制 (后缀H)、10 进制、二进制 (后缀B) 表示。16进制数以A~F开头时, 前面要加’0’。 $符号的使用:程序最后一句可用 SJMP $ 代替。 注释:以分号开头,根据需要对于指令的作用加以解释。 9 START:
17
单片机原理及其应用
扬州大学
4.2.3 顺序程序
顺序程序是一种最简单,最基本的程序。 特点:程序按编写的顺序依次往下执行每一 条指令,直到最后一条。 【例4.1】 将30H单元内的两位BCD码拆开并 转换成ASCII码,存入RAM两个单元中(低位 在31H,高位在32H)。 程序流程如图4-1所示。
单片机原理及其应用
扬州大学
4.1.3 伪指令
用汇编语言编写的程序必须经汇编(翻译)成机 器代码,单片机才可运行它。为了控制汇编程序如何 完成源程序的汇编过程并产生目标程序,需要在源程 序中加入汇编控制命令,即伪指令。 1.ORG :汇编起始地址命令 用来说明ORG指令以下程序段在存储器中存放的起 始地址。 例如 ORG 1000H START: MOV A,#20H MOV B,#30H ┇ 一个程序中可多次使用ORG指令,地址要由小到大 排列。 10
条件满足?
N
条件满足?
N B
Y A (a) A (b) K=? K=0 K=1 … K=n A0 A1 …… An
Y
(c)
图4-3 分支程序结构流程图
24
单片机原理及其应用
扬州大学
分支程序的设计要点如下: (1)先建立可供条件转移指令测试的条件。 (2)选用合适的条件转移指令。 (3)在转移的目的地址处设定标号。 2.双向分支程序设计举例 【例4.3】(4-12) 求符号函数的值 (p.88)
单片机原理及其应用
扬州大学
2.EQU :赋值命令 给标号赋予一个确定的数值。其它语句可以引用这 个标号 TTY: EQU 1080H
3.DB :定义数据字节命令 把数据以字节的形式存放在连续存储单元中。 ORG 1500H HERE: DB 56H,0A7H,35,‘A’ (1500h 56H A7H 23H 41H) 4.DW :定义数据字命令 按字的形式把数据存放在连续存储单元中。
单片机原理及其应用
扬州大学
伟福汇编器 V5.00
(4-2) (p.75)
地址 机器码
源程序 ORG 0H 0000 022000 LJMP 2000H ORG 2000H 2000 7408 START: MOV A,#8 2002 8576F0 MOV B,#76H 2005 25E0 ADD A,ACC 2007 25F0 ADD A,B 2009 80F5 SJMP START END 2000-(2009+2)=FFF5
;取30H单元的数据X ;将X送入B寄存器 ;求X2,结果在累加器中 ;将结果暂存于R1寄存器中 ;取31H单元数据Y ;将Y送入B寄存器 ;求Y2,结果在累加器中 ;求X2+ Y2 ;保存结果 ;暂停
23
单片机原理及其应用
扬州大学
4.2.4 分支程序
1.分支程序的基本形式 分支程序有三种基本形式,如图4-3所示。
18
开始 取数据低4位 转换成ASCII码 存ASCII码 取数据高4位 转换成ASCII码 存ASCII码 结束
图4-1 拆字程序流程图
单片机原理及其应用
扬州大学
参考程序如下: ORG 2000H MOV A,30H ANL A,#0FH ADD A,#30H MOV 31H,A MOV A,30H SWAP A ANL A,#0FH ADD A,#30H MOV 32H,A SJMP $ END
1.分析问题 完成什么任务,解决什么问题;已知的数据,运算 精度和速度; 2.确定算法 用何种方法解决问题;多个算法的比较;怎样组织 数据;
3.设计程序流程图 把算法和解决问题的步骤具体化;通过流程图掌握 程序的总体结构;
14
单片机原理及其应用
扬州大学
4.分配内存单元和I/O端口地址 片内RAM划分:工作寄存器组;堆栈区;其它暂 存区和缓冲区等;片外RAM; 确定各I/O端口的地址 5.编写汇编语言源程序 按流程图编写源程序;程序通常由主程序、子程 序、中断服务程序等构成。 6.调试程序 对程序的各个部分分别调试;有些还要与硬件系 统连接后调试; 切记:编程不易,调试更难。 15 只有掌握了程序的调试、测试才算会编程。
11
单片机原理及其应用
扬州大学
ORG 1600H ABC: DW 1234H, 4567H (1600h 12H 34H 45H 67H)
5.DS :定义存储区命令 从指定的地址单元开始,保留一定数量存储单元。 ORG 1000H BASE: DS 50H 6.BIT:位定义命令 赋字符名为某个位地址值。 EA: BIT 0AFH 7.END:汇编结束命令 告知汇编程序源程序结束