《单片机原理及应用》第二章 AT89系列单片机的硬件_第1页
《单片机原理及应用》第二章 AT89系列单片机的硬件_第2页
《单片机原理及应用》第二章 AT89系列单片机的硬件_第3页
《单片机原理及应用》第二章 AT89系列单片机的硬件_第4页
《单片机原理及应用》第二章 AT89系列单片机的硬件_第5页
已阅读5页,还剩97页未读 继续免费阅读

下载本文档

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

文档简介

第二章AT89系列单片机的硬件结构2.1AT89S51单片机的结构 2.2AT89S51的引脚功能 2.2.1电源及时钟引脚 2.2.2控制引脚 2.2.3I/O口引脚 2.3AT89S51的中央处理器(CPU) 2.3.1运算部件 2.3.2程序状态字寄存器 2.3.3控制部件 思考与练习第二章AT89系列单片机的硬件结构2.4存贮器结构 292.4.1程序存贮器 292.4.2内部数据存贮器 312.4.3特殊功能寄存器 342.4.4地址空间 402.4.5外部数据存贮器 432.5I/O端口 432.5.1I/O的内部结构 442.5.2I/O口的负载能力和接口要求 48第二章AT89系列单片机的硬件结构2.6复位电路和时钟电路 2.6.1复位电路及工作方式 2.6.2时钟电路及时序 2.7在线编程ISP 2.7.1在线编程接口电路 2.7.2编程算法及时序 2.7.3串行编程命令 思考与练习 2.1AT89S51单片机的结构把作为控制应用所必需的基本功能部件都集中在一个尺寸有限的集成电路芯片上。2.1AT89S51单片机的结构

有如下部件和特性:(1)8位微处理器(CPU);(2)程序存储器(4KFlashROM),可进行1000次重复擦写和三级加密;(3)128B数据存储器(RAM);(4)26个特殊功能寄存器(SFR);(5)4个8位可编程并行I/O口(P0口、P1口、P2口、P3口);(6)1组全双工可编程串行通道;(7)2个可编程的16位定时器/计数器;(8)1个看门狗定时器;(9)5个中断源;(10)低功耗模式有空闲和掉电模式,且具有断电模式下的中断恢复模式;(11)灵活的在系统程序设计(ISP)2.1AT89S51单片机的结构

AT89S51单片机的内部结构框图如图2-2所示。2.2AT89S51的引脚功能

AT89S51单片机实际有效的引脚为40个,主要有三种封装形式,其引脚图可参见图2-3所示:(a)为PDIP封装形式,这是普通40脚塑封双列直插形式;(b)PLCC封装形式,这种形式是具有44个“J”形脚(其中有4个空脚)的方形芯片,使用时需要插入与其相配的方型插座中;(c)为TQFP封装形式,这种形式也是具有44个“J”形脚(其中有3个空脚,2个接地端),但其体积更小、更薄,是一种不同封装形式的引脚,排列不一致,使用时一定要注意。为了尽可能缩小体积,减少引脚数,AT89S51/S52单片机的不少引脚还具有第二功能(也称为“复用功能”)。2.2AT89S51的引脚功能(a)PDIP40封装的AT89S512.2AT89S51的引脚功能(b)PLCC44封装的AT89S51

(c)TQFP44封装的AT89S512.2.1电源及时钟引脚VCC:电源端。GND:接地端。XTAL1:接外部晶振的一端。在单片机内部,它是构成片内振荡器的反相放大器的输入端。当采用外部时钟时,外部时钟振荡信号直接送入此引脚作为驱动端,即把此信号直接接到内部时钟发生器的输入端。XTAL2:接外部晶振的另一个端。在单片机内部,它是构成片内振荡器的反相放大器的输出端。当采用外部时钟信号时,此引脚应悬浮不连接。2.2.1电源及时钟引脚图2-4内部振荡器的接法图2-5外部振荡器的接法2.2.2控制引脚RST:复位输入端。在振荡器运行时,在此脚上出现两个机器周期以上的高电平将使单片机复位。看门狗定时器(Watchdog)溢出后,该引脚会保持98个振荡周期的高电平,也会使单片机复位。在AUXR寄存器中的DISRTO位可以用于屏蔽这种功能。DISRTO位的默认状态,是复位高电平输出功能使能。2.2.2控制引脚

ALE/:地址锁存允许/编程脉冲。在访问外部存储器时,这个输出信号用于锁存低字节地址。在对Flash内存编程时,这条引脚用于输入编程脉冲PROG。一般情况下,ALE是振荡器频率的6分频信号,可用于外部定时或时钟。但是,在对外部数据存储器每次存取中,会跳过一个ALE脉冲。在需要时,可以把AUXR寄存器的0位置为“1”,从而屏蔽ALE的工作;而只有在MOVX或MOVC指令执行时ALE才被启动。在单片机处于外部执行方式时,对ALE屏蔽位置“1”并不起作用。2.2.2控制引脚

:外部程序存储器的选通信号。它用于读外部程序存储器的选通信号,低电平有效。当AT89系列单片机在执行来自外部程序存储器的指令时,每一个机器周期PSEN被启动2次。在对外部数据存储器的每次存取中,不出现。/VPP:外部程序存储器访问允许端/编程电源输入端。接地,单片机从地址为0000H~FFFFH的外部程序内存中读取代码。接到VCC,单片机先从内部程序内存中读取代码,然后自动转向外部。在对Flash内存编程时,这条引脚接收12V编程电压VPP。2.2.3I/O口引脚

