基于CDIO工程教育理念的单片机原理及应用全套教学课件_第1页
基于CDIO工程教育理念的单片机原理及应用全套教学课件_第2页
基于CDIO工程教育理念的单片机原理及应用全套教学课件_第3页
基于CDIO工程教育理念的单片机原理及应用全套教学课件_第4页
基于CDIO工程教育理念的单片机原理及应用全套教学课件_第5页
已阅读5页,还剩516页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于CDIO工程教育理念的单片机原理及应用第1章单片机概述第2章单片机的外形及引脚功能第3章单片机的指令系统第4章单片机的C语言第5章单片机的仿真技术第6章单片机的中断系统第7章单片机的定时器计数器第8章单片机的串行接口第9章单片机的并行总线扩展第10章单片机的开关量接口第11章单片机的显示接口第12章单片机的模拟量接口基于CDIO工程教育理念的单片机原理及应用1.1微型计算机与单片微型计算机1.1.1微型计算机的基本硬件结构1.1微型计算机与单片微型计算机图1-1-1微型计算机的基本结构图1.1微型计算机与单片微型计算机01微处理器02存储器03I/O接口04总线1.1微型计算机与单片微型计算机1.1.2微型计算机的软件操作和管理计算机的各种程序,由一条条指令组成控制计算机进行各种操作的命令MOVA,#29;把数29传送到累加器AADDA,#38H;将A的内容与数38H相加,结果存A指令11.1微型计算机与单片微型计算机程序2一些列有序指令的集合编程求12+34+56=?MOVA,#12;把数12传送到累加器AADDA,#34;将A的内容与数34相加,结果存AADDA,#56;将A的内容与数16相加,结果存A1.1微型计算机与单片微型计算机机器语言:计算机能直接执行的语言汇编语言:面向机器的语言不同CPU的汇编语言不同高级语言:面向任务的语言易学易用汇编语言和高级语言必须转换成二进制代码(目标程序)才能执行机器语言、汇编语言和高级语言31.1微型计算机与单片微型计算机1.1.3微型计算机的基本工作过程与一般数字系统不同,计算机是由硬件、软件紧密结合,共同来完成工作任务的。(1)CPU通过PC和AB选中第N个存储单元;(2)CPU通过CB向存储器发出读的控制信号;(3)内容送到DB上,CPU读入指令代码1.取指令的过程1.1微型计算机与单片微型计算机(1)CPU译码,判断类型操作及数据所在的单元地址;(2)CPU根据译码结果发出控制信号;(3)执行规定动作,PC加1,进入下一条指令执行过程2.执行指令的过程1.1微型计算机与单片微型计算机1.1.4微型计算机与单片机计算机发展与应用首先是为了满足科学计算需要,现代人的工作、学习和生活离不开计算机很多场合,人们需要体积小、价格低、性能稳定的微型计算机单片机是微型计算机的一个重要分支,其特点是把CPU、存储器和I/O接口电路集成在一块超大规模的集成电路芯片上。单片机具有体积小、价格便宜、可靠性高和使用方便等优点,每年使用量达几十亿片1.2单片机的发展概况与特点1.2单片机的历史与发展概况第1代MCS-4系列单片机(40048008)4004和8008是单片机时代的开始4位微处理器Intel4004集成度为2000只晶体管配有RAM、ROM和移位寄存器1.2单片机的历史与发展概况第2代MCS-48系列单片机(80488748)8位CPU1KB程序存储器64B随机存储器27个I/O引脚8位定时计数器1.2单片机的历史与发展概况第3代MCS-51系列单片机(80318051)并行总线(AB、DB、CB)串行通信接口(UART)特殊功能寄存器(SFR)布尔处理系统和指令系统8位单片机系列因其性价比的巨大优势,在工业控制、电子产品等诸多应用领域占有较大的比重。1.2单片机的历史与发展概况第4代MCS-96系列单片机(8098)集成12万个晶体管工作频率12MHz16位CPU8KBROM232BRAM5个8位并行I/O口4个全双工串行口4个16位定时器/计数器8级中断处理系统1.3单片机的特点1.3单片机的特点世界上有众多生产单片机的厂商,其产品从普通的单片机到专有定制产品应有尽有,种类齐全。单片机应用广泛,市场需求量大,各大公司的商业竞争使得其价格十分低廉,性能价格比极高。

单片机把各种功能部件集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连线,集成度和可靠性很高。1.种类众多2.性价比高3.集成度和可靠性高1.3单片机的特点程序存储器只存放程序、固定常数及数据表格。数据存储器用作工作区及存放用户数据。单片机应用广泛,市场需求量大,各大公司的商业竞争使得其价格十分低廉,性能价格比极高。

由于单片机芯片上引脚数目有限,为了解决实际引脚数和需要的信号线之间的矛盾,采用了引脚功能复用的方法,引脚处于何种功能,可由指令来设置或由机器状态来区分。4.存储器ROM和RAM严格区分5.采用面向控制的指令系统6.I/O引脚多功能1.3单片机的特点当单片机内部的功能部分不能满足应用需求时,可在外部进行扩展,给设计与应用带来极大的方便和灵活性。大多数单片机采用C语言进行编程,且提供大量的函数,这为学习和设计单片机的人员提供了便利7.外部扩展能力强8.简便易学1.4单片机的应用与常用单片机1.4单片机的应用

