版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2023/10/291单片机基础教案2023/10/2921、数据单位二进制位:在计算机中,二进制中的每个0或1。它是表示信息的最小单位。位(Bit):二进制代码只有“0”和“1”,在CPU中占1位。字节(Byte):通常把8位二进制数定义为一个字节(Byte),它是数据处理的基本单位。字(Word):1个字为2个字节。字长:计算机一次可处理的二进制数的位数。第一章计算机基础知识1.1二进制数在计算机中的使用▼
十进制(D)Decimalsystem(scale)▼
二进制(B)Binarysystem▼
十六进制(H)Hexadecimalsystem2023/10/2931.1.1采用二进制编码的好处(1)物理上容易实现(状态分明),可靠性强;(2)运算简单,通用性强;(3)二进制的0、1数码与逻辑量“真”和“假”的0、1吻合。2023/10/294
方法:除2取余
余数
操作:
2251最低位
2120260231
211最高位
0
结果:(25)D=(11001)B1.1.2十进制向二进制的转换(除法)
:2023/10/295计算机中使用的编码BCD码十进制编码又称为BCD码。常用的压缩BCD码又称为8421码,它是用四位二进制编码来表示一位十进制符号。例如:十进制数124的压缩BCD码为0001
0010
0100。十进制数4.56的压缩BCD码为0100.0101
0110。ASCII码现在的计算机中字符数据的编码通常采用的是美国信息交换标准代码ASCII码。基本ASCII码标准定义了128个字符,用七位二进制来编码,包括英文大小写字母、数字符号0~9,还有一些专用符号,如“:”、“!”、“%”及如换行、回车等。由于在计算机中常用一个字节(8位)来表示数据,因此,为凑成一个字节,应在ASCII码的最高位补一个0。通常,为了方便,常用十进制数或十六进制数来表示ASCII码。例如:字符A的ASCII码用十进制表示为65,用十六进制表示为41H。2023/10/296第二章单片机的硬件结构2.1单片机的基本概念2.1.1单片机的定义:
在一块硅片上集成了中央处理器(CPU),存储器(RAM,ROM或EPROM)和各种输入、输出接口(定时器,计数器,并行I/O口,串行口,A/D转换器以及脉冲调制器PWM等),这样一块芯片具有一台计算机的属性,因而被称为单片微型计算机。单片微机是早期SingleChipMicrocomputer的直译,它忠实地反映了早期单片微机的形态和本质。单片机属于微型计算机的一种,是把微型计算机中的微处理器、存储器、I/O接口、定时器/计数器、串行接口、中断系统等电路集成在一块集成电路芯片上形成的微型计算机。因而被称为单片微型计算机,简称为单片机。2023/10/297单片机技术的应用遍布国民经济与人民生活的各个领域2023/10/2982.2
MCS-51单片机具有如下一些特点:集成度高:MCS-51单片机的典型代表产品为8031,8031芯片内部包含了128个字节的RAM,4个8位并行I/O口,1个全双工的串行口,2个16位的定时器/计数器,以及一个处理能力很强的中央处理器。系统结构简单:MCS-51芯片内部采用模块式结构,增加或更换一个模块,就能得到指令系统和引脚兼容的新产品。系统扩展方便:MCS-51具有外扩至64K字节程序存储器和64k字节的外部RAM和I/O口的能力。可靠性高:MCS-51单片机的总线大多在芯片内部不易受干扰,容易采取屏蔽等措施,适应范围宽,在各种恶劣的环境下都能可靠的工作。处理功能强、速度高:MCS-51单片机指令系统中有加、减、乘除及各种逻辑运算和转移指令,还具有位操作功能。CPU时钟频率为12MHz,指令系统中近50%的指令为单字节指令,指令执行速度快。容易产品化:MCS-51由于单片机应用系统具有体积小、可靠性高、功能强、价格低等特点,因此容易形成产品,可以把它装入各种仪器、仪表及控制设备中。2023/10/2992.380C51逻辑结构图PSENALERESETXLAT1P0.0~P0.7P2.0~P2.7RAM地址寄存器RAMP0锁存器P2锁存器EPROM或ROM程序地址寄存器缓冲器B寄存器ACC暂存器2暂存器1ALUPSW堆栈指针SPPC增量器PC数据指针DPTRP0驱动器P2驱动器特殊功能寄存器指令寄存器定时及控制P1锁存器P3锁存器P1驱动器P3驱动器振荡器VssP1.0~P1.7P3.0~P3.7EAXLAT2Vcc2023/10/29102023/10/29112.380C51单片机的硬件组成
80C51单片机的组成部件:微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、I/O口(P0口、P1口、P2口、P3口)、串行口、定时器/计数器、中断系统及特殊功能寄存(SFR)2023/10/29122.4MCS-51的引脚
制造工艺为HMOS的MCS-51的单片机都采用40只引脚的双列直插封装(DIP)方式,目前大多数为此类封装方式。制造工艺为CHMOS的80C51/80C31除采用DIP封装外,还采用方形封装方式,为44只引脚。2023/10/291340只引脚按其功能来分,可分为三部分:1.电源及时钟引脚:
Vcc,Vss;XTAL1,XTAL22.控制引脚:PSEN、ALE、EA、RESET(即RST)。3.I/O口引脚:
P0、P1、P2、P3,为4个8位I/O口的外部引脚。2.4.1芯片引脚介绍2023/10/29142023/10/2915
EA接高电平,PC的值在低4K字节(0000H—0FFFH)内,执行片内ROM,PC>0FFFH,CPU自动访问片外。EA接低电平,只执行片外程序存储器中的程序。
程序存储器可分为片内和片外。由于逻辑上还是属于同一空间,所以访问用的是相同的指令。访问片内还是片外取决于EA引脚上所接电平。2023/10/29162023/10/2917
2.4.2程序计数器PCPC中存放的内容:下一条将要执行的指令在程序存储器中的地址。PC的位数决定了单片机对程序存储器可以直接寻址的范围。程序计数器的基本工作方式:(1)顺序执行时,PC自动加1。(2)执行转移指令时,PC被置入新值,从而使程序流向改变。(3)执行子程序调用或响应中断时,单片机自动完成下列操作:①PC的现行值(断点值),自动压入堆栈。②将子程序入口地址或中断向量的地址送入PC,程序改变流向,转向执行子程序或ISR(中断服务程序)
。执行完毕后,遇到RET或RETI时,将堆栈中保存的断点值弹到PC中,程序又返回到断点处继续执行未完成的部分。2023/10/2918
2.4.3堆栈指针SPSP是一个8位的SFR,堆栈的实质是一个特殊的RAM区,主要功能是暂放数据和地址。堆栈的具体功能为:(1)
保护断点:子程序调用以及中断时,最终都要返回主程序。为了保证程序能正确返回,应该在堆栈中预先将主程序的断点保护起来。(2)
现场保护:单片机执行子程序或ISR(中断服务程序)之后,很可能要用到单片机中的一些寄存器,为了不破坏寄存器中的原有内容,可以把有关寄存器的内容保存起来,送入堆栈。2023/10/2919
堆栈的特点:先进后出。堆栈的操作:进栈(PUSH),出栈(POP)。第一个进栈的数据所在的单元称为栈底,然后逐次进栈,最后进栈的数据所在的存储单元称为栈顶。入栈时:SP指针的内容先自动加1,然后再把数据存入到SP指针指向的单元;——先加后压出栈时:先把SP指针指向的单元的数据取出,然后再把SP指针的内容自动减1。复位时,SP的初值为07H,因此堆栈实际上从08H开始存放数据。——先弹后减2023/10/2920堆栈的操作有两种方式:(1)指令方式,使用堆栈操作指令进行进栈/出栈操作。(2)自动方式,在调用子程序或产生中断时,返回地址(断点)自动进栈。程序返回时,断点地址再自动弹回PC。这种堆栈操作不需要干预,是通过硬件自动实现的。2023/10/2921基本门电路
基本门电路的符号与真值表如下图所示。
2023/10/2922
基本门电路2023/10/2923触发器
1.基本RS触发器
基本RS触发器的符号及用法如图所示。
2.钟控RS触发器
钟控型RS触发器的符号及用法如图1-12(见下页)所示。
边沿触发RS触发器(主从型RS触发器)的符号及用法如图1-
13(见下页)所示。2023/10/2924
图时钟控制RS触发器
图主从型RS触发器2023/10/29253.D触发器
D触发器的符号及用法如图1-14所示。
图1-14时钟控制D触发器
74LS273是常用的D触发器之一,它内部由8个D触发器构成,其引脚及真值表如图(见下页)所示。
74LS273用S低电来复位,用CP脉冲上升沿将8个输入端D7~D0的状态锁存在7个输出端Q7~Q0。
74LS273不能呈高阻态,而74LS374则具有三态输出功能。74LS374引脚及真值表如图(见下页)所示。2023/10/2926
图1-1574LS273引脚与真值表
图1-1674LS374引脚与真值表2023/10/2927JK触发器
JK触发器的符号及用法如图1-17所示。
图1-17主从型JK触发器
译码器
二进制译码器常用的有2-4译码器和3-8译码器。以2-4译码器为例,其符号及真值表如图1-18(见下页)所示。
译码器中最常用的产品是3-8译码器74LS138,它有三个片选控制端,这三个片选控制端内部是"与"的关系,只有同时2023/10/2928有效时,译码器才能工作。74LS138引脚及真值表如图1-18所示(见课本)。
图1-182-4译码器及其真值表
2023/10/2929三态门,三态电路是一种重要的总线接口电路。这里的三态,是指它的输出既可以是一般二值逻辑电路的正常的“0”状态和“1”状态,又可以保持特有的高阻抗状态,(相当于隔断状态)。处于高阻抗状态时,其输出相当于断开状态,没有任何逻辑控制功能。三态电路的输出逻辑状态的控制,是通过一个输入引脚实现的。当EN为低电平输入时,三态电路呈现正常的“0”或“1”的输出;当EN为高电平输入时,三态电路给出高阻态输出。用EN控制使能端,来控制门电路的通断。可以具备这三种状态的器件就叫做三态门。2023/10/29302.5并行I/O端口P0口:双向8位三态I/O口,此口为地址总线(低8位)及数据总线复用口,只有该口能直接用于对外部存储器的读/写数据操作。P1口:准双向口,专门供用户使用的I/O口。P2口:准双向口,供系统扩展时输出高8位地址,也可作为一般I/O口。P3口:准双向口,双功能口。MCS-51系列单片机有4个8位的并行I/O接口:P0、P1、P2和P3口。它们是特殊功能寄存器中的4个。这4个口,既可以作输入,也可以作输出,既可按8位处理(字节),也可按位方式使用。输出时具有锁存能力,输入时具有缓冲功能。2023/10/2931一、P0口P0口是一个三态双向口,可作为地址/数据分时复用口,也可作为通用的I/O接口。它包括一个输出锁存器、两个三态缓冲器、输出驱动电路和输出控制电路组成,它的一位结构如图:2023/10/2932①当控制信号为高电平“1”:P0口作为地址/数据分时复用总线用。这时可分为两种情况:(1)一种是从P0口输出地址或数据。控制信号为高电平“1”,使转换开关MUX把反相器4的输出端与V1接通,同时把与门打开。如果从P0口输出地址或数据信号,当地址或数据为“1”时,经反相器4使V1截止,而经与门3使V2导通,P0.x引脚上出现相应的高电平“1”;当地址或数据为“0”时,经反相器4使V1导通而V2截止,引脚上出现相应的低电平“0”,这样就将地址/数据的信号输出。(2)另一种是从P0口输入数据。包括读引脚和读缓冲器。如果从P0口输入数据,输入数据从引脚下方的三态输入缓冲器进入内部总线。②当控制信号应为低电平“0”:P0口作为通用I/O口使用。控制信号为“0”,转换开关MUX把输出级与锁存器Q端接通,在CPU向端口输出数据时,因与门3输出为“0”,使V2截止,此时,输出级是漏极开路电路。当写入脉冲加在锁存器时钟端CLK上时,与内部总线相连的D端数据取反后出现在Q端,又经输出T1反相,在P0引脚上出现的数据正好是内部总线的数据。当要从P0口输入数据时,引脚信号仍经输入缓冲器进入内部总线。2023/10/2933二、P1口P1口是准双向口,它只能作通用I/O接口使用。P1口的结构与P0口不同,它的输出只由一个场效应管V1与内部上拉电阻组成,如图:
输入输出原理特性与P0口作为通用I/O接口使用时一样,当其输出时,可以提供电流负载,不必像P0口那样需要外接上拉电阻。P1口具有驱动4个LSTTL负载的能力。2023/10/2934三、P2口P2口也是准双向口,它有两种用途:通用I/O接口和高8位地址线。它的1位的结构如图2.8,与P1口相比,它只在输出驱动电路上比P1口多了一个模拟转换开关MUX和反相器3。2023/10/2935①当控制信号为为高电平“1”:转换开关接右侧,P2口用作高8位地址总线使用时,访问片外存储器的高8位地址A8~A15由P2口输出。如系统扩展了ROM,由于单片机工作时一直不断地取指令,因而P2口将不断地送出高8位地址,P2口将不能作通用I/O口用。如系统仅仅扩展RAM,这时分几种情况:(1)当片外RAM容量不超过256字节,在访问RAM时,只须P0口送低8位地址即可,P2口仍可作为通用I/O口使用;(2)当片外RAM容量大于256字节时,需要P2口提供高8位地址,这时P2口就不能作通用I/O接口使用。②当控制信号为为高电平“0”:转换开关接左侧,P2口用作当作为准双向通用I/O接口。控制信号使转换开关接左侧,其工作原理与P1相同,只是P1口输出端由锁存器Ō接V1,而P2口是由锁存器Q端经反相器3接V1,也具有输入、输出、端口操作三种工作方式,负载能力也与P1相同。2023/10/2936四、P3口P3口1位的结构如图2.9。它的输出驱动由与非门3、V1组成,输入比P0、P1、P2口多了一个缓冲器4。2023/10/2937P3口除了作为准双向通用I/O口使用外,它的每一根线还具有第二种功能。口线替代的第二功能P3.0RXD(串行口输入)P3.1TXD(串行口输出)P3.2INT0(外部中断0输入)P3.3INT1(外部中断1输入)P3.4T0(定时器/记数器0的外部输入)P3.5T1(定时器/记数器1的外部输入)P3.6WR(片外数据存储器“写选通控制”输出P3.7RD(片外数据存储器“读选通控制”输出2023/10/2938②当P3口作为第二功能时:锁存器的Q输出端必须为高电平,否则V1管导通,引脚将被箝位在低电平,无法实现第二功能。当锁存器Q端为高电平,P3口的状态取决于第二功能输出线的状态。
单片机复位时,锁存器的输出端为高电平。P3口第二功能中输入信号RXD、INT0、INT1、T0、T1经缓冲器4输入,可直接进入芯片内部。①当P3口作为通用I/O接口时:第二功能输出线为高电平,与非门3的输出取决于锁存器的状态。这时,P3是一个准双向口,它的工作原理、负载能力与P1、P2口相同。2023/10/2939端口小结:(1)系统总线: 地址总线(16位):P0(地址低8位)、P2口(地址高8位)数据总线(8位):P0口(地址/数据分时复用,借助ALE);控制总线(6根):P3口的第二功能和9、29、30、31脚;(2)供用户使用的端口:P1口、部分未作第二功能的P3口;(3)P0口作地址/数据时,是真正的双向口,三态,负载能力 为8个LSTTL电路;P1~P3是准双向口,负载能力为4个
LSTTL电路。(4)P0~P3在用作输入之前必须先写“1”,即:(P0)=FFH~(P3)=FFH。2023/10/29402.6MCS-51系列单片机的时序2.6.1机器周期和指令周期
机器周期:机器周期是单片机的基本操作周期,每个机器周期包含S1、S2、
、S6个状态,每个状态包含2拍P1和P2,每一拍为一个时钟周期(振荡周期)。因此,一个机器周期包含12个时钟周期。依次可表示为S1P1、S1P2、S2P1、S2P2、…、S6P1、S6P2。指令周期:计算机工作时不断的取指令和执行指令。计算机取一条指令至执行完该指令需要的时间称为指令周期,不同的指令,指令周期不同。单片机的指令周期以机器周期为单位。MCS-51系列单片机中,大多数指令的指令周期由一个机器周期或两个机器周期组成,只有乘法、除法指令须要4机器周期指令。S1P1P2S2P1P2S3P1P2S4P1P2S5P1P2S6P1P2时钟信号2023/10/2941振荡脉冲并不直接使用,由XTAL2或XTAL1端送往内部时钟电路(fosc):经过2分频,向CPU提供2相时钟信号P1和P2(f拍节=1/2fosc);再经3分频,产生ALE时序(fALE=1/6fosc);经过12分频,成为机器周期信号(MC=12/fosc),如下图所示。需要指出的是,CPU的运算操作在P1期间,数据传送在P2期间。2023/10/2942时钟周期:振荡器输出的时钟脉冲频率的倒数。为单片机中最小、最基本的时间单位。状态周期:振荡信号经2分频后获得的信号周期,称S,显然,S为时钟周期的2倍。机器周期:12个时钟周期为一个机器周期,对应计算机执行一个基本操作所需的时间。指令周期:执行一条指令所需的时间,至少包含一个机器周期。当时钟频率为12MHz和6MHz时,时钟周期分别为1/12us和1/6us,机器周期分别为1us和2us。2023/10/29432.7MCS-51系列单片机的工作方式2.7.1复位方式
在时钟电路工作以后,当外部电路使得RST端出现2个机器周期(24个时钟周期)以上的高电平时,系统内部复位。
复位有两种方式:上电复位和按钮复位。VccRSTVssMCS-51VccRSTVssMCS-511k1k200
(a)上电复位电路(b)按钮复位电路例:若使用频率为6MHz的晶振,则复位信号持续时间应超过
____才能完成复位操作。fosc=6MHzMC=12/fosc=12/6MHz=2µst=4µs2023/10/2944特殊功能寄存器初始内容特殊功能寄存器初始内容A00HTCON00HPC0000HTL000HB00HTH000HPSW00HTL100HSP07HTH100HDPTR0000HSCON00HP0~P3FFHSBUFXXXXXXXXBIPXX000000BPCON0XXX0000BIE0X000000BTMOD00H复位后状态:2023/10/2945第3章单片机汇编程序设计3.1MCS-51系列单片机汇编指令格式及标识
指令是使计算机完成基本操作的命令。一种计算机能够执行的全部指令的集合,称为这种计算机的指令系统。单片机的指令系统与微型计算机的指令系统不同,MCS-51系列单片机指令系统共有:
111条指令;42种指令助记符。2023/10/2946MCS-51系列单片机指令系统功能强、指令短、执行快。从功能上可分成五大类:1、数据传送指令;
2、算术运算指令;
3、逻辑操作指令;
4、控制转移指令;
5、位操作指令。2023/10/29473.1.1指令格式[标号:]操作码助记符[目的操作数][,源操作数][;注释](1)操作码助记符表明指令的功能,不同的指令有不同的指令助记符,它一般用说明其功能的英文单词的缩写形式表示。(2)操作数用于给指令的操作提供数据、数据的地址或指令的地址,操作数往往用相应的寻址方式指明。MCS-51单片机指令系统的指令按操作数的多少可分为无操作数、单操作数、双操作数和三操作数四种情况。(3)标号是该指令的符号地址,后面须带冒号。它主要为转移指令提供转移的目的地址。(4)注释是对该指令的解释,前面须带分号。它们是编程者根据需要加上去的,用于对指令进行说明,对于指令本身功能而言是可以不要的。2023/10/2948(1)Ri和Rn:表示当前工作寄存器区中的工作寄存器。
i取0或1,表示R0或R1。n取0~7,表示R0~R7。(2)#data:表示包含在指令中的8位立即数。(3)#data16:表示包含在指令中的16位立即数。(4)rel:以补码形式表示的8位相对偏移量,范围为-128~+127,主要用在相对寻址的指令中。用于SJMP或所有的条件转移指令中。(5)addr16和addr11:分别表示16位直接地址和11位直接地址。(6)direct:表示直接寻址的地址。(7)bit:表示可位寻址的直接位地址。(8)(X):表示X单元中的内容。3.1.2指令中用到的标识符
为便于后面的学习,在这里先对指令中用到的一些符号的约定意义作以下说明:2023/10/2949(9)((X)):表示以X单元的内容为地址的存储器单元内容,即(X)作地址,该地址单元的内容用((X))表示。(10)/和→符号:“/”表示对该位操作数取反,但不影响该位的原值。“→”表示操作流程,将箭尾一方的内容送入箭头所指一方的单元中去。(11)Cy:进位标志或进位位,也可作为位处理机中的1位累加器。
(12)
@:间址寄存器或基址寄存器的前缀。如@Ri,@A+DPTR2023/10/29503.2MCS-51指令系统的寻址方式
所谓寻址就是寻找确定参与操作的数的真正地址。一般来说,寻址方式越多则计算机的功能就越强,灵活性亦越大,指令系统也就越复杂。
MCS-51单片机的指令系统共有7种寻址方式。1、立即寻址
2、直接寻址3、寄存器寻址4、寄存器间接寻址5、变址寻址
6、相对寻址
7、位寻址2023/10/29513.2.1常数寻址(立即寻址)
操作数是常数,使用时直接出现在指令中,紧跟在操作码的后面,作为指令的一部分。与操作码一起存放在程序存储器中,可以立即得到并执行,不需要经过别的途径去寻找。常数又称为立即数,故又称为立即寻址。在汇编指令中,立即数前面以“#”符号作前缀。在程序中通常用于给寄存器或存储器单元赋初值,例如:
MOVA,#20H
其功能是把立即数20H送给累加器A,其中源操作数20H就是立即数。指令执行后累加器A中的内容为20H。2023/10/29523.2.2直接寻址
指令直接给出操作数地址。占一个字节。可访问两种地址空间:特殊功能寄存器地址空间是唯一能访问该空间的寻址方式。片内内部RAM(128个字节:00H~7FH)2023/10/29533.2.2直接寻址
直接寻址是指数据在存储器单元中,在指令中直接提供存储器单元的地址。在MCS-51系统中,这种寻址方式针对的是片内数据存储器和特殊功能寄存器。在汇编指令中,指令中直接以地址数的形式提供存储器单元的地址。例如:
MOVA,20H
其功能是把片内数据存储器20H单元的内容送给累加器A。如指令执行前片内数据存储器20H单元的内容为30H,则指令执行后累加器A的内容为30H。指令中20H是地址数,它是片内数据存储单元的地址。在MCS-51中,数据前面不加“#”是存储单元地址而不是常数,常数前面要加符号“#”。
对于特殊功能寄存器,在指令中使用时往往通过特殊功能寄存器的名称使用,而特殊功能寄存器名称实际上是特殊功能寄存器单元的符号地址,因此它们是直接寻址。例如:
MOVA,P0
其功能是把P0口的内容送给累加器A。P0是特殊功能寄存器P0口的符号地址,该指令在翻译成机器码时,P0就转换成直接地址80H。2023/10/29543.2.3寄存器数寻址(寄存器寻址)
操作数在寄存器中,使用时在指令中直接提供寄存器的名称,这种寻址方式称为寄存器寻址。在MCS-51系统中,这种寻址方式针对的寄存器只能是R0~R78个通用寄存器和部分特殊功能寄存器(如累加器A、寄存器B、数据指针DPTR等)中的数据,对于其它的特殊功能寄存器中的内容的寻址方式不属于它。在汇编指令中,寄存器寻址在指令中直接提供寄存器的名称,如R0、R1、A、DPTR等。例如:
MOVA,R0
其功能是把R0寄存器中的数送给累加器A,在指令中,源操作数R0为寄存器寻址,传送的对象为R0中的数据。如指令执行前R0中的内容为20H,则指令执行后累加器A中的内容为20H。2023/10/29553.2.4寄存器间接寻址
寄存器间接寻址是指数据存放在存储单元中,而存储单元地址存放在寄存器中,在指令中通过提供存放存储单元地址的寄存器来使用对应的存储单元。形式为:@寄存器名。例如:MOVA,@R1
该指令的功能是将以工作寄存器R1中的内容为地址的片内RAM单元的数据传送到累加器A中去。指令的源操作数是寄存器间接寻址。80H20H20HA80HR1
在MCS-51单片机中,寄存器间接寻址用到的寄存器只能是通用寄存器R0、R1和数据指针寄存器DPTR和SP
,它能访问的数据是片内数据存储器和片外数据存储器。其中,片内数据存储器只能用R0和R1作指针间接访问;片外数据存储器,低端的256字节单元,既可以用两位十六进制地址以R0或R1作指针间接访问,也可用DPTR作指针间接访问,而高端的字节单元则只能以DPTR作指针间接访问。对于片内RAM和片外RAM的低端256字节都可以用R0和R1作指针访问,它们之间用指令来区别。片内RAM访问用MOV指令,片外RAM访问用MOVX指令。
若R1中的内容为80H,片内RAM地址为80H的单元中的内容为20H,则执行该指令后,累加器A的内容为20H。2023/10/2956例如:MOVCA,@A+DPTR
其功能是将数据指针寄存器DPTR的内容和累加器A中的内容相加作为程序存储器的地址,从对应的单元中取出内容送累加器A中。指令中,源操作数的寻址方式为变址寻址,设指令执行前数据指针寄存器DPTR的值为2000H,累加器A的值为05H,程序存储器2005H单元的内容为30H,则指令执行后,累加器A中的内容为30H。示意图如左图所示。2000H30H30HDPTRA2005H05HA+3.2.5变址寻址
变址寻址是指操作数的地址由基址寄存器的地址加上变址寄存器的地址得到。在MCS-51系统中,它是以数据指针寄存器DPTR或程序计数器PC为基址,累加器A为变址,两者相加得存储单元的地址,所访问的存储器为程序存储器。2023/10/2957程序存储器2000HDPTR64H(10H)A2010H64H10H2000H变址寻址的指令只有三条:MOVCA,@A+DPTR、MOVCA,@A+PC和JMP@A+DPTR
例:(DPTR)=2000H,(A)=10H,
MOVCA,@A+DPTR指令操作示意图如下图所示。2023/10/29583.2.4位寻址
位寻址是指操作数是二进制位的寻址方式。在MCS-51单片机中有一个独立的位处理器,有多条位处理指令,能够进行各种位运算。在MCS-51系统中,位处理的操作对象是各种可位寻址位。对于它们的访问是通过提供相应的位地址来处理。
指令给出位地址。一位数据在存储器位寻址区。
(1)内部RAM低128单元中的位寻址区:位地址为00H~07FH共128位(字节地址为20H~2FH);
(2)内部RAM高128单元中的专用寄存器的可寻址位:
SFR中11个有位地址寄存器中的83位。2023/10/2959
在MCS-51系统中,位地址的表示可以用以下几种方式:1.直接使用位地址(00H~7FH)。 例如:PSW的位6可表示为0D6H(位地址)。2.字节地址带位号。 例如:PSW的位6可表示为0D0H.6;
20H.3表示20H单元的3位。3.特殊功能寄存器名带位号。 例如:PSW的位6可表示为PSW.6;
P0.1表示P0口的1位。4.位符号地址,即位名称的表示方法 例如:PSW的位6可表示为AC;
TR0是定时/计数器T0的启动位。
F0标志位2023/10/2960例:
MOVC,40H ;CY¬(位地址40H)
设指令执行前CY=1,位地址40H存储器单元如图,执行指令后,CY=?29H0110001028H11010110位寻址区02023/10/29613.2.5相对寻址(只用于转移指令)
相对寻址是以当前程序计数器PC值加上指令中给出的偏移量rel得到目的位置的地址。在MCS-51系统中,相对转移指令的操作数属于相对寻址。在使用相对寻址时要注意以下两点:(1)当前PC值是指转移指令执行时的PC值,它等于转移指令的地址加上转移指令的字节数。实际上是转移指令的下一条指令的地址。例如:若转移指令的地址为2010H,转移指令的长度为2字节,则转移指令执行时的PC值为2012H。(2)偏移量rel是8位有符号数,以补码表示,它的取值范围为-128~+127。当为负值时,向前转移,当为正数时向后转移。相对寻址的目的地址为:目的地址=转移指令的地址+转移指令的字节数+rel=当前PC+relPC--(前)+(后)2023/10/2962例如:SJMP08H;PC←PC+2+08H(PC)=2000H指令操作示意图如下图所示。程序存储器(2000H)200AHSJMP200AH08H2000H+208HPC2000H2023/10/29633.3MCS-51系列单片机指令系统3.3.1数据传送指令
数据传送类指令共28条,是将源操作数送到目的操作数。指令执行后,源操作数不变,目的操作数被源操作数取代。数据传送类指令用到的助记符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP
8种。这类指令可分为三组:
普通传送指令;数据交换指令;堆栈操作指令。2023/10/2964一、普通传送指令普通传送指令以助记符MOV为基础。分成片内数据存储器传送指令、片外数据存储器传送指令和程序存储器传送指令。1.片内数据存储器传送指令MOV指令格式:MOV目的操作数,源操作数其中:源操作数可以为A、Rn、@Ri、direct、#data,目的操作数可以为A、Rn、@Ri、direct,组合起来总共16条。2023/10/2965(1)以A为目的操作数
MOVA,Rn ;A←Rn MOVA,direct ;A←(direct)
MOVA,@Ri ;A←(Ri)
MOVA,#data ;A←#data(2)以Rn为目的操作数
MOVRn,A ;Rn←A MOVRn,direct ;Rn←(direct)
MOVRn,#data ;Rn←#data(3)以直接地址direct为目的操作数
MOVdirect,A ;(direct)←A MOVdirect,Rn ;(direct)←Rn MOVdirect,direct ;(direct)←(direct)
MOVdirect,@Ri ;(direct)←(Ri)
MOVdirect,#data ;(direct)←#data按目的操作数的寻址方式划分为五组:2023/10/2966(4)以间接地址@Ri为目的操作数
MOV@Ri,A ;(Ri)←A MOV@Ri,direct ;(Ri)←(direct)
MOV@Ri,#data ;(Ri)←#data(5)以DPTR为目的操作数
MOVDPTR,#data16;DPTR←#data16注意:
源操作数和目的操作数中的Rn和@Ri不能相互配对。如不允许有“MOVRn,Rn”,“MOV@Ri,Rn”这样的指令,在MOV指令中,不允许在一条指令中同时出现工作寄存器,无论它是寄存器寻址还是寄存器间接寻址。
2023/10/2967MOVA,#30H MOV4FH,A MOVR0,#20H MOV@R0,4FH MOV21H,20H练习题:用两种寻址方式实现,将片内RAM60H单元的数据传送给累加器A。解:MOVA,#60H(×)MOVR0,#60H(√)
MOVA,@R0;A=30H;(4FH)=30H;R0=20H;(20H)=30H;(21H)=30HMOVR0,60HMOVA,@R0
(×)
解:MOVA,60H
(√)
结果A=32H例:顺序执行下列指令序列,求每一步执行结果。地址内容…32H58H…60H32H2023/10/2968
说明:1、一条指令中不能同时出现两个工作寄存器。
非法指令: MOVR1,R2
MOVR2,@R02、间址寄存器只能使用R0、R1。
非法指令:MOVA,@R23、
SFR区只能直接寻址,不能用寄存器间接寻址。
非法指令:MOVR0,#80H
MOVA,@R04、指令表:注意表中指令字节数和机器周期数2023/10/29692.片外数据存储器传送指令MOVX
在MCS-51系统中只能通过累加器A与片外数据存储器进行数据传送,访问时,只能通过@Ri和@DPTR以间接寻址方式进行。MOVX指令共有四条:①DPTR作16位数据指针,寻址64KB片外RAM空间:
MOVXA,@DPTR
;A←(DPTR)
(读)
MOVX@DPTR,A
;(DPTR)←A
(写)②Ri作8位数据指针,寻址256B片外RAM空间:
MOVX A,@Ri
;A←(P2Ri)
(读)
MOVX @Ri,A
;(P2Ri)←A
(写)
其中前两条指令通过DPTR间接寻址,可以对整个64KB片外数据存储器访问。后两条指令通过@Ri间接寻址,只能对片外数据存储器的低端的256字节访问,访问时将低8位地址放于Ri中。2023/10/2970例:实现片外数据存储器数据传送(2000H)→(2100H)。
MOVDPTR,#2000H MOVXA,@DPTR MOVDPTR,#2100H MOVX@DPTR,A ;DPTR=2000H
;A=X
;DPTR=2100H
;(2100H)=X习题:将片外RAM0000H单元的数据传送到片内RAM的60H单元。片外数据存储器不能直接寻址。下列为非法指令:
MOVXA,2000HMOVX2100H,2000H思考题:为什么对DPTR的数据传送使用内部传送指令?2023/10/29713.程序存储器传送指令MOVC
程序存储器传送指令只有两条,一条用DPTR基址变址寻址。一条用PC基址变址寻址。这两条指令通常用于访问表格数据,因此以称为查表指令。①DPTR为基址寄存器:
MOVC A,@A+DPTR;A¬(A+DPTR)(读) 查表范围为64KB程序存储器任意空间,称为远程查表指令。②PC为基址寄存器:
MOVC A,@A+PC ;A¬(A+PC)(读) 常数表只能在查表指令后256B范围内,称为近程查表指令。特点:
MOVCA,@A+DPTR指令可访问整个ROM的64KB空间,表格可放在ROM
的任何位置,与MOVC指令无必然的关系。
MOVCA,@A+PC指令优点:不改变PC的状态,根据A的内容取表格常数。缺点:(1)表格只能存放在查表指令以下的256个单元内。(2)当表格首地址与本指令间有其它指令时,须用调整偏移量,调整量为下一条指令的起始地址到表格首址之间的字节数。2023/10/2972例如:查表指令MOVCA,@A+PC所在的地址为2000H,表格的起始单元地址为2035H,表格的第4个元素(位移量为03H)的内容为45H,则查表指令的处理过程如下:MOVA,#03H;表格元素相对于表首的位移量送累加器AADDA,#34H;当前程序计数器PC相对于表首的差值加到累加器A中MOVCA,@A+PC;查表,查得第4个元素内容45H送累加器A
注意:查表指令的长度为1个字节,当前程序计数器PC的值应为查表指令的地址加1。地址内容2000HMOVC2001H………2035H表格2036H…2037H45HPC→2023/10/2973【例3-1】写出完成下列功能的程序段。(1)将R0的内容送R6中程序为:
MOVA,R0 MOVR6,A(2)将片内RAM30H单元的内容送片外60H单元中程序为: MOVA,30H MOVR0,#60H MOVX@R0,A(3)将片处RAM1000H单元的内容送片内20H单元中程序为: MOVDPTR,#1000H MOVA,@DPTR MOV20H,A(4)将ROM2000H单元的内容送片内RAM的30H单元中程序为: MOVA,#0 MOVDPTR,#2000H MOVCA,@A+DPTR MOV30H,A2023/10/2974二、数据交换指令普通传送指令实现将源操作数的数据传送到目的操作数,指令执行后源操作数不变,数据传送是单向的。数据交换指令数据作双向传送,传送后,前一个操作数原来的内容传送到后一个操作数中,后一个操作数原来的内容传送到前一个操作数中。数据交换指令要求第一个操作数须为累加器A,共有5条。
XCHA,Rn ;A←→Rn XCHA,direct ;A←→(direct) XCHA,@Ri ;A←→(Ri) XCHDA,@Ri ;A0~3←→(Ri)0~3 SWAPA ;A0~3←→A4~72023/10/2975【例3-2】若R0的内容为30H,片内RAM30H单元的内容为23H,累加器A的内容为45H,则执行
XCHA,@R0
指令后片内RAM30H单元的内容为45H,累加器A中的内容为23H。若执行SWAPA指令,则累加器A的内容为54H。习题:将片内RAM60H单元与61H单元的数据交换。例:设A=29H,执行指令XCHA,2AH后,
A=?,(2AH)=?38H29HXCH60H,61H;
←对吗?不对!!29H2023/10/2976三、堆栈操作指令堆栈是在片内RAM中按“先进后出,后进先出”原则设置的专用存储区。数据的进栈和出栈由指针SP统一管理。在MCS-51系统中,堆栈操作指令有两条:
PUSHdirect ;SP←(SP+1),(SP)←(direct) POPdirect ;(direct)←(SP),(SP)←(SP-1)
其中PUSH指令入栈,POP指令出栈。操作时以字节为单位。入栈时SP指针先加1,再入栈。出栈时内容先出栈,SP指针再减1。用堆栈保存数据时,先入栈的内容后出栈;后入栈的内容先出栈。
【例3-3】若入栈保存时入栈的顺序为:
PUSHA PUSHB
则出栈的顺序为:
POPB POPA2023/10/2977
30H
61H
70H
62H
10H
60H
SP
PUSHA
(SP)+1=61H
SP(A)
61H例如:当(SP)=60H,(A)=30H,(B)=70H时执行下列指令PUSHB
(SP)+1=62H
SP(B)
62H
结果:(61H)=30H(62H)=70H(SP)=62H
栈底栈顶2023/10/297812H
60H
70H
62HSP例如:当(SP)=62H,(62H)=70H,(61H)=30H时,执行下列指令POPDPH
((SP))
DPH(SP)-1
SPPOPDPL
((SP))
DPL(SP)-1
SP
结果:(DPTR)=7030H(SP)=60H
30H
61HSPDPHDPLSP2023/10/2979习题:找出指令错误并改正:1.MOVA,#1000H;A←1000H(A装1个字节数)2.MOVXA,1000H;A←(1000H)片外RAM(DPTR、Ri)3.MOVCA,1000H;A←(1000H)片外ROM(DPTR、PC)4.MOVX60H,A ;片外RAM(60H)←A(应为MOV)5.MOVR0,60H;片内RAM:(61H)←(60H)
MOV61H,@R0(片内RAM可直接寻址)
6.XCHR1,R2 ;R1«R2(必须有A参加)7.MOVXDPTR,#2000H;DPTR←2000H(应为MOV)8.MOVX60H,@DPTR ;片内RAM←片外RAM(必须有A参加)2023/10/29803.3.2算术运算指令一.加法指令1.一般的加法指令ADDADDA,Rn ;A←A+RnADDA,direct ;A←A+(direct)ADDA,@Ri ;A←A+(Ri)ADDA,#data ;A←A+#data2.带进位加指令ADDCADDCA,Rn ;A←A+Rn+CADDCA,direct ;A←A+(direct)+CADDCA,@Ri ;A←A+(Ri)+CADDCA,#data ;A←A+#data+C3.加1指令INCA ;A←A+1INCRn ;Rn←Rn+1INCdirect ;(direct)←(direct)+1INC@Ri ;(Ri)←(Ri)+1INCDPTR ;DPTR←DPTR+1
其中,ADD和ADDC指令在执行时要影响CY、AC、OV和P标志位。而INC指令除了INCA要影响P标志位外,对其它标志位都没有影响。在MCS-51单片机中,常用ADD和ADDC配合使用实现多字节加法运算。2023/10/2981【例3-4】试把存放在R1R2和R3R4中的两个16位数相加,结果存于R5R6中。处理时,R2和R4用一般的加法指令ADD,结果放于R6中,R1和R3用带进位的加法指令ADDC,结果放于R5中,程序如下:
MOV A,R2 ADD A,R4 MOV R6,A MOV A,R1 ADDCA,R3 MOV R5,AR1R2R3R4R5R6C+ADDADDCC2023/10/2982二.减法指令1.带借位减法指令SUBBSUBBA,Rn ;A←A-Rn-CSUBBA,direct ;A←A-(direct)-CSUBBA,@Ri ;A←A-(Ri)-CSUBBA,#data ;A←A-#data-
C2.减1指令DECDECA ;A←A-1DECRn ;Rn←Rn-1DECdirect ;direct←(direct)-1DEC@Ri ;(Ri)←(Ri)-12023/10/29833.乘法指令MUL
在MCS-51单片机中,乘法指令只有一条:
MULAB
该指令执行时将对存放于累加器A中的无符号被乘数和放于B寄存器中的无符号乘数相乘,积的高字节存于B寄存器中,低字节存于累加器A中。指令执行后将影响CY和OV标志,CY复位,对于OV:当积大于255时(即B中不为0),OV为1;否则,OV为0。2023/10/29844.除法指令DIV
在MCS-51单片机中,除法指令也只有一条:
DIVAB
该指令执行时将用存放在累加器A中的无符号被除数与存放在B寄存器中的无符号除数相除,除得的结果,商的存于累加器A中,余数存于B寄存器中。指令执行后将影响CY和OV标志,一般情况CY和OV都清0,只有当B寄存器中的除数为0时,CY和OV才被置1。2023/10/29855.十进制调整指令在MCS-51单片机中,十进制调整指令只有一条:
DAA
它只能用在ADD或ADDC指令后面,用来对两个二位的压缩的BCD码数通过用ADD或ADDC指令相加后存于累加器A中的结果进行调整,使得它得到正确的十进制结果。通过该指令可实现两位十进制BCD码数的加法运算。它的调整过程为:(1)若累加器A的低四位为十六进制的A~F或辅助进位标志AC为1,则累加器A中的内容作加06H调整。(2)若累加器A的高四位为十六进制的A~F或进位标志CY为1,则累加器A中的内容作加60H调整。2023/10/29862023/10/29873.3.3逻辑操作指令一.逻辑与指令ANLANLA,Rn ;A←A
RnANLA,direct ;A←A
(direct)ANLA,@Ri ;A←A((Ri))ANLA,#data ;A←AdataANLdirect,A ;(direct)←(direct)AANLdirect,#data;(direct)←(direct)data二.逻辑或指令ORLORLA,Rn ;A←ARnORLA,direct ;A←A(direct)ORLA,@Ri ;A←A((Ri))ORLA,#data ;A←AdataORLdirect,A ;(direct)←(direct)AORLdirect,#data;(direct)←(direct)data2023/10/2988三.逻辑异或指令XRLXRLA,Rn ;A←A
RnXRLA,direct ;A←A
(direct)XRLA,@Ri ;A←A((Ri))XRLA,#data ;A←AdataXRLdirect,A ;(direct)←(direct)
AXRLdirect,#data;(direct)←(direct)
data
在使用中,逻辑与用于实现对指定位清0,其余位不变;逻辑或用于实现对指定位置1,其余位不变;逻辑异或用于实现指定位取反,其余位不变。【例3-7】写出完成下列功能的指令段。1.对累加器A中的1、3、5位清0,其余位不变
ANLA,#11010101B2.对累加器A中的2、4、6位置1,其余位不变
ORLA,#01010100B3.对累加器A中的0、1位取反,其余位不变
XRLA,#00000011B2023/10/2989四.清零和求反指令1.清零指令:CLRA ;A←02.求反指令:CPLA ;A←Ā
在MCS-51系统中,只能对累加器A中的内容进行清零和求反,如要对其它的寄存器或存储单元进行清零和求反,则须放在累加器A进行,运算后再放回原位置。【例3-8】写出对R0寄存器内容求反的程序段。程序为:
MOVA,R0 CPLA MOVR0,A2023/10/2990五.循环移位指令
MCS-51系统有四条对累加器A的循环移位指令,前两条只在累加器A中进行循环移位,后两条还要带进位标志CY进行循环移位。每一次移一位。分别如下:
1)8位循环指令:
RLA
;A循环左移一位
RRA
;A循环右移一位2)9位循环指令:
RLCA;带CY循环左移一位
RRCA;带CY循环右移一位AAACAC2023/10/2991CLR CMOV A,R5RLC AMOV R5,AMOV A,R6RLC AMOV R6,A01CYR6R5CY;CY=0;R6=01010101B,R5=10101010B,CY=0;R6=01010101B,R5=01010100B,CY=1;R6=10101011B,R5=01010100B,CY=0用9位循环指令实现多字节移位:例:设R6=55H,R5=0AAH编程将寄存器R6R5中的双字节数X左移一位。【例3-9】若累加器A中的内容为10001011B,CY=0,则执行RLCA指令后累加器A中的内容为00010110,CY=1。;R5=01010100B,CY=12023/10/29923.3.4控制转移指令共有17条,包括:无条件转移指令;条件转移指令;子程序调用及返回指令。一、无条件转移指令无条件转移指令是指当执行该指令后,程序将无条件地转移到指令指定的地方去。无条件转移指令包括长转移指令、绝对转移指令、相对转移指令和间接转移指令。2023/10/2993一、无条件转移指令指令:LJMP,AJMP,SJMP,JMP——4条LJMPaddr16长跳转指令
——可在64KB范围内跳转AJMPaddr11绝对跳转指令
——可在指令所在的2KB范围内跳转SJMPrel相对跳转指令
——可在当前PC-128与+127范围内跳转JMP@A+DPTR间接长跳转指令
——可在以DPTR为基址+A为偏移量之和所指向的64KB程序范围内跳转2023/10/29941.长转移指令LJMP
指令格式:LJMPaddr16
;PC←addr16
指令后面带目的位置的16位地址,执行时直接将该16位地址送给程序指针PC,程序无条件地转到16位目标地址指明的位置去。指令中提供的是16位目标地址,所以可以转移到64KB程序存储器的任意位置,故得名为“长转移”。该指令不影响标志位,使用方便。缺点是:执行时间长,字节数多。2023/10/29952.绝对转移指令指令格式:AJMPaddr11
;PC10~0←addr11
AJMP指令后带的是目的位置的低11位直接地址,执行时,先将程序指针PC的值加2(该指令长度为2字节),然后把指令中的11位地址addr11送给程序指针PC的低11位,而程序指针的高5位不变,执行后转移到PC指针指向的新位置。由于11位地址addr11的范围是00000000000~111
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学生入学合同协议书样本模板
- 版房屋买卖合同书
- 农资产品互市销售合同
- 房屋买卖合同过户法律程序解析
- 律师见证房产买卖合同的流程与细节
- 检测合作合同范例
- 专业技能培训的效果评估方法考核试卷
- 昆山教师合同范例
- 买卖无证房屋合同范例
- 法院扣押车辆出售合同范例
- 2024年新版全员消防安全知识培训
- ω-3脂肪酸处方药物在老年疾病中的应用专家共识(2024版)解读
- 2024年CDN项目建议书
- 硬件测试岗位招聘笔试题与参考答案(某大型央企)
- 2024年新改版人教版三年级上册道德与法治全册知识点
- 专题09 完形填空 考点2 生活哲理类2024年中考英语真题分类汇编
- 项目验收通知书模板
- 2024年江西省高考物理试卷(真题+答案)
- 新版工贸企业重大事故隐患-题库
- 2024年四川成都铁路局招聘1015人历年(高频重点提升专题训练)共500题附带答案详解
- 工程认知实践体验智慧树知到期末考试答案章节答案2024年中国海洋大学
评论
0/150
提交评论