P0~P3是AT89S51单片机与外界联系的4个8位双向并行I/O端口,引脚分配如下:P0.0~P0.7:P0口的8位漏极开路的双向I/O口。P0在当做I/O用时可以推动8个LS的TTL负载。如果当引脚为低电平时(即取用外部程序代码或数据存储器),P0口就以多工方式提供地址总线(A0~A7)及数据总线(D0~D7)。设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0~A7,再配合P2口所送出的A8~A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。2.2.3I/O口引脚

P2.0~P2.7:P2口的8位内部接有上拉电阻的准双向I/O口。每一个引脚可以驱动4个LS的TTL负载,若将P2口的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在AT89S51扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8~A15,这个时候P2便不能当做I/O来使用了。2.2.3I/O口引脚

P1.0~P1.7:P1口的8位内部接有上拉电阻的准双向I/O口。其输出缓冲器可以驱动4个LSTTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。负载能力:代表器件的输出电流的大小。对于标准TTL器件,输出负载能力的高电平为0.4mA,而作为下级负载的TTL器件的输入高电平电流为0.04mA(40uA),这样一个标准TTL器件最大可以驱动8个以上标准TTL负载。P3.0~P3.7:P3口的8位内部接有上拉电阻的准双向I/O口。其输出缓冲器可以驱动4个TTL负载,同时还具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。TTL负载:

LSTTL:其中“L”表示低功耗,“S”表示肖特基技术全称Transistor-TransistorLogic,即BJT-BJT逻辑门电路,是数字电子技术中常用的一种逻辑门电路,应用较早,技术已比较成熟。TTL主要有BJT(Bipolar(双极的)JunctionTransistor(晶体管)

即双极结型晶体管,晶体三极管)和电阻构成,具有速度快的特点。最早的TTL门电路是74系列,后来出现了74H系列,74L系列,74LS,74AS,74ALS等系列。但是由于TTL功耗大等缺点,正逐渐被CMOS电路取代。2.3AT89S51的中央处理器(CPU)中央处理器CPU是单片机的核心,主要由运算部件、控制部件和专用寄存器组成。CPU功能可概况为以下三条:1、产生控制信号2、控制数据传送3、对输入数据进行算术逻辑运算及位操作2.3.1运算部件运算部件是用来对数据进行算术运算和逻辑操作的执行部件,包括算术逻辑单元ALU(ArithmeticLogicUnit)、累加器ACC(Accumulator)、暂存器(TEMP)、程序状态字寄存器PSW(ProgramStatusWord)、通用寄存器和BCD码运算调整电路等。为了提高数据处理和位操作能力,片内增加了一个通用寄存器区和一些专用寄存器,而且还包含一个布尔处理器,可以执行置位、清零、求补、取反、测试、逻辑与、逻辑或等操作,为单片机的应用提供了极大的便利。2.3.1运算部件

(1)算术逻辑单元ALUALU是用于对数据进行算术运算和逻辑操作的执行部件,由加法器和其他逻辑电路(移位电路和判断电路等)组成。在控制信号的作用下,它能完成“加、减、乘、除、比较”等算术运算和“与、或、异或”等逻辑运算以及循环移位操作、位操作等功能。此外,通过对运算结果的判断,影响程序状态标志寄存器的有关标志位。

(2)暂存器暂存器用于暂存进入运算器之前的数据,它不能通过编程访问。设置暂存器的目的是暂时存放某些中间过程所产生的信息,以避免破坏通用寄存器的内容。2.3.1运算部件

(3)布尔(位)处理器除对字节(Byte)进行操作外,AT89S51单片机借用PSW中的C可以直接对位(Bit)进行操作,在进行位操作时,C就类似进行字节操作的ACC用作数据源或存放结果。通过位操作指令可以实现置位、清零、取反以及位逻辑运算等操作。运算部件中的程序状态字寄存器PSW地位特殊,下面给予单独介绍。其他专用寄存器放在2.3节存储器结构中作逐一介绍。2.3.2程序状态字寄存器

程序状态字PSW是一个8位的寄存器,包含了各种程序状态信息,它相当于一个标志寄存器,以供程序查询和判别。PSW的格式、各标志的含义及功能定义见表2-1。表2-1PSW的格式、各标志的含义和功能定义此寄存器各位的含义如下(其中PSW.1未用):CYACF0RS1RS0OV-P2.3.2程序状态字寄存器