由于单片机具有价格低廉、性能优异、体积小和使用简单等优点,使得其在工业控制、电子制造、农业生产、家电设备甚至军事领域都有广泛的应用。1.4单片机的应用智能仪器仪表是单片机应用最多最活跃的领域之一。在各类仪器仪表中引入单片机,使仪器仪表智能化,提高测试的自动化程度和精度,简化仪器仪表的硬件结构,提高其性能价格比。用单片机可以构成形式多样的控制系统和数据采集系统,如工厂流水线的智能化管理、电梯智能化控制、各种报警系统、与计算机联网构成二级控制系统等。1.智能仪器仪表2.机电一体化产品1.4单片机的应用目前国内外各种商用产品和家用电器已经普遍用单片机代替传统的控制电路。例如,自动售货机、电子收款机、电子秤、洗衣机、电冰箱、空调机、微波炉、电饭煲等。单片机具备通信接口,可以很方便地与计算机进行数据通信,为计算机网络和通信设备间的应用提供了极好的物质条件。现在的通信设备基本上都实现了单片机智能控制,如手机、固定电话、程控交换机、无线对讲机、列车无线通信系统等。3.商用产品和家用电器4.计算机和通信网络1.4单片机的应用单片机在医用设备中的用途亦相当广泛,如医用呼吸机、各种分析仪、监护仪、超声诊断设备及病床呼叫系统等。单片机应用在现代办公室中大量的通信和信息产品中,如绘图仪、复印机、电话、传真机等。一台PC机可能嵌入了10个单片机,分别控制键盘、鼠标、显示器、CD-ROM、声卡、打印机、软/硬盘驱动器和调制解调器等。5.医疗设备6.办公自动化领域1.4单片机的应用通常在这些电子系统中的集中显示系统、动力监测控制系统、自动驾驭系统、通信系统以及运行监视器(黑匣子)等,都需要单片机来构成冗余的网络系统。例如,一台BMW-7系列轿车就用了63个单片机。在国防军事和尖端武器等领域,单片机因其可靠性高和能适应恶劣环境的特点,广泛应用于飞机、大炮、坦克、军舰、导弹、火箭、雷达等系统。7.汽车电子与航空航天电子系统8.在军事方面1.5常用单片机简介1.5常用单片机简介MCS-51单片机是所有兼容Intel8051指令系统单片机的统称。1.MCS-51单片机1.5常用单片机简介AVR单片机是美国Atmel公司推出的增强型内置Flash高速8位单片机,其具有精简指令集(RISC)和内载的Flash。2.AVR单片机1.5常用单片机简介PIC系列单片机是美国微芯公司(Microchip)的产品。3.PIC单片机1.5常用单片机简介MSP430系列单片机是由美国TI公司开发的16位单片机。4.MSP430单片机1.5常用单片机简介5.Motorola单片机1.5常用单片机简介凌阳单片机、NEC单片机、富士通单片机、三星单片机、华帮单片机、ZILOG单片机、东芝单片机、SST单片机等。6.其他类型单片机谢谢观看基于CDIO工程教育理念的单片机原理及应用第2章MCS-51单片机的外形及引脚功能2.1单片机的外形及引脚功能双列直插式封装DIP-40方形贴片式封装44PLCC2.1单片机的外形及引脚功能Vcc(40脚):接5V电源正端Vss(20脚):接5V电源地端51系列单片机引脚功能图电源引脚12.1单片机的外形及引脚功能晶振引脚251系列单片机引脚功能图2.1单片机的外形及引脚功能控制信号引脚351系列单片机引脚功能图上电复位电路按键复位电路2.1单片机的外形及引脚功能ALE(30引脚)51系列单片机引脚功能图单片机ALE引脚信号2.1单片机的外形及引脚功能PSEN(29脚):片外程序存储器读选通信号输出端EA(31脚):程序存储器选择输入端51系列单片机引脚功能图2.1单片机的外形及引脚功能输入/输出引脚4P0口(P0.0~P0.7)(39~32引脚)51系列单片机引脚功能图2.1单片机的外形及引脚功能P0口(P0.0~P0.7)(39~32引脚)P1口(P1.0~P1.7)(1~8引脚)51系列单片机引脚功能图2.1单片机的外形及引脚功能P2口(P2.0~P2.7)(21~28引脚)P3口(P3.0~P3.7)(10~17引脚)51系列单片机引脚功能图2.1单片机的外形及引脚功能单片机的总线结构5数据总线地址总线控制总线MCS-51单片机总线结构图2.2MCS-51单片机内部结构及CPU2.2MCS-51单片机内部结构及CPU2.2.1内部结构89C51内部结构图2.2MCS-51单片机内部结构及CPU2.2.28051CPU2.2MCS-51单片机内部结构及CPU1.运算器算术逻辑运算部件ALU累加器ACC寄存器B布尔处理器程序状态字寄存器PSW2.2MCS-51单片机内部结构及CPU程序状态字寄存器PSWCY:

进位标志位AC:

半进位标志位F0:

用户标志位RS1

RS0:

工作寄存器组选择控制位OV:

溢出标志位P:

奇偶校验标志位2.2MCS-51单片机内部结构及CPU2.控制器程序计数器PC指令寄存器IR和指令译码器ID数据指针寄存器DPTR堆栈指针SP2.2MCS-51单片机内部结构及CPU堆栈指针SP堆栈的入栈和出栈过程2.3MCS-51单片机存储器结构2.3MCS-51单片机存储器结构2.3MCS-51单片机存储器结构2.3.1程序存储器2.3MCS-51单片机存储器结构2.3.1程序存储器2.3MCS-51单片机存储器结构2.3.2数据存储器2.3MCS-51单片机存储器结构1.片内数据存储器结构低128B数据区结构2.3MCS-51单片机存储器结构特殊功能寄存器(SFR)符号地址功能介绍P0*80H串行口锁存器SP81H堆栈指针DPL82H数据地址指针(低8位)DPH

