51单片机发展,指令代码与中断定时器计数器综述_第1页
51单片机发展,指令代码与中断定时器计数器综述_第2页
51单片机发展,指令代码与中断定时器计数器综述_第3页
51单片机发展,指令代码与中断定时器计数器综述_第4页
51单片机发展,指令代码与中断定时器计数器综述_第5页
已阅读5页,还剩112页未读 继续免费阅读

下载本文档

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

文档简介

3.1单片机的定义

把组成微型计算机的各功能部件:中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口电路、定时器/计数器以及串行通信接口等制作在一块集成芯片中,构成一个完整的微型计算机。

微控制器(MicroControllerUnit)嵌入式微控制器第三章医学仪器中常用的单片机3.1.1基于单片机的医学仪器

基于单片机的医学仪器有很多种,例如:液晶显示心电图仪片断式心电监视仪胃电分析仪80C196KC便携式生命参数监护仪单片机自动采血3-53.1.2医学仪器的软件系统3-63.2单片机的发展第一阶段(1971~1974年):

1971年Intel40041972年Intel8008

第二阶段(1974~1978年):初级阶段。以Intel公司的MCS-48为代表。特点:集成有8位CPU、并行I/O接口、8位定时器/计数器,寻址范围不大于4K,无串行口。

产品系列:8048,8748;8035和8039

第三阶段(1978~1983年):单片机普遍带有串行口,有多级中断处理系统、16位定时器/计数器。片内RAM、ROM容量加大,且寻址范围可达64KB,有的片内还带有A/D转换器接口。代表:MCS-51系列单片机

第四阶段(1983年~1990):

16位单片机和8位高性能单片机并行发展阶段。特点:实时处理能力强生产工艺先进,集成度高,内部功能强允许用户采用工业控制的专用语言编程,如

PL/M、C语言、BASIC语言等

第五阶段(1990~现在):

i80860超级单片机特点:运算速度快(1.2亿次/秒)运算功能强可进行32位整数运算和64位浮点运算具有一个三维图形处理器,可构成超级图形工作站。3.3单片机的应用特性(1)集成度高

MCS-51系列单片机代表产品为8051,8051内部包含4KB的ROM、128B的RAM、四个8位并行口、一个全双工串行口、两个16位定时器/计数器以及一个处理功能强大的中央处理器。(2)系统结构简单

MCS-51系列单片机芯片内部采用模块化结构。MCS-51系列单片机具有64KB的外部程序存储器寻址能力和64KB的外部RAM和I/O口寻址能力。(3)可靠性高单片机属于工业品,能在常温下工作,不需要在温度恒定的机房内工作。由于单片机总线大多在芯片内部不易受干扰,而且单片机应用系统体积小,易于屏蔽,所以单片机的可靠性较高。(4)处理功能强,速度快

MCS-51系列单片机指令系统中具有加、减、乘、除指令,各种逻辑运算和转移指令,还具有位操作功能。CPU时钟频率高达12MHz,单字节乘法和除法仅需要4μs,而且具有特殊的多机通信功能。3.4单片机的制造工艺

制造单片机的工艺只有两种:HMOS工艺和CHMOS工艺。早期的MCS-51系列芯片都采用HMOS工艺,即()MOS工艺。8051、8751、8031、8951等产品均属于HMOS工艺制造的产品。

CHMOS工艺是CMOS和HMOS的结合,除保持了HMOS工艺的高密度、高速度之外,还具有CMOS工艺低功耗的特点。3.5

MCS-51单片机系列产品

表1MCS-51系列单片机

8052资源配置

片内ROM形式片内ROM片内RAM定时/计数器无ROMEPROME2PROMMCS-5189514KB128B2×16MCS-52803289528KB256B3×1687523.6

MCS-51单片机的内部结构

(1)8位中央处理器(CPU)运算器电路