CY(PSW.7):进位标志。在执行某些算术和逻辑指令时,它可以被硬件或软件置位或清零。CY在布尔处理机中被认为是位累加器,其重要性相当于一般中央处理器中的累加器A。AC(PSW.6):辅助进位标志。当进行加法或减法操作而产生由低4位数向高4位数进位或借位时,AC将被硬件置位,否则就被清零。AC被用于BCD码调整,详见指令系统中的“DAA”指令。F0(PSW.5):用户标志位。F0是用户定义的一个状态标记,用软件来使它置位或清零。该标志位状态一经设定,可由软件测试F0,以控制程序的流向。RS1、RS0(PSW.4、PSW.3):寄存器区选择控制位。可以用软件来置位或清零以确定工作寄存器区。RS1、RS0与寄存器区的对应关系见表2-2。2.3.2程序状态字寄存器表2-2工作寄存器组选择OV(PSW.2):溢出标志。带符号加减运算中,超出了累加器A所能表示的符号数有效范围(-128~+127)时,即产生溢出,OV=1,表明运算运算结果错误。如果OV=0,表明运算结果正确。RS1RS0工作寄存器组000组(00H~07H)011组(08H~0FH)102组(10H~17H)113组(18H~1FH)2.3.2程序状态字寄存器P(PSW.0):奇偶标志。每个指令周期都由硬件来置位或清零,以表示累加器A中1的位数的奇偶数。若1的位数为奇数,P置1,否则P清零。P标志位对串行通信中的数据传输有重要的意义,在串行通信中常用奇偶校验的办法来检验数据传输的可靠性。在发送端可根据P的值对数据进行奇偶置位或清零。PSW.1:程序状态字的第1位,该位的含义没有定义,若用户要使用这一位,可直接使用PSW.1的位地址。PSW寄存器除具有字节地址外,还具有位地址,因此,可以对PSW中的任一位进行操作,这无疑大大提高了指令执行的效率。2.3.3控制部件控制部件是用来统一指挥和控制计算机进行工作的部件。其功能是从存储器中逐条取指令,进行指令译码,并通过定时和控制电路,在规定的时刻发出各种操作所需的全部内部控制信息及CPU外部所需的控制信号,使各部分按照一定得节拍协调工作,完成指令所规定的各种操作。它由指令部件、时序部件和操作控制部件组成。(1)指令部件指令部件是一种能对指令进行分析、处理并产生控制信号的逻辑部件,也是控制器的核心。通常,它由程序计数器PC(ProgramCounter)、指令寄存器IR(InstructionRegister)和指令译码器等组成。这三个寄存器用户都不能直接访问。指令寄存器IR是一个8位寄存器,用于暂存存放指令代码,等待译码。2.3.3控制部件

指令译码器用于对送入指令译码器中的指令进行译码。所谓“译码”,就是把指令转变成执行此指令所需要的电信号。当指令送入译码器后,由译码器对该指令进行译码,根据译码器输出的信号,CPU控制电路定时产生执行该指令所需的各种控制信号,使单片机正确执行程序所需要的各种操作。程序计数器PC用于存放CPU要执行的下一条指令的地址。程序中的每条指令都有自己的存放地址(指令都存放在ROM区的某一单元),CPU要执行某条指令时,就把该条指令的地址码(即PC中的值)送到地址总线,从ROM中读取指令,当PC中的地址码被送上地址总线后,PC会自动指向CPU要执行的下一条指令的地址。执行指令时,CPU按PC的指示地址从ROM中读取指令,所读取指令码送入指令寄存器中,由指令译码器对指令进行译码,发出相应的控制信号,从而完成指令所指定的操作。2.3.3控制部件(2)时序部件时序部件由时钟电路和脉冲分配器组成,用于产生操作控制部件所需的时序信号。产生时序信号的部件称为“脉冲发生器”或“时序系统”,它由一个振荡器和一组计数分频器组成。振荡器是一个脉冲源,输出频率稳定的脉冲,也称为“时钟脉冲”,为CPU提供时钟基准。时钟脉冲经过进一步的计数分频,产生所需的节拍信号或时间更长的机器周期信号。详见2.6.2。(3)操作控制部件操作控制部件可以为指令译码器的输出信号配上节拍电位和节拍脉冲,也可以和外部进来的控制信号组合,共同形成相应的微操作控制序列信号,以完成规定的操作。2.4存贮器结构

一般微机通常是程序和数据共用一个存储空间,即ROM和RAM统一编址,属于“冯.诺依曼”(VonNeumann)结构。而单片机的存储器组织结构则把程序存储空间和数据存储空间严格区分开来,即程序存储器ROM和数据存储器RAM分开编址,属于“哈佛”(Harvard)结构。程序存储器ROM用于固化程序、常数和数据表。数据存储器用于存放程序运行中产生的各种数据、用作堆栈等。2.4存贮器结构AT89S51单片机存储器结构如图2-6所示2.4存贮器结构AT89S51单片机存储器在物理结构上分成四个存储空间:片内程序存储器、片外程序存储器、片内数据存储器和片外数据存储器。从用户使用的角度,即从逻辑上考虑,则有三个存储空间:片内外统一编址的64KB程序存储器地址空间(0000H~FFFFH)、256B的片内数据存储器地址空间(00H~FFH)及片外数据存储器地址空间(0000H~FFFFH)。CPU在访问三个不同的逻辑空间时,通过采用不同形式的指令,来产生相应的存储器选通信号,访问程序存储器使用MOVC指令、访问片内数据存储器使用MOV指令、访问片外数据存储器使用MOVX指令。2.4.1程序存贮器

1.AT89S51单片机程序存储器ROM程序存储器用于存放编好的程序、常数或表格。在正常工作时只可读不可写,掉电后数据不丢失。(1)片内具有4K的flash结构的电可擦除只读存储器,与INTEL公司早期产品的紫外线擦除的EPROM结构相比,使用更灵活更方便。(2)外部可以扩展64K的ROM,以满足一些大程序的需要。但是建议用户尽量不要外扩ROM,因为当扩展外部ROM的时候,系统要占有单片机的P0、P2口及P3口的部分口线作为总线。所以在大多数的应用场合,尽量选择片内的FLASH内存的容量能够满足实际需要单片机型号,这样不仅可以节省额外的硬件投资、节省单片机的口线资源,更重要的是片内FLASH中的程序在下载、烧写时通过“加密”可以得到保护。只有当程序特别大,内部空间无法满足要求时才选用扩展外部ROM。2.4.1程序存贮器

(3)程序内存最低端的地址可以在片内Flash中,或在外部ROM中。通过单片机/EA的引脚的电平来选择。例如,在带有4KB片内Flash的AT89S51中,如果把/EA引脚连到Vcc,当地址为0000H~0FFFH时,则访问内部Flash;当地址为1000H~FFFFH时,将自动转向外部程序内存。如果/EA端接地,则只访问外部程序内存,不管是否有内部Flash内存。2.4.1程序存贮器

