AT89C55
一、AT89C55主要特性参数:
与MCS-51产品指令系统完全兼容
20K字节可重复擦写Flash闪速存储器
1000次可擦写周期
全静态操作:0HZ-33MHZ
三级加密程序存储器ROM
256*8字节内部数据存储器RAM
32根可编程I/O口线
三个16位定时/计数器
8个中断源
低功耗空闲和掉电模式
二、AT89C55功能特性描述:
AT89C55是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含有20k字节可重复擦写Flash闪速存储器,该器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内具有通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C55单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
AT89C55具有以下标准功能:片内含有20K字节可重复擦写Flash闪速存储器,256字节内部数据存储器RAM,32根I/O线,三个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C55可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/记数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作直到下一个硬件复位。
三、AT89C55引脚功能说明:
图1 AT89C55总引脚图
图2 AT89C55四个端口引脚图
图3 AT89C55四个端口引脚图
图4 AT89C55内部总体框图
图1是AT89C55总引脚图(40脚DIP封装)。其中两条主电源引脚,两条外接晶体引脚,四条控制或与其他电源复用的引脚,32条I/O引脚,下面分别叙述这40条引脚的功能。
(1)电源引脚Vcc与GND
Vcc:电源电压
GND:接地
(2)输入/输出引脚P0、P1、P2、P3
P0 口:是双向8位三态I/O口,即地址/数据总线复用端口。作为输出口用时,每位都能吸收电流驱动8个TTL输入,端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,可分时用做低8位地址线和8位数据线,拉电阻。在Flash编程时,它输入指令字节,在验证程序时,则输出指令字节,校验时,要求外接上拉电阻。
P1口:是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在Flash编程和程序验证时,P1接收低8位地址。另外,P1.0和P1.1还可以分别作为定时/计数器的外部计数输入(P 1.0/T2)和输入(P 1.1/T2EX )
P2口:是一个带有内部上拉电阳的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阳,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX @DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX @RI指令)时,P2口输出P2锁存器的内容Flash编程和程序验证时,P2亦接收高8位地址和一些控制信号。
P3口:是带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流。P3口除了作为一般的I/O口线外,更重要的用途是它具有第二功能,如下表所示:
(3)外接晶体引脚XTAL1和XTAL2
XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。
XTAL2:振荡器反相放大器的输出端。
时钟振荡器:AT89C55中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1 和XTAL2 分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图5。外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,我们推荐电容使用30pF±10pF,而如使用陶瓷谐振器建议选择40pF±10F。用户也可以采用外部时钟。采用外部时钟的电路如图5右图所示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。
图5 内部振荡电路
石英晶体时:C1,C2=30pF±10pF
陶瓷滤波器:C1,C2=40pF±10pF
图6外部时钟驱动电路
由于外部时钟信号是经过一个2分频触发器后作为内部时钟发生器,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。
(4)控制或其他电源复用引脚RST、ALE/PROG、 PSEN、EA/VPP
RST:复位输入。当振荡器运行时,在此引脚上出现两个机器周期以上高电平将使单片机复位。
ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(允许地址锁存)输出脉冲用于锁存P0口的低8位地址。一般情况下,ALE仍以不变的频率周期性地出现正脉冲信号,此频率为振荡器频率的1/6。因此,它可用做对外输出的时钟,或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG )。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE:禁止位无效。
PSEN:是外部程序存储器的读选通信号,在外部程序存储器取指令(或常数)期间,每个机器周期两次有效。在此期间,当访问外部数据存储器,这两次PSEN信号将不出现。
EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为OOOOH-FFFFH), EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。当EA端保持高电平(接Vcc端),CPU则访问内部程序存储器。
Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
(5)特殊功能寄存器:
在AT89C55片内存储器中,80H-FFH共21个为特殊功能寄存器(SFE)。
并非所有的地址都被定义,从80H-FFH共128个字节只有一部分被定义,还有相当一部分没有定义。对没有定义的单元读写将是无效的,读出的数值将不确定,而写入的数据也将丢失。不应将数据“1”写入未定义的单元,由于这些单元在将来的产品中可能赋予新的功能,在这种情况下,复位后这些单元数值总是“0”。
(6)数据存储器:
AT89C55有256个字节的内部数据存储器RAM,80H-FFH.高128个字节与特殊功能寄存器(SFR)地址是重叠的,也就是访问高128字节的RAM和特殊功能寄存器的地址是相同的,但物理上它们是分开的。
当一条指令访问7FH以上的内部地址单元时,指令中使用的寻址方式是不同的,即寻址方式决定是访问高128字节RAM还是访问特殊功能寄存器。如果指令是直接寻址方式则为访问特殊功能寄存器。
例如,下面的直接寻址指令访问特殊功能寄存器OAOH(即P2口)地址单元。
MOV OAOH, #data
而间接寻址指令访问高128字节RAM,例如,下面的指令中,RO的内容为OAOH,则访问数据字节地址为OAOH,而不是P2口(OAOH)。
MOV @R0, #data
堆栈操作也是间接寻址方式,所以,高128位数据RAM亦可作为堆栈区使用。
(7)定时器0和1:
AT89C55的定时器0和1的工作方式与AT89C51和AT89C52相同。
(8)定时器2:
定时器2是一个16位定时/计数器。它既可以当定时器使用,也可对外部事件进行计数使用,其工作方式由特殊功能寄存器T2CON的C/T2位选择。定时器2有三种工作方式:捕获方式,自动重装载(向上或向下计数)方式和波特率发生器方式,工作方式由T2CON的控制位来选择,如下表所示。
定时器2由两个8位寄存器TH2和TL2组成,在定时器工作方式中,每个机器周期使TL2计数器的值增1,每个机器周期等于12个振荡器周期,因此,计数速率为振荡频率的1/12。
在计数工作方式时,当 T2引脚上外部输入信号产生由1至0的下降沿时,寄存器的值增1,在这种工作方式下,每个机器周期的5SP2期间,对外部脉冲信号输入进行采样。若在第一个周期中采样值为1,而在下一个周期中采样值为0,则在紧跟着的再下一个周期的S3P1期间,计数器增1。由于确认1至0的跳变需要2个机器周期,即24个振荡周期,因此,外部输入的计数脉冲的最高计数频率为振荡频率的1 /24。为确保采样的正确性,要求输入的电平在变化前至少保持一个完整周期的时间,以保证输入信号至少被采样一次。
(9)捕获方式:
在捕获方式下,通过T2CON控制位EXEN2来选择两种方式。如果EXEN2=0,定时器2是一个16位定时器/计数器,计数溢出时,对T2CON的溢出标志TF2置位,同时激活中断。如果EXEN2=1,定时器2完成相同的操作,而当T2EX引脚外部输入信号发生1至0负跳变时,也出现TH2和TE2中的值分别被捕获到RCAP2H和RCAP2E中。另外,T2EX引脚信号的跳变使得T2CON 中的EXF2置位,与TF2相仿,EXF2也会激活中断。捕获方式如下图所示。
(10)自动重装载(向上或向下计数器)方式:
当定时器2工作于16位自动重装载方式时,能对其编程为向上或向下计数方式,这个功能可通过特殊功能寄存器T2CON的DCEN位(允许向下计数)来选择的。复位时,DCEN位置“0”,定时器2默认设置为向上计数。当DCEN置位时,定时器2既可向上计数也可向下计数,这取决于T2EX引脚的值,当DCEN=0时,定时器2自动设置为向上计数,在这种方式下,T2CON 中的EXEN2控制位有两种选择,若EXEN2=0,定时器2为向上计数至OFFFFH溢出,置位TF2激活中断,同时把16位计数寄存器RCAP2H和RCAP2E重装载,RCAP2H和RCAP2E的值可由软件预置。若EXEN2=1,定时器2的16位重装载由溢出或外部输入端T2EX从1至0的下降沿触发。这个脉冲使EXF2置位如果中断允许,同样产生中断。
(11) 空闲节电模式:
AT89C55有两种可用软件编程的省电模式,它们是空闲模式和掉电工作模式。这两种方式是控制专用寄存器PCON(即电源控制寄存器)中的PD(PCON.1)和IDL(PCON.0)位来实现的。PD 是掉电模式,当PD=1 时,激活掉电工作模式,单片机进入掉电工作状态。IDL是空闲等待方式,当IDL=1,激活空闲工作模式,单片机进入睡眠状态。如需同时进入两种工作模式,即PD和IDL同时为1,则先激活掉电模式。在空闲工作模式状态,CPU保持睡眠状态而所有片内的外设仍保持激活状态,这种方式由软件产生。此时,片内RAM和所有特殊功能寄存器的内容保持不变。空闲模式可由任何允许的中断请求或硬件复位终止。终止空闲工作模式的方法有两种,其一是任何一条被允许中断的事件被激活,IDL(PCON.0)被硬件清除,即刻终止空闲工作模式。程序会首先响应中断,进入中断服务程序,执行完中断服务程序并紧随RETI(中断返回)指令后,下一条要执行的指令就是使单片机进入空闲模式那条指令后面的一条指令。其二是通过硬件复位也可将空闲工作模式终止。需要注意的是,当由硬件复位来终止空闲工作模式时,CPU 通常是从激活空闲模式那条指令的下一条指令开始继续执行程序的,要完成内部复位操作,硬件复位脉冲要保持两个机器周期(24个时钟周期)有效,在这种情况下,内部禁止CPU访问片内RAM,而允许访问其它端口。为了避免可能对端口产生意外写入,激活空闲模式的那条指令后一条指令不应是一条对端口或外部存储器的写入指令。