《单片机原理与实验教程》课件第2章_第1页
《单片机原理与实验教程》课件第2章_第2页
《单片机原理与实验教程》课件第2章_第3页
《单片机原理与实验教程》课件第2章_第4页
《单片机原理与实验教程》课件第2章_第5页
已阅读5页,还剩214页未读 继续免费阅读

下载本文档

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

文档简介

第2章MCS-51单片机的硬件组成

2.1MCS-51单片机的外部特性2.2AT89S52单片机的内部组成2.3CPU及复位电路

2.4I/O端口2.5存储器2.6专用功能寄存器2.7中断系统2.8定时器/计数器2.9串行接口2.10看门狗定时器(WDT)2.11掉电模式和空闲模式习题与思考题2.1

MCS-51单片机的外部特性

MCS-51系列单片机产品有8051、8031、8075、80C51、80C31等型号。它们的结构基本相同,其主要差别反映在存储器的配置上。8051内部设有4KB的掩模ROM程序存储器,8031片内没有程序存储器,而8751是将8051片内的ROM换成EPROM。本章将介绍Atmel公司的AT89S52单片机的硬件组成。

AT89S52单片机是Atmel公司推出的一款在线可编程单片机,通过相应的ISP软件,用户可对单片机程序存储器Flash中的代码进行方便的改变。它与AT89C52单片机引脚完全兼容。

AT89S52的外型封装有两种方式:双列直插式40脚封装(DIP)和方形44脚封装(PLCC)。图2-1(a)为两种封装方式的引脚排列图。图2-1

MCS-51单片机引脚及总线结构

(a)引脚排列;(b)外部总线结构2.1.1引脚说明及特性

1.AT89S52的功能特性

AT89S52具有如下的功能特性:(1)兼容MCS-

51系列产品。(2)片内有8KB的、具有ISP功能的Flash存储器。(3)工作电压范围为4~5.5V。(4)工作频率范围为0~33MHz。(5)具有三级编程保护功能。(6)具有256×8位的内部RAM。(7)具有32个可编程I/O口。(8)具有三个16位定时器或计数器。(9)具有八个中断源。(10)含全双工异步串口。(11)具有低功耗模式。(12)具备看门狗功能。(13)具备在线可编程功能。

2.引脚功能

AT89S52的40条引脚功能说明如下:(1)主电源引脚VSS和VCC。VSS为电源地。VCC正常工作电压为+5V。AT89S系列单片机的工作电压范围为4~5.5V。(2)时钟电路引脚XTAL1、XTAL2。

·XTAL1:片内振荡电路的输入端,是外接晶体的一个引脚。当采用外部振荡器时,此引脚接地。

·XTAL2:片内振荡电路的输出端,是外接晶体的另一端。当采用外部振荡器时,此引脚接外部振荡源。(3)控制信号引脚RST、

·RST:复位引脚。当振荡器运行时,在此引脚上出现两个机器周期的高电平(由低到高跳变),使单片机复位。当看门狗计数满时,单片机复位,RST引脚会有98个时钟周期的高电平输出。可以通过设置特殊功能寄存器AUXR(地址:8EH)的DISRTO位来屏蔽或使能该功能,单片机默认状态是使能该功能。

·:允许地址锁存输出/编程脉冲输入引脚。正常工作时为ALE(允许地址锁存)功能,提供把低字节地址锁存到外部锁存器的信号。ALE引脚以不变的频率(时钟频率的1/6)周期性地发出正脉冲信号,因此,它还可对外部总线结构输出时钟信号,或用于定时目的。但要注意,每当访问外部数据存储器时,将跳过一个ALE脉冲。ALE端输出可以驱动八个TTL电路。对于EPROM型单片机,在用编程器对Flash编程时,此引脚接收编程脉冲(功能)。ALE可以通过设置特殊功能寄存器8EH,使能或禁止ALE信号输出,在禁止时,只有MOVX和MOVC指令才能使ALE有脉冲输出,平时ALE引脚有个弱上拉。:片外程序存储器读选通信号输出引脚。从外部程序存储器中取指令(或数据)期间,在每个机器周期内两次有效。同样可以驱动八个TTL电路。

·

/VPP:片内、片外程序存储器选择输出/编程电压输入引脚。当为高电平时,访问片内程序存储器(程序计数器PC值小于4KB);当为低电平时,访问外部程序存储器。对EPROM型单片机,在EPROM编程期间,此引脚上加12VEPROM编程电源(VPP)。(4)P0口。P0口是8位集电极开路的双向口。P0口作为输出口时可以驱动八个TTL电平。P0口同时可以配置成低8位的地址总线或数据总线,用于访问外部程序或数据,作为总线时P0口有内部上拉。在对内部Flash编程时,P0口可以用于接收数据,但必须要加上拉电阻。(5)P1口。P1口是8位有内部上拉的双向口。P1口可以驱动四个TTL电平。另外,P1.0和P1.1可以配置成定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),详见表2-1。P1口也可以作为编程和验证多功能口,详见表2-1。表2-1

P1口的特殊功能

(6)P2口。P2口是8位有内部上拉的双向口。P2口可以驱动四个TTL电平。在对外部16位地址寻址(MOVX@DPTR)时,P2口可作为高8位地址。当单片机对外部8位地址寻址时(MOV@RI),P2口的输出作为I/O口的值。P2口在对单片机内部Flash编程时可用于接收高位地址和一些控制信号。(7)P3口。P3口是8位有内部上拉的双向口。P3口可以驱动四个TTL电平。在对Flash编程时,P3口可以作为控制线。当作第二功能使用时,每一个功能的定义如表2-2所示。表2-2

P3口的第二功能

2.1.2外部总线

由于单片机本身硬件资源有限,因此在比较复杂的应用场合,其内部资源(如存储器、I/O口或中断源等)往往显得不足,甚至相差很远,这就需要进行外部扩展。为满足系统扩展要求,MCS-51单片机系统采用三总线结构,通过三总线和外部设备相连。三总线分别为地址总线、数据总线和控制总线。(1)地址总线(AB):宽度为16位,对外接存储器可直接寻址范围为64KB。16位地址的高8位由P2口直接输出(A15~A8),P0口输出低8位地址(A7~A0),在允许地址锁存信号ALE作用下,将该低8位地址锁存到外部地址锁存器中,从而让P0口为接收数据做准备。P0口是地址/数据共用端口。(2)数据总线(DB):宽度为8位,由P0口提供(D7~D0)。(3)控制总线(CB):由上述四条控制线、ALE、、RESET和P3口的第二功能状态组成。