2.AT89S51单片机程序存储器管理(1)每个ROM单元(byte)对应一个惟一的16bit的地址编码(Address)(2)CPU要到某个ROM单元去取指令,是通过把地址编码写入16位的程序计数器PC来实现的,因此AT89系列单片机地址的编码范围(通常称为寻址范围)为:0000000000000000B~1111111111111111B(二进制)0000H~FFFFH(十六进制)0~65535(十进制)2.4.1程序存贮器(3)系统复位后,PC的初始值为0000H,以后的取值是CPU根据用户程序的运行流程自动装载的(程序顺序执行时,PC值自动加1;执行转移指令、子程序调用和中断服务程序时,PC值分别等于转移的目标地址、子程序或中断服务程序的入口地址。

2.4.1程序存贮器

3.AT89S51单片机程序存储器的分配 程序内存的某些单元是保留给系统使用的,这几个单元的配置如图2-7所示。从图2-7可知,单片机复位后,程序计数器PC的内容为0000H,所以CPU总是从0000H单元开始执行程序。2.4.1程序存贮器

从地址0003H开始,系统每隔8个单元为6个中断服务子程序分配有一个固定的入口地址。如外部中断0的入口地址为0003H;定时器0的入口地址为000BH;外部中断1的入口地址为0013H;定时器1的入口地址为001BH;以此类推。中断响应后,程序指针PC

将自动根据中断类型指向这些入口地址的某一个,CPU就从这里开始执行中断服务子程序。因此从0003H单元开始的这段区域应该保留给中断使用,所以程序设计时在0000H~0002H单元放置一条转移指令,跳过这段区域,转到系统主程序,除非系统不使用中断,主程序才可以覆盖这段区域2.4.2内部数据存贮器单片机的内部数据存储器结构如图2-8所示。片内数据存储器地址范围是00H~FFH,只有256个字节,这里仅介绍低128个字节区,高128个字节由于被特殊功能寄存器占有,故单独列出介绍。低128字节区主要分为三个区域:通用工作寄存器组区、可位寻址区和用户RAM区。2.4.2内部数据存贮器(1)工作寄存器组区最低32个单元(地址为00H~1FH)是4个通用工作寄存器组。每个寄存器组含有8个8位寄存器,编号为R0~R7。程序状态字PSW中的2位RS0、RS1用来确定当前采用哪一个工作寄存器组,其对应关系如前面的表2-2所示。在某一时刻只能选用其中的一组寄存器工作,系统复位后,指向工作寄存器组0。如果用户程序不需要4个工作寄存器区,则不用的工作寄存器单元可以作一般的RAM使用。2.4.2内部数据存贮器(2)位寻址区内部RAM区中的20H~2FH单元(16字节)可供位寻址,这16个单元共有128位,每位均可直接寻址,其位地址范围为00H~7FH,具体情况见表2-3。这些位地址有两种表示方式:一种是采用位地址形式,即00H~7FH;一种是用字节地址(20H~2FH).位数方式表示。例如,位地址00H~07H也可表示为20H.0~20H.7。2.4.2内部数据存贮器表2-3RAM位寻址区地址表2.4.2内部数据存贮器

(3)用户RAM区30H~7FH共80个字节单元,为字节寻址的内部RAM区,可供用户作为数据存储区。这一区域的操作指令非常丰富,数据处理方便灵活,是非常宝贵的资源。但是,如果堆栈指针初始化时设置在这个区域,就要留出足够的字节单元作为堆栈区,以防止在数据存储时,破坏了堆栈的内容。堆栈:是按先进后出或后进先出原则进行读/写的特殊RAM区域。51单片机的堆栈区是不固定的,原则上可设置在内部RAM的任意区域内。实际使用时要根据对片内RAM各功能区的使用情况而灵活设置,应避开工作寄存器区、位寻址区和用户实际使用的数据区,一般设在2FH地址单元以后的区域。2.4.2内部数据存贮器

堆栈的作用:主要用在子程序调用或中断处理过程中,用于保护断点和现场,实现子程序或中断的多级嵌套处理。在CPU响应中断或调用子程序时,会自动地将断点处的16位返回地址压入堆栈。在中断服务程序或子程序结束时,返回地址会自动由堆栈弹出,并放回到程序计数器PC中,使程序从原断口处继续执行下去。堆栈除了用于保护断点处的返回地址外,还可以用于保护其他一些重要信息,要注意的是,必须按照“后进先出”的原则存取信息。堆栈也可以作为特殊的数据交换区使用。2.4.2内部数据存贮器

堆栈的开辟:栈顶的位置由专门设置的堆栈指针SP指出。51单片机的SP是8位寄存器,堆栈属向上生长的,当数据压入堆栈时,SP的内容自动加1,作为本次进栈的指针,然后再存入数据。SP的值随着数据的存入而增加。当数据从堆栈弹出之后,SP的值随之减少。复位时,SP的初值为07H,用户在初始化程序中可以给SP赋新的初值。2.4.3特殊功能寄存器内部RAM的高128单元是给特殊寄存器使用的,因此称之为专用寄存器区,其单元地址为80H~FFH。因为这些寄存器的功能已作专门规定,所以称其为专用寄存器或特殊功能寄存器(SpecialFunctionRegisters),简称SFR。AT89S51的SFR的总数为26个,仅占用了80H~FFH中的很小一部分。SFR是单片机片内资源的控制指挥单元,单片机内部不管集成了多少外围接口部件和功能单元,都是通过特殊功能寄存器SFR进行控制和管理的,因此学习任何一个单片机的功能部件的使用,一定要了解与之相关的SFR,并弄清通过这些SFR如何去控制你所使用的功能部件。2.4.3特殊功能寄存器51系列单片机内的I/O锁存器、定时器、串行口数据缓冲器以及各种控制寄存器和状态寄存器都以特殊功能寄存器的形式出现。它们离散地分布在80H~FFH的地址空间范围内,具体分布见表2-4。表2-4AT89S51单片机的SFR在80H~FFH的离散分布2.4.3特殊功能寄存器

表2-4列出了AT89S51单片机所有的特殊功能寄存器及其地址和初始值。字节地址能被8整除的专用寄存器都可以实现位寻址,个别不能被8整除的专用寄存器也可以实现位寻址。SFR的使用方法①从表2-4可以看出,80H~FFH这128字节并不是所有的地址都定义了SFR。在这个区域当中,除了SFR之外剩余的空闲单元,用户不得使用。读这些地址,一般将得到一个随机数据;写入的数据将会无效。②必须使用直接寻址方式对SFR进行访问,可使用寄存器名称(是它的符号地址)或地址。例如:0E0H——累加器的地址ACC——累加器的名称2.4.3特殊功能寄存器③具有位地址和位名称的SFR才可以位寻址,位地址有以下4种表示形式:a.直接使用位地址表示例如:0D7H——PSW最高位的位地址b.使用位名称表示例如:CY——PSW最高位的位名称c.使用SFR字节地址.位形式表示例如:0D7H.7——PSW字节地址.最高位d.使用SFR名称.位形式表示例如:PSW.7——PSW名称.最高位

2.4.3特殊功能寄存器(1)累加器ACC累加器ACC是一个8位累加器,字节地址为E0H。它是CPU中最重要、最繁忙的寄存器,ALU进行运算时数据绝大多数时候都来自于累加器ACC。它一般用于存放参加运算的操作数和运算结果,在指令系统中用A表示。(2)B寄存器B寄存器是运算器中的一个工作寄存器,字节地址为F0H。它主要是和ACC配合完成乖法和除法运算而设置的,存放运算结果。在除法指令中,被除数取自ACC,除数取自B,商数存放在ACC中,而余数则存放在B中。乘法指令的两个操作数分别取自ACC和B,乘积则存放在AB寄存器对中(此处的A即ACC)。B寄存器不进行乖、除运算时,B寄存器可作为RAM使用。2.4.3特殊功能寄存器

(3)堆栈指针SP堆栈指针SP(StackPointer)是一个8位特殊功能寄存器,字节地址为81H。它指示出堆栈顶部在内部RAM中的位置。系统复位后,SP初始化为07H,使得堆栈事实上由08H单元开始。考虑到08H~1FH单元分属于工作寄存器区1~3,若程序设计中要用到这些区,则最好把SP值改置为1FH或更大的值如60H。SP的初始值越小,堆栈深度就越深。堆栈指针的值可以由软件改变,因此堆栈在内部RAM中的位置比较灵活。除用软件直接改变SP值外,在执行PUSH、POP、各种子程序调用、中断响应、子程序返回(RET)和中断返回(RETI)等指令时,SP值将自动调整。当执行子程序调用或中断服务程序时,需要将下一条要执行的指令地址即PC值压入堆栈保存起来,当子程序或中断返回时,再将SP指向单元的内容回送到程序计数器PC中。这是一个很重要的指针。2.4.3特殊功能寄存器

(4)双地址指针DPTR0和DPTR1AT89S51单片机提供了两路16位地址指针:位于SFR中82H~83H的DPTR0和位于84H~85H的DPTR1,能给程序设计带来很大的便利。DPTR为16位的地址指针,由两个8位的寄存器DPH和DPL组成,可存放一个16位的地址值。当CPU访问64KB的外部数据存储器时,就用DPTR作地址指针,存放外部内存的地址;当CPU访问64KB的程序存储器时,DPTR用作基址寄存器。CPU也可单独对DPH、DPL操作,即将DPTR分成两个寄存器使用。2.4.3特殊功能寄存器

双地址指针可以改善同时需要两个16位指针运用时的性能DPTR0和DPTR1的使用由AUXR1的0位DPS来切换。当DPS位为0时,所有对DPTR的操作运用DPTR0;当DPS位为1时,所有对DPTR的操作运用DPTR1。这样,通过一个基本的INCAUXR1指令,就可以来回切换两个地址指针。例如:MOVAUXR1,#0;DPS为0,DPTR0有效……INCAUXR1;DPS为1,DPTR1有效……INCAUXR1;DPS为0,DPTR0有效

2.4.3特殊功能寄存器地址指针DPTR与程序计数器PC的异同分析:①相同之处:两者都是与地址有关的、16位的寄存器。作为地址寄存器使用时,PC与DPTR都是通过P0和P2口(作为16位地址总线)输出的。但是,PC的输出与ALE及PSEN有关;DPTR的输出,则与ALE、RD及WR相联系。②不同之处:PC与程序存储器的地址有关;而DPTR与数据存储器的地址有关;PC是16位的,DPTR可以作为16位寄存器对待,也可以作为两个8位寄存器对待。另外PC是不可以访问的,有自己独特的变化方式,它的变化轨迹决定了程序执行的流程;DPTR是可以访问的,如MOVDPTR1,#XXXXH,INCDPTP1等。2.4.3特殊功能寄存器(5)端口P0~P3专用寄存器P0、P1、P2和P3分别是I/O口P0~P3的锁存器,字节地址分别为80H、90H、A0H和B0H。在AT89SC51中,I/O和RAM统一编址,既可以字节寻址,也可以位寻址,使用起来较方便。有关P0~P3的详细情况,在后续内容中介绍。(6)串行数据缓冲器SBUF串行数据缓冲器SBUF的字节地址99H。用于存放欲发送或接收的数据,它实际上由两个独立的寄存器组成,一个是发送缓冲器,另一个是接收缓冲器。当要发送的数据传送到SBUF时,进入的是发送缓冲器,当要从SBUF取数据时,则取自接收缓冲器,取走的是刚接收到的数据2.4.3特殊功能寄存器

(7)定时器/计数器AT89SC51单片机有两个16位定时器/计数器T0和T1,字节地址分别90H和92H,它们分别由两个独立的8位寄存器组成,共有4个独立的寄存器:TH0,TL0,TH1,TL1,可对这4个寄存器寻址,但不能把T0和T1当成16位寄存器来访问。(8)看门狗定时器WDTWDT是为了解决CPU程序运行时可能进入混乱或死循环而设置,它由一个14bit计数器和看门狗复位SFR(WDTRST)构成。外部复位时,WDT默认为关闭状态,要打开WDT,用户必须按顺序将01EH和0E1H写到WDTRST寄存器(SFR地址为0A6H),当启动了WDT,它会随晶体振荡器在每个机器周期计数,除硬件复位或WDT溢出复位外没有其它方法关闭WDT,当WDT溢出,将使RST引脚输出高电平的复位脉冲。2.4.3特殊功能寄存器

使用看门狗(WDT):打开WDT需按次序写01EH和0E1H到WDTRST寄存器(SFR的地址为0A6H),当WDT打开后,需在一定的时候写01EH和0E1H到WDTRST寄存器以避免WDT计数溢出。14位WDT计数器计数达到16383(3FFFH),WDT将溢出并使器件复位。WDT打开时,它会随晶体振荡器在每个机器周期计数,这意味着用户必须在小于每个16383机器周期内复位WDT,也即写01EH和0E1H到WDTRST寄存器,WDTRST为只写寄存器。WDT计数器既不可读也不可写,当WDT溢出时,通常将RST引脚输出高电平的复位脉冲。复位脉冲持续时间为98xTOSC,而TOSC=1/FOSC(晶体振荡频率)。为使WDT工作最优化,必须在合适的程序代码时间段周期地复位WDT防止WDT溢出。2.4.3特殊功能寄存器

掉电和空闲时的WDT:掉电时期,晶体振荡停止,WDT也停止。掉电模式下,用户不能再复位WDT。有两种方法可退出掉电模式:硬件复位或通过激活外部中断。当硬件复位退出掉电模式时,处理WDT可像通常的上电复位一样。当由中断退出掉电模式则有所不同,中断低电平状态持续到晶体振荡稳定,当中断电平变为高即响应中断服务。为防止中断误复位,当器件复位,中断引脚持续为低时,WDT并未开始计数,直到中断引脚被拉高为止。这为在掉电模式前复位WDT。2.4.3特殊功能寄存器

为保证WDT在退出掉电模式时极端情况下不溢出,最好在进入掉电模式前复位WDT。在进入空闲模式前,WDT打开时,WDT是否继续由SFR中的AUXR的WDIDLE位决定,在IDLE期间(位WDIDLE=0)默认状态是继续计数。为防止AT89S51从空闲模式中复位,用户应周期性地设置定时器,重新进入空闲模式。当位WDIDLE被置位,在空闲模式中WDT将停止计数,直到从空闲(IDLE)模式中退出重新开始计数。2.4.3特殊功能寄存器

(10)辅助寄存器1(AUXR1)AUXR1用于选择双数据指针寄存器DP0和DP1,它的字节地址为A2H,不可以位寻址。各位的定义如表2-5所示。其中:-:预留扩展用;DPS:数据指针选择位DPS=0选择DPTR寄存器DP0L和DP0H;DPS=1选择DPTR寄存器DP1L和DP1H。2.4.3特殊功能寄存器(11)辅助寄存器(AUXR)AUXR的字节地址为8EH,用于选择ALE的时钟输出方式、RESET输出及空闲模式下WDT的工作方式,地址为8EH,不可以位寻址,各位的定义如表2-6所示。其中:-:预留扩展用DISALE:ALE使能标志位当DISALE=0时,ALE以1/6晶振频率输出信号;当DISALE=1时,ALE只有在执行MOVX或MOVC指令时启动2.4.3特殊功能寄存器DISRTO:复位输出标志位当DISRTO=0时,看门狗(WDT)定时结束,Reset输出高电平;当DISRTO=1时,Reset只有输入WDIDLE:空闲模式下WDT使能标志位当WDIDLE=0时,空闲模式下,WDT继续计数;当WDIDLE=1时,空闲模式下,WDT停止计数(12)其它控制寄存器IP、IE、TMOD、TCON、SCON和PCON寄存器分别包含有中断系统、定时器/计数器、串行口和供电方式的控制和状态位,这些寄存器将在以后内容中介绍。2.4.4地址空间1.片外总线结构从AT89S51单片机引脚可以看出,除了电源、复位、时钟输入以及I/O口外,其余的管脚都是为实现系统扩展而设置的。这些管脚构成了片外三总线结构,如图2-9所示。2.4.4地址空间(1)地址总线(AB)地址总线的宽度是16位,因此可以寻址的范围是64 KB。采用分时复用技术,可以对外部64 KB的数据存储器或程序存储器直接寻址。它由P0口提供16位地址总线的低8位(A0~A7),由P2口提供地址总线的高8位(A8~A15)。(2)数据总线(DB)数据总线的宽度是8位,它由P0口提供。(3)控制总线(CB)控制总线由P3口的第二功能(RXD、TXD、INT0、INT1、T0、T1、RD、WR)和4根独立的控制线(RST、EA、ALE、PSEN)组成。2.4.4地址空间2.程序存储器地址空间程序存储器用于存放编好的程序和表格常数。程序存储器通过16位程序计数器寻址,寻址能力为64KB,这使得指令能在64KB地址空间内任意跳转。AT89S51单片机ROM的地址范围0000H~0FFFH。3.数据存储器地址空间(1)片内RAM①工作寄存器区:AT89S51的前32个单元(地址00H~1FH)称为寄存器区。通过对特殊功能寄存器PSW中RS1、RS0两位的编程设置,可选择任一寄存器组为工作寄存器组,方法如前面表2-2所示。2.4.4地址空间

②位寻址区:字节地址20H到2FH称为位地址区,共有16个字节,计128位,每位都有相应的位地址,位地址范围为00H~7FH,见前面表2-3。位寻址区有两种访问方式:一是按字节访问;另一种是通过位寻址,对位寻址区128位进行位操作。③便笺区:30H~7FH,便笺区共有80个RAM单元,用于存放用户数据或作堆栈区使用。AT89S51对便栈区中每个RAM单元是按字节存取的。④特殊功能寄存器(26个):AT89S51片内高128BRAM中,有26个特殊功能寄存器(SFR),它们离散地分布在80H~FFH的RAM空间中。访问特殊功能寄存器只允许使用直接寻址方式。特殊功能寄存器表2-7所示。2.4.4地址空间(2)片外RAMAT89S51构成的应用系统当片内RAM不够用时,可在片外部扩充数据存储器。AT89S51给用户提供了可寻址64KB(0000H~FFFFH)的外部扩充RAM的能力,至于扩多少RAM,则根据用户实际需要来定。2.4.5外部数据存贮器

外部数据存储器的寻址空间可达64 KB,地址范围是0000H~FFFFH。P0端口作为RAM的地址/数据总线,当外部地址空间小于FFH时,只需P0口作为地址总线即可,P2口可以作为一般的I/O使用。当外部地址空间大于FFH时,则由P2端口传送高8位地址。对片外数据存储器的访问,使用MOVX的间接寻址指令,以区别对内部RAM(片内用MOV)的访问,同时自动产生读/写控制信号RD和WR。2.4.5外部数据存贮器片外RAM的用途:(1)没有特别的用途,不像片内RAM,不划分区域。(2)片外RAM做通用RAM使用,主要存放大量采集的或接收的数据、运算的中间数据、最后结果、用作堆栈等。使用外部RAM同样是要付出占用口资源为代价的,所以一般情况下不提倡使用外部RAM。2.5I/O端口

AT89系列单片机有P0(P0.0~P0.7)、P1(P1.0~P1.7)、P2(P2.0~P2.7)、P3(P3.0~P3.7)4个8位双向输入/输出端口,在结构上因端口的使用功能不同,其结构和性能都有所不同因此了解端口的结构特点是十分必要的,下面分别介绍。2.5.1I/O的内部结构P0口是一个8位漏极开路的双向I/O口。图2-10是P0口的位结构图。当P0口作为输出引脚时:控制信号=0时,与门输出=0,V1截止;内部总线=0,Q非=1,V2导通,P0.x=0读引脚当从内部总线输出低电平后,锁存器Q=0,Q非=1,场效应管T2开通,端口线呈低电平状态。此时无论端口线上外接的信号是低电乎还是高电平,从引脚读入单片机的信号都是低电平;因此作为输入引脚时一定是高电平;还有如果是读改写指令时一定是读锁存器。作为地址/数据复用口使用时的工作原理

这时多路开关‘控制’信号为‘1’,‘与门’解锁,当数据/地址线=0时,与门输出为0,反相器=1,V2导通,P0.X=0;当地址/数据=1时,V1导通,V2截止,P0.X=1.2.5.1I/O的内部结构2.P1口P1口是一个有内部上拉电阻的准双向口,位结构如图2-8所示,P1口在电路结构上与P0口有一些不同之处。首先它不再需要多路转接电路MUX,其次是电路的内部有上拉电阻。与场效应管共同组成输出驱动电路。2.5.1I/O的内部结构

(1) P1口作通用I/O口使用作为输出口使用时,已能向外提供推拉电流负载,无需再外接上拉电阻。在作输入时,和P0口一样,必须先将“1”写入锁存器,使场效应管T2截止,从而完成输入操作。(2)P1口管脚复用功能对于AT89S51单片机,P1.0与P1.1可以配置成定时/计数器2的外部计数输入端(P1.0/T2)与定时/计数器2的触发输入端(P1.0/T2EX);P1.5、P1.6、P1.7用于flash内存的ISP下载引脚。(3)对Flash内存进行编程或校验时接收低8位地址在对AT8989S51单片机内部Flash并行编程下载和程序校验时,P1口接收低8位地址。2.5.1I/O的内部结构表2-8P1口管脚复用功能2.5.1I/O的内部结构3.P2口(1)P2口作通用I/O口使用。当P2口作通用I/O口使用时,是一个准双向口,位结构如图2-12所示,此时转换开关MUX倒向左边,输出级与锁存器接通,引脚可接I/O设备,其输入/输出操作与P1口完全相同。2.5.1I/O的内部结构

(2)P2口作高8位地址总线口使用。当系统扩展外部存储器时,P2口用于输出高8位地址A15~A8。这时在CPU的控制下,转换开关MUX倒向右边,接通内部地址总线。(3)对Flash内存进行编程和校验时接收高位地址。在对AT89系列单片机内部Flash并行程序设计和程序校验时,P2口也接收高位地址或一些控制信号。2.5.1I/O的内部结构4.P3口P3口是一个多用途的口,也是一个准双向口,作为第一功能(通用I/O端口)使用时,其功能同P1口。P3口的位结构如图2-13所示。当作为I/O使用时,第二功能信号引线应保持高电平,与非门开通,以维持从锁存器到输出端数据输出通路的畅通。2.5.1I/O的内部结构

P3口还接收一些控制信当作第二功能使用时,每一位功能定义如表2-9所示。P3口的第二功能实际上就是系统具有控制功能的控制线。当输出第二功能信号时,该位的锁存器应置“1”,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出。CPU区分单片机的引脚是否有第二功能只要CPU执行到相应的指令,就自动转成了第二功能。2.5.1I/O的内部结构

4个I/O端口使用时的注意事项和在结构上的异同:通过前面的介绍,可知4个I/O端口在结构上是基本相同的,但又各具特点。在无片外扩展存储器的系统中,这4个端口的每1位都可以作为I/O端口使用。在作为一般的通用I/O输入时,都必须先向锁存器写入“1”,使输出驱动场效应管FET截止,以免误读数据。在系统扩展片外存储器时,P2口作为高8位地址,P0口分时作为低8位地址和双向数据总线。

2.5.2I/O口的负载能力和接口要求1.P0口(1)负载能力1)一般I/O口的负载能力:每一位输出可以驱动4个LS型TTL负载。2)用作总线时的负载能力:P0口作总线时,每一位输出可以驱动8个LS型TTL负载。拉电流:单片机引脚为高电平时对外输出的电流,一般1mA灌电流:单片机引脚为低电平时对外吸收的电流,一般10mA2.5.2I/O口的负载能力和接口要求