运算器电路是单片机的运算部件,用于实现算术和逻辑运算。ALU(算术逻辑单元)、ACC(累加器)、B寄存器、程序状态字和两个暂存寄存器等属于运算器电路。它以ALU为核心,包括加、减、乘、除等算术运算,与、或、非等逻辑运算,左右移位和半字节交换等操作。

控制电路包括:PC、PC加1寄存器、指令寄存器、指令译码器、定时和控制电路等。

(3)内部数据存储器包括128B/256B的RAM和RAM地址锁存器等。实际上8051或80C51内部共有256个RAM单元,但后128单元被特殊功能寄存器SFR占用,供用户使用的只是前128个单元。(2)内部程序存储器

4KB/8KB的存储器(ROM或EPROM)。对于8051、80C51内部共有4KB的掩膜ROM,用于存放程序和原始数据。

图3.2MCS-51系列单片机存储空间配置示意图3-11

程序存储器

MCS-51片内、片外一共可以寻址64K的程序存储器地址空间。

内部数据存储器

MCS-51有128字节的片内存储器RAM,同时具有64K的外存寻址能力。图3.3片内RAM地址空间3-12(5)定时器/计数器

MCS-51有2个或3个16位定时器/计数器,以实现定时或计数功能,并以定时或计数的结果对单片机进行控制。(6)串行口全双工UART的串行口,以实现单片机和其他数据设备之间的串行数据传送。可作为全双工UART异步通信收发器使用,又可作为同步移位器使用。(4)并行的I/O口

MCS-51中共有4个8位的I/O口(P0、P1、P2、

P3)以实现并行的输入输出。(7)时钟电路

MCS-51单片机芯片内部有时钟电路,但石英晶体振荡器和微调电容需外接。时钟电路为单片机产生时钟脉冲序列,典型的晶振频率为6MHz或12MHz。(8)位处理器位处理器又称布尔处理器。位处理器以状态寄存器中的进位标志C为累加位,可进行置位、复位、取反、等于“0”转移、等于“1”转移以及C与可寻址位之间的传送、逻辑与、逻辑或等位操作。(9)总线上述8个部件都通过片内单一总线连接。系统的地址信号、数据信号、控制信号都是通过总线传送的。总线结构减少了单片机的连线和引脚,提高了集成度和可靠性。

问题:单片机包括哪三类?3.7MCS-51单片机的信号引脚

HMOS制造工艺的MCS-51单片机都采用40引脚的DIP方式

CHMOS制造工艺的80C51/80C31芯片除采用DIP方式外,还采用方形封装工艺

(1)主电源引脚Vcc和VssVcc:接+5V电压

Vss:接地(2)外接晶体引脚XTAL:接外部晶体的一个引脚。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。

(3)控制引脚RST/VPD、ALE/PROG、PSEN、EA/VPPRST/VPD(9脚):振荡器运行时,在此引脚上出现两个机器周期的高电平使单片机复位。对于EPROM型的单片机,在EPROM编程期间,此引脚用于输入编程脉冲。

ALE/PROG:当访问外部存储器时,ALE(允许地址锁存)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍然以不变的频率周期性地出现正脉冲信号,此频率为振荡器的1/6。因此,它可以用作对外输出的时钟,或用于定时。问题:PSEN、EA/VPP各有什么功能?PSEN外部程序存储器读选通信号:在读外部ROM时PSEN低电平有效,以实现外部ROM单元的读操作。

1、内部ROM读取时,PSEN不动作;

2、外部ROM读取时,在每个机器周期会动作两次;

3、外部RAM读取时,两个PSEN脉冲被跳过不会输出;

4、外接ROM时,与ROM的OE脚相接。EA/VPP访问和序存储器控制信号

1、接高电平时:

CPU读取内部程序存储器(ROM)

扩展外部ROM:当读取内部程序存储器超过0FFFH(8051)1FFFH(8052)时自动读取外部ROM。