MCS-51单片机系统的三总线结构框图如图2-1(b)所示。可见,MCS-51单片机产生的地址、数据和控制信号通过三总线与外部存储器和并行I/O接口芯片的连接简单、方便。2.2

AT89S52单片机的内部组成2.2.1基本组成模块

AT89S52单片机在一块芯片中集成了CPU、RAM、ROM、定时器/计数器、看门狗和多种功能的I/O口设备等,相当于一台计算机所需要的基本功能部件。AT89S52单片机内包含的具体部件如下:

(1)一个8位CPU。

(2)一个片内振荡器及时钟电路。

(3)8KBFlash程序存储器。

(4)256BRAM数据存储器。

(5)三个16位定时器/计数器。

(6)可寻址64KB的外部数据存储器和64KB的外部程序存储器空间的控制电路。

(7)32条可编程的I/O线(4组8位并行I/O端口)。

(8)一个可编程全双工串行接口。

(9)八个中断源、两个优先级嵌套中断结构。

AT89S52单片机的框图如图2-2所示,各功能部件由内部总线连接在一起。图2-2AT89S52单片机框图2.2.2内部原理图图2-3是AT89S52内部原理图。下面各节将对原理图中各个部分分别作一介绍。图2-3AT89S52内部结构框图2.3

CPU及复位电路2.3.1CPU

CPU是单片机的核心部件,它由运算器和控制器等部件组成。1.运算器运算器的功能是进行算术运算和逻辑运算。它可以对半字节(4位)、单字节等数据进行操作。例如能完成加、减、乘、除、加1、减1、BCD码和十进制转换、比较等算术运算以及与、或、异或、求补、循环等逻辑操作,操作结果的状态信息送至状态寄存器。运算器还包含一个布尔处理器,用来处理位操作。它是以进位标志位C为累加器的,可执行置位、复位、取反、等于1转移、等于0转移、清0以及进位标志位与其他可寻址的位之间进行数据传送等位操作。它还能使进位标志位与其他可位寻址的位之间进行逻辑与、或操作。

2.程序计数器(PC)程序计数器用来存放即将要执行的指令的地址,共16位,可对64KB程序存储器直接寻址。执行指令时,PC的低8位经P0口输出,高8位经P2口输出。

3.指令寄存器指令寄存器中存放指令代码。CPU执行指令时,由程序存储器中读取的指令代码被送入指令寄存器,经译码器译码后由时钟和控制电路产生相应的控制信号,完成指令功能。

4.时钟和控制电路

1)时钟电路

8051片内有一个由反相放大器所构成的振荡电路,XTAL1和XTAL2分别为振荡电路的输入端和输出端。时钟可以由内部方式产生或外部方式产生。内部方式时钟电路如图2-4(a)所示。在XTAL1和XTAL2引脚上外接定时元件,内部振荡电路就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。晶振频率可以在0~33MHz之间选择,电容值在15~30pF之间选择。电容可起频率微调作用。外部方式的时钟电路如图2-4(b)所示,XTAL1接地,XTAL2接外部振荡器。一般要求输入方波信号的频率低于33MHz。图2-4时钟电路(a)内部方式时钟电路;(b)外部方式时钟电路

2)时序

MCS-51典型的指令周期(执行一条指令的时间称为指令周期)为一个机器周期,一个机器周期由6个状态(12个振荡周期)组成。每个状态又被分成两个时相P1和P2。所以,一个机器周期可以依次表示为S1P1

,S1P2……S6P1

,S6P2

。通常,算术逻辑操作在P1时相进行,而内部寄存器传送在P2时相进行。图2-5给出了8051系列单片机的取指和执行指令的定时关系。这些内部时钟信号不能从外部观察到,所以用XTAL2振荡信号作参考。由图中可看出,低8位地址的锁存信号ALE在每个机器周期中两次有效:一次在S1P2与S2P1期间,另一次在S4P2与S5P1期间。对于单周期指令,当操作码被送入指令寄存器时,便从S1P2开始执行指令。如果是双字节单机器周期指令,则在同一机器周期的S4期间读入第二个字节;若是单字节单机器周期指令,则在S4期间仍进行读,但所读的这个字节操作码被忽略,程序计数器也不加1。在S6P2结束时完成指令操作。图2-5(a)和(b)给出了单字节单机器周期和双字节单机器周期指令的时序。

8051的指令大部分能在一个机器周期内执行完。乘(MUL)和除(DIV)指令是仅有的需要两个以上机器周期的指令,它们占用四个机器周期。对于双字节单机器周期指令,通常是在一个机器周期内从程序存储器中读入两个字节,惟有MOVX指令例外。MOVX是访问外部数据存储器的单字节双机器周期指令。在执行MOVX指令期间,外部数据存储器被访问且被选通时跳过两次取指操作。图2-5中(c)和(d)给出了一般单字节双机器周期指令的时序。图2-58051的取指/执行时序

(a)单字节单机器周期指令(例:INCA);

(b)双字节单机器周期指令(例:ADDA*DATA);

(c)单字节双机器周期指令(例:INCDPTR);

(d)MOVX指令(单字节双机器周期)

2.3.2复位和复位电路

MCS-51单片机的复位电路如图2-6所示。在RESET(图中表示为RST)输入端出现高电平时实现复位和初始化。在振荡器运行的情况下,要实现复位操作,必须使RST引脚至少保持两个机器周期(24个振荡器周期)的高电平。CPU在第二个机器周期内执行内部复位操作,以后每一个机器周期重复一次,直至RST端电平变低。复位期间不产生ALE及信号。内部复位操作使堆栈指示器SP为07H,各端口都为1(P0~P3口的内容均为0FFH),特殊功能寄存器都复位为0,但不影响RAM的状态。当RST引脚返回低电平以后,CPU从0地址开始执行程序。复位后,各内部寄存器状态见表2-3。图2-6(a)所示为上电自动复位电路。上电瞬间,RST端的电位与VCC相同,随着RC电路充电电流的减小,RST端的电位逐渐下降。只要RST端保持10ms以上的高电平就能使MCS-51单片机有效的复位。复位电路中的RC参数通常由实验调整。当振荡频率选用6MHz时,电容C选22μF、电阻R选1kΩ便能可靠地实现自动复位。若采用RC电路接施密特电路的输入端,施密特电路输出接MCS-51复位电路和外围电路的复位端,即可实现系统同步复位。图2-6(b)中,开关S通常是轻触开关,可实现手动复位。图2-6复位电路a)上电自动复位电路;(b)开关复位电路表2-3内部寄存器初始状态

2.4

I/O端口

