1、AT89S51是美国ATMEL公司生产的一款高性能、低功耗的CMOS8位单片机,片内的Flash只读程序存储器容量为4 bytes,器件采用ATMEL公司的高密度、非易失性存储技术生产,能够兼容8051指令系统和引脚。它汇集Flash程序存储器既可在线编程又能用传统的方式编程及通用8位微处理器于单片机芯片中。ATMEL公司功能强大、价格低廉的AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。主要性能参数:u 与MCS-51产品指令完全兼容u 4K字节在线系统编程(ISP)Flash闪存u 1000次擦写周期u 4.0-5.5V的工作电压范围u 全静态工作模式:0H
2、Z-33MHZu 三级程序加密锁u 128 x 8字节内部RAMu 32个可编程I/O接口u 2个16位置定时/计数器u 6个中断源u 全双工串行UART通道u 低功耗空闲和掉电模式u 中断可从空闲模式唤醒系统u 看门狗(WRT)及双数据指针u 掉电标识和快速编辑特性u 灵活的在线系统编程 功能特性概述: AT89S51提供以下标准功能:4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,看门狗(WTR),两个数据指针,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时AT89S51可降至0HZ的静态逻辑操作,并支持两种软件可选的
3、节电工作模式。空闲方式停止CPU的运作,但允许RAM、定时/计数器、串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他一切部件工作,直到下一个硬件复位。引脚功能说明: VCC:电源电压 GND:接地端 P0口:P0口是一组8位开路型漏极双向I/O口。作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写 “1”可作为高阻抗输入端用。 在访问外部数据存储器或者程序存储器时,这组端口分时转换地址的低8位和数据总线复用,访问期间内部上拉电阻被激活。在Flash编程时P0口接收指令字节,而在程序校验时输出指令字节并要求外接上拉电阻。 P1口:P1口时一个带内部上拉电
4、阻的8位双向I/O口,P1的输出缓冲级(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部上拉电阻把端口拉到高电平,此时可以作为输入口。因为存在内部上拉电阻,P1口作为输入口使用时,某个引脚被外部信号拉到低电平会输出一个电流IIL_Flash编程和编程校验期间,P1接收低8位地址。 P2口:P2时一个带内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻,某个引脚被外部信号拉低时会输出一个电路。 在访问外部程序存储器或者16位地址的外部数据存储器(例如执行MOVX DPTR指令)时,P2口送出高8位地址数据
5、。在访问8位地址的外部数据存储器(如执行MOVX R指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不会改变。 Flash编程或者校验时,P2也接收高位地址和其他控制信号。 P3口:P3口时一组带内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可以作为输入端口。作为输入端时,被外部信号拉低的P3口将用上拉电阻输出电流IIL。 P3口除了作为一般的I/O口线外,更重要的用途时它的第二功能,如下表所示: P3口还接收一些用于Flash闪速存储器编程和程序校验的控
6、制信号。RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上的高电平将使得单片机复位。WDT溢出将使得该引脚输出高电平,设置SFR AUXR 的DISRTO位(地址8EH)可打开或者关闭该功能。DISRTO位缺省为RESET输出高电平打开状态。 ALE/:当访问外部程序存储器或者数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍然以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或者用于定时目的。要注意的是,每当访问外部数据存储器时将跳过一个ALE脉冲。 对Flash存储器编程期间,该引脚还用于输入编程脉冲()。 如有
7、必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后只有MOVX和MOVC指令ALE才会被激活。此外,该引脚会被稍微拉高,单元执行外部程序时,应设置ALE无效。 :程序存储允许()输出的时外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或者数据)时,每个机器周期两次有效,即输出两个脉冲。当访问外部数据存储器时,没有两次有效的信号。 EA/VPP:外部访问允许。欲使得CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需要注意的是,如果加密位LB1被编程,复位时内部会锁存EA端状态。 如果EA端
8、时高电平(接VCC端),CPU则执行内部程序存储器中的指令。 Flash存储器编程时,该引脚加上+12V的编程电压VPP。 XTAL1:振荡器反相放大器及内部时钟发生器的输入端。 XTAL2:振荡器反相放大器的输出端。 特殊功能寄存器: 特殊功能寄存器内部空间分布如下表所示: 这些地址并没有全部占用,没有占用的地址也不可以使用,读这些地址将会得到一个不确定的数值。而写这些地址单元也将得不到预期的结果。 表1 AT89S51特殊功能寄存器分布图及复位值 不要用软件方式访问这些未定义的单元,这些单元时留作以后产品扩展之用,复位后这些新的位将置为0. 中断寄存器:各个中断允许控制位于IE寄存器,5个
9、中断源的中断优先级控制位位于IP寄存器中。 表2 AUXR辅助寄存器 双时钟指针寄存器: 为更加方便地访问内部和外部数据存储器,AT89S51有两个16位数据指针寄存器:DP0位于SFR(特殊功能寄存器)区块中的地址82H、83H和DP1位于地址84H、85H,当SFR中的位DPS=0选择DP0,而当DPS=1则选择DP1。用户应在访问相应的数据指针寄存器前初始化DPS。 电源空闲标志:电源空闲标志(POF)在特殊功能寄存器SFR中PCON的第4位(PCN.4),电源打开时POF置“1”,它可由软件设置睡眠状态并不为复位所影响。存储器结构:MCS-51单片机内核采用了程序存储器和数据存储器空间
10、分开的结构,都具有64KB的外部程序和数据的寻址空间。程序存储器:如果EA引脚接地(GND),全部程序均执行外部存储器。在AT89S51中,如果EA接到VCC(电源+),程序首先执行地址从0000H-0FFFH(4KB)内部程序存储器,再执行地址为1000H-FFFFH(60KB)的外部程序存储器。数据存储器:AT89S51有128字节的内部RAM,这128字节可利用直接或者间接寻址方式进行访问,堆栈操作可以利用间接寻址方式进行,128字节均可设置位堆栈区空间。看门狗定时器(WDT):WDT为了解决CPU程序运行时可能进入混乱或者死循环而设置,它由一个14Bit计数器和看门狗复位SFR(WDT
11、RST)构成。外部复位时,WDT默认为关闭状态,要打开WDT,用户必须按顺序把01EH和0E1H写到WDTRST寄存器(SFR地址为0A6H),一旦启动了WDT,它会随晶体振荡器在每个机器周期计数,除硬件复位或WDT溢出复位外没有其他方法关闭WDT,当WDT溢出,将使RST引脚输出高电平的复位脉冲。使用看门狗(WDT):打开WDT需按次序写01EH和0E1H到WDTRST寄存器(SFR的地址为0A6H),当WDT打开后,需要一定的时间写01EH和0E1H到WDTRST寄存器以避免WDT技术溢出。14位WDT计数器计数达到3FFFFH,WDT将溢出并使得器件复位。WDT打开时,它会随着晶体振荡器
12、在每个机器周期计数,这意味着用户必须在小于每个3FFFH机器周期内复位WDT,也即写01EH和0E1H到WDTRST寄存器。WDTRST是只写寄存器,WDT计数器既不可以读也不可以写,当WDT溢出时,通常将使得RST引脚输出高电平的复位脉冲。复位脉冲持续时间为98xTOSC,而TOSC=1/FOSC(晶体振荡频率)。为使得WDT工作最优化,必须在合适的程序代码时间段周期地复位WDT防止WDT溢出。 掉电和空闲时的WDT:掉电时期,晶体振荡停止,WDT也停止。掉电模式下,用户不能再复位WDT。有两种方法可以退掉掉电模式:硬件复位或通过激活外部中断。当硬件复位退出电模式时,处理WDT可像通常的上电
13、复位一样。当由中断退出掉电模式则有所不同,中断低电平状态持续到晶体振荡稳定,当中断电平变为高即响应中断服务。位防止中断误复位,当器件复位,中断引脚为低时,WDT并未开始给计数,直到中断引脚为高为止。这为在掉电模式下的中断执行中断服务程序而设置。为保证WDT在退出掉电模式时极端情况下不溢出,最好在进入掉电模式前复位WDT。在进入空闲模式前,WDT打开时WDT是否计数由SFR中的AUXR的WDIDLE位决定IDLE期间(位WDIDLE=0)默认状态是继续计数。为防止AT89S51从空闲模式中复位,用户应周期性设置定时器,重新进入空闲模式。、当WDIDLE被复位,在空闲模式中WDT将停止计数,直到从
14、空闲(IDLE)模式中重新开始计数。UART一通用异步通信口:AT85S51的UART操作与AT89C51一样,有关更详细的资料请参考ATMEL公司的网站(),从主页选择“products”-“8051-Architecture Flash Microcontroller”-“product Overview”。定时器0和定时器1:AT89S51的定时器0和定时器1操作于ATC51一样,有关更详细的资料请参考ATMEL公司的网站(),从主页选择“Products”“8951-Architecture Flash Microcontroller”“Product Overview”。 中断:AT
15、89s51共有5个中断向量:两个外部中断(INT0和INT1),2个定时中断(Timer0和Timer1)和一个串行中断。这些中断如图1. 这些中断源各自的禁止和使能位参见特殊功能寄存器的IE。IE也包括总中断控制位EA,EA清零将关闭所有中断。 值得注意的时表4中的IE.6和IE.5没有定义,用户不用访问这些位它被保留为以后的AT89产品作为扩展之用。 定时器0和定时器1的中断标志TF0和TF1,它时定时器溢出时候的S5P2时序周期被置位,该标志保留到下个时序周期。 表4:中断控制寄存器图1:中断源方框图晶体振荡器的特性: AT89S51中由一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别时该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷振荡器一起构成自激振荡器,振荡电路参见图5. 外接石英晶体(或陶瓷振荡器)及电容C1、C2接在放大器的反馈回路中构