2、接低电平时:CPU读取外部程序存储器(ROM)。在前面的学习中我们已知道,8031单片机内部是没有ROM的,那么在应用8031单片机时,这个脚是一直接低电平的。

3、8751烧写内部EPROM时,利用此脚输入21V的烧写电压。(4)输入/输出(I/O)引脚P0、P1、P2、P3P0口:双向8位三态I/O口。P0用于分时地址/数据总线(低8位地址),P2也用于外部地址总线(高8位地址),与P0一起形成16位地址。

P1口(1脚~8脚):是准双向8位I/O口。P1口可以驱动(吸收或输出电流)4个LS型的TTL负载。对于8052、8032,P1.0引脚的第二功能为T2定时器/计数器的外部输入,P1.1引脚的第二功能为T2的外部控制端。。3.8MCS-51的中断系统

3.8.1中断的定义及优点(1)中断的定义

CPU在处理某事件

A时,发生了另一事件B请求(中断发生)CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务)待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回)

(2)中断的优点

中断技术不仅解决了快速主机与慢速I/O设备的数据传送问题,而且还具有如下优点:

分时操作

CPU可以分时为多个I/O设备服务,提高了计算机的利用率;

实时响应

CPU能及时处理应用系统的随机事件,系统的实时性大大增强;

可靠性高

CPU具有处理设备故障及掉电等突发性事件的能力,从而使系统可靠性提高。3.8.2

MCS-51中断系统的结构

主程序继续执行主程序响应中断中断返回中断服务程序中断结构示意图主程序响应中断中断返回高级中断继续执行主程序响应中断中断返回低级中断中断嵌套示意图中断系统示意图中断系统示意图中断系统示意图中断系统示意图3.8.3

MCS-51的中断源

(1)中断分类1(P3.2)P3.2引脚上出现有效的中断信号时,中断标志IE0置12(P3.3)P3.3引脚上出现有效的中断信号时,中断标志IE1置13TF0(TCON.5)定时/计数器T0发生溢出,置位TF0,向CPU申请中断4TF1(TCON.7)定时/计数器T1发生溢出,置位TF1,向CPU申请中断5RI(SCON.0)或TI(SCON.1)串行口接收或发送一帧串行数据,向CPU申请中断(2)中断优先级排队(3)中断请求标志

TCON的中断标志IT0(TCON.0)外部中断0触发方式控制位IE0(TCON.1)外部中断0中断请求标志位IT1(TCON.2)外部中断1触发方式控制位IE1(TCON.3)外部中断1中断请求标志位TF0(TCON.5)定时/计数器T0溢出中断请求标志TF1(TCON.7)定时/计数器T1溢出中断请求标志SCON的中断标志TI(SCON.1),串行口发送中断标志位发送完一个串行帧时,由硬件置位TI。CPU响应中断时,不能自动清除TI,TI必须由软件清除。

RI(SCON.0),串行口接收中断标志位。当允许串行口接收数据时,每接收完一个串行帧,由硬件置位RI。同样RI必须由软件清除。

(1)中断允许控制

3.8.4MCS-51中断的控制

EX0(IE.0):外部中断0允许位ET0(IE.1):定时/计数器T0中断允许位EX1(IE.2):外部中断1允许位ET1(IE.3):定时/计数器T1中断允许位ES(IE.4):串行口中断允许位EA(IE.7):CPU中断允许(总允许)位“1”为允许中断“0”为禁止中断(2)中断优先级控制

PX0(IP.0):外部中断0优先级设定位;PT0(IP.1):定时/计数器T0优先级设定位;PX1(IP.2):外部中断1优先级设定位;PT1(IP.3):定时/计数器T1优先级设定位;PS(IP.4):串行口优先级设定位。“1”为高优先级,“0”为低优先级。(4)中断优先级原则

CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。正在进行的低优先级中断服务,能被高优先级中断请求所中断。