MCS-51单片机设有四组8位双向I/O端口(P0、P1、P2、P3),每一条I/O线都能独立地用做输入或输出。P0口为三态双向口,能驱动八个TTL电路。P1、P2、P3口为准双向口(在用做输入线时,口锁存器必须先写入“1”,故称为准双向口),负载能力为四个TTL电路。2.4.1端口功能

1.P0口

P0口可以作为输入/输出口,但在实际应用中通常作为地址/数据总线口,即低8位地址线与数据线分时使用P0口。低8位地址由ALE信号的下降沿使它锁存到外部地址锁存器中,而高8位地址由P2口输出。

2.P1口

P1口每一位都能作为可编程的输入或输出线。

3.P2口

P2口可以作为输入口或输出口使用。外接I/O设备时,又可作为扩展系统的地址总线,输出高8位地址,与P0口一起组成16位地址总线。

4.P3口

P3口为双功能口。作为第一功能使用时,其功能同P1口,为普通I/O口。当作为第二功能使用时,每一个功能的定义如表2-2所示。2.4.2端口操作

在讨论端口的操作前,先要了解一下端口的结构,因为四个端口的功能有所不同,它们的电路结构也不完全一样,但工作原理基本相似。图2-7所示为四个端口每一个典型位的功能图解。图2-7端口锁存器和缓冲器(a)P0口位结构;(b)P1口位结构;(c)P2口位结构;(d)P3口位结构1.P0口

P0口是一个8位漏极开路型双向I/O口。图2-7(a)是P0口中的1位结构图,其中包含一个输出锁存器、两个三态缓冲器、一个输出驱动电路和一个输出控制电路。输出驱动电路由两个场效应管V1和V2组成,其工作状态受输出控制电路的控制。控制电路包括一个与门、一个反相器和模拟转换开关MUX。模拟开关的位置由来自CPU的控制信号决定,当控制信号为低电平时,它把输出级与锁存器的端接通。同时,因为与门输出为低电平,输出级中的场效应管V1处于截止状态,所以输出级是漏极开路的开漏电路。这种情况时,P0口可用做一般的I/O线。其输出和输入操作如下:

·当CPU向端口输出数据时,写脉冲加在触发器的时钟端CLR上,此时与内部总线相连的D端的数据经反相后出现在端上,再经V2管反相,于是在P0口这一位引脚上出现的数据正好是内部总线上的数据(当P0口作输出口使用时,输出级属开漏电路,在驱动NMOS电路时应外接上拉电阻)。

·当输入操作时,端口中的两个三态缓冲器用于读操作。图2-7(a)中,缓冲器N2用于读端口引脚的数据。当执行一般的端口输入指令时,读脉冲把三态缓冲器打开,于是端口上的数据将经过缓冲器输送到内部总线。缓冲器N1用于读取锁存器中Q端的数据。输入操作时,Q端的数据实际上与引脚处的数据是一致的,结构上的这种安排是为了适应“读—修改—写”这类指令的需要。这类指令的特点是:先读端口,随之可以对读入的数据进行修改,然后再写到端口上。例如,逻辑与指令(ANLP0,A),此指令的功能是先把P0口数据读入CPU,随后同累加器A中的数据按位进行逻辑与操作(即对读入的数据做修改),最后再把结果写回P0口。对于“读—修改—写”这类指令,不直接读引脚上的数据而读锁存器Q端上的数据是为了避免错读引脚上的电平信号。例如,用一条口线去驱动一个晶体管的基极,当向此口线写1时,晶体管导通并把引脚上的电平拉低。这时,若从引脚读取数据,就把该数错读为0(实际上应是1),而从锁存器Q端输入,则能得到正确的结果。由图2-7(a)可知,当读引脚操作(输入)时,引脚上的外部信号既加在三态缓冲器N2的输入端上,又加在输出级场效应管(V2)的漏极上,若此时V2是导通的(例如曾输出数据0),因而引脚上的电位被钳在0电平上。为使引脚上输入的逻辑电平能正确地读入,在输入数据时,要先向锁存器写1,使其端为0,使输出级V1和V2两个管子均被截止,引脚处于悬浮状态,为高阻抗输入。因此,作为一般的I/O口使用时,P0口也是一个准双向口。当P0口作为地址/数据总线分时使用时,这时控制信号为高电平,转换开关MUX把反相器输出端与V2接通,同时把与门开锁。输出的地址或数据信号通过与门驱动V1管,同时通过反相器驱动V2管,完成信息传送。

2.P1口

P1口是一个带有内部上拉电阻的8位准双向口,做通用的I/O口使用。P1口的结构如图2-7(b)所示,在输出驱动部分接有内部上拉电阻。当用做输出线时,将1写入锁存器,使输出驱动器V管截止,输出线由内部上拉电阻拉成高电平(输出1)。将0写入锁存器时,V导通,输出为0。P1口作为输入线时,必须先将1写入锁存器,使V截止,把该口线由内部上拉电阻拉成高电平。于是,当内部总线输入为高电平信号时,该口线为1,当内部总线输入为低电平信号时,该口线为0,从而使输入端的电平随输入信号而变,读入正确的数据信息。P1口作为输入时,可被任何TTL电路和MOS电路所驱动。由于具有内部上拉电阻,因此也可以直接被集电极开路或漏极开路的电路驱动而不必外加上拉电阻。

CPU读P1口有两种情况:读引脚和读锁存器状态。读引脚时,打开三态门N2,读入引脚上的输入状态(如MOVA,P1指令);读锁存器状态时,打开三态门N1,与P0口的I/O功能一样,P1口可以进行“读—修改—写”操作。

3.P2口

P2口为一个带有内部上拉电阻的8位准双向口,每位的结构如图2-7(c)所示。P2口可以作为通用的I/O口使用,外接I/O设备。P2口也可以作为扩展系统时的地址总线口(输出高8位地址)使用,这由控制信号控制转换开关来实现。当转换开关(MUX)倒向左边时,P2口作通用的I/O口使用,作用和P1口相同。当作为地址总线口使用时,MUX在CPU的控制下将地址线与反相器接通,从而在P2口的引脚上输出地址(A15~A8)。P2口的地址信息来源于PCH和DPH。

4.P3口

P3口是一个带有内部上拉电阻的8位准双向I/O口,且是一个双功能口。P3口的每一位的结构如图2-7(d)所示。当它作为第一功能口(通用的I/O口)使用时,工作原理与P1口和P2口类似,但第二输出功能线保持为高电平,使与非门N3对锁存器输出(Q端)畅通(与非门N3的输出只取决于Q状态)。当P3口作为第二功能使用时,相应位的锁存器必须为“1”状态,使与非门N3的输出电平由第二输出功能线的状态来确定,或使此口线允许输入第二功能信号。对于P3口,不管是作通用输入口还是作第二功能输入口,相应位的锁存器和第二输出功能端都必须为1。在P3口的引脚信号输入通道中有两个缓冲器N2和N4,第二输入功能信号取自缓冲器N4的输出端,通用输入信号取自缓冲器N2的输出端。