83H数据地址指针(高8位)PCON*87H电源控制寄存器TCON*88HT0、T1定时器/计数器控制寄存器TMOD*89HT0、T1定时器/计数器方式控制寄存器TL0

8AH定时器/计数器0(低8位)TL18BH定时器/计数器0(高8位)TH08CH定时器/计数器1(低8位)TH1

8DH定时器/计数器1(高8位)P1*90HP1口锁存器SCON*98H串行口控制寄存器SBUF99H串行口锁存器P2*

A0HP2口锁存器IE*A8H中断允许控制寄存器P3*B0HP3口锁存器IP*B8H中断优先级控制寄存器PSW*D0H程序状态字ACC*E0H累加器B*F0HB寄存器2.3MCS-51单片机存储器结构2.外数据存储器2.4MCS-51单片机时钟及CPU时序2.4MCS-51单片机时钟及CPU时序2.4.1单片机时钟晶振实物及单片机内部振荡电路图2.4MCS-51单片机时钟及CPU时序外部时钟信号接法图2.4MCS-51单片机时钟及CPU时序时钟信号示意图时钟信号S1、S2状态周期P1、P2节拍振荡脉冲2.4MCS-51单片机时钟及CPU时序1个机器周期=6个时钟周期(状态周期)=12个振荡周期机器周期设单片机的振荡频率fosc为12MHz,则机器周期为1µs。指令周期完成一条指令所需要的时间称为指令周期2.4MCS-51单片机时钟及CPU时序2.4.2

CPU时序MCS-51单片机典型指令时序图2.5MCS-51单片机低功耗工作方式SMOD:波特率加倍位。SMOD=1时波特率加倍,在串行通信时使用。PD:掉电方式位。PD=1时掉电。IDL:待机方式位。IDL=1时待机。GF1和GF0都是通用标志位。1.待机方式IDL置1,单片机即进入待机方式。2.掉电保护方式PD为1的指令后,系统进入掉电工作方式。2.6MCS-51单片机并行I/O口的结构和功能2.6MCS-51单片机并行I/O口的结构和功能2.6MCS-51单片机并行I/O口的结构和功能1.P0口作为一般I/O口使用P0口一位结构图2.6MCS-51单片机并行I/O口的结构和功能P0口I/O操作时的数据输出过程图2.6MCS-51单片机并行I/O口的结构和功能P0口I/O操作时的数据输出过程图2.6MCS-51单片机并行I/O口的结构和功能Vcc引脚数据输入路线图2.6MCS-51单片机并行I/O口的结构和功能Vcc100X强制VT1截止操作示意图2.6MCS-51单片机并行I/O口的结构和功能2.6MCS-51单片机并行I/O口的结构和功能注意点:作为输出口时,引脚必须外接上拉电阻;1作为输入口时,在读入引脚数据前,必须先向端口锁存器写入1。22.6MCS-51单片机并行I/O口的结构和功能2.6MCS-51单片机并行I/O口的结构和功能P1口一位结构图2.6MCS-51单片机并行I/O口的结构和功能P1口的3种工作方式1、输出(写)MOVP1,#0FFH2、

输入(读)MOVP1,#0FFHMOVA,P13、读—修改—写ANLP1,#data2.6MCS-51单片机并行I/O口的结构和功能P2口一位结构图2.6MCS-51单片机并行I/O口的结构和功能P3口一位结构图2.6MCS-51单片机并行I/O口的结构和功能P3口各引脚第二功能定义表谢谢观看基于CDIO工程教育理念的单片机原理及应用第3章MCS-51单片机的指令系统

指令和程序的基本概念51单片机的7种寻址方式51单片机的6大类共111条指令的格式【本章要点】3.1MCS-51单片机指令系统概述01指令是能被计算机识别并执行的命令;计算机执行一条指令,只能够完成某一种操作;02一种计算机所能执行的指令的集合叫作指令系统;03指令系统由一组符号和规则来构成,根据规则,用符号或符号串可以写出指令;0451单片机的指令系统就是它的汇编语言指令系统。3.1MCS-51单片机指令系统概述书写格式:

[标号:]<操作码>[操作数][;注释]

例如:MOVA,3AH操作码操作数标号注释

其他

3.1.2指令系统的特点1、按操作性质分类数据传送类指令

29条算术运算类指令

24条逻辑运算和循环操作类指令

24条程序转移类指令

12条调用与返回类指令

5

条位操作类指令

17条3.1.2指令系统的特点2、按字节数分类单字节指令49条双字节指令46条三字节指令16条3.1.2指令系统的特点3、按执行时间分类单机器周期指令

64条双机器周期指令

45条四机器周期指令

2条在采用12MHz晶振的情况下,执行时间分别是1µs、2µs和4µs。3.1.3指令及其注释中的符号用法说明符号说明Rn当前工作寄存器组中的任一寄存器R0~R7(n=0~7)Ri当前工作寄存器组中的R0和R1(i=0、1)@寄存器间接寻址或变址寻址符号(Ri)由Ri间接寻址指向的地址单元((Ri))由Ri间接寻址指向的地址单元中的内容(XXH)某片内RAM单元中的内容direct片内RAM单元(包括SFR)的直接地址#data8位数据#data1616位数据addr1616位地址addr1111位地址bit位地址,内部RAM和SFR的直接寻址位rel由8位补码数构成的相对偏移量$本条指令的首地址3.2MCS-51单片机的寻址方式3.251单片机的寻址方式寻址就是寻找指令中的操作数或者操作数所在的地址,寻找的方法就叫寻址方式。立即寻址直接寻址寄存器寻址寄存器间接寻址变址寻址相对寻址位寻址3.251单片机的寻址方式3.2.1立即寻址在指令中直接给出操作数的寻址方式叫做立即寻址。立即数以#号开始,有8位和16位两种形式。