为实现后两条原则,中断系统内部设有两个用户不能寻址的优先级状态触发器。一个表示正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个表示正在响应低优先级中断,它将阻断后来所有的低优先级中断请求。3.8.5MCS-51单片机中断处理过程

(1)中断响应中断响应定义中断响应是CPU对中断源中断请求的响应,包括保护断点和将程序转向中断服务程序入口地址中断响应条件中断源有中断请求此中断源的中断允许位为1CPU开中断(即EA=1)

以下情况中断响应会受阻CPU正在处理同级或高优先级中断当前查询的机器周期非执行指令的最后一个机器周期正在执行的指令为RETI或访问IE或IP寄存器的指令

中断响应时间中断响应时间:指从查询中断请求标志位到转向中断服务入口地址所需的机器周期数。

若M1周期的S5P2前某中断生效,在S5P2期间其中断请求被锁存到相应的标志位中;M2周期查询中断标志;M3和M4执行硬件LCALL指令;M5周期将进入中断服务程序中断响应时间范围最快响应时间

以外部中断的电平触发为最快。

从查询中断请求信号到中断服务程序需三个机器周期:

1个周期(查询)+2个周期(长调用LCALL)

最长时间

问题:若当前指令是RET、RETI和IP、IE指令,下一条发生乘除指令,则最长为多少个周期?

2个周期执行当前指令(其中含有1个周期查询)+4个周期乘除指令+2个周期长调用(2)中断处理

中断处理就是执行中断服务程序。中断服务程序从中断入口地址开始执行,到返回指令RETI为止。执行硬件LCALL指令,进入中断服务程序后,先保护现场,后执行中断处理程序,在中断返回前再恢复现场。

(3)中断返回

中断返回是指中断服务完后,计算机返回原来断开的位置(即断点),继续执行原来的程序。中断返回由中断返回指令RETI来实现。

RETI指令的具体功能:将中断响应时压入堆栈保存的断点地址从栈顶弹出送回PC,CPU从原来中断的地方继续执行程序;将相应中断优先级状态触发器清零。0,通知中断系统,中断服务程序已执行完毕。

(4)中断请求的撤除8051各中断源中断请求撤消方法:

对串口、T2中断:CPU在响应中断后,硬件不能自动清除中断请求标志位TI、RI,须在中断服务程序中用软件将其清除;

对INT0、INT1:若设置为电平中断,CPU响应中断后,应使外部引脚置高,以避免重复中断。例多外部中断源的系统示例设有5个外部中断源,中断优先级排队顺序为:XI0、XI1、XI2、XI3、XI4。试设计它们与80C51单片机的接口。ORG0003HLJMPINSE0[转外部中断0服务程序入口]

ORG0013HLJMPINSE1[转外部中断1服务程序入口]

…………INSE0:PUSHPSW[XI0中断服务程序]

PUSHACC…………POPACCPOPPSWRETI

INSE1:PUSHPSW[中断服务程序]

PUSHACCJBP1.0,DV1;JBP1.1,DV2;……INRET:POPACCPOPPSWRETIDV1:……[XI1中断服务程序]

AJMPINRETDV2:……[XI2中断服务程序]

AJMPINRET……3.9MCS-51的定时/计数器

3.9.1三种定时方式软件定时不占用硬件资源,但占用了CPU时间基电路定时如采用555电路,外接必要的元器件缺点:在硬件连接好以后,定时值与定时范围不能由软件进行控制和修改可编程芯片定时定时值及定时范围很容易用软件来确定和修改,此种芯片定时功能强,使用灵活3.9.2定时/计数器的结构3.9.3

定时/计数器的工作原理

脉冲来源:

一个由系统时钟振荡器输出脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。

定时器模式

加1计数器是对内部机器周期计数,每过一个机器周期,计数器加1,直至计满溢出为止。定时时间t=计数值N×机器周期Tcy

计数器模式

3.9.4定时/计数器的控制