P3口的第二功能定义见表2-2。2.5存储器

MCS-51的存储器结构与常见的微型计算机不同,它把程序存储器和数据存储器分开,各有自己的寻址系统、控制信号和功能。程序存储器用来存放程序和始终要保留的常数。数据存储器通常用来存放程序运行中所需要的常数或变量。从物理地址空间看,MCS-51有四个存储器地址空间,即片内程序存储器、片外程序存储器、片内数据存储器和片外数据存储器。MCS-51的存储器结构如图2-8所示。图2-8

8051存储器

2.5.1程序存储器程序存储器是用来存放已调试好的固定程序和表格常数的。单片机中内含的程序存储器主要有只读存储器(ROM)、紫外线擦除电可编程只读存储器(EPROM)和闪速存储器(FlashROM)。Flash存储器是一种电擦写的程序存储器,写入的内容不易丢失,编程和擦除的速度快,可在线编程,也可通过常规的编程器编程,与MCS-51单片机系列完全兼容,且具有容量大、功耗低、价格便宜的特点,还具有超强的加密功能。AT89S52内部有8KB的Flash存储器。程序存储器是以程序计数器(PC)作地址指针的,MCS-

51系列单片机有16位地址总线,故可寻址的地址空间为64KB。AT89S52中驻留有地址空间的8KBFlash程序存储器(内部程序存储器),而在8031片内,则无内部程序存储器,需外部扩展EPROM。

MCS-51单片机中,64KB程序存储器的地址空间是统一的。对于有内部ROM的单片机,在正常运行时,应把引脚接高电平,使程序从内部ROM开始执行,当PC值超出内部ROM的容量时,会自动转向外部程序存储器空间。因此,始终接低电平时,则系统只从外部程序存储器中取指令。注意:MCS-51单片机复位后程序计数器(PC)的内容为0000H,因此系统从0000H单元开始取指并执行程序,它是系统执行程序的起始地址。通常在该单元中存放一条跳转指令,而用户程序从跳转地址开始存放。2.5.2内部数据存储器

MCS-51单片机的数据存储器无论在物理上或逻辑上都分为两个地址空间:一个为内部数据存储器,访问内部数据存储器用MOV指令;另一个为外部数据存储器,访问外部数据存储器用MOVX指令。内部数据存储器是最灵活的地址空间,它分成物理上独立的且性质不同的几个区:

·00H~7FH(0~127)单元组成的低128B地址空间的RAM区;

·80H~FFH(128~255)单元组成的高128B的RAM区(仅在8032/8052单片机中有这一区,AT89S52属于这个区);

·128B地址空间的专用功能寄存器(又称特殊功能寄存器)区。在8051单片机中,只有低128B的RAM区和128B的专用功能寄存器区。两区地址空间是相连的。专用功能寄存器(SFR)地址空间为80H~FFH。注意:128B的SFR区中只有26B是有定义的,若访问的是这一区中没有定义的单元,则得到的是一个随机数。内部RAM区中不同的地址区域的功能结构如图2-9所示。其中,00H~1FH(0~31)共32个单元是四个通用工作寄存器区,每一个区有八个工作寄存器,编号为R0~R7,如表2-4所示。每一区中的R0~R7地址见表2-5。图2-9MCS-51内部RAM存储器结构表2-4寄存器和RAM地址对照表

表2-5

工作寄存器区选择

当前程序使用的工作寄存器区是由程序状态字PSW(特殊功能寄存器,字节地址为D0H)中的D4、D3位(RS1和RS0)来指示的,PSW的状态和工作寄存器区对应关系见表2-4。

CPU通过对PSW中的D4、D3位内容的修改,就能任选一个工作寄存器区。这个特点使MCS-51具有快速现场保护功能。如果用户程序不需要4个工作寄存器区,则不用的工作寄存器区单元可以作一般的RAM使用。在一个实际的程序中,往往需要一个后进先出的RAM区,以保持CPU的现场,这种后进先出的缓冲器区称为堆栈(堆栈的用途详见指令系统分析和中断的内容)。MCS-51的堆栈原则上可以设在内部RAM的任意区域内,但一般设在30H~7FH的范围内。栈顶的位置由栈指针SP指出。

2.5.3外部数据存储器

MCS-51具有扩展64KB的外部数据存储器和I/O口的能力,这对很多应用领域已足够使用。对外部数据存储器的访问采用MOVX指令,用间接寻址方式,R0、R1和DPTR都可作为间址寄存器使用。2.6专用功能寄存器

MCS-51单片机内的锁存器、定时器、串行接口数据缓冲器以及各种控制寄存器和状态寄存器都是以专用功能寄存器(或称特殊功能寄存器)的形式出现的,它们分散地分布在内部RAM地址空间范围(80H~FFH)内。表2-6列出了这些专用功能寄存器(SFR)的助记标识符和地址,其中大部分寄存器的应用将在后面详述,这里仅作简单介绍。表2-

7是其功能的简要说明。表2-6专用功能寄存器(除PC外)和复位

表2-7

专用功能寄存器(除PC外)

2.6.1累加器(ACC)

累加器是一个最常用的专用寄存器。大部分单操作数指令的操作取自累加器,很多双操作数指令的一个操作数也取自累加器。加、减、乘、除算术运算指令的运算结果都存放在累加器A或A、B寄存器对中。指令系统中用A作为累加器的助记符。

2.6.2B寄存器(B)

在乘、除指令中,用到了B寄存器,乘法指令的两个操作数分别取自A寄存器和B寄存器,其结果存放在A、B寄存器对中;除法指令中,被除数取自A寄存器,除数取自B寄存器,商数存放于A寄存器,余数存放于B寄存器。在其他指令中,B寄存器可作为RAM中的一个单元来使用。2.6.3程序状态字(PSW)

程序状态字是一个8位寄存器,它包含了程序状态信息。此寄存器的结构如下:其中PSW.1未用。其他各位说明如下:

·CY(PSW.7):进位标志。此位在执行某些算术和逻辑指令时,可以被硬件或软件置位或清0。在布尔处理机中它被认为是位累加器,其重要性相当于一般中央处理机中的累加器A。

·AC(PSW.6):辅助进位标志。当进行加法或减法操作而产生由低4位数(一位十进制)向高4位数进位或借位时,AC位将被硬件置位,否则就被清0。AC被用于十进制转换,详见DAA指令。