2.P1~P3口(1)负载能力P1~P3口的输出级接有上拉电阻,它们的每一位输出可以驱动4个LS型TTL负载。(2)接口要求由于P1~P3口的输出级接有上拉负载电阻,无论是作为输入口,还是作为输出口,不管外部电路的类型是什么,均无须外接上拉电阻。2.6复位电路和时钟电路

复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统出现死机时,也必须对单片机进行复位,使其重新从头开始工作。系统刚接通电源或重新启动时均进入复位状态。当系统处于正常工作状态时,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以实现可靠复位,如图2-14所示,其中TCY为机器周期,等于12个时钟周期。复位后ALE、PSEN均为高电平,各寄存器和程序计数器PC的状态见表2-10所示。2.6复位电路和时钟电路2.6.1复位电路及工作方式

单片机的外部复位电路有上电自动复位、按键手动复位、以及外部复位信号输入等方式。1.上电自动复位电路,也称为自动复位电路。当接通电源的瞬间,RST端与VCC同电位,随着电容上的电压逐渐上升,RST端的电压逐渐下降,于是在RST端便形成了一个正脉冲,其持续时间取决于RC电路的时间常数,单片机在正常工作时,高电平持续2个时钟即可实现系统有效地复位上电时高电平要维持10ms以上。2.6.1复位电路及工作方式