工作方式寄存器TMOD定时器T1定时器T0GATE:门控位GATE=0时,用软件使TCON中的TR0或TR1为1,就可启动定时/计数器工作;GATE=1时,要用软件使TR0或TR1为1,同时外部中断引脚为高电平时,才能启动定时/计数器工作。问题:若定时/计数器以计数方式工作,工作方式为2,那么TMOD的值应为多少?定时器T1定时器T0MIMO

工作方式说明00

方式013位定时/计数器01方式116位定时/计数器10方式28位自动重装定时/计数器11方式3T0分为两个独立的8位定时/计数器,T1此方式停止计数

控制寄存器TCON

TF1(TCON.7):T1溢出中断请求标志位

T1计数溢出时由硬件自动置TF1为1。CPU响应

中断后TF1由硬件自动清0。TR1(TCON.6):T1运行控制位。

TR1置1时,T1开始工作;TR1置0时,T1停止工

作。TR1由软件置1或清0。3.9.5

定时/计数器的工作方式

(1)方式0

13位计数时,由TL0的低5位和TH0的8位组成。

(2)方式1

方式1的计数位数是16位,由TL0作为低8位而TH0作为高8位,组成了16位加1计数器。计数个数与计数初值的关系为:

(3)方式2

方式2为自动重装初值的8位计数方式计数个数与计数初值的关系为:

(4)方式3

方式3只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数

3.9.5定时/计数器用于外部中断扩展

方法:定时/计数器设置为计数器方式

初值设为满程

待扩展外部中断源接至外部计数引脚

3.9.5定时/计数器用于外部中断扩展

初始化工作:定时器T1定时器T0对TMOD赋值,以确定T0和T1的工作方式计算初值,并将其写入TH0、TL0或TH1、TL1

3.9.5定时/计数器用于外部中断扩展

初始化工作:中断方式时,则对IE赋值,开放中断使TR0或TR1置位,启动定时/计数器定

时或计数

例1:利用T0扩展一个外部中断源。T0以计数器方式工作,工作方式为2。

Program:

MOVTMOD,#06H;置T0为计数器方式2MOVTL0,#0FFH;置计数初值

MOVTH0,#0FFHSETBTR0;启动T0工作

SETBEA;CPU开中断

SETBET0;允许T0中断

例2利用定时/计数器T0的方式1,产生10ms的定时,并使P1.0引脚上输出周期为20ms的方波,采用中断方式,设系统时钟频率为12MHz。

关键点:计算计数初值X晶振为12MHz,机器周期Tcy为?μS机器周期=6个状态周期=12个时钟周期N=t/Tcy=10×10-3/1×10-6=10000X=65536-10000=55536=D8F0H

LJMPDVT0;转向中断服务程序MAIN:MOVTMOD,#01H;置T0工作于方式1MOVTH0,#0D8H;装入计数初值

MOVTL0,#0F0HSETBET0;T0开中断

SETBEA;CPU开中断

SETBTR0;启动T0SJMP$;等待中断DVT0:CPLP1.0;P1.0取反输出

MOVTH0,#0D8H;重新装入计数值

MOVTL0,#0F0HRETI;中断返回

END4MCS-51指令系统

4.1指令分类按指令功能,MCS-51指令系统分为:数据传递与交换、算术运算、逻辑运算、程序转移、布尔处理操作、CPU控制等6类。4.2指令格式在MCS-51指令中,一般指令主要由操作码、操作数组成。

指令格式为:操作码