F0(PSW.5):用户定义的一个状态标志位。此标志位可以用软件来置位或清0,也可以用软件测试F0以控制程序的流向。

·RS1、RS0(PSW.4,PSW.3):寄存器区选择控制位。此两位可以用软件来置位或清0,以确定工作寄存器区。RS1、RS0与寄存器区的对应关系如下:

RS1

RS0

区域

0

0区0(00H~07H)

0

1区1(08H~0FH)

1

0区2(10H~17H)

1

1区3(18H~1FH)

·OV(PSW.2):溢出标志。当执行算术指令时,此位由硬件置位或清0,以指示溢出状态。当执行加法指令ADD时,若用C6表示d6位向d7位有进位而用C7表示d7位向CY位有进位,则有:

OV=C6

C7

即当d6向d7进位而d7不向CY进位时,或d6不向d7进位而d7向CY进位时,溢出标志OV置位,否则清0。同样,在执行减法指令SUBB时,C6和C7表示有借位。因此,溢出标志在硬件上可以用一个异或门实现。溢出标志常用于用ADD和SUBB指令对带符号数做加、减运算时,OV=1表示加、减运算的结果超出了目的寄存器A所能表示的带符号数(2的补码)的范围(-128~+127),具体参见第3章中关于ADD和SUBB指令的说明。在MCS-51中,无符号数乘法指令MUL的执行结果也会影响溢出标志。若置于累加器A和寄存器B的两个数的乘积超过255,则OV=1,否则OV=0。乘积的高8位放在B内,低8位放在A内。因此,OV=0意味着从A中取得乘积即可,否则要从A、B寄存器对中取得乘积。除法指令DIV也会影响溢出标志。当除数为0时,OV=1,否则OV=0。

·P(PSW.0):奇偶标志。此标志每个指令周期都由硬件来置位或清0,表示累加器A中为1的位数的奇偶数,若1的位数为奇数,则P置位,否则清0。

此标志位对串行通信中的数据传输有重要的意义。在串行通信中常用奇偶校验的办法来检验数据传输的可靠性。在发送端可根据P的值对数据的奇偶位置位或清0。若通信协议中规定采用奇校验的办法,则P=0时,应对数据(假定由A取得)的奇偶位置位,否则就清0。2.6.4堆栈指针(SP)堆栈指针SP是一个8位专用寄存器。它指示出堆栈顶部在内部RAM中的位置。系统复位后,SP初始化为07H,使得堆栈事实上由08H单元开始。考虑到08H~1FH单元分别属于工作寄存器区1~3,若程序设计中要用到这些区,则最好把SP值设置为1FH或更大的值。SP的初始值越小,堆栈深度就可以越深。堆栈指针的值可以由软件改变,因此堆栈在内部RAM中的位置比较灵活。除用软件直接改变SP值外,在执行PUSH和POP指令、各种子程序调用、中断响应、子程序返回(RET)和中断返回(RETI)等指令时,SP值将自动增量或减量。2.6.5数据指针(DPTR)数据指针DPTR是一个16位专用寄存器,其高位字节寄存器用DPH表示,低位字节寄存器用DPL表示,既可以作为一个16位寄存器DPTR来处理,也可以作为两个独立的8位寄存器DPH和DPL来处理。

DPTR主要用来存放16位地址,当对64KB外部数据存储器空间寻址时,可以作为间接地址寄存器用,相关的指令有:

MOVXA,@DPTR

MOVX@DPTR,A在访问程序存储器时,DPTR可以用作基址寄存器,有一条采用基址+变址寻址方式的指令:

MOVXA,@A+DPTR此指令常用于读取存放在程序寄存器内的表格常数。为了方便地同时访问内部和外部数据,在AT89S52中,DPTR由两个寄存器组成:DPTR0和DPTR1,通过设置AUXR1寄存器选择数据指针0或数字指针1为当前数据指针。见2.6.9节AUXR1寄存器说明。2.6.6端口P0~P3专用寄存器P0、P1、P2和P3分别是I/O端口P0~P3的锁存器。P0~P3作为专用寄存器还可以以直接寻址方式用于其他操作指令。关于端口的详细操作见2.4.2节。2.6.7串行数据缓冲器(SBUF)

串行数据缓冲器SBUF用于存放发送或已接收的数据,它实际上由两个独立的寄存器组成,一个是发送缓冲器,另一个是接收缓冲器。当要发送的数据传送到SBUF时,用的是发送缓冲区;当要从SBUF读数据时,则取自接收缓冲器,取走的是刚接收到的数据。(关于串口详细操作详见2.9节)2.6.8定时器/计数器(T0、T1、T2)

AT89S52系统中有三个16位定时器/计数器,分别为T0、T1和T2。它们各由两个独立的8位寄存器组成,共有六个独立的寄存器:TH0、TL0、TH1、TL1、TH2、TL2。可以对这六个寄存器寻址,但不能把T0、T1当作一个16位寄存器来寻址。2.6.9辅助寄存器辅助寄存器由两个寄存器组成:AUXR和AUXR1。AUXR地址为8EH,对应结构如下:其中,“-”表示为保留位。

AUXR寄存器各位的含义如下:

·DISALE:禁止/使能ALE信号。为0时,ALE引脚输出时钟信号,频率为1/6时钟信号频率;为1时,ALE引脚被屏蔽,只有当执行指令MOVX或MOVC时才有输出。

·DISRTO:禁止/使能复位(RESET)信号输出。为0时,复位引脚在复位时输出高电平;为1时,复位引脚只作为输入引脚使用。

·WDIDLE:在空闲模式下禁止/使能看门狗定时器(WDT)。为0时,WDT在空闲模式下继续计数;为1时,WDT在空闲模式下停止计数。

AUXR1地址为A2H,对应结构如下:其中,DPS为数据指针寄存器选择位,为0时,选择DP0L和DP0H为数据指针;为1时,选择DP1L和DP1H为数据指针。2.6.10其他控制寄存器