MOVA,#20H ;#20H→A

MOVDPTR,#1234H ;#1234H→DPTR

3.251单片机的寻址方式3.2.2直接寻址指令中直接给出操作数所在地址的寻址方式称为直接寻址。直接寻址可以访问内部RAM的低128字节和特殊功能寄存器。MOVA,20H ;(20H)→AMOV55H,56H ;(56H)→RAM55H单元3.251单片机的寻址方式3.2.2直接寻址指令中直接给出操作数所在地址的寻址方式称为直接寻址。直接寻址可以访问内部RAM的低128字节和特殊功能寄存器。MOVA,20H ;(20H)→AMOV55H,56H ;(56H)→RAM55H单元3.251单片机的寻址方式3.2.3寄存器寻址在指令中利用寄存器给出操作数的寻址方式叫做寄存器寻址。可以用作寄存器寻址的寄存器包括:R0~R7和A、B、DPTR等。

MOVA,R0 ;R0→AADDP0,A ;P0+A→P0INCDPTR ;DPTR+1→DPTR3.251单片机的寻址方式3.2.4寄存器间接寻址在寄存器间接寻址方式中,寄存器存放的是操作数的地址,寄存器作数据指针用。能够用作寄存器间接寻址的寄存器:R0、R1、DPTR、SP3.251单片机的寻址方式设R0=56H,指令MOV

A,@R0的执行过程:3.251单片机的寻址方式3.2.5变址寻址数据指针DPTR或程序计数器PC作为基本地址寄存器;累加器A作为地址变量寄存器;将两寄存器的内容相加形成操作数的实际地址。3.251单片机的寻址方式变址寻址方式只有读指令,只能访问程序存储器ROM,访问范围64KB;变址寻址方式多用于查表操作。MOVC

A,@A+DPTR ;((DPTR+A))→AMOVC

A,@A+PC ;((PC+A))→A3.251单片机的寻址方式设DPTR=2000H,A=10H。MOVC

A,@A+DPTR的执行过程:3.251单片机的寻址方式设DPTR=2000H,A=10H。MOVC

A,@A+DPTR的执行过程:3.251单片机的寻址方式3.2.6相对寻址相对寻址方式是为了程序的相对转移而设计的,用于访问程序存储器。目的地址=源地址+相对转移指令字节数+偏移量rel3.251单片机的寻址方式例

设PC=2000H,执行指令SJMP20H后,PC=?3.251单片机的寻址方式3.2.7位寻址对位地址的寻址称为位寻址。字节地址和位地址都是十六进制数表示的,容易引起混淆,要注意区别!例:MOVA,20H;(20H)→AMOVC,20H;(20H)→C第一条指令中,由于目标寄存器是累加器A,因此,指令中的20H是字节地址direct;第二条指令中,由于目标寄存器是位累加器C,因此,其中的20H属于位地址bit。3.251单片机的寻址方式3.2.8寻址方式与寻址空间寻址方式寻址空间立即寻址程序存储器ROM直接寻址片内RAM128B、特殊功能寄存器SFR寄存器寻址工作寄存器R0~R7、A、B、DPTR寄存器间接寻址片内RAM128B、片外RAM变址寻址程序存储器ROM(@A+PC,@A+DPTR)相对寻址程序存储器ROM256B(PC+偏移量)位寻址片内RAM20H~2FH字节单元、部分SFR3.3数据传送类指令3.3数据传送指令数据传送指令可以分成二大类:1、普通传送指令MOV类2、特殊传送指令非MOV类3.3数据传送指令3.3.1普通传送指令1、以累加器A为目的操作数的指令(4条)MOVA,Rn;工作寄存器Rn(R0~R7)的内容→AMOVA,direct;直接地址direct的内容→AMOVA,@Ri;间接地址(Ri)中的内容((Ri))→AMOVA,#data;立即数#data→A3.3数据传送指令例:已知R0=20H,(20H)=12H,写出下面指令执行后的结果。MOVA,20H;(20H)→A,A=12HMOVA,#33H;#33H→A,A=33HMOVA,R0;R0→A,A=20HMOVA,@R0;((R0))→A即(20H)→A,A=12H

3.3数据传送指令2、以寄存器Rn为目的操作数的指令(3条)MOVRn,A;累加器A中内容→RnMOVRn,direct;直接地址direct内容→RnMOVRn,#data;立即数#data→Rn

3.3数据传送指令例:已知A=23H,R5=45H,(70H)=0CDH,

写出下面指令执行后的结果。MOVR5,A;A→R5,R5=23HMOVR5,70H;(70H)→R5,R5=0CDHMOVR5,#1BH;1BH→R5,R5=1BH3.3数据传送指令3、以直接地址direct为目的操作数的指令(5条)MOVdirect,A; A→direct

MOVdirect,Rn; Rn→direct

MOVdirect,direct;(源direct)→目的direct

MOVdirect,@Ri;((Ri))→direct

MOVdirect,#data;#data→direct

