AT89S52中文资料.pdf
- 文档编号:14654875
- 上传时间:2023-06-25
- 格式:PDF
- 页数:19
- 大小:352.60KB
AT89S52中文资料.pdf
《AT89S52中文资料.pdf》由会员分享,可在线阅读,更多相关《AT89S52中文资料.pdf(19页珍藏版)》请在冰点文库上搜索。
AT89S521主要性能主要性能l与MCS-51单片机产品兼容l8K字节在系统可编程Flash存储器l1000次擦写周期l全静态操作:
0Hz33Hzl三级加密程序存储器l32个可编程I/O口线l三个16位定时器/计数器l八个中断源l全双工UART串行通道l低功耗空闲和掉电模式l掉电后中断可唤醒l看门狗定时器l双数据指针l掉电标识符功能特性描述功能特性描述AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
R8位微控制器位微控制器8K字节在系统可编程字节在系统可编程FlashAT89S52Rev.1919-07/01AT89S522引脚结构引脚结构AT89S523方框图方框图引脚功能描述引脚功能描述AT89S524VCC:
电源GND:
地P0口:
口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P1口:
口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。
在flash编程和校验时,P1口接收低8位地址字节。
引脚号引脚号第二功能第二功能P1.0T2(定时器/计数器T2的外部计数输入),时钟输出P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5MOSI(在系统编程用)P1.6MISO(在系统编程用)P1.7SCK(在系统编程用)P2口:
口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVXDPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVXRI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。
在flash编程和校验时,P3口也接收一些控制信号。
AT89S525引脚号引脚号第二功能第二功能P3.0RXD(串行输入)P3.1TXD(串行输出)P3.2INT0(外部中断0)P3.3INT0(外部中断0)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器写选通)RST:
复位输入。
晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。
看门狗计时完成后,RST脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
ALE/PROG:
地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
在flash编程时,此引脚(PROG)也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。
然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。
这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。
否则,ALE将被微弱拉高。
这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。
PSEN:
外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。
当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。
EA/VPP:
访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。
为了执行内部程序指令,EA应该接VCC。
在flash编程期间,EA也接收12伏VPP电压。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
AT89S526表表1AT89S52特殊寄存器映象及复位值特殊功能寄存器特殊功能寄存器特殊功能寄存器(SFR)的地址空间映象如表1所示。
并不是所有的地址都被定义了。
片上没有定义的地址是不能用的。
读这些地址,一般将得到一个随机数据;写入的数据将会无效。
用户不应该给这些未定义的地址写入数据“1”。
由于这些寄存器在将来可能被赋予新的功能,复位后,这些位都为“0”。
定时器定时器2寄存器:
寄存器:
寄存器T2CON和T2MOD包含定时器2的控制位和状态位(如表2和表3所示),寄存器对RCAP2H和RCAP2L是定时器2的捕捉/自动重载寄存器。
中断寄存器:
中断寄存器:
各中断允许位在IE寄存器中,六个中断源的两个优先级也可在IE中设置。
AT89S527表表2T2CON:
定时器/计数器2控制寄存器T2CON地址为0C8H复位值:
00000000B位可寻址TF2EXF2RLCLKTCLKEXEN2TR276543210符号功能TF2定时器2溢出标志位。
必须软件清“0”。
RCLK=1或TCLK=1时,TF2不用置位。
EXF2定时器2外部标志位。
EXEN2=1时,T2EX上的负跳变而出现捕捉或重载时,EXF2会被硬件置位。
定时器2打开,EXF2=1时,将引导CPU执行定时器2中断程序。
EXF2必须如见清“0”。
在向下/向上技术模式(DCEN=1)下EXF2不能引起中断。
RCLK串行口接收数据时钟标志位。
若RCLK=1,串行口将使用定时器2溢出脉冲作为串行口工作模式1和3的串口接收时钟;RCLK0,将使用定时器1计数溢出作为串口接收时钟。
TCLK串行口发送数据时钟标志位。
若TCLK=1,串行口将使用定时器2溢出脉冲作为串行口工作模式1和3的串口发送时钟;TCLK0,将使用定时器1计数溢出作为串口发送时钟。
EXEN2定时器2外部允许标志位。
当EXEN2=1时,如果定时器2没有用作串行时钟,T2EX(P1.1)的负跳变见引起定时器2捕捉和重载。
若EXEN20,定时器2将视T2EX端的信号无效TR2开始/停止控制定时器2。
TR2=1,定时器2开始工作定时器2定时/计数选择标志位。
0,定时;1,外部事件计数(下降沿触发)捕捉/重载选择标志位。
当EXEN2=1时,1,T2EX出现负脉冲,会引起捕捉操作;当定时器2溢出或EXEN2=1时T2EX出现负跳变,都会出现自动重载操作。
0将引起T2EX的负脉冲。
当RCKL=1或TCKL1时,此标志位无效,定时器2溢出时,强制做自动重载操作。
双数据指针寄存器:
双数据指针寄存器:
为了更有利于访问内部和外部数据存储器,系统提供了两路16位数据指针寄存器:
位于SFR中82H83H的DP0和位于84H85。
特殊寄存器AUXR1中DPS0选择DP0;DPS=1选择DP1。
用户应该在访问数据指针寄存器前先初始化AT89S528DPS至合理的值。
表表3aAUXR:
辅助寄存器AUXR地址:
8EH复位值:
XXX00XX0B不可位寻址-WDIDLEDISRTO-DISALE76543210-预留扩展用DISALEALE使能标志位DISALE操作方式0ALE以1/6晶振频率输出信号1ALE只有在执行MOVX或MOVC指令时激活DISRTO复位输出标志位DISRTO0看门狗(WDT)定时结束,Reset输出高电平1Reset只有输入WDIDLE空闲模式下WDT使能标志位WDIDLE0空闲模式下,WDT继续计数1空闲模式下,WDT停止计数掉电标志位:
掉电标志位:
掉电标志位(POF)位于特殊寄存器PCON的第四位(PCON.4)。
上电期间POF置“1”。
POF可以软件控制使用与否,但不受复位影响。
表表3bAUXR1:
辅助寄存器1AUXR1地址:
A2H复位值:
XXXXXXX0B不可位寻址DPS76543210-预留扩展用DPS数据指针选择位DPS0选择DPTR寄存器DP0L和DP0H1选择DPTR寄存器DP1L和DP1HAT89S529存储器结构存储器结构MCS-51器件有单独的程序存储器和数据存储器。
外部程序存储器和数据存储器都可以64K寻址。
程序存储器:
程序存储器:
如果EA引脚接地,程序读取只从外部存储器开始。
对于89S52,如果EA接VCC,程序读写先从内部存储器(地址为0000H1FFFH)开始,接着从外部寻址,寻址地址为:
2000HFFFFH。
数据存储器:
数据存储器:
AT89S52有256字节片内数据存储器。
高128字节与特殊功能寄存器重叠。
也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。
当一条指令访问高于7FH的地址时,寻址方式决定CPU访问高128字节RAM还是特殊功能寄存器空间。
直接寻址方式访问特殊功能寄存器(SFR)。
例如,下面的直接寻址指令访问0A0H(P2口)存储单元MOV0A0H,#data使用间接寻址方式访问高128字节RAM。
例如,下面的间接寻址方式中,R0内容为0A0H,访问的是地址0A0H的寄存器,而不是P2口(它的地址也是0A0H)。
MOVR0,#data堆栈操作也是简介寻址方式。
因此,高128字节数据RAM也可用于堆栈空间。
看门狗定时器看门狗定时器WDT是一种需要软件控制的复位方式。
WDT由13位计数器和特殊功能寄存器中的看门狗定时器复位存储器(WDTRST)构成。
WDT在默认情况下无法工作;为了激活WDT,户用必须往WDTRST寄存器(地址:
0A6H)中依次写入01EH和0E1H。
当WDT激活后,晶振工作,WDT在每个机器周期都会增加。
WDT计时周期依赖于外部时钟频率。
除了复位(硬件复位或WDT溢出复位),没有办法停止WDT工作。
当WDT溢出,它将驱动RSR引脚一个高个电平输出。
WDT的使用的使用为了激活WDT,用户必须向WDTRST寄存器(地址为0A6H的SFR)依次写入0E1H和0E1H。
当WDT激活后,用户必须向WDTRST写入01EH和0E1H喂狗来避免WDT溢出。
当计数达到8191(1FFFH)时,13位计数器将会溢出,这将会复位器件。
晶振正常工作、WDT激活后,每一个机器周期WDT都会增加。
为了复位WDT,用户必须向WDTRST写入01EH和0E1H(WDTRST是只读寄存器)。
WDT计数器不能读或写。
当WDT计数器溢出时,将给RST引脚产生一个复位脉冲输出,这个复位脉冲持续96个晶振周期(TOSC),其中TOSC=1/FOSC。
为了很好地使用WDT,应该在一定时间内周期性写入那部分代码,以避免WDT复位。
掉电和空闲方式下的掉电和空闲方式下的WDT在掉电模式下,晶振停止工作,这意味这WDT也停止了工作。
在这种方式下,用户不必喂狗。
有两种方式可以离开掉电模式:
硬件复位或通过一个激活的外部中断。
通过硬件复位退出掉电模式后,用户就应该给WDT喂狗,就如同通常AT89S52复位一样。
通过中断退出掉电模式的情形有很大的不同。
中断应持续拉低很长一段时间,使得晶振AT89S5210稳定。
当中断拉高后,执行中断服务程序。
为了防止WDT在中断保持低电平的时候复位器件,WDT直到中断拉低后才开始工作。
这就意味着WDT应该在中断服务程序中复位。
为了确保在离开掉电模式最初的几个状态WDT不被溢出,最好在进入掉电模式前就复位WDT。
在进入待机模式前,特殊寄存器AUXR的WDIDLE位用来决定WDT是否继续计数。
默认状态下,在待机模式下,WDIDLE0,WDT继续计数。
为了防止WDT在待机模式下复位AT89S52,用户应该建立一个定时器,定时离开待机模式,喂狗,再重新进入待机模式。
UART在AT89S52中,UART的操作与AT89C51和AT89C52一样。
为了获得更深入的关于UART的信息,可参考ATMEL网站(http:
/)。
从这个主页,选择“Products”,然后选择“8051-ArchitechFlashMicrocontroller”,再选择“ProductOverview”即可。
定时器定时器0和定时器和定时器1在AT89S52中,定时器0和定时器1的操作与AT89C51和AT89C52一样。
为了获得更深入的关于UART的信息,可参考ATMEL网站(http:
/)。
从这个主页,选择“Products”,然后选择“8051-ArchitechFlashMicrocontroller”,再选择“ProductOverview”即可。
定时器定时器2定时器2是一个16位定时/计数器,它既可以做定时器,又可以做事件计数器。
其工作方式由特殊寄存器T2CON中的C/T2位选择(如表2所示)。
定时器2有三种工作模式:
捕捉方式、自动重载(向下或向上计数)和波特率发生器。
如表3所示,工作模式由T2CON中的相关位选择。
定时器2有2个8位寄存器:
TH2和TL2。
在定时工作方式中,每个机器周期,TL2寄存器都会加1。
由于一个机器周期由12个晶振周期构成,因此,计数频率就是晶振频率的1/12。
表表3定时器2工作模式RCLK+TCLKCP/RL2TR2MODE00116位自动重载01116位捕捉11波特率发生器0(不用)在计数工作方式下,寄存器在相关外部输入角T2发生1至0的下降沿时增加1。
在这AT89S5211种方式下,每个机器周期的S5P2期间采样外部输入。
一个机器周期采样到高电平,而下一个周期采样到低电平,计数器将加1。
在检测到跳变的这个周期的S3P1期间,新的计数值出现在寄存器中。
因为识别10的跳变需要2个机器周期(24个晶振周期),所以,最大的计数频率不高于晶振频率的1/24。
为了确保给定的电平在改变前采样到一次,电平应该至少在一个完整的机器周期内保持不变。
捕捉方式捕捉方式在捕捉模式下,通过T2CON中的EXEN2来选择两种方式。
如果EXEN2=0,定时器2时一个16位定时/计数器,溢出时,对T2CON的TF2标志置位,TF2引起中断。
如果EXEN2=1,定时器2做相同的操作。
除上述功能外,外部输入T2EX引脚(P1.1)1至0的下跳变也会使得TH2和TL2中的值分别捕捉到RCAP2H和RCAP2L中。
除此之外,T2EX的跳变会引起T2CON中的EXF2置位。
像TF2一样,T2EX也会引起中断。
捕捉模式如图5所示。
图图5定时器的捕捉模式自动重载自动重载当定时器2工作于16位自动重载模式,可对其编程实现向上计数或向下计数。
这一功能可以通过特殊寄存器T2MOD(见表4)中的DCEN(向下计数允许位)来实现。
通过复位,DCEN被置为0,因此,定时器2默认为向上计数。
DCEN设置后,定时器2就可以取决于T2EX向上、向下计数。
如图6所示,DCEN=0时,定时器2自动计数。
通过T2CON中的EXEN2位可以选择两种方式。
如果EXEN2=0,定时器2计数,计到0FFFFH后置位TF2溢出标志。
计数溢出也使得定时器寄存器重新从RCAP2H和RCAP2L中加载16位值。
定时器工作于捕捉模式,RCAP2H和RCAP2L的值可以由软件预设。
如果EXEN2=1,计数溢出或在外部T2EX(P1.1)引脚上的1到0的下跳变都会触发16位重载。
这个跳变也置位EXF2中断标志位。
如图6所示,置位DCEN,允许定时器2向上或向下计数。
在这种模式下,T2EX引脚控制着计数的方向。
T2EX上的一个逻辑1使得定时器2向上计数。
定时器计到0FFFFHAT89S5212溢出,并置位TF2。
定时器的溢出也使得RCAP2H和RCAP2L中的16位值分别加载到定时器存储器TH2和TL2中。
T2EX上的一个逻辑0使得定时器2向下计数。
当TH2和TL2分别等于RCAP2H和RCAP2L中的值的时候,计数器下溢。
计数器下溢,置位TF2,并将0FFFFH加载到定时器存储器中。
定时器2上溢或下溢,外部中断标志位EXF2被锁死。
在这种工作模式下,EXF2不能触发中断。
图图6定时器2重载模式(DCEN=0)表表4T2MOD-定时器2控制寄存器T2MOD地址:
0C9H复位值:
XXXXXX00B不可位寻址T2OEDCEN76543210符号符号功能功能-无定义,预留扩展T2OE定时器2输出允许位DCEN置1后,定时器2可配置成向上/向下计数AT89S5213图图7定时器2自动重载(DCEN=1)图图8定时器2波特率发生器模式AT89S5214波特率发生器波特率发生器通过设置T2CON(见表2)中的TCLK或RCLK可选择定时器2作为波特率发生器。
如果定时器2作为发送或接收波特率发生器,定时器1可用作它用,发送和接收的波特率可以不同。
如图8所示,设置RCLK和(或)TCLK可以使定时器2工作于波特率产生模式。
波特率产生工作模式与自动重载模式相似,因此,TH2的翻转使得定时器2寄存器重载被软件预置16位值的RCAP2H和RCAP2L中的值。
模式1和模式3的波特率由定时器2溢出速率决定,具体如下公式:
模式1和模式3波特率162溢出率定时器定时器可设置成定时器,也可为计数器。
在多数应用情况下,一般配置成定时方式(CP/T2=0)。
定时器2用于定时器操作与波特率发生器有所不同,它在每一机器周期(1/12晶振周期)都会增加;然而,作为波特率发生器,它在每一机器状态(1/2晶振周期)都会增加。
波特率计算公式如下:
模式1和模式3的波特率)2,2(6553632LRCAPHRCAP晶振频率*原文少半个括号“(”其中,(RCAP2H,RCAP2L)是RCAP2H和RCAP2L组成的16位无符号整数。
定时器2作为波特率发生器,如图8所示。
图中仅仅在T2CON中RCLK或TCLK1才有效。
特别强调,TH2的翻转并不置位TF2,也不产生中断;EXEN2置位后,T2EX引脚上10的下跳变不会使(RCAP2H,RCAP2L)重载到(TH2,TL2)中。
因此,定时器2作为波特率发生器,T2EX也还可以作为一个额外的外部中断。
定时器2处于波特率产生模式,TR2=1,定时器2正常工作。
TH2或TL2不应该读写。
在这种模式下,定时器在每一状态都会增加,读或写就不会准确。
寄存器RCAP2可以读,但不能写,因为写可能和重载交迭,造成写和重载错误。
在读写定时器2或RCAP2寄存器时,应该关闭定时器(TR2清0)。
可编程时钟输出可编程时钟输出如图9所示,可以通过编程在P1.0引脚输出一个占空比为50%的时钟信号。
这个引脚除了常规的I/O角外,还有两种可选择功能。
它可以通过编程作为定时器/计数器2的外部时钟输入或占空比为50%的时钟输出。
当工作频率为16MHZ时,时钟输出频率范围为61HZ到4HZ。
为了把定时器2配置成时钟发生器,位C/T2(T2CON.1)必须清0,位T2OE(T2MOD.1)必须置1。
位TR2(T2CON.2)启动、停止定时器。
时钟输出频率取决于晶振频率和定时器2捕捉寄存器(RCAP2H,RCAP2L)的重载值,如公式所示:
时钟输出频率2,2655364)(晶振频率LRCAPHRCAP在时钟输出模式下,定时器2不会产生中断,这和定时器2用作波特率发生器一样。
定AT89S5215时器2也可以同时用作波特率发生器和时钟产生。
不过,波特率和输出时钟频率相互并不独立,它们都依赖于RCAP2H和RCAP2L。
图图9定时器2时钟输出模式中断中断AT89S52有6个中断源:
两个外部中断(INT0和INT1),三个定时中断(定时器0、1、2)和一个串行中断。
这些中断如图10所示每个中断源都可以通过置位或清除特殊寄存器IE中的相关中断允许控制位分别使得中断源有效或无效。
IE还包括一个中断允许总控制位EA,它能一次禁止所有中断。
如表5所示,IE.6位是不可用的。
对于AT89S52,IE.5位也是不能用的。
用户软件不应给这些位写1。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AT89S52 中文 资料