第4章 MCS-51程序设计 4.1 汇编语言的格式与伪指令 4.2 汇编语言程序设计步骤 4.3 查表程序设计 4.4 循环程序设计

Slides:



Advertisements
Similar presentations
主讲人:刘利 交通大学网络控制课程系列 上海交通大学机电控制研究所 交通大学网络控制课程系列 考试课、专业基础课、必修课
Advertisements

第7章 AT89S51单片机的 串行口 1.
6 单片机的中断与定时系统 I/O设备必须通过I/O接口与计算机连接。 I/O接口的功能: 1.速度匹配: 锁存数据、传送联络信号。
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
第四章 指令系统及汇编语言程序设计.
8051 指令.
第四章 指令系统及汇编语言程序设计.
本章分为四节,主要介绍: 4.1 程序编制的方法和技巧 4.2 源程序的编辑和汇编 4.3 基本程序结构 4.4 常用程序举例.
项目2 2个LED发光二极管控制 知识与能力目标 熟悉单片机的I/O口功能与特性。
得技通电子 问题 1 右何者非為假指令 (1) XRL (2) EQU (3) MACRO (4) ORG.
本章小结 C51单片机指令系统概述 C51单片机寻址方式 C51单片机指令系统
单片机原理与应用.
第9章 串行扩展技术 (课时:6学时).
第2章 MCS-51单片机指令系统与汇编语言程序设计
報告者:朱耿育 紀翔舜 組員:詹以群 張永傑 指導老師:梁新潁
复 习 一. 计算机中的数和编码 1. 2,10,16进制数及其之间的转换(整数) 按权展开,除x取余 2
第二部分 微机原理 第4章 汇编语言 程序设计 主讲教师:喻红.
单片机应用技术 项目一 循环彩灯装置 第6讲 指令功能及汇编语言程序设计(一) 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
第8章 模拟接口 8.1 模拟接口概述 8.2 DAC及其接口 8.3 ADC及其接口.
第二部分 微机原理 第3章 MCS-51的 指令系统 主讲教师:喻红.
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
第14章 单片机应用系统抗干扰 与可靠性设计 1.
第6章 MCS - 51单片机内部定时器/ 计数器 及串行接口 6.1 定时器/计数器的结构及工作原理 6.2 方式和控制寄存器
單晶片微電腦控制實習 使用計時中斷作走馬燈 計時器的基礎實習 國立大甲高工 電機科 2018年11月21日
第七章 MCS-51系统扩展 一、程序存储器扩展
第3章 AT89C51指令系统 3.1基本概念内部结构和引脚功能 指令、指令系统、机器代码
单片机原理及应用 MCS-51系列单片机的基本硬件结构 MCS-51指令系统 MCS-51单片机的系统扩展与应用.
4.A/D与D/A转换器 1).DAC0832与MCS-51接口
第2章 单片机的结构原理与 简单应用 (课时:10学时).
第八章 MCS-51与数码显示器和键盘的接口 一、MCS-51与数码显示器接口 数码显示器是单片机应用产品中最常用的廉价的输 出设备,它由8个发光二极管按一定规律排列而成, 当某一发光二极管导通时,则会被点亮,控制不同 组合的二极管导通,就能显示出各种字符。 1.显示器的结构.
本 章 重 点 单片机的简单I/O扩展 8255A可编程并口芯片 8279可编程键盘/显示器接口芯片 单片机键盘接口技术
单片机原理 单 片 机 单片机接口技术 单片机应用技术.
第三章 指令系统.
第3章 指令系统及程序设计举例 3.1 指令格式与寻址方式 一、指令格式 1. 指令 操作码 目标操作数,源操作数
第四章 汇编语言程序设计.
第10章 综合实训 课题一 水温控制系统设计 一、实训目的 二、课题要求 熟悉常用温度传感器AD590的特性及接口电路的设计方法;
第8章 MCS-51串行口 8.1 串行口及其通信方式 8.2 IBM-PC系列机与 单片机 的通信技术.
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
第2章 单片机系统组成原理 2.1 MCS-51单片机组成原理 2.2 单片机复位电路设计 2.3 MCS-51存储器配置
6.1 输入/输出 6.2 CPU与外设数据传送方式 6. 3 MCS-51中断系统 6. 4 中断应用举例
单元五 MCS-51单片机内部资源 5.1 任务九 单片机计数并显示 5.2 任务十 单片机流水灯控制 5.3 任务十一 两台单片机数据互传
本 章 重 点 单片机的结构特点 单片机的存储器特点 I/O端口的特点 CPU时序 课时安排:3个课时.
第四章 指令系统及汇编语言程序设计.
第4章 中断技术 一个完整的微机系统是由硬件和软件共同构成的。微机系统的硬件有CPU、存储器和I/O口,外设组成。CPU与存储器之间的信息交换比较简单,而CPU与外设之间进行信息交换之前必须确定外设是否准备好,即选择I/O传送方式。I/O传送方式有4种:无条件、查询、中断和DMA。本章学习中断传送方式的有关内容。
数码管数字时钟电路的设计 1. 系统硬件电路的设计
第3章 MCS-51指令系统 介绍MCS—51系列单片机的寻址方式 介绍MCS—51系列单片机的指令系统
微机原理与接口技术 西安邮电大学计算机学院 王忠民.
第4章 80C51系列指令系统 教学目的:熟悉80C51系列单片机的寻址方式及 每一种寻址方式对应的寻址空间;掌 握每一条指令功能。
4.4 实用程序举例 延时 在程序设计过程中,有时需要程序“等待”一会儿再去处理某些事情,称之为延时。计算机延时实际就是让计算机反复执行一些空操作,这样就能起到拖延时间的作用。需要执行空操作次数的多少,取决于延时时间的长短。
教学难点: 分支程序、散转程序与子程序的设计
本章内容 MCS-51单片机指令系统的格式 MCS-51单片机寻址方式 指令系统的分析
5-6 串列埠模式0輸出埠擴充實習.
单片机原理与应用 主讲人:张荣刚 福建师范大学福清分校.
CPU中的专用寄存器(SFR) 一、累加器Acc 二、通用寄存器B 三、程序计数器PC 四、堆栈指针SP 五、数据指针DPTR
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
3.1 指令系统简介 一、几个概念 二、汇编语言指令格式 三、指令的分类 四、指令的符号说明 主讲:吴政江 下一页.
第三章 计算机系统的组成与工作原理.
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
单片机原理及应用 实践部分 主讲人:刘 强 四川工商学院单片机教学团队 单片机原理及应用 实践部分 主讲人:刘 强
College of Computer Science & Technology
四、手工汇编 完成汇编的方法有两种:手工汇编和汇编程序汇编 1.手工汇编步骤 A
3. 逻辑运算指令 A、简单逻辑操作指令 CLR A. (不影响CY、AC、 OV标志) CPL A
简单芯片扩展I/O接口 8155可编程接口芯片及其使用 键盘及显示器接口设计 A/D和D/A转换接口技术
循环程序设计 在程序中包含重复执行的程序段称为循环程序设计。循环程序可以使程序结构性强、可读性好,从而大大提高了程序质量。
4.3 汇编语言程序设计 顺序程序设计 顺序程序设计是最基本的程序设计。它是按照指令排列的先后顺序依次执行,每条指令都必须执行,且只执行一遍。顺序程序设计一般比较单一、简单,常常作为复杂程序的一部分。
单片机应用技术 (C语言版) 第3章 MCS-51指令系统及 汇编程序设计
第二章 MCS-51单片机程序设计 第一章 8086程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
第4章 MCS-51汇编语言程序设计 教学基本要求: (1)、了解MCS-51汇编语言程序设计的特点;
第1章 微型计算机基础.
Presentation transcript:

第4章 MCS-51程序设计 4.1 汇编语言的格式与伪指令 4.2 汇编语言程序设计步骤 4.3 查表程序设计 4.4 循环程序设计 4.1 汇编语言的格式与伪指令 4.2 汇编语言程序设计步骤 4.3 查表程序设计 4.4 循环程序设计 4.5 分支程序设计 4.6 散转程序设计 4.7 数制转换程序设计

4.1 汇编语言的格式与伪指令 一. 指令的格式 LOOP: MOV A, R0 ;将R0的内容送A 4.1 汇编语言的格式与伪指令 一. 指令的格式 LOOP: MOV A, R0 ;将R0的内容送A [标号] 操作码 第一操作数 第二操作数 [注释] (目的操作数) (源操作数) 注:白色的内容不是必须的

二、汇编语言格式: 地址 机器码 源程序 注释 ORG 0000H ; 整个程序起始地址 地址 机器码 源程序 注释 ORG 0000H ; 整个程序起始地址 0000 20 00 30 LJMP MAIN ; 跳向主程序 ORG 0030H ; 主程序起始地址 0030 C3 MAIN: CLR C ; MAIN为程序标号 0031 E6 LOOP: MOV A , @R0 0032 37 ADDC A, @R1 0033 08 INC R0 0034 DA FB DJNZ R1, LOOP ;相对转移 0036 80 03 SJMP NEXT 0038 78 03 MOV R0, #03H 003A 18 NEXT: DEC R0 003B 80FE SJMP $ ;HERE: SJMP HERE END ; 结束标记