3.3数据传送指令例:设A=25H,(20H)=12H,(21H)=11H,R0=13H,(13H)=37H。执行下列程序段,分析每条指令的执行结果。#10H→20H,(20H)=10H(20H)→21H,(21H)=10HA→20H,(20H)=25HR0→21H,(21H)=13H((R0))→20H,(20H)=37HMOV20H,#10H;MOV21H,20H;MOV20H,A;MOV21H,R0;

MOV20H,@R0;3.3数据传送指令MOV@Ri,A;A→(Ri)MOV@Ri,direct;(direct)→(Ri)MOV@Ri,#data;

#data→(Ri)4、以间接地址(Ri)为目的操作数的指令(3条)3.3数据传送指令例:已知R0=20H,单片机依次执行下列指令后,分析累加器A、寄存器R1以及20H、21H和28H地址单元中的内容。#18H→A,A=18H#28H→R1,R1=28H#38H→20H,(20H)=38H#48H→21H,(21H)=48H(21H)→28H,(28H)=48HMOVA,#18H;MOVR1,#28H;MOV@R0,#38H;MOV21H,#48H;MOV@R1,21H;3.3数据传送指令5、16位数据传送指令(1条)MOVDPTR,#data16

其中:高8位数据dataH送入DPH,低8位数据dataL送入DPL。

MOVDPTR,#2345H;DPH=23H

;DPL=45H3.3数据传送指令访问片外RAM的指令 4条访问ROM的指令 2条数据交换指令 5条堆栈操作指令

2条3.3.2特殊传送指令3.3数据传送指令1、访问片外RAM的指令(4条)MOVXA,@Ri ;((Ri))→A, 读操作

MOVXA,@DPTR ;((DPTR))→A,读操作MOVX@Ri,A ;A→(Ri),写操作MOVX@DPTR,A ;A→(DPTR),写操作3.3数据传送指令例:将片外RAM120单元的内容传送到片外120H单元MOVDPTR,#0120HMOVR0,#78HMOVXA,@R0MOVX@DPTR,A

3.3数据传送指令2、访问ROM的指令(2条)MOVCA,@A+PC ;先PC+1→PC,

后((A+PC))→AMOVCA,@A+DPTR ;先PC+1→PC,

后((A+DPTR))→A

第一条指令的基址为程序计数器PC,偏移地址为A,访问范围:256B,称为近程查表;第二条指令16位数据指针DPTR和累加器A都可以作基本地址也可以作偏移地址,其访问范围可达:64KB,称为远程查表。3.3数据传送指令例:将程序存储器ROM中200AH单元的内容读入A中。MOVDPTR,#2000H ;DPTR=2000HMOVA,#0AH ;A=0AHMOVCA,@A+DPTR ;A=((A+DPTR))=(200AH)3.3数据传送指令3、数据交换指令(5条)XCHA,Rn;A与Rn内容互换XCHA,direct;A与direct内容互换XCHA,@Ri;A与((Ri))内容互换XCHDA,@Ri;A3~0与((Ri))3~0内容互换SWAPA;A3~0与A7~4内容互换3.3数据传送指令例:设初始时,A=34H,(30H)=11H。执行下列程序段后,分析其执行结果。A=11H,(30H)=34HR1=30HA=34H,(30H)=11HA=31H,(30H)=14HXCHA,30H;MOVR1,#30H;XCHA,@R1;XCHDA,@R1;3.3数据传送指令4、堆栈操作指令(2条)入栈:PUSHdirect;先SP+1→SP,后(direct)→(SP)出栈:POPdirect;先((SP))→direct,

后SP-1→SP。堆栈指令仅用于片内RAM128B或专用寄存器的操作;堆栈操作必须遵循“后进先出”的原则。3.3数据传送指令例:分析下列程序段的操作过程和结果。MOVSP,#18H ;SP=18HMOVA,#30H ;A=30HMOVDPTR,#1000H ;DPH=10H,DPL=00HPUSHA

;SP+1→SP=19H,(19H)=30HPUSHDPH

;SP+1→SP=20H,(20H)=10HPUSHDPL

;SP+1→SP=21H,(21H)=00H…POPDPL

;((SP))→DPL,DPL=00H,SP-1→SP=20HPOPDPH

;((SP))→DPH,DPH=10H,SP-1→SP=19HPOPA

;((SP))→A,A=30H,SP-1→SP=18H本程序的作用是保护A和DPTR,注意顺序后进先出3.3数据传送指令堆栈指令也可以进行数据的交换MOVSP,#18H ;SP=18HMOV30H,#40H;(30H)=40HMOV40H,#50H;(40H)=50HPUSH30H;SP+1→SP=19H,(19H)=40HPUSH40H;SP+1→SP=20H,(20H)=50H…POP30H

;((SP))→30H,(30H)=50H,SP-1→SP=19HPOP40H

;((SP))→40H,(40H)=40H,SP-1→SP=18H可以发现30H、40H这两个单元的内容进行了交换。3.4算数运算类指令3.4算术运算指令加、减、乘、除;加1、减1;BCD码运算和调整指令利用进位标志C,可进行多字节无符号整数运算利用溢出标志OV,可以对有符号数进行补码运算除加1、减1指令外,这类指令大多数对程序状态字PSW有影响算术运算指令共有24条3.4算术运算指令3.4.1普通四则运算指令ADDA,Rn ;A+Rn→AADDA,direct ;A+(direct)→AADDA,@Ri ;A+((Ri))→AADDA,#data ;A+#data→A