IP、IE、TMOD、TCON、T2CON、T2MOD、RCAP2H、RCAP2L、WDTRST和PCON等寄存器分别包含有中断系统、定时器/计数器、串行接口和供电方式的控制位和状态位,这些寄存器将在本章的有关节中叙述。2.7中断系统在CPU与外设交换信息时,存在着一个快速的CPU与慢速的外设间的矛盾。为解决这个问题,提出了中断的概念。良好的中断系统能提高计算机实时处理能力,实现CPU与外设分时操作和自动处理故障,从而扩大计算机的应用范围。当CPU正在处理某项事务的时候,如果外界或内部发生了紧急事件,要求CPU暂停正在处理的工作而转去处理这个紧急事件,待处理完以后再回到原来被中断的地方,继续执行原来被中断的程序,这样的过程称为中断。向CPU提出中断请求的源为中断源。微型计算机一般允许有多个中断源。当几个中断源同时向CPU发出请求时,CPU应优先响应最需要紧急处理的中断请求。为此,需要规定各个中断源的优先级,使CPU在多个中断源同时发出中断请求时能找到优先级高的中断源,响应它的中断请求。在CPU正在处理一个优先级低的中断请求的时候,如果发生另一个优先级比它高的中断请求,CPU能暂停正在处理的中断源的处理程序,转去处理优先级高的中断请求,待处理完以后,再回到原来正在处理的低优先级中断程序,这种高级中断源能中断低中断源的处理称为中断嵌套。

MCS-52系列单片机允许有6个中断源,提供两个中断优先级(能实现二级中断嵌套)。每个中断源的优先级的高低都可以通过编程来设定。中断源的中断请求是否能得到响应,受中断寄存器IE控制;各个中断源的优先级可以由中断优先级寄存器IP中的各位来确定;同一优先级中的各中断源同时请求中断时,由内部的查询逻辑来确定响应的次序。2.7.1中断请求源

1.中断源AT89S52中断系统可用图2-10来表示。6个中断源分别为:

·:来自P3.2引脚上的外部中断请求(外部中断0)。

·:来自P3.3引脚上的外部中断请求(外部中断1)。

T0:片内定时器/计数器0溢出(TF0)中断请求。

T1:片内定时器/计数器1溢出(TF1)中断请求。串行接口:片内串行接口完成一帧发送或接收中断请求源TI或RI。图2-10AT89S52中断系统

·定时器T2:片内定时器/计数器1溢出(TF2)中断请求。每个中断源都有一个对应中断请求标志位,它们设置在特殊功能寄存器TCON和SCON中。当这些中断源请求中断时,分别由TCON和SCON中的相应位来锁存。2.TCON寄存器

TCON是定时器/计数器0和1(T0和T1)的控制寄存器,它同时也用来锁存T0、T1的溢出中断请求源和外部中断请求源。TCON寄存器中与中断有关的位结构如下所示:

TCON寄存器各位的具体含义如下:

TF1:定时器/计数器1(T1)的溢出中断标志。当T1从初值开始加1计数到产生溢出时,由硬件使TF1置1,直到CPU响应中断时由硬件复位。

TF0:定时器/计数器0(T0)的溢出中断标志。其作用同TF1。

IE1:外部中断1中断请求标志。如果IT1=1,则当上的电平由1变0时,IE由硬件置位,外部中断1请求中断。在CPU响应该中断时由硬件清0。IT1:外部中断1()触发方式控制位。如果IT1为1,则外部中断1为跳变触发方式(CPU在每个机器周期的S5P2采样(P3.3)的电平,如果在前一个周期中采样到高电平,在下一个周期中采样到低电平,则硬件使IE1置1,向CPU请求中断);如果IT1为0,则外中断1为电平触发方式,此时外部中断是通过检测端的输入电平(低电平)来触发的。采用电平触发方式时,输入到的外部中断源必须保持低电平有效,直到该中断得到响应,同时在中断返回前必须使电平变高,否则将会再次产生中断。

·IE0:外部中断0中断请求标志。如果IT0=1,则当上的电平由1变0时,IE0由硬件置位,外部中断0请求中断。在CPU把控制转到中断服务程序时由硬件使IE0复位。

·IT0:外部中断0触发方式控制位。其含义同IT1。关于定时器2的内容请详见2.8.2。

3.SCON寄存器串行接口控制寄存器SCON中的低2位用做串行中断标志。SCON寄存器的结构如下:

SCON寄存器各位的含义如下:

·RI:串行接口接收中断标志。在串行接口方式0中,每当接收到第8位数据时,就硬件置位RI;在其他方式中,当接收到停止位的中间位时置位RI。注意:当CPU转入串行接口中断服务程序入口时不复位RI,必须由用户用软件来使RI清0。

·TI:串行接口发送中断标志。在方式0中,每当发送完8位数据时由硬件置位TI;在其他方式中,在停止位开始时置位。TI也必须由软件来复位。2.7.2中断控制

1.中断允许和禁止

在MCS-51中断系统中,中断允许或禁止是由片内的中断允许寄存器IE(IE为特殊功能寄存器)控制的。IE寄存器的结构如下:

IE寄存器各位的含义如下:

·EA:CPU中断允许标志。EA=0时,CPU禁止所有中断,即CPU屏蔽所有中断请求;EA=1时,CPU开放中断。每个中断源在中断时被允许还是禁止,还需由各自的允许位确定(见D2~D0位的说明)。

·ET2:定时器/计数器2(T2)的溢出中断允许位。

·ET2=1时,允许T2中断;ET2=0时,禁止中断。

·ES:串行接口中断允许位。ES=1时,允许串行接口中断;ES=0时,禁止串行接口中断。

·ET1:定时器/计数器1(T1)的溢出中断允许位。ET1=1时,允许T1中断;ET1=0时,禁止中断。

EX1:外部中断1中断允许位。EX=1时,允许外部中断1中断;EX1=0时,禁止外部中断1中断。

ET0:定时器/计数器0(T0)的溢出中断允许位。ET0=1时,允许T0中断;ET0=0时,禁止T0中断。

EX0:外部中断0中断允许位。EX0=1时,允许外部中断0中断;EX0=0时,禁止外部中断0中断。中断允许寄存器中各相应位的状态可根据要求用指令置位或清0,从而实现该中断源允许中断或禁止中断,复位时IE存储器被清0。

2.中断优先级控制

MCS-51中断系统提供两个中断优先级,对于每个中断源请求都可以编程为高优先级中断源或低优先级中断源,以便实现二级中断嵌套。中断优先级是由片内的中断优先级寄存器IP(特殊功能寄存器)控制的。IP寄存器的结构如下:

IP寄存器各位的含义如下:

·PT2:TI中断优先级控制位。PT2=1时,定时器/计数器2定义为高优先级中断源;PT2=0时,定时器/计数器2定义为低优先级中断源。

·PS:串行接口中断优先级控制位。PS=1时,串行接口定义为高优先级中断源;PS=0时,串行接口定义为低优先级中断源。

·PT1:TI中断优先级控制位。PT1=1时,定时器/计数器1定义为高优先级中断源;PT1=0时,定时器/计数器1定义为低优先级中断源。

·PX1:外部中断中断优先级控制位。PX1=1时,外部中断1定义为高优先级中断源;PX1=0时,外部中断1定义为低优先级中断源。