三. 伪操作指令 1、 ORG(Origin) 定义程序的起始地址 2、 END 程序结束标志 3、 DB (Define Byte) 定义字节 4、 DW (Define Word)定义字 5、 EQU(Equate) 表达式赋值

四、伪操作指令例子 ORG 0000H MAIN: CLR C LOOP: MOV A , @R0 MATH EQU 03H ORG 0000H MAIN: CLR C LOOP: MOV A , @R0 MOV R1, #MATH ;相当于 MOV R1, #03H NEXT: SJMP $ ORG 1100H DB 01H , 04H, 09H , 05H ; END ROM中 地址 数据 1100 01 1101 04 1102 09 1103 05

4.2 汇编语言程序设计步骤 1.确定方案和计算方法 2.了解应用系统的硬件配置、性能指 标。 开始 3.建立系统数学模型,确定控制算法 4.2 汇编语言程序设计步骤 1.确定方案和计算方法 2.了解应用系统的硬件配置、性能指 标。 3.建立系统数学模型,确定控制算法 和操作步骤。 4.画程序流程图, 确定程序的流向 5. 编制源程序 (1)合理分配存储器单元和了解I/O接 口地址。 (2)按功能设计程序,明确各程序之 间的相互关系。 (3)用注释行说明程序,便于阅读和 修改调试和修改。 开始 1 Y N ?

举例 AJMP MAIN ; 跳向主程序 ORG 0030H ; 主程序起始地址 MAIN: CLR C ; MAIN为程序标号 LOOP: MOV A , @R0 ADDC A, @R1 INC R0 DJNZ R1, LOOP ;相对转移 SJMP NEXT MOV R1, #03H NEXT: DEC R0 SJMP $ ;相当于 LOOP1: SJMP LOOP1 END ; 结束标记

4.3 查表程序设计 一. 用DPTR查表(查0~9平方表) 1000 C083 TA: PUSH DPH 4.3 查表程序设计 一. 用DPTR查表(查0~9平方表) 1000 C083 TA: PUSH DPH 1002 C082 PUSH DPL 1004 902000 MOV DPTR, #TAB 1007 93 MOVC A, @A+DPTR 1008 D082 POP DPL 100A D083 POP DPH 100C 22 RET ORG 2000H TAB: DB 00H, 01H, 04H, 09H 2000 00 2001 01 2002 04 2003 09

ORG 1000H 二. 用PC查表(查0~9平方表) 1000 C083 TA: ADD A, #01H ; # 01H 为偏移量 1002 83 MOVC A, @A+PC 1003 22 RET 1004 00 DB 00H, 01H, 04H, 09H 1005 01 END 1006 04 1007 09 偏移量=表首地址-(查表指令下一条指令地址) =1004H - 1003H =01H

DEL: MOV R7, #200 4.4 循环程序设计 一. 延时50ms程序 DEL1: MOV R6, #125 4.4 循环程序设计 一. 延时50ms程序 DEL: MOV R7, #200 DEL1: MOV R6, #125 DEL2: DJNZ R6, DEL2 ;125*2=250us DJNZ R7, DEL1 ; 0.25ms*200=50ms RET 使用12MHz晶振时,一个机器周期为1us, 执行 DJNZ指令为2us,加其他指令的时间(250+1+2) *200+1=50.301ms 精确计算见 P327

二. 计算几个数据的和 例题:对内部RAM 50h开始的10个无符号数求和。

源程序: ADD1: MOV R7, #10 ;循环次数n=10 MOV R3, #0 ;存放结果的高8位 MOV R0, #50H ;求和的数据存放在从内部RAM 50h开始的 ;单元中,。注意:(50h)=?不知道 LOOP: MOV A, R4 ; ADD A, @R0 ;(R4)+(5?H)→A MOV R4, A ; 结果送回R4 CLR A ; ADDC A, R3 ; 把进位位C加到高8位去 MOV R3, A INC R0 ; 为下一轮循环作准备 DJNZ R7, LOOP END