注意:加法指令的执行将影响标志位AC、CY、OV、P;当和的第3位或第7位有进位时,分别将AC、CY标志位置1,否则为0;溢出标志位OV仅用于带符号数运算,OV用于记录符号位的正确性。1、加法指令(4条)3.4算术运算指令若A=78H,R0=47H,PSW=00H。执行:ADDA,R0;后,结果及各标志位=?所得和为0BFH;标志位CY=0,AC=0,P=1;由于C7=0,C6=1,因此OV=C7⊕C6=1,表示存在溢出现象判断是否溢出,也可以比较被加数、加数、和三者的符号关系。3.4算术运算指令ADDCA,Rn;A+Rn+CY→AADDCA,direct;A+(direct)+CY→AADDCA,@Ri;A+((Ri))+CY→AADDCA,#data;A+#data+CY→A2、带进位加指令(4条)3.4算术运算指令MOVA,30HADDA,40HMOV30H,AMOVA,31HADDCA,41H ;可能有进位

MOV31H,A例:将31H和30H中的数与(41H)、(40H)相加,和保存在31H、30H中,设和不超过16位。3.4算术运算指令3、带借位减法指令(4条)SUBBA,Rn ;A-CY-Rn→ASUBBA,direct ;A-CY-(direct)→ASUBBA,@Ri

;A-CY-((Ri))→ASUBBA,#data ;A-CY-#data→A注意:标志位的判断,加法运算是判断进位,减法运算是判断借位。3.4算术运算指令CLRC ;相减之前清零MOVA,30HSUBBA,40HMOV30H,AMOVA,31HSUBBA,41HMOV31H,A

例:将31H、30H中的数与(41H)、(40H)相减,

差保存在31H、30H中。注意:首先应进行低字节的相减;相减之前应将C清零。3.4算术运算指令4、乘法指令

MULAB;A×B→B15~8A7~0若乘积大于255(0FFH),则置OV为1,否则清零;CY总是被清零。5、除法指令DIVAB;A÷B,商→A,余数→BA中为被除数,B中为除数,所得商放在A,余数放在B。指令执行后,CY被清零;当B=00H时,OV=1。3.4算术运算指令3.4.2特殊运算指令加1指令减1指令十进制调整指令3.4算术运算指令1、加1指令(5条)INCA;A+1→AINCRn;Rn+1→RnINCdirect;(direct)+1→directINC@Ri;((Ri))+1→(Ri)INCDPTR;DPTR+1→DPTR上述五条指令的执行不影响标志位。3.4算术运算指令解:两条指令运行后A=00H,但是标志位不同; 前者不影响标志位,因此CY=0; 后者影响标志位,因此CY=1。例:设A=0FFH,CY=0。比较: INCA ADDA,#01H

两条指令运行后的结果。3.4算术运算指令2、减1指令(4条)DECA ;A-1→ADECRn ;Rn-1→RnDECdirect ;(direct)-1→directDEC@Ri ;((Ri))-1→(Ri)上述四条指令的操作不影响标志位。3.4算术运算指令解:

两条指令运行后A=0FFH,但是标志位不同; 前者不影响标志位,因此CY=0; 后者影响标志位,因此CY=1。例:设:A=00H,CY=0。比较:

DECA SUBBA,#01H

两条指令执行后的结果。3.4算术运算指令3、十进制调整指令DAA ;若AC=1或A3-0>9,则A+06H→A

;若CY=1或A7-4>9,则A+60H→A在执行DAA指令之后,若CY=1,则表示相加后的和已等于或大于十进制数100。3.4算术运算指令3.4.3传送指令和算术运算指令的综合应用程序如下:CLRC;进位标志位清零MOVA,#56H;取低字节ADDA,#11H;相加调整DAAMOVR0,A;保存低字节和到R0MOVA,#34H;取次高字节ADDCA,#90H;相加调整DAAMOVR1,A;保存次高字节和到R1MOVA,#12H;取高字节ADDCA,#78H;相加调整DAAMOVR2,A;保存高字节和到R2多字节加法程序流程图例:编程实现多字节的加法:123456+789011=9124673.5逻辑运算及循环类指令3.5逻辑运算和循环类指令1、基本逻辑运算指令(与、或、异或)2、累加器的操作指令(取反、清零、循环)逻辑运算和循环移动指令共有24条,分成两组介绍:3.5逻辑运算和循环类指令3.5.1基本逻辑运算指令1、与运算(6条)1)以A为目的操作数(4条)ANLA,Rn ;A∧Rn→AANLA,direct ;A∧(direct)→AANLA,@Ri ;A∧((Ri))→AANLA,#data ;A∧#data→A2)以direct为目的操作数(2条)ANLdirect,A;(direct)∧A→directANLdirect,#data;(direct)∧#data→direct3.5逻辑运算和循环类指令例:清除累加器A的高四位,20H的低四位,其余部分不变。ANLA,#0FHANL20H,#0F0H例:保留累加器A的D5、D4、D3这三位,其余5位清零。ANLA,#00111000B3.5逻辑运算和循环类指令2、或运算(6条)1)以A为目的操作数(4条)ORLA,Rn ;A∨Rn→AORLA,direct ;A∨(direct)→AORLA,@Ri ;A∨((Ri))→AORLA,#data ;A∨#data→A2)以direct为目的操作数(2条)ORLdirect,A ;(direct)∨A→directORLdirect,#data ;(direct)∨#data→direct3.5逻辑运算和循环类指令例:若A=12H,R0=71H,(71H)=55H,写出下列指令的执行结果。MOVXA,@DPTRORLA,#0F0H(1)ORLA,R0;A=73H(2)ORLA,@R0