2.按键手动复位图2-16是AT89S51单片机的上电+按键复位电路。上电复位过程同上。当单片机工作过程中需要复位时,按下复位键,复位端RST通过200Ω的电阻与VCC电源接通,使RST引脚为高电平。复位按键弹起后,RST端经10KΩ的电阻接地,完成复位过程。图2-16VCC是单片机的供电电压,一般为+5V。2.6.1复位电路及工作方式3.外接复位芯片为了保证单片机可靠地复位,有时需要外接复位芯片,特别是当单片机处于间歇工作情况的时候,单片机需要频繁的复位,例如,在计算机监测系统中,电池供电的单片机系统由主计算机控制,平时单片机系统处于断电状态(节省电能),当主计算机接通单片机系统电源后,单片机需要可靠的上电复位进入工作状态。为提高复位的可靠性,可选用专用的复位芯片。2.6.2时钟电路及时序1.时钟电路AT89S51单片机的时钟电路主要内部振荡方式和外部振荡方式两种接法(1)内部振荡方式AT89S51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性。如果使用石英晶体,我们推荐使用30pF+/-10pF,而如使用陶瓷谐振器建议选择40pF+/-10PF。内部振荡方式接法如图2-17所示。2.6.2时钟电路及时序

(2)外部振荡方式用户也可以采用外部时钟。采用外部时钟的电路如图2-18所示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2端则悬空。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。

图2-17内部振荡方式图2-18外部振荡方式2.6.2时钟电路及时序图2-19为AT89S51单片机采用内部振荡方式的整个时钟电路的框图2.6.2时钟电路及时序

2.CPU时序单片机的时序是指CPU在执行指令时所需控制信号的时间顺序。时序信号是以时钟脉冲为基准产生的。CPU发出的时序信号有两类:一类用于片内各功能部件的控制,由于这类信号在CPU内部使用,用户无须了解;另一类信号通过单片机的引脚送到外部,用于片外存储器或I/O端口的控制,这类时序信号对单片机系统的硬件设计非常重要。为了便于对CPU时序进行分析,人们按指令的执行过程规定了几种周期,即时钟周期、状态周期、机器周期和指令周期,也称为时序定时单位。(1)时钟周期:时钟周期也称振荡周期,即振荡器的振荡频率fosc的倒数,是时序中最小的时间单位。单片机在工作时,它是由内

温馨提示

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

评论

0/150

提交评论