高8位 低8位 解释: (R3) (R4) + (50h) C (A) (50h)中是什么,不知道, 不能用ADD A,#50H 高8位 低8位 (R3) (R4) + (50h) C (A) MOV A, R4 ADD A, @R0 MOV R4, A CLR A ADDC A, R3 MOV R3, A (50h)中是什么,不知道, 不能用ADD A,#50H

4.5 分支程序设计 一、基本分支程序: 1、若(A)< 14H, 转NEXT,否则继续执行 4.5 分支程序设计 一、基本分支程序: 1、若(A)< 14H, 转NEXT,否则继续执行 2、若(A)≤ 14H, 转NEXT, 否则继续执行 3、若(A)≥ 14H, 转NEXT, 否则继续执行 4、若(A)> 14H, 转NEXT, 否则继续执行 CJNE A,#data,rel;(A)=#data,继续 Cy←0 (A)>#data, 转 Cy←0 (A)<#data, 转 Cy←1 特点:只有<时,Cy←1 CJNE A, #14H, LOOP LOOP: JC NEXT … … (A)≤ 14H 相当于(A) < 15H CJNE A, #15H, LOOP LOOP: JC NEXT … … CJNE A, #14H, LOOP LOOP: JNC NEXT … … (A)> 14H 相当于(A) ≥ 15H CJNE A, #15H, LOOP LOOP: JNC NEXT … …

二、分支程序例1 ORG 0030H MOV A, 20H 例1:按下面公式编写程序, CJNE A, #21H, LOOP1 LOOP1: JC NEXT1 CJNE A, #40H, LOOP2 LOOP2: JNC NEXT2 MOV B, #2 MUL AB AJMP NEXT2 NEXT1: CPL A NEXT2: MOV 21H, A END 最终结果存在 21h中 例1:按下面公式编写程序, x为无符号数,存在20h单元 y存放在21h单元。

三、分支程序例2: ORG 0030H 从内部RAM 22h单元开始存有一个无符号数数据块, 长度n存于21h中。求出数据块中的最小数,存于20h中。 ORG 0030H MOV R0, #22H ;数据块起始地址 MOV R1, 21H ;数据个数n MOV 20H,#0FFH ; 最大数 LOOP: MOV A, @R0 ; 取新数 INC R0 ; 为取下一个新数作准备 CJNE A, 20H, LOOP1 ; 与原最大数比较 LOOP1:JNC NEXT ; 大,原最小数保留 MOV 20H, A ; 小,改变最小数 NEXT: DJNZ R1, LOOP ;循环 END 初始化 y <x y → x 取新数 y n-1=0? y N END

例:行李计价: 当G≤5,M=G×3; 当G>5,M=G×3+(G-5)×(5-3) FRT: MOV A,40H ;取行李重量G放在40H MOV R3,A MOV B,#03H ;M=G×3 MUL AB MOV R2,A ;暂存3 × G在R2 MOV A,R3 ;取回G CJNE A,#06H,L1 ;G≤5 ? L1: JC WETC ;是,转至WETC SUBB A,#05H ;否则M=3G+2(G-5) RLC A ADD A,R2 WETC:MOV 41H,A ;最后结果M存41H end 指出本程序的条件限制

4.6 散转程序设计 ORG 0030H CLR A MOV A, R7 *AJMP … 即把PC指向子程序的起始地址; 4.6 散转程序设计 ORG 0030H JUMP1: MOV DPTR, #TAB CLR A MOV A, R7 ADD A, R7 AJMP @A+DPTR ORG 0100H TAB: AJMP Prog0 AJMP Prog1 AJMP Prog2 …… 根据R7中的内容,转向各个子程序。 R7=0,转入Prog0 R7=1,转入Prog1 R7=2,转入Prog2 …… R7=n,转入Progn 处理 0 处理 1 处理 n R7= ? 1 n *AJMP … 即把PC指向子程序的起始地址; *R7 x 2 是AJMP @A+DPTR的机器码匹配;此处 n<127; *如用LJMP @A+DPTR,则R7 x 3, 程序还要作相应修改。

4.7 数制转换程序设计 例:8位二进制转换成BCD码。(用十进制表达的二进制码) ;程序名:BINBCD1 4.7 数制转换程序设计 例:8位二进制转换成BCD码。(用十进制表达的二进制码) ;程序名:BINBCD1 ;功能: 0~FFH内的二进制数转换为BCD数 ;入口: A存要转换的二进制数 ;出口: R0 存放BCD数 百、十、个位数的地址 BINBCD1: MOV B, #100 DIV AB MOV @R0, A INC R0 MOV A, #10 XCH A, B ;(A)=原(B),(B)=10 INC R0 XCH AB RET