·PT0:定时器/计数器0(T0)中断优先级控制位。功能同PT1。

·PX0:外部中断0中断控制位。功能同PX1。2.7.3中断优先级机构

MCS-51中断系统具有两级优先级(由IP寄存器把各中断源的优先级分为高优先级和低优先级),它们遵循下列两条基本规则:(1)低优先级中断源可被高优先级中断源中断,而高优先级中断源不能被任何中断源中断。(2)一种中断源(不管是高优先级还是低优先级)一旦得到响应,与它同级的中断源就不能再中断它。为了实现上述两条规则,中断系统内部包含两个不可寻址的优先级状态触发器。其中一个用来指示某个高优先级的中断源正在得到服务,并阻止所有其他中断的响应;另一个触发器则指出某个低优先级的中断源正得到服务,所有同级的中断都被阻止,但不阻止高优先级中断源。当CPU同时收到几个同一优先级的中断请求时,响应哪一个中断源取决于内部查询顺序。同级内的中断优先级排列如下:2.7.4中断响应过程

CPU在每个机器周期的S5P2时刻采样中断标志,而在下一个机器周期对采样到的中断进行查询。如果前一个机器周期的S5P2有中断标志,则在查询周期内便会查询到并按优先级高低进行中断处理,中断系统将控制程序转入相应的中断服务程序。下三个条件中的任何一个都能封锁CPU对中断的响应:(1)CPU正在处理同级的或高一级的中断。(2)现行的机器周期不是当前所执行指令的最后一个机器周期。(3)当前正在执行的指令是返回(RETI)指令或是对IE或IP寄存器进行读/写的指令。上述三个条件中,第(2)条保证把当前指令执行完,第(3)条保证如果在当前执行的是RETI指令或是对IE、IP进行访问的指令,则必须至少在执行完一条指令之后才会响应中断。中断查询在每个机器周期中重复执行,所查询到的状态为前一个机器周期的S5P2时刻采样到的中断标志。这里要注意的是:如果中断标志被置位,但因上述条件之一的原因而未被响应,或上述封锁条件已撤销,但中断标志已不再存在(已不再是置位状态)时,被拖延的中断就不再响应,CPU将丢弃中断查询的结果。也就是说,CPU对中断标志置位后,对未能及时响应而转入中断服务程序的中断标志不作记忆。

CPU响应中断时,先置相应的优先级以激活触发器,同时封锁同级和低级的中断,然后根据中断源的类别,在硬件的控制下,程序转向相应的向量入口单元,执行中断服务程序。硬件调用中断服务程序时,把程序计数器PC的内容压入堆栈(但不能自动保存程序状态字PSW的内容),同时把响应的中断服务程序的入口地址装入PC中,7个中断服务程序(包括复位中断)的入口地址见表2-8。表2-9是中断标志位在各标志寄存器的位置。表2-8各中断服务程序入口地址表

表2-9中断标志位

通常,在中断入口地址处安排一条跳转指令,以跳转到用户的服务程序入口。中断服务程序的最后一条指令必须是中断返回指令RETI。CPU执行完这条指令后,把响应中断时所置位的优先级激活触发器清0,然后从堆栈中弹出两个字节内容(断点地址)装入程序计数器PC中,CPU就从原来被中断处重新执行被中断的程序。2.7.5外部中断触发方式

MCS-51的外部中断(和)可以用程序控制为电平触发或跳变触发(通过编程对定时器/计数器控制寄存器TCON中的IT0和IT1位进行清0或置1)。 若ITx(x=0,1)为0,则外部中断为电平触发,由引脚上所检测到的低电平(必须保持到CPU响应中断时为止,并且还应在中断返回前变为高电平)触发。若ITx=1,则外部中断为跳变触发。即在相续的两个机器周期中,前一个周期从引脚上检测到高电平,而在后一个周期间检测到低电平,则置位TCON寄存器中的中断请求标志IEx(IE0和IE1),由IEx发出中断请求。 由于外部中断引脚在每个机器周期内都被采样一次,因此中断引脚上的电平应至少保持12个振荡周期,以保证电平信号能被采样到。对于跳变触发方式的外部中断,要求输入的负脉冲宽度至少保持12个振荡周期(若晶体频率为6MHz,则宽度为2μs),以确保检测到引脚上的电平跳变,而使中断请求标志IEx置位。对于电平触发的外部中断源,要求在中断返回前撤消中断请求(使引脚上的电平变高),这是为了避免在中断返回后又再次响应中断而出错。电平触发方式适合用于外部中断输入为低电平,而且能在中断服务程序中撤消外部中断请求源的情况。2.7.6中断响应时间

外部中断和的电平在每个机器周期的S4P2时被采样并锁存在IE0和IE1中,这个置入到IE0和IE1的状态在下一个机器周期才被查询电路查询。如果产生了一个中断请求而且满足响应条件,则CPU响应中断,由硬件生成一条长调用指令转到相应的服务程序入口。这条指令是双机器周期指令。因此,从中断请求有效到执行中断服务程序的第一条指令的时间间隔至少需要三个完整的机器周期,图2-11给出了中断响应的时序。图2-11中断响应时序如果中断请求被前面所述的三个条件之一所封锁,将需要更长的响应时间。若一个同级的或更高优先级的中断已经在进行,则延长的等待时间显然取决于正在处理的中断服务程序的长度;如果正在执行的一条指令还没有执行到最后一个周期,则所延长的等待时间不会超过三个机器周期,这是因为MCS-51指令系统中最长的指令(MUL和DIV)也只有四个机器周期;假若正在执行的是RETI指令或者是访问IE或IP指令,则延长的等待时间不会超过五个机器周期(为完成正在执行的指令还需要一个周期,加上为完成下一个指令还需要的最长时间——四个周期,如MUL和DIV指令)。 因此,在只有一个中断源的情况下,响应时间总是在三个机器周期到八个机器周期之间。2.7.7中断的单步操作在MCS-51中断系统中,允许用户单步运行用户程序,这样可以使用户很方便地调试程序。单步操作的原理是利用了中断系统的特点:单片机在执行中断返回指令RETI后至少还要执行一条指令才响应新的中断。因此,一旦进入了某个中断服务程序,在中断返回后,至少还需要再执行一条被中断的程序,在这以前是不会重新进入中断服务程序的。利用这一特点,可实现单步操作,方法之一是利用外部中断引脚(例如)上的低电平实现单步运行。例如,设置为电平触发方式,其中服务中断程序由下列指令结束:

WAIT1:JNBP3.2,WAIT1;若P3.2引脚()为低电平,仍执行本指令,即原处等待,;直到引脚变为高电平。顺序执行下条指令

WAIT2:JBP3.2,WAIT2;原处等待,直到引脚变为低电平

RETI ;返回如果引脚(P3.2)保持低电平,则CPU响应中断,进入外部中断0的服务程序。由于中断服务程序末尾有上述三条指令,因此停留在JNB指令处,直到引脚上出现一个正脉冲(从低→高→低)时,程序才往下执行。随后执行返回指令RETI,返回到被中断的程序,执行一条指令后,又再次进入外部中断0服务程序,等待在引脚出现下一个正脉冲。这样,在端每出现一次正脉冲,就执行一条主程序中的指令,从而实现了单步操作的目的。要注意的是,这个正脉冲的高电平持续时间不应小于三个机器周期,以确保CPU能采集到高电平信号。2.7.8外部中断扩展

MCS-51有两个外部中断源和,但在实际的应用系统中,外部中断源请求往往比较多,需要进行中断扩展。下面讨论两种多中断源系统的设计方法。

1.定时器中断作为外部中断使用把MCS-51的两个定时器/计数器(T0和T1)选择为计数器方式,每当P3.4(T0)或P3.5(T1)引脚上发生负跳变时,T0和T1的计数器加1。利用这个特性,可以把P3.4和P3.5引脚做为外部中断请求输入线,而定时器的溢出中断作为外部中断请求标志。应用举例如下:设T0为方式2(自动装入常数)外部计数方式,时间常数为0FFH,允许中断,并CPU开放中断。则其初始化中断程序为

MOV

TMOD,#06H;数00000110B送方式寄存器

TMOD。设T0为方式2,;计数器工作方式

MOV

TL0,#0FFH;时间常数0FFH送T0的低8位

TL0和高8位TH0

MOV

TH0,#0FFH;寄存器

SETB

TR0 ;置TR0为1,启动T0

MOV

IE,#82H;置中断允许,即置中断允许寄存器IE中的EA和ET0;为1当接在P3.4引脚上的外部中断请求输入线发生负跳变时,TL0加1溢出,TF0被置1,向CPU发出中断请求。同时TH0的内容自动送入TL0,使TL0恢复初始值0FFH。这样,每当P3.4引脚上有一次负跳变时都对TF0置1,向CPU发中断请求,P3.4引脚就相当于边沿触发的外部中断请求源输入线。同理,也可以把P3.5引脚做类似的处理。

2.中断和查询结合的方式中断和查询结合的方式是把系统中多个外部中断源按它们的重要程度进行排队,把其中最高级别的中断源接到MCS-51的一个外部中断源输入端(例如接到引脚),将其余的中断源接到P1口,同时经过一个与门后接到另一个中断源。中断请求由硬件电路产生,而中断源的识别由程序查询来处理,查询顺序由中断源的优先级决定。图2-12所示为五个外部中断源的连接电路,其中设备1~设备4经与门与连接,并连接到P1.0~P1.3。均采用电平触发方式。设备0为最高级中断源,单独作为外部中断0的输入信号。图2-12五个外部中断源的连接外部中断1的中断服务程序如下:

INTR:PUSH

PSW;程序状态字PSW内容压入堆栈保存

PUSHA;累加器A内容压入堆栈保存

JNBP1.0,DVT1;P1.0引脚为0,转至设备1中断服务程序

JNBP1.1,DVT2;P1.1引脚为0,转至设备2中断服务程序

JNBP1.2,DVT3;P1.2引脚为0,转至设备3

中断服务程序

JNBP1.3,DVT4;P1.3引脚为0,转至设备4中断服务程序INTR1:POPA;压入堆栈的内容送回A

POPPSW;恢复程序状态字PSW的内容

RETI;中断返回DVT1: ;设备1中断程序入口

AJMP

INTR1;跳转到INTR1DVT2: ;设备2中断程序入口

AJMPINTR2;跳转到INTR2DVT3: ;设备3中断程序入口

AJMPINTR3;跳转到INTR3DVT4: ;设备4中断程序入口

AJMPINTR4;跳转到INTR42.8定时器/计数器

MCS-51单片机内部有两个16位可编程的定时器/计数器,即T0和T1(8052提供三个,第三个为T2),AT89S52有三个定时器/计数器。它们既可以作定时器方式,又可以作计数器方式。2.8.1定时器/计数器0和定时器/计数器1

1.硬件结构定时器/计数器的基本结构如图2-13所示。基本部件是两个8位的计数器(其中TH1和TL1是T1的计数器,TH0和TL0是T0的计数器)。在作定时器使用时,输入的时钟脉冲是由晶体振荡器的输出经12分频后得到的,所以定时器也可以看做是对计算机机器周期的计数器(因为每个机器周期包含12个振荡周期,故每个机器周期定时器加1,可以把输入的时钟脉冲看成机器周期信号),故其频率为晶振频率的1/12。如果晶振频率为12MHz,则定时器每接收一个输入脉冲的时间为1μs。图2-13定时器/计数器的结构框图当它用作对外部事件计数时,接相应的外部输入引脚T0(P3.4)或T1(P3.5)。在这种情况下,当检测到输入引脚的电平由高跳变到低时,计数器就加1(它在每个机器周期的S5P2时刻采样外部输入,当采样值在这个机器周期为高,在下一个机器周期为低时,则计数器加1)。加1操作发生在检测到这种跳变后的机器周期中的S3P1时刻,因此需要两个机器周期来识别一个从1到0的跳变,故最高计数频率为晶振频率的1/24。这就要求输入信号的电平应在跳变后至少一个机器周期内保持不变,以保证在给定的电平再次变化前至少被采样一次。定时器/计数器有四种工作方式。其工作方式的选择及控制由两个特殊功能寄存器(TMOD和TCON)的内容来决定。用指令改变TMOD或TCON的内容后,则在下一条指令的第一个机器周期的S1P1时刻起作用。

1)定时器的方式寄存器TMOD特殊功能寄存器TMOD为定时器的方式控制寄存器,此寄存器结构如图2-14所示。图2-14

TMOD寄存器的位结构其中,高4位用于定时器1;低四位用于定时器0。M1、M0用来确定所选的工作方式,如表2-10所示。表2-10工作方式选择表

M1M0:定时器/计数器四种工作方式选择位。各值对应的工作方式如表2-10所示。

·:定时器方式选择位。=1时,为计数器方式;=0时,为定时器方式。

GATE:定时器/计数器运行控制位。此位用来确定对应的外部中断请求引脚(,)是否参与T0和T1的操作

温馨提示

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

评论

0/150

提交评论