;A=57H例:若DPTR=7FFFH,分析以下指令的功能。3.5逻辑运算和循环类指令3、异或运算(6条)1)以A为目的操作数(4条)XRLA,Rn ;A⊕Rn→AXRLA,direct ;A⊕(direct)→AXRLA,@Ri ;A⊕((Ri))→AXRLA,#data ;A⊕#data→A2)以direct为目的操作数(2条)XRLdirect,A ;(direct)⊕A→directXRLdirect,#data ;(direct)⊕#data→direct3.5逻辑运算和循环类指令若A=11111111B,则指令执行后A=11001110;若A=00000000B,则指令执行后A=00110001。异或指令也常用于修改某些存储单元的内容。方法是:用1使被修改数的相应位取反;

用0使被修改数的相应位保持不变。例:将A中的第0、4、5位取反,其它位不变。执行指令XRLA,#00110001H;3.5逻辑运算和循环类指令3.5.2累加器的操作指令(6条)1、清零指令CLRA;0→A2、取反指令CPLA;A→A3、左循环移位指令RLA;

4、带C左循环移位指令RLCA;5、右循环移位指令RRA;6、带C右循环移位指令RRCA;←a7←a0←←CY←a7←a0←→a7→a0→→CY→a7→a0→3.5逻辑运算和循环类指令解:在执行指令前,可知奇偶标志位P为1。(1)原来A=01011011,

按位取反后A=10100100B,CY=1,P=1。(2)执行后A=00H,CY=1,P=0。(3)执行后A=10110110B=0B6H,CY=1,P=1(4)执行后A=10101101B=0ADH,CY=1,P=1。(5)执行后A=10110111B=0B7H,CY=0,P=0。(6)执行后A=10101101B=0ADH,CY=1,P=1。例:设A=5BH,CY=1。分析执行下列指令后,

累加器A内容和标志位的变化。(1)CPLA;(2)CLRA;(3)RLA;(4)RRA;(5)RLCA;(6)RRCA3.5逻辑运算和循环类指令3.5.3空操作指令NOP;PC+1→PC空操作指令可用于短时间的延时和抗干扰设计。3.6程序转移类指令3.6程序转移类指令程序转移指令可以改变程序计数器PC的内容,从而改变程序运行的次序;程序转移类指令共12条,分为无条件转移指令和条件转移指令两个小类;所有转移指令的目标地址都不超过64KB地址范围,执行时间都是2个机器周期。3.6程序转移类指令3.6.1无条件转移类指令01020304长转移指令短转移指令相对转移指令相对长转移指令3.6程序转移类指令1、长转移指令(LongJump)LJMPaddr16;先PC+3→PC,后addr16→PC指令中的addr16常采用符号地址来表示。例如main、start等。例:当前PC=0500H,执行“LJMP2000H”指令,执行过程如图所示。3.6程序转移类指令2、短/绝对转移指令(AbsoluteJump)AJMPaddr11

;先PC+2→PC,后addr11→PC10~0,PC15~11不变AJMP指令的目标转移地址不和AJMP指令地址在同一个2KB区域,而是和AJMP指令取出后的PC地址(即PC+2)在同一个2KB区域。指令中的addr11也常采用符号地址来表示。3.6程序转移类指令例:当前PC=2500H,执行“AJMP0136H”指令,

画图说明执行过程。解:取出该指令后,PC的当前值为2502H;用00100110110B替换PC的低11位;新的PC值为2136H。3.6程序转移类指令3、相对转移指令(ShortJump)SJMPrel;先PC+2→PC,后PC+rel→PC指令中的

rel为补码数,其范围为-128~+127B通常在rel位置上直接给出转移目的地址的标号,由汇编程序在汇编过程中自动计算和填入偏移量3.6程序转移类指令例:分析指令“SJMP$”的执行结果。符号“$”是指“本指令所在的首地址”,也就是指令执行前的PC值。指令“SJMP$”执行后,程序仍将转移到此指令首地址处继续执行。这条指令也称为踏步指令或动态停机指令。3.6程序转移类指令4、相对长转移指令JMP@A+DPTR;A+DPTR→PCDPTR和A的内容都可以作为基址,也可以作为偏移量应用这条指令,可以实现程序在64KB地址范围内无条件转移这条指令又称为散转指令3.6程序转移类指令3.6.2条件转移指令累加器内容判零转移(2条)1循环转移指令(2条)2两操作数比较不相等转移(4条)33.6程序转移类指令1、累加器内容判零转移JZrel;先PC+2→PC,

若A=0,则转移,PC+rel→PC;

若A≠0,则顺序执行JNZrel;先PC+2→PC,

若A≠0,则转移PC+rel→PC;

若A=0,则顺序执行3.6程序转移类指令2、循环转移指令DJNZRn,rel;先PC+2→PC,Rn-1→Rn;

若Rn≠0,则转移,PC+rel→PC;

若Rn=0,则顺序执行DJNZdirect,rel;先PC+3→PC,(direct)-1→direct;

若(direct)≠0,则转移,PC+rel→PC;若(direct)=0,则顺序执行3.6程序转移类指令3、两操作数比较不相等转移CJNEA,direct,rel ;PC+3→PC;

若A≠(direct),转移PC+rel→PC

CJNEA,#data,rel;PC+3→PC; 若A≠#data,转移PC+rel→PC

CJNERn,#data,rel;PC+3→PC; 若Rn≠#data,转移PC+rel→PCCJNE@Ri,#data,rel;PC+3→PC若((Ri))≠#data,转移PC+rel→PC

