单片机学习总结 (2)_第1页
单片机学习总结 (2)_第2页
单片机学习总结 (2)_第3页
单片机学习总结 (2)_第4页
单片机学习总结 (2)_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

单片机概述所谓单片机,就是把中央处理器CPU(Central Processing Unit)、随机存取存储器RAM(Random Access Memory)、只读存储器ROM(Read Only Memory)、定时器/计数器以及I/O(Input/Output)接口电路等主要计算机部件集成在一块集成电路芯片上的微型计算机。虽然单片机只是一个芯片,但从组成和功能上看,它已具有了微机系统的含义。尽管目前单片机的品种很多,但其中最具有典型性的当属Intel公司的MCS-51单片机系列。MCS-51是在MCS-48的基础上发展起来的,虽然它仍是8位单片机,但其功能较MCS-48有很大的增强。此外它还具有品种全、兼容性强、软硬件资料丰富等特点。直到现在MCS-51仍不失为单片机中的主流机型。单片机的主要功能就在于实现计算机控制。概括地可分为两个方面:1) 计算机在控制系统中的离线应用。即控制系统的计算机辅助设计(CAD)常使用微型机或小型机实现2) 计算机在控制系统中的在线应用。即以计算机代替常规的模拟或数字电路单片机等实现单片机的应用正从根本上改变着传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分控制功能,现在已能使用单片机通过软件方法实现了。这种以软件取代硬件并能提高系统性能的控制技术,称之为微控制技术。严格地说,单片机是微型机的一个分类。尽管微型计算机得到了最充分的发展,但微型机在原理和结构上仍和前三代计算机一样,还是属于经典的计算机结构。即一台计算机的硬件系统是由运算器、控制器、存储器、输入和输出设备共五个部分组成冯诺依曼计算机体系结构。1 运算器实现算术和逻辑运算,计算机的数据运算和处理都在这里进行。2 控制器计算机的指挥控制部件,和运算器一起被称为CPU。3 存储器用于存放程序和数据。分为内部和外部存储器。4 输入/输出设备和存储器一起称为计算机的外部设备。计算机的软件系统包括系统软件(操作系统)、应用软件和程序设计语言三部分。单片机由于硬件支持和需要有限,只使用简单的操作系统程序(监控程序)和汇编语言。MCS-51单片机系列共有十几种芯片。MCS-51系列又分成51和52两个子系列,并以芯片型号的最末位数字作为标志。其中51子系列是基本型,而52子系列则属于增强型。52子系列功能增强的具体方面有:1) 片内ROM从4KB增加到8KB;2) 片内RAM从128字节增加到256字节;3) 定时器/计数器从2个增加到3个;4) 中断源从5个增加到6个。在52子系列的内部ROM中以掩膜方式集成有8K BASIC解释程序(8052-BASIC),这意味着单片机已可以使用高级语言。MCS-51系列单片机采用两种半导体工艺生产:HMOS(高密度短沟道MOS)工艺和CHMOS(互补金属氧化物HMOS)工艺。上表中凡带有“C”的,为CHMOS芯片。CHMOS是CMOS和HMOS的结合,除保持HMOS高速和高密度的特点外,还具有CMOS低功耗的特点。MCS-51单片机片内程序存储器有三种配置形式:掩膜ROM、EPROM和无。此外,由于单片机的应用是面向现场的,因此它具有很强的抗干扰能力,这是任何其它计算机所不及的。MCS-51单片机结构和原理MCS-51单片机系列的典型芯片是8051,其基本组成如下:1 中央处理器(CPU)CPU是单片机的核心,完成运算和控制功能。MCS-51的CPU能处理8位二进制数或代码。2 内部数据存储器(内部RAM)8051芯片共有256个RAM单元,但后128个单元被专用寄存器占用,提供给用户使用的只是前128个单元,用于存放可读写的数据。3 内部程序存储器(内部ROM)8051共有4KB掩膜ROM,用于存放程序、原始数据或表格。4 定时器/计数器8051共有2个16位的定时器/计数器,以实现定时或计数功能,并以结果对计算机进行控制。5 并行I/O口MCS-51共有四个8位的I/O口,实现数据的并行输入输出。6 串行口MCS-51单片机有一个全双工的串行口,以实现单片机和其它设备之间的串行数据传送。该串行口即可作为全双工异步通信收发器使用,也可作为同步移位器使用。7 中断控制系统8051共有5个中断源:外中断2个,定时/计数中断2个,串行中断1个。8 时钟电路MCS-51芯片的内部有时钟电路,但需要外接晶体和微调电容。系统允许的最高晶振频率为12MHz。MCS-51是标准的40引脚双列直插式集成电路芯片。其中:P0.0P0.7 P0口8位双向口P1.0P1.7 P1口8位双向口P2.0P2.7 P2口8位双向口P3.0P3.7 P3口8位双向口ALE 地址锁存控制信号用于锁存PO口输出的低8位地址,以实现低位地址和数据的隔离。此外,ALE可作为外部时钟或外部定时脉冲使用(以晶振六分之一的固定频率输出正脉冲)。PSEN 外部程序存储器(ROM)选通信号低电平有效,以实现外部ROM单元的读操作。EA 访问程序存储器控制信号低电平时,限定ROM的读操作在外部;高电平是,则从内部ROM开始读操作,并可延至外部ROM。RST 复位信号当输入复位信号延续2个机器周期以上高电平时即为有效。用以完成初始化操作。XTAL1与XTAL2 外接晶体引线当使用芯片内部时钟时,用于外接晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。VSS 地线VCC +5V电源P3口的第二功能如下表所示。此外,有内部EPROM的单片机芯片(如9751),为写入程序需提供专门的编程脉冲和编程电源,这些信号也是由引脚的第二功能提供的:编程脉冲:30脚(ALE/PROG);编程电压(25V):31脚(EA/VPP)MCS-51单片机的备用电源也是以第二功能的方式由9脚(RST/VPD)引入的当电源发生故障,电压降低到下限值时,备用电源经此端向内部RAM提供电压,以保护内部RAM中的信息部丢失。对于9、30和31引脚,第一功能与第二功能信号时单片机在不同工作方式下的信号,不会发生使用上的冲突。但对P3口,在实际使用时,都是先按需要选用第二功能信号,剩下的口线才以第一功能作为数据位的输入输出使用。8051的内部存储器8051单片机的芯片内部有RAM和ROM两类存储器。8051的内部RAM共有256个单元,通常把这些单元按其功能划分为两部分:低128单元(地址00H7FH)和高128单元(地址80HFFH)。低128单元按其用途划分为三个区域:1) 寄存器区共有四组通用寄存器,每组8个寄存单元(8位),各组都以R0R7作为寄存器单元的编号。常用于存放操作数及中间结果等。有时也称为工作寄存器,占据内部RAM的00H1FH单元地址。在任一时刻,CPU只能使用其中的一组寄存器,并把正在使用的那组寄存器称之为当前寄存器组。寄存器组的选取由程序状态字寄存器PSW中的RS1、RS2位的状态组合来决定。通用寄存器为CPU提供了就近数据存储的便利,有利于提高单片机的运算速度。同时,使用通用寄存器还能提高程序编制的灵活性。2) 位寻址区内部RAM的20H2FH单元,既可以作为一般的RAM单元使用,进行字节操作,又可以对单元中的每一位进行位操作。位寻址区共有16个RAM单元(共128位),位地址为00H7FH。MCS-51利用这个位寻址区进行布尔处理机的存储。3) 用户RAM区内部RAM低128单元-通用寄存器32单元-位寻址区16单元=80单元,其地址为30H7FH。在一般应用中常把堆栈开辟在此区中。高128单元供给专用寄存器使用(专用寄存器SFR区),其单元地址为80HFFH。8051共有22个专用寄存器(21个是可字节寻址的)。其中典型的5个如下:1) 程序计数器(PC-Program Counter)PC是16位的计数器(寻址范围为64KB),其内容为将要执行的指令地址。PC有自动加1功能,从而实现程序的顺序执行。PC无地址(不可寻址),但可通过指令改变其内容。2) 累加器(ACC-Accumulator)ACC为8位寄存器,功能较多,也最为常用。既可用于存放操作数,也可用来存放运算的中间结果。单片机中的大部分数据操作都是通过ACC进行的,因此ACC实际上称为单片机程序运行的“瓶颈”,制约着单片机软件效率的提高。3) B寄存器8位寄存器,主要用于乘除运算,也可作为一般数据寄存器使用。乘法运算时,B为乘数,乘积的高8位也存于B中。除法运算时,B为除数,余数也存于B中。4) 程序状态字(PSW-Program Status Word)8位寄存器,用于寄存程序运行的状态信息。其中,CY(PSW.7)进位标志位:存放算术运算的进位标志;在位操作中,作累加位使用,位传送、位与、位或等位操作,操作位之一固定是进位标志位。AC(PSW.6)辅助进位标志位:加减运算中,当有低4位向高4位进位或借位时,AC由硬件置位,否则被清零。F0(PSW.5)用户标志位:用来控制程序的转向,需要时用软件方法置位或复位。RS1和RS0(PSW.4和PSW.3)寄存器组选择位:用于设定通用寄存器的组号(软件设置)。OV(PSW.2)溢出标志位PSW.1保留未用P(PSW.0)奇偶标志位:表明累加器中数的奇偶性(在每个指令周期由硬件自动进行置位或复位)5) 数据指针(DPTR)16位寄存器,编程时,DPTR既可按16位寄存器使用,也可以按两个8位寄存器分开使用。即,分成DPH和DPL。DPTR通常用作访问外部数据存储器时的地址指针(外部数据存储器的寻址范围为64KB)。专用寄存器的字节寻址1) 在22个专用寄存器中,唯一一个不可寻址的专用寄存器是PC。PC不占据RAM单元,它在物理上是独立的;2) 21个可字节寻址的专用寄存器是不连续地分散在内部RAM高128单元中。尽管还余有许多空闲地址,但用户不能使用;3) 对专用寄存器只能使用直接寻址方式,编程时既可使用寄存器符号,也可使用寄存器单元地址。专用寄存器的位寻址在21个可寻址的专用寄存器中,有11个是可以位寻址的。表中凡字节地址不带括号的寄存器都是可进行位寻址的寄存器(全部专用寄存器可寻址的位共83位),加上位寻址区的128位,在MCS-51的内部RAM中共有128+83=211个可寻址位。堆栈及堆栈指示器所谓堆栈(一种数据结构)就是只允许在其一端进行数据插入和数据删除操作的线性表。堆栈最大的特点就是“后进先出”(LIFO)。堆栈是为子程序调用和中断操作而设立的。其具体功能有两个:保护断点和保护现场。为了使单片机能进行多级中断嵌套及多重子程序嵌套,还要求堆栈具有足够的容量(或称为足够的堆栈深度)。堆栈的开辟可分为外堆栈和内堆栈。鉴于单片机的特点,因此在单片机中只能采用内堆栈形式(即在CPU芯片的寄存器中开辟堆栈)。内堆栈的主要优点是操作速度快,但堆栈容量有限。堆栈有两种操作:进栈和出栈。为了指示栈顶地址,要设置堆栈指示器SP(Stack Pointer),SP的内容就是堆栈栈顶的存储单元地址。由于MCS-51的堆栈设在内部RAM中,因此SP是一个8位专用寄存器。SP可初始化为不同的值(系统复位后,SP的内容为07H),因此堆栈的位置是浮动的。但堆栈最好在内部RAM的30H7FH单元中开辟,因此在程序设计时,应注意把SP值初始化位30H以后。堆栈可有两种类型:向上生长型和向下生长型。向上生长型堆栈,栈底在低地址单元。随着数据进栈,地址递增,指针上移;反之,随着数据的出栈,地址递减,指针下移。向下生长型堆栈的操作规则与之相反。MSC-51属于向上生长型堆栈,这种堆栈的操作规则如下:进栈操作:先SP加1,后写入数据;出栈操作:先读出数据,后SP减1。堆栈有两种使用方式:自动方式和指令方式。自动方式无需用户干预,即在调用子程序或中断时,返回地址(断点)自动进栈,程序返回时,断点再自动弹回PC。指令方式,即使用专用的堆栈操作指令进行进出栈的操作。内部程序存储器(ROM)8051芯片内有4K的ROM存储单元(其地址为0000H0FFFH)。其中,一组特殊的单元是0000H0002H。系统复位后,(PC)=0000H,单片机从0000H单元开始取指令执行程序。如果程序不从0000H单元开始,则应在这三个单元中存放一条无条件转移指令,以便直接转去执行指定的程序。另一组特殊单元是0003H002AH。共40个单元,这40个单元被均匀地分为五段,作为五个中断源的中断地址区。其中:0003H000AH 代表外部中断0中断地址区000BH0012H 代表定时/计数器0中断地址区0013H001AH 代表外部中断1中断地址区001BH0022H 代表定时/计数器1中断地址区0023H002AH 代表串行中断地址区中断响应后,按中断种类,自动转到各中断区的首地址去执行程序。但通常8个单元难以存下一个完整的中断服务程序,因此往往在中断地址区的首地址处存放一条无条件转移指令,以便中断响应后,通过中断地址区,再转移到中断服务程序的实际入口地址。并行输入/输出口电路结构MCS-51共有四个8位的并行I/O口,记作P0P3。它们已归入专用寄存器,并具有字节和位寻址功能。在单片机中,口(或称为端口)是一个集数据输入缓冲,数据输出驱动及锁存等多项功能为一体的I/O电路。MCS-51单片机的四个I/O口都是8位双向口,它们在结构和特性上基本相同,但又各具特点。P0口既可以作为通用的I/O口进行数据的输入输出,也可以作为单片机系统的地址/数据线使用。在实际应用中,P0口通常都是作为单片机系统的地址/数据线使用。而当P0进行一般的输入操作时,由于输出电路是漏极开路的,因此必须外接上拉电阻才能输出高电平;当P0进行一般的输出操作时,必须先向电路中的锁存器写入“1”,使FET截止,以免锁存器为“0”时对引脚读入的干扰。P1口通常作为通用I/O口使用的,无需再外接上拉电阻。当P1口作为输入口使用时,通用先需向锁存器写入“1”,使输出驱动电路的FET截止。P2口与P0口一样,可作为通用I/O口使用,但通常是作为高位地址线使用。P3口为适应引脚信号第二功能的需要,增加了第二功能控制逻辑。时钟电路与时序为了保证单片机同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。单片机时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。晶体的振荡频率为1.2MHz12MHz。晶体振荡频率越高,系统时钟频率也越高,单片机运行速度也越快。但快速的运行速度对存储器的运行速度要求高,同时对PCB板的工艺要求也高(线间寄生电容要小)。因此,MCS-51通常使用振荡频率为6MHz的石英晶体,而12MHz主要用于高速串行通信。在由多片单片机组成的系统中,为了各单片机之间时钟信号的同步,应当引入唯一的公用外部脉冲信号作为各单片机的振荡脉冲。需注意的是,外接的脉冲信号应当是高低电平持续时间大于20ns的方波,且脉冲频率应低于12MHz。MCS-51的时序定时单位共有4个,从小到大依次是:拍节、状态、机器周期和指令周期。拍节(P)定义为振荡脉冲的周期,而经二分频后得到的单片机时钟信号的周期称为状态(S)。即一个状态(S)包含两个拍节(P)。MCS-51采用定时控制方式,因而有固定的机器周期。规定一个机器周期的宽度为6个状态,共12个拍节,即机器周期就是振荡脉冲的十二分频。指令周期是指执行一条指令所需要的时间。MCS-51的指令周期根据指令的不同,可包含14个机器周期。MCS-51指令时序MCS-51共有111条指令,全部指令按其长度可分为单字节指令、双字节指令和三字节指令。执行这些指令所需的机器周期数目不同,有以下几种情况:单字节指令单机器周期和单字节指令双机器周期,双字节指令单机器周期和双字节指令双机器周期。三字节的指令都是双机器周期的,单字节中的乘除指令为四机器周期。图中的ALE信号时为地址锁存而定义的,以振荡脉冲的六分之一频率出现,每有效一次对应单片机进行的一次读指令操作。外部ROM读时序外部RAM读写时序MCS-51单片机的工作方式MCS-51单片机共有复位、程序执行、单步执行、掉电保护、低功耗以及EPROM编程和校验等六种工作方式。1. 复位方式复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序;当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键以重新启动。除PC之外,复位操作还对以下一些专用寄存器有影响:复位操作还对单片机的个别引脚信号有影响,例如使。RST引脚为复位信号(高电平有效)的输入端,其有效时间应持续24个振荡脉冲周期以上。复位操作有上电自动复位和按键手动复位两种方式,按键方式又可分为电平方式和脉冲方式两种。上述电路图的电阻电容参数适用于6MHz晶振保证复位信号高电平持续时间大于2个机器周期。2. 程序执行方式该方式是单片机的基本工作方式。3. 单步执行方式即通过外来脉冲控制程序的执行,来一个脉冲(按键一次)就执行一条指令。单步执行是借助单片机的外部中断功能来实现的。MCS-51的中断机制有这样的特点:从中断服务程序返回主程序后,至少要执行一条指令,然后再响应新的中断。4. 掉电保护方式MCS-51设置有掉电保护措施,可对RAM与寄存器中的程序和数据进行掉电保护处理。其具体作法是,先把有用信息转存,然后再启用备用电源维持供电。所谓信息转存是指当电源故障时,立即将系统的有用信息转存至内部RAM中保护起来,即通常所说的“掉电中断”。系统需具有备用电源与VCC电源的自动切换电路,如上上图所示,才能保护转存的信息不被破坏。由于备用电源容量有限,为减少消耗,掉电后时钟电路和CPU皆停止工作,只维持内部RAM和专用寄存器工作。当电源VCC恢复时,STR/VPD端的备用电压还应维持一段时间(约10ms)。单片机恢复正常工作的第一件事是被保护信息的现场恢复。5. 低功耗方式(80C51)对HMOS的8051而言,掉电保护方式实际上就是低功耗方式;而CHMOS得80C51有两种低功耗方式:待机和掉电方式。这两种方式都由专用寄存器PCON(电源控制寄存器)的有关位来控制。其中SMOD波特率倍增位,在串行通信是才使用GF0和GF1通用标志位PD掉电方式位IDL待机方式位当PCON寄存器的IDL=1,则80C51进入待机方式。这时CPU时钟被阻断,但中断功能存在,振荡器仍然向中断逻辑、串行口和定时/计数器电路提供时钟。当PCON寄存器的PD=1,则80C51进入掉电保护方式。此时只有内部RAM单元的内容被保存与8051不同!另外,其备用电源由VCC端引入。MCS-51指令系统概述一台计算机所能执行的指令集合就是它的指令系统。指令系统是由计算机生产厂商定义的,没有通用性。指令系统是学习和使用单片机的基础和工具。单片机应用中主要使用机器语言和汇编语言,而由汇编语言编写的程序没有通用性,无法直接移植。MCS-51单片机指令系统共有111条指令,分为五大类:1) 数据传送类指令(29条)2) 算术运算类指令(24条)3) 逻辑运算及移位类指令(24条)4) 控制转移类指令(17条)5) 位操作类指令(17条)一条指令通常由操作码和操作数两部分组成。单片机的指令都是不定长的(变长指令)。在MCS-51指令系统中,共有一字节指令49条;二字节指令45条;三字节指令17条。寻址方式所谓寻址,其实质就是如何确定操作数单元地址的问题。一般而言,寻址方式越多的计算机其寻址能力越强,但指令系统也越复杂。MCS-51共有七种寻址方式:1) 寄存器寻址方式寄存器寻址就是操作数在寄存器中,因此制定了寄存器就能得到操作数。典型的如:MOV A, R0 ;把寄存器R0中的内容(操作数)传送到累加器A中。该寻址方式的寻址范围包括:1 四个寄存器组(共32个通用寄存器);2 部分专用寄存器。2) 直接寻址方式指令中,操作数直接以单元地址的形式给出。典型如:MOV A, 3AH ;把内部RAM 3AH单元中的数据传送给累加器A。这种寻址方式的寻址范围只限于内部RAM,即低128单元+专用寄存器(以单元地址或寄存器符号形式给出)。3) 寄存器间接寻址方式寄存器中存放的是操作数的地址,即操作数是通过寄存器间接得到的。为了区别寄存器寻址和寄存器间接寻址,在寄存器间接寻址方式中,应在寄存器的名称前加标志“”。典型如:MOV A, R0 ;以R0寄存器内容3AH为地址,把该地址单元的内容送入累加器A其寻址范围为:1 内部RAM低128单元使用R0或R1作为间址寄存器,其通用形式为Ri(i=0或1)。2 外部RAM的64KB使用DPTR作为间址寄存器,其形式为DPTR。3 外部RAM的低256单元除可以使用DPTR作为间址寄存器寻址外,还可使用R0或R1(操作码为MOVX)。4 堆栈操作指令即以堆栈指针SP作为间址寄存器的间接寻址方式。4) 立即寻址方式操作数(立即数)在指令中直接给出。为了与直接寻址指令中的直接地址相区别,在立即数前加标志“#”。典型如:MOV A, #3AH ;把数据3AH送累加器AMOV DPTR, #data16 ;MCS-51指令系统中唯一的一条16位立即寻址指令5) 位寻址方式MCS-51有位处理功能,可以对数据位进行操作,响应地有位寻址方式。典型如:ANL C, 30H ;累加位C和地址30H的位进行逻辑与其寻址范围:1 内部RAM中的位寻址区(单元地址为20H2FH,位地址为00H7FH)。2 专用寄存器(11个)的可寻址位(80位),可寻址位有四种表示方法:A) 直接使用为地址。如PSW寄存器的第5位地址为D5H。B) 位名称表示。如PSW寄存器的第5位是F0。C) 单元地址+位表示。如D0H单元(即PSW寄存器)的第5位可表示为D0H.5。D) 专用寄存器符号+位表示。如PSW寄存器的第5位可表示位PSW.5。6) 变址寻址方式以DPTR或PC作为基址寄存器,以累加器A作为变址寄存器,并以两者内容相加形成的16位地址作为操作数地址。如:MOVC A, A+DPTR ;把DPTR和A的内容相加,再把所得到的程序存储器地址单元的内容送A。变址寻址的指令都是一字节指令,且只有三条:MOVC A, A+DPTRMOVC A, A+PCJMP A+DPTR变址寻址方式只能对程序存储器进行寻址,或可说它是专门针对程序存储器的寻址方式。7) 相对寻址方式位实现程序的相对转移而设计,把PC的当前值加上偏移量rel(8位二进制补码,范围为-128+127)就构成了程序转移的目的地址。单片机执行指令的过程单片机的工作过程,实际上就是周而复始地取指令和执行指令的过程。在取指令阶段,单片机从程序存储器中取出指令的操作码,送入指令寄存器,再经过指令译码器译码,产生一系列的控制信号,然后进入指令执行阶段,即利用指令译码产生的控制信号,进行本指令规定的数据操作。例 使单片机进行5+3操作,汇编程序如下:MOV A, #05HADD A, #03HMOV R0, A汇编程序以指令代码形式存入程序存储器,共占五个存储单元(假设从8000H单元开始存放)。首先,程序计数器PC赋以第一条指令的地址8000H。开始执行程序,先进入第一条指令的取指令阶段,其操作步骤为:1) PC的内容作为地址送出;2) PC指向下一存储单元;3) 送出的地址选中8000H单元;4) 单片机发出命令;5) 在命令控制下,将8000H单元内容(指令的操作码)读出;6) 读出的操作码送指令寄存器IR;7) 经指令译码器译码,发出执行本指令所需的各种控制信号。数据传送类指令单片机的数据传送指令包括寄存器、累加器、RAM单元以及专用寄存器之间的相互数据传送。内部RAM数据传送指令组1) 立即数传送指令8位立即数传送指令共四条:MOV A, #dataMOV direct, #dataMOV Rn, #dataMOV Ri, #data16位立即数传送指令:MOV DPTR, #data16 ;将立即数的高8位送DPH,立即数的低8位送DPL2) 内部RAM单元之间的数据传送指令共五条:MOV direct2, direct1MOV direct, RnMOV Rn, directMOV direct, RiMOV Ri, direct内部RAM单元之间的数据传送可以使用直接、寄存器以及寄存器间接寻址方式。3) 累加器的数据传送指令共有六条:MOV A, RnMOV Rn, AMOV A, directMOV direct, AMOV A, RiMOV Ri, A外部RAM数据传送指令组4) 使用DPTR进行间接寻址MOVX A, DPTRMOVX DPTR, A这两条指令的寻址范围为64KB5) 使用Ri进行间接寻址MOVX A, RiMOVX Ri, A由于Ri(i=0,1)是8位地址指针,因此指令的寻址范围只限于外部RAM的低256个单元。外部RAM的数据传送只能通过累加器A进行。程序存储器(内部程序存储器+外部程序存储器)数据传送指令组程序存储器只能读,不能写,故其数据传输都是单向的,且只能向累加器A传送。共两条:MOVC A, A+DPTR ;查表范围可达整个程序存储器的64KB空间MOVC A, A+PC ;只能在当前指令下面的256个地址单元内查表这两条指令(通常用于查表操作)都是变址寻址方式,其寻址范围为64KB。数据交换指令组(主要用于十六进制数或BCD码的数位交换)6) 正字节交换指令共三条:XCH A, RnXCH A, directXCH A, Ri7) 半字节交换指令XCHD A, Ri8) 累加器高低半字节交换指令SWAP A9) 堆栈操作指令组共两条:PUSH direct ;进栈指令POP direct ;出栈指令堆栈操作实际上是通过堆栈指示器SP进行的间接寻址读写操作。数据传输类指令不影响PSW位的状态算术运算类指令MCS-51指令系统中只有8位数而没有16位数的运算指令。加法指令组共四条:ADD A, RnADD A, directADD A, RiADD A, #data加法运算影响PSW为的状态。若位3有进位,则AC=1;若位7有进位,则CY=1;若带符号数相加有溢出,则OV=1。带进位加法指令组常用于多字节数的加法运算共四条:ADDC A, RnADDC A, directADDC A, RiADDC A, #data带借位减法指令组共四条:SUBB A, RnSUBB A, directSUBB A, RiSUBB A, #data减法运算只有带借位减法指令(影响PSW位)。若需进行不带借位的减法运算,只需把进位标志位清0加1指令组共五条:INC AINC RnINC directINC RiINC DPTR这些指令操作不影响程序状态字PSW。减1指令组共四条:DEC ADEC RnDEC directDEC Ri这些指令操作不影响PSW位。乘除指令组乘除指令时整个指令系统中执行时间最长的指令(需要四个机器周期)。MUL AB ;累加器A和寄存器B中的两个无符号8位数相乘,所得16位乘积的低8位放入A,高8位放入BDIV AB;累加器A(被除数)和寄存器B(除数)中的两个无符号8位数相除,所得商放入A,余数放入B除法运算影响PSW位的状态。CY总是被清0;OV除B=0(除数为0)之外,都被清0十进制调整指令该指令是一条专用指令,用于对BCD码时间值数加法运算的结果进行修正。修正方法分为三种情况:1. 累加器低4位大于9或AC=1;低位+06H修正2. 累加器高4位大于9或CY=1;高位+60H修正3. 累加器高4位为9,低4位大于9;高位+60H修正指令操作通过逻辑电路实现,具体格式为:DA A逻辑运算及位移类指令逻辑“与”运算指令组共六条:ANL A, RnANL A, directANL A, RiANL A, #dataANL direct, AANL direct, #data逻辑“或”运算指令组共六条:ORL A, RnORL A, directORL A, RiORL A, #dataORL direct, AORL direct, #data逻辑“异或”运算指令组共六条:XRL A, RnXRL A, directXRL A, RiXRL A, #dataXRL direct, AXRL direct, #data累加器清0取反指令组CLR A ;累加器清0CPL A ;累加器取反移位指令组MCS-51的移位指令只能对累加器A进行操作。共四条:RL A ;循环左移RR A ;循环右移RLC A ;带进位循环左移RRC A ;带进位循环右移控制转移类指令控制转移类指令的基本功能是通过强迫改变PC值来实现的。可分成无条件转移和有条件转移两类。无条件转移指令组共四条:LJMP addr16 ;长转移指令(三字节指令),其转移范围可达64KBAJMP addr11 ;绝对转移指令(两字节指令),以指令提供的11位地址去替换PC的低11位内容,形成的新PC值即转移的目的地址SJMP rel ;短转移指令,目的地址=(PC)+2+rel,其中rel是一个带符号的8位二进制补码,因此当rel为正时向前转移;为负时向后转移JMP A+DPTR ;变址寻址转移指令,以DPTR的内容为基址,A的内容作为变址,可实现程序的多分支转移条件转移指令组1) 累加器判零转移指令(两字节指令)2) 数值比较转移指令共四条:(三字节指令)CJNE A, #data, relCJNE A, direct ,relCJNE Rn, #data, relCJNE Ri, #data, rel ;内部RAM前128单元与立即数不相等,则转换3) 减1条件转移指令主要用于控制程序循环共两条:DJNZ Rn, rel ;两字节指令,寄存器内容减1,若不为0则转移DJNZ direct ,rel ;三字节指令,直接寻址单元内容减1,若不为0则转移子程序调用与返回指令组子程序调用指令共两条:用于断点保护和构造目的地址ACALL addr11 ;绝对调用指令(两字节指令),其操作内容可表示为:LCALL addr16 ;长调用指令(三字节指令),其操作内容可表示为:返回指令组共两条:RET ;子程序返回指令,其操作内容可表示为:RET1 ;中断服务子程序返回指令,除具有子程序返回指令的全部功能外,还有清楚中断响应时置位的优先级状态,开放低级中断和恢复中断逻辑等功能空操作指令(单字节指令)NOP ;控制CPU不作任何操作,只消耗一个机器周期,由于程序的等待或时间延时布尔变量操作类指令硬件上,MCS-51内有一个布尔处理机(一位的微处理器),它以进位标志作为累加位,以内部RAM位寻址区的128个可寻址位作为存储位。软件上,包括:1) 位传送指令组共两条:MOV CY ,bitMOV bit ,CYCY位作为中间变量,实现两个可寻址位之间的位传送2) 位置位复位指令组共四条:CLR CY ;清零CLR bitSETB CY ;置1SETB bit3) 位运算指令组共六条:ANL CY ,bit ;位“与”ANL CY ,/bitORL CY ,bit ;位“或”ORL CY ,/bitCPL CY ;位“非”CPL bit4) 位控制转移指令组1 以CY状态为条件的转移指令(两字节指令)共两条:2 以位状态为条件的转移指令(三字节指令)共三条:JB bit ,rel ;位状态为1,则转移JNB bit ,rel ;位状态为0,则转移JBC bit ,rel ;位状态为1,则转移并使该位清0存储器与存储器扩展单片机的扩展结构单片机扩展通常采用总线结构形式。该结构可以大大减少单片机系统中传输线数目,提高系统的可靠性,增强系统的灵活性。所谓总线,就是连接系统中各扩展部件的一组公共信号线。按其功能通常把系统总线分为地址总线、数据总线和控制总线。其中:地址总线(AB)用于传送单片机送出的地址信号,以便进行存储单元和IO端口的选择。只能由单片机向外发出(单向传输)。地址总线的数目决定可直接访问的存储单元的数目,MCS-51存储器扩展最多可达64KB,因此最多需16位地址。数据总线(DB)用于在单片机和存储器之间或者单片机与IO口之间传送数据(双向传输)。数据总线的位数与单片机处理数据的字长一致,MCS-51的数据总线为8位。控制总线(CB)是一组控制信号线,单根信号线是单向的,但不同方向的控制信号线可实现双向传输(单片机给部件,部件给单片机)。单片机扩展的实现单片机芯片本身没有提供专用的地址和数据线,需借用它的IO口线改造,因此单片机扩展的首要问题就是构造系统总线。具体构造方法如下:1) 以P0口的8位口线作为地址/数据线2) 以P2口的口线作为高位地址线3) 控制信号扩展存储器编址及映像存储器编址,就是使用系统提供的地址线,通过适当地连接,最终达到一个编址唯一对应存储器中一个单元的目的。存储编址分两个层次:存储芯片的选择和芯片内部存储单元的选择。存储器映像则研究各部分存储器在整个存储空间中所占据的地址范围,以便为存储器的使用提供依据。存储器编址存储器编址主要是研究芯片的选择问题,芯片的选择共有两种方法:线选法和译码法。1)线选法直接以系统的地址位作为存储芯片的片选信号。这种编址方法对存储空间的使用是断续的,不能充分有效地利用存储空间,扩充存储容量受限,只适用于小规模系统的存储器扩展。译码法使用译码器对系统的高位地址进行译码,以其译码输出作为存储芯片的片选信号。这种方法能有效地利用存储空间,适用于大容量、多芯片存储器的扩展。程序存储器扩展程序存储器扩展使用只读存储器ROM芯片。ROM存储器是根据内部MOS管阵列的通断来存储二进制信息的,根据编程方式(编程控制MOS管阵列的状态)的不同,ROM共分为三种:1) 掩膜ROM其编程是在生产过程中,以掩膜工艺实现的。这种ROM芯片存储结构简单,集成度高,但工艺成本较高,只适于大批量生产。2) 可编程ROM(PROM)其程序是在由用户写入的(只能写一次,不能再修改)。3) 可改写ROM(EPROM)其程序由用户写入,允许反复擦出。按擦出方式不同又可分为EPROM(紫外线擦出)和EEPROM(电擦除)。数据存储器扩展数据存储器就是随机存储器RAM。RAM可进行读写操作,但其断电后存储的信息会立即消失。按其工作方式可分为静态RAM(SRAM)和动态RAM(DRAM)两种。动态RAM集成密度大,功耗低,价格便宜,但需要增加刷新电路,因此在单片机系统中很少使用。扩展既可读又可写的程序存储器在单片机中,程序存储器和数据存储器是截然不同的,它们使用不同的片选信号,通过不同的指令进行操作。但不同的存储形式会给程序调试带来困难,ROM中的程序只能运行,而RAM中的程序虽然可修改但不能运行。为解决这一矛盾,可把RAM经过连接充作ROM使用,使之既可运行程序,又可修改程序。单片机存储器的特点单片机存储器比一般微型机存储器复杂,其具体表现就是多种存储器的交叠。为区分四种存储空间,使之不发生混淆,可通过硬件和软件两种措施。硬件措施是指对不同的存储空间使用不同的控制信号;软件措施指通过不同的指令访问不同的存储空间。交叠存储器的使用1) 内部ROM与RAM的区分通过指令区分,ROM使用“MOVC”;RAM使用“MOV”。2) 外部ROM与RAM的区分通过指令区分,ROM使用“MOVC”;RAM使用“MOVX”。此外,两者有不同的选通信号,PSEN作为ROM的选通信号;RD和WR作为RAM的选通信号。3) 内外RAM的区分通过指令区分。4) 内外ROM的区分单片机的内外ROM是统一编址的,对于像8051这样有内部ROM的单片机,应使EA(访问内外ROM控制)=1。但这样外部的0000H0FFFH(4KB存储空间)就被损失了。中断与定时中断技术就是解决资源竞争的可行办法,采用中断方法可以使多项任务共享一个资源,所以中断技术实质上就是一种资源共享技术。中断功能1) 实现CPU与外设的速度配合由于许多外设速度较慢,无法与CPU进行直接的同步数据交换,为此可通过中断方法来实现CPU与外设的协调工作。采用中断技术,不但能实现主机和一台外设并行工作,而且还可以实现主机和多台外设并行工作。这样不但提高了CPU的利用率,也提高了数据的输入/输出效率。2) 实现实时控制在自动控制系统中,各控制参量可能随机地在任何时刻向计算机发出请求,要求进行某种处理,对此,CPU必须作出快速响应和及时处理。这种实时处理功能只能靠中断技术才能实现。3) 实现故障的及时发现系统在运行过程中,常会突然发生一些事先无法预料的故障,有了中断技术,计算机就能对这些故障及时发现并进行自动处理。4) 实现人机联系现代计算机交互只能先通过键盘发出中断请求,在获得机器准许后,方可进行干预。中断处理流程1) 现场保护与恢复为了使中断服务程序的执行不破坏CPU中寄存器或存储单元的原有内容,因此要把CPU中有关寄存器或存储单元的内容推入堆栈中进行保护(现场保护)。中断结束后,在返回主程序前,则需把保存的现场内容从堆栈中弹出,以恢复寄存器或存储单元的原有内容(现场恢复)。2)开中断和关中断在中断处理进行的过程中可能又有新的中断请求到来,但现场保护和恢复的操作是不允许打扰的,否则就会造成原有内容的破坏。为此在进行现场保护和恢复要先关闭中断系统,待现场保护和恢复完成后,使用系统的中断嵌套功能,再开放中断系统。3)中断服务程序任何中断都要转去执行中断服务程序(子程序),进行中断服务。4)中断返回返回主程序是通过一条专用的中断返回指令完成的,因此这条指令必然是中断服务程序的最后一条指令。MCS-51中断系统中断源MCS-51是一个多中断源的单片机,有三类共五个中断源,分别称为外部中断(两个)、定时中断(两个)和串行中断(一个)。1) 外中断类外中断是由外部原因引起的,共有两个中断源,即外部中断0和外部中断1。它们的中断请求信号分别由引脚INT0(P3,2)和INT1(P3,3)引入。外部中断请求有电平方式和脉冲方式两种信号方式。可通过有关控制位的定义进行规定。电平方式为低电平有效,只要在单片机中断请求引入端口上采样到有效地低电平时,就可激活外部中断。脉冲方式是脉冲的后沿负跳有效。在这种中断请求方式下,中断请求信号的高电平和低电平状态都应至少维持一个机器周期,以确保电平变化能被单片机采样。2) 定时中断类这种中断请求是在芯片内部发生的,因此无需再芯片上设置引入端。当计数结构发生溢出时,就以计数溢出信号作为中断请求。3) 串行中断类每当串行口接受或发送完一组串行数据时,就产生一个中断请求,因此不需在芯片上设置引入端。中断控制与中断控制有关的寄存器共有四个,即定时器控制寄存器、中断允许控制寄存器、中断优先控制寄存器以及串行口控制寄存器。均为专用寄存器。1) 定时器控制寄存器(TCON)该存储器地址88H,位地址8FH88H。其内容如下:该寄存器既有定时器/计数器的控制功能,又有中断控制功能,与中断有关的控制位共六位:IE0(IE1)外中断请求标志位IT0(IT1)外中断请求信号方式控制位TF0(TF1)计数溢出标志位2) 串行口控制寄存器(SCON)该寄存器地址98H,位地址9FH98H。其内容如下:其中与中断有关的控制位共两位:TI串行口发送中断请求标志位RI串行口接收中断请求标志位3) 中断允许控制寄存器(IE)该寄存器地址A8H,位地址AFHA8H。其内容如下:其中与中断有关的控制位共六位:EA中断允许总控制位EX0(EX1)外部中断允许控制位ET0(ET1)定时/计数中断允许控制位ES串行中断允许控制位MCS-51通过中断允许控制寄存器对中断实行两级控制。单片机在中断响应后不会自动关闭中断。因此在转中断服务程序后,应使用有关指令禁止中断(软件关闭)。4) 中断优先级控制寄存器(IP)该寄存器地址B8H,位地址为

温馨提示

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

评论

0/150

提交评论