[目的操作数][,源操作数4MCS-51指令系统

4.1寻址方式

寻址方式:就是寻找指令中操作数或操作数所在地址的方法。8051共有七中寻址方式。立即寻址直接寻址寄存器寻址

寄存器间接寻址变址寻址

相对寻址

位寻址寻址方式中常用符号注释Rn——当前选中的寄存器区中的8个工作寄存器R0~R7(n=0~7)Ri——当前选中的寄存器区中的2个工作寄存器(间接寻址寄存器)R0、R1direct—8位的内部数据存储器单元中的地址#data——包含在指令中的8位常数#data16——包含在指令中的16位常数addr16——16位目的地址addr11——11位目的地址rel——8位带符号的偏移字节,简称偏移量DPTR——数据指针,可用作16位地址寄存器bit——内部RAM或专用寄存器中的直接寻址位A——累加器B——专用寄存器,用于乘法和除法指令中C——进位标志或进位位,或布尔处理机中的累加器$——表示程序计数器的当前值。常出现在转移指令中,如:SJMP$表示循环等待4.1.1立即数寻址

指令中直接给出操作数的寻址方式。立即操作数用加有#号的8位或16位数表示例如:MOVA,#60H;A←60HMOVDPTR,#3400H;DPTR←3400HMOV 30H,#40H;30H单元←40H上述三条指令执行完后,累加器A中数据为立即数据60H,DPTR寄存器中数据为3400H,30H单元中数据为立即数40H。4.1.2直接寻址 指令中直接给出操作数地址的寻址方式,能进行直接寻址的存储空间有SFR寄存器和片内RAM的128个单元。例如:MOV A,P1;A←(P1)把SFR中P1口的内容送A。

MOVA,30H;A←(30H)

30H为直接给出的内部RAM的地址4.1.3寄存器寻址

以通用寄存器的内容为操作数的寻址方式。通用寄存器指A、B、DPTR以及R0~R7

例如:MOVA,R0;A←(R0)

CLR A ;A←0INC DPTR;DPTR←DPTR+1ADD A,R5;A←(A)+(R5)4.1.4寄存器间接寻址以寄存器中内容为地址,以该地址中内容为操作数的寻址方式。间接寻址的存储器空间包括内部数据RAM和外部数据RAM。能用于寄存器间接寻址的寄存器有R0,R1,DPTR,SP。其中R0、R1必须是工作寄存器组中的寄存器。SP仅用于堆栈操作。例:MOV@R0,A;内部RAM(R0)←A

其指令操作过程示意图如图4.1所示。又如:MOVX@DPTR,A;外部RAM(DPTR)←A

其指令操作过程示意图如图4.2所示。片内RAM30HR034HA30H34H图4-1MOV@R0,A间接寻址示意图片外RAM2000HDPTR30HA2000H30H图4-2MOVX@DPTR,A间接寻址4.1.5变址寻址

基址寄存器(A)+变址寄存器(PC或DPTR)的间接寻址。

变址寻址只能对程序存储器中数据进行操作。由于程序存储器是只读的,因此变址寻址只有读操作而无写操作,在指令符号上采用MOVC的形式(如图4-3所示)。例:MOVCA,@A+DPTR;

A←(A+DPTR)又如:MOVCA,@A+PC;

A←(A+PC)

图4-3变址寻址示意图程序存储器2000HDPTR64H(10H)A2010H64H10H2000H4.1.6相对寻址 以当前程序计数器PC的内容为基础,加上指令给出的一字节补码数(偏移量)形成新的PC值的寻址方式。相对寻址用于修改PC值,主要用于实现程序的分支转移。例:SJMP08H;PC←PC+2+08H

指令操作示意图如图4-4所示。程序存储器(2000H)200AHSJMP200AH08H2000H+208HPC2000H图4-4相对寻址示意图4.1.7位寻址只能对有位地址的单元作位寻址操作。是一种直接寻址方式,但其地址是位地址。例:SETB10H;将10H位置1。若22H单元中存放着数据40H,22H单元的D0位的位地址为10H,执行上述指令后(22H)=41H

又如:MOV32H,C;32H←进位位CORLC,32H;C←C∨32H

4.1.8源操作数寻址空间寻址方式源操作数寻址空间立即数寻址程序存储器ROM直接寻址片内RAM低128B、SFR寄存器寻址工作寄存器R0---R7、A、B、C、DPTR寄存器间接寻址片内RAM低128B[@R0、@R1]片外RAM[@R0、@R1、@DPTR]变址寻址程序存储器[@A+PC、@A+DPTR]相对寻址程序存储器256B范围(PC+偏移量)位寻址片内RAM的20H—2FH字节地址4.2.1数据传送类指令4.2.2算术运算类指令4.2.3逻辑运算类指令4.2.4控制程序转移类指令4.2.5调用子程序及返回指令4.2.6位操作指令4.2.7空操作指令 4.2MCS-51指令系统4.2.1数据传送类指令数据传送类指令共28条,是将源操作数送到目的操作数。指令执行后,源操作数不变,目的操作数被源操作数取代。数据传送类指令用到的助记符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP8种。源操作数可采用寄存器、寄存器间接、直接、立即、变址5种寻址方式寻址;目的操作数可以采用寄存器、寄存器间接、直接寻址3种寻址方式。数据传送指令是一种最基本最常用的操作,在通常的程序中占有极大的比例。(1)以A、Rn、直接地址、DPTR为目的操作数MOVA,Rn ;A←RnMOVA,direct ;A←(direct)MOVA,@Ri ;A←(Ri)MOVA,#data ;A←#data上述指令是将源操作数指定的内容送到累加器A中。上述操作只影响PSW的P标志位。(2)访问外部数据RAM

在8051指令系统中,访问片外RAM只能用寄存器间接寻址,与累加器A配合,共四条指令。

MOVXA,@Ri ;A←((Ri))

MOVX@Ri,A ;(Ri)←A

寻址范围是片外256BRAM。

MOVXA,@DPTR;A←((DPTR))

MOVX@DPTR,A;(DPTR)←A

寻址范围是片外64KBRAM。(3)读程序存储器(查表指令)注:数据表格放在程序存储器中①近程查表指令(256B)

MOVCA,@A+PC ;A←((A)+(PC))只能查找指令所在地址以后256B范围内的常数或代码。②远程查表指令(64KB)MOVCA,@A+DPTR;A←((A)+(DPTR))查表范围可达ROM的64KB空间。例如:在程序存储器中,数据表格为

1010H:02H1011H:04H1012H:06H1013H:08H执行程序1000H:MOVA,#0DH;A←0DH,偏移量1002H:MOVCA,@A+PC;1003H:MOVR0,A;R0←A

问题:(A)=?(R0)=?(PC)=?

如:在程序存储器中,数据表格为:

7010H:02H7011H:04H7012H:06H7013H:08H

执行程序

1000H:MOVA,#10H;A←10H,偏移量

1002H:MOVDPTR,#7000H;

1003H:MOVCA,@A+DPTR;问题(A)=?(3)数据交换l

字节交换XCHA,Rn ;A<=>RnXCHA,direct ;A<=>(direct)XCHA,@Ri ;A<=>(Ri)l

半字节交换XCHDA,@Ri ;A0~3<=>(Ri)0~3

低4位互换,高4位不变。SWAPA ;A0~3<=>A4~7(高低两半字节交换)(4)堆栈操作

堆栈是在片内RAM中按“先进后出,后进先出”原则设置的专用存储区。数据的进栈出栈由指针SP统一管理。堆栈的操作有如下两条专用指令:

PUSHdirect;

SP←(SP+1),(SP)←(direct)

POPdirect;(direct)←(SP),SP←SP-1MOVR5,R7

MOVA,55H

MOVA,#55H

JMP@A+DPTR

MOV30H,C

MOVA,@R0

MOVXA,@R0习题:分别说出下列指令的寻址方式例:将片内RAM30H单元与40H单

元中的内容互换方法1:

MOV 31H,30HMOV 30H,40HMOV 40H,31HSJMP $方法2:

MOV R0,#40HMOV R1,#30HMOV A,@R0MOV B,@R1MOV @R1,AMOV @R0,BSJMP $

方法3:

MOV A,30HXCH A,40HMOV 30H,ASJMP $

方法4:

PUSH 30HPUSH 40HPOP 30HPOP 40HSJMP $4.2.2算术运算类指令

8051算术运算指令包括加、减、乘、除基本四则运算算术运算结果将使进位CY、半进位AC、溢出位OV三个标志位置位或复位,只有加1和减1指令不影响这些标志位加、减、乘、除及十进制调整指令,目的操作数均为累加器A。(1)加法指令(四条)ADDA,Rn ;A←A+RnADDA,direct ;A←A+(direct)ADDA,@Ri ;A←A+(Ri)ADDA,#data ;A←A+#data(2)带进位加指令(四条)

ADDCA,Rn ;A←A+Rn+CADDCA,direct ;A←A+(direct)+CADDCA,@Ri ;A←A+(Ri)+CADDCA,#data ;A←A+#data+CC为来自PSW状态寄存器中的进位位C

功能:把源操作数指出的内容和进位标志位

CY都加到累加器A中,结果存在A中

例:设(A)=03CH,(R0)=0AAH,CY=1,执行指令ADDCA,R0后,A=6EH

(A):11000011+(CY):0000000111000100+(R0):1010101001101110

标志位CY=1,AC=0(3)带借位减指令

SUBBA,Rn ;A←A-Rn-CSUBBA,direct;A←A-(direct)-CSUBBA,@Ri ;A←A-(Ri)-CSUBBA,#data ;A←A-#data–C

功能:从累加器A中减去源操作数指出的内容和进位标志位CY的值,差存放在累加器A中

例:设(A)=0C9H,(R2)=20H,(20H)=54H,CY=1

执行指令SUBBA,@R2后,A=74H

(A):11001001—(CY):0000000111001000—(R2):0101010001110100

标志位CY=0,AC=0(4)乘法指令

MULAB ;BA←A×BA和B中各存放一个8位无符号数,指令执行后,16位乘积的高8位在B中,低8位存A中。例:(A)=30H,(B)=60H;

执行MULAB后,A=00H,B=12H

(5)除法指令

DIVAB;A÷B→商在A中,余数在B中

A和B中各存放一个8位无符号数,A放被除数,B放除数。指令执行后,A中存放商,B中存入余数。若B=00H,则指令执行后OV=1,A与B不变。例:(A)=30H,(B)=07H;

执行DIVAB后,A=06H,B=06H(6)加1指令(5条)INCA ;A←A+1INCRn ;Rn←Rn+1INCdirect;(direct)←(direct)+1INC@Ri;(Ri)←(Ri)+1INCDPTR;DPTR←DPTR+1功能:将操作数所指定的单元加1,其操作不影响PSW;若原单元内容为FFH,加1后溢出为00H,也不影响PSW。例:(30H)=22H,执行INC30H后,(30H)=23H

(7)减1指令DECA ;A←A-1DECRn ;Rn←Rn-1DECdirect ;direct←(direct)-1DEC@Ri ;(Ri)←(Ri)-1功能:将操作数所指定的单元减1,其操作不影响PSW;若原单元内容为00H,减1后溢出为FFH,也不影响PSW。例:R0=30H,(30H)=22H,执行DEC@R0后,(30H)=21H

例:把存放在R1R2和R3R4中的两个16位数相加,结果存于R5R6中。

MOVA,R2 ;取第一个数的低8位

ADDA,R4 ;两数的低8位相加

MOVR6,A ;保存和的低8位

MOVA,R1 ;取第一个数的高8位

SJMP$

ADDCA,R3;两数的高8位相加,并把低8

位相加的进位位加进来

MOVR5,A;把相加的高8位存R5寄存器中4.2.3逻辑运算指令(1

温馨提示

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

评论

0/150

提交评论