●若第一操作数≥第二操作数,则标志C=0;否则C=13.6程序转移类指令 MOVR0,#0AH ;外循环次数为10,机器周期数为1L0:

MOVR1,#18H;内循环次数为24,机器周期数为1L1:

NOP ;机器周期数为1 NOP DJNZR1,L1 ;内循环,指令执行机器周期数为2 DJNZR0,L0 ;外循环,指令执行机器周期数为2 RET ;返回,机器周期数为2程序段耗用的时间为:1+[1+(1+1+2)×24+2]×10+2=993个机器周期若使用12MHz晶振,延时约为1ms例:设计一延时程序,延时时间为1ms。3.7子程序调用与返回指令3.7子程序调用与返回指令3.7.1子程序的概念1.主程序与子程序的关系3.7子程序调用与返回指令2.断点主程序中调子指令的下一条指令的首地址称为断点;断点是子程序返回主程序的返回地址;从子程序返回主程序的指令称为返回指令;调子指令应具有保护断点的功能;返回指令应具有恢复断点的功能3.7子程序调用与返回指令3.现场现场指的是主程序和子程序中常用的寄存器、累加器的内容;保护现场使用入栈指令PUSH;恢复现场使用出栈指令POP;入栈和出栈内容按“后进先出”的原则组织和编排。3.7子程序调用与返回指令4.子程序的嵌套汇编语言程序中子程序的嵌套只要堆栈空间允许,一般不受嵌套层次限制。3.7子程序调用与返回指令3.7.2调子指令和返回指令1、长调子指令LCALLaddr16;PC+3→PC,PC加3,指向下条指令的地址(即断点地址);SP+1→SP;PC7~0→(SP)断点地址低8位压入堆栈; SP+1→SP;PC15~8→(SP)断点地址高8位压入堆栈;addr15~0→PC16位子程序入口地址装入PC中长调子指令是3字节指令,可在64KB空间调用子程序。3.7子程序调用与返回指令2、短调子指令ACALLaddr11;PC+2→PC;SP+1→SP;PC7~0→(SP);SP+1→SP;PC15~8→(SP);addr10~0→PC10~0短调子指令是2字节指令,可实现在2KB空间调用子程序。3.7子程序调用与返回指令3、返回指令子程序返回指令:RET ;(SP)→PC15~8 ;SP-1→SP ;(SP)→PC7~0 ;SP-1→SP中断返回指令:RETI ;(SP)

→PC15~8 ;SP-1→SP ;(SP)

→PC7~0 ;SP-1→SP3.7子程序调用与返回指令解:

首先堆栈中高地址的内容弹出到PC15~8;然后低地址的内容弹出到PC7~0;此过程中堆栈指针SP逐次减1,

指令执行完毕后:

SP=23H,PC=3412H例:已知SP=25H,PC=2345H,24H=12H,

25H=34H,26H=56H。

问执行“RET”指令后,SP=?PC=?3.8位操作类指令3.8位操作指令51单片机有一个位处理器,又称布尔处理器;位操作指令集包括:变量传送、逻辑运算和控制程序转移等指令位存储空间为内部RAM可位寻址的128个存储位和部分SFR3.8位操作指令3.8.1简单的位操作指令1、位传送指令(2条)MOVC,bit ;(bit)→C,某直接寻址位的内容送至位累加器C。MOVbit,C ;C→bit,位累加器C的内容送至某直接寻址位。2、位置1指令(2条)SETBC ;1→C,位累加器C置1。SETBbit ;1→bit,某直接寻址位置1。3、位清零指令(2条)CLRC ;0→C,位累加器C清零。CLRbit ;0→bit,某直接寻址位清零。3.8位操作指令

4、位取反指令(2条)CPLC ;C→CCPLbit ;(bit)→bit

5、位逻辑“与”指令(2条)

ANLC,bit ;C∧(bit)→C

ANLC,/bit ;C∧(/bit)→C

6、位逻辑“或”指令(2条)ORLC,bit ;C∨(bit)→CORLC,/bit ;C∨(/bit)→C3.8位操作指令SETBP1.7 ;使P1.7位输出“1”电平NOPNOP ;延时2个机器周期CLRP1.7 ;使P1.7位输出“0”电平NOPNOP ;延时2个机器周期SETBP1.7 ;使P1.7位输出“1”电平SJMP$ ;结束例:试编程实现在51单片机的P1.7引脚上输出

一个方波,其周期为6Tcy。3.8位操作指令3.8.2位条件转移类指令判C转移指令2条判位变量转移指令2条判位变量并清零转移指令1条3.8位操作指令1、判C转移指令JCrel

;先PC+2→PC ;若CY=1,转移PC+rel→PC ;若CY=0,则顺序执行JNCrel

;先PC+2→PC ;若CY=0,转移PC+rel→PC ;若CY=1,则顺序执行3.8位操作指令JBbit,rel

;先PC+3→PC

;若(bit)=1,转移PC+rel→PC

;若(bit)=0,则顺序执行JNBbit,rel

;先PC+3→PC

;若(bit)=0,转移PC+rel→PC

;若(bit)=1,则顺序执行2、判位变量转移指令3.8位操作指令JBCbit,rel

;先PC+3→PC ;若(bit)=1,转移PC+rel→PC,0→bit ;若(bit)=0,则顺序执行3、判位变量并清零转移指令该指令在检测到(bit)=1时,先清零位地址bit,然后跳转。3.8位操作指令MOVA,M1 ;(M1)→A

CJNEA,M2,NE ;仅为取得C值NE:JNCLTM ;若A≥(M2)则

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论