at89c52数据手册翻译Word文件下载.docx
《at89c52数据手册翻译Word文件下载.docx》由会员分享,可在线阅读,更多相关《at89c52数据手册翻译Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
引脚描述:
VCC:
电源电压。
地:
接地。
0端口
端口0是一个8位漏极开路型双向1/O口。
作为输出端口,每位能吸收电流的方式驱动8个TTL逻辑门电路。
对端口P0写“1”时,可作为高阻抗输入端用。
端口0也可以配置多路复用的低位地址/数据总线访问外部程序和数据存储器。
在访问期间激活内部上拉电阻。
在FLASH由编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
端口1
端口1是一个8位双向I/O端口与内部引体向上。
端口1的输出缓冲级可以吸收四个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻某个引脚被外部信号拉低时会输出一个电流IIL。
此外,P1.0和P1.1可以配置为外部计数定时器/计数器2输入(P1.0/T2)和定时器/计数器2触发输入(P1.1/T2EX),分别如下表1所示。
端口1低阶也接收地址字节在Flash编程和验证。
表1
引脚号
功能特性
Pl.0
T2(定时/计数器2外部计数脉冲输入),时钟输出
Pl.1
TZEx定时/计数2捕获/重装载触发和方向控制)
端口2
端口2是一个带有内部上拉电阻的8位双向I/O口。
端口2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑电路。
对端口P2写“l"
,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(LLT)。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOvx@DPTR指令)时,端口2送出高8位地址数据。
在访问8位地址的外部数据存储器、如执行MOVX@RI指令)时,P2口输出端口2锁存器的内容。
FLASH编程或校验时,端口2亦接收高位地址和一些控制信号。
端口3
端口3是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
此时,被外部拉低的端口3将用上拉电阻输出电流(IIL)。
端口3还提供各种AT89C51没有的特殊的功能特性,如下表所示。
端口3还接收一些用于FLASH闪速存储器编程和程序校验的控制信号。
表2
端口引脚
第二功能
P3.0
RXD(串行输入口〕
P3.1
TXD(串行输出口〕
P3.2
INT0(外中断0〕
P3.3
INT1(外中断l)
P3.4
T0(定时/计数器0)
P3.5
T1(定时/计数器l)
P3.6
WR(外部数据存储器写选通)
P3.7
RD(外部数据存储器读选通)
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元。
可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活,此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN:
程序储存允许PSEN输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令时,每个机器周期两次PSEN有效,即输出两个脉冲。
在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP:
外部访问允许。
欲使CPU
仅访问外部程序存储器(地址为0000H-FFFFH
),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LBI被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。
FLASH存储器编程时,该引脚加上+12V的编程允许电源VPP
,当然这必须是该器件是使用12V编程电压VPP。
XTAL1:
内部反向振荡放大器的输入和内部时钟的输入端。
XTAL2:
内部反向振荡放大器的输出。
特殊功能寄存器:
片上内存区域的地址称为特殊功能寄存器(SFR)空间。
注意,并不是所有的地址都被定义,还有相当一部分没有定义。
对没有定义的单元读写将是无效的,读出的数位将不确定,而写入的数据也将丢失。
不应将数据“1”写入未定义的单元,由于这些单元在将来的产品中可能赋予新的功能,在这种情况下,复位后这些单元数值总是“0”。
定时器/寄存器2:
控制和状态寄存器中包含T2CON和T2MOD定时器2。
寄存器对(RCA02H、RCAP2L)是定时器2在16
位捕获方式或16位自动重装载方式下的捕获/自动重装载寄存器。
中断寄存器:
IE的个别中断允许位寄存器。
lP寄存器中6个中断源的每一个可定为2个优先级。
数据存储器:
AT89C52单片机芯片上有256字节的RAM。
28个字节与特殊功能寄存器(SFR)地址是重叠的,也就是高128字竹的RAM和殊功能寄存器的地址是相同的,但物理上它们是分开的。
当一个指令访问内部位置上面地址7跳频,地址模式用于指令指定CPU访问上面的128字节的RAM或SFR空间指令。
例如,下面的直接寻址指令访问特殊功能寄存器0A0H(即P2口)地址单元。
MOV0A0H
,#data间接寻址指令访问高128字节RAM
,例如下面的间接子址指令中,R0的内容为0A0H
,则访问数据字节地址为0A0H,
而不是P2(0A0H
)。
MOV
@R0,#data,所以上面的128字节的RAM可用数据堆栈空间。
定时器0和1:
AT89C52单片机定时器0和定时器1的操作与AT89C51单片机定时器0和定时器1操作一样。
定时器2:
定时器2是一个16位的定时器/计数器,可以作为一个定时器或计数器。
其工作方式由特殊功能寄存器T2CON的C/T2位选择。
定时器2有三种工作方式:
捕获方式,自动重装载(向上或向下计数)方式和波特率发生器方式,工作方式由T2CON的控制位来选择。
定时器2由两个8位寄存器TH2和TL2组成,在定时器工作方式中,每个机器周期TL2寄存器的值加1,由于一个机器周期由12个振荡时钟构成,因此,计数速率为振荡频率的1/l2。
在计数工作方式时,当T2引脚上外部输入信号产生由1至0的下降沿时,寄存器的值加1,在这种工作方式下,对外部输入进行采样。
若在第一个机器周期中采到的值为1,而在下一个机器周期中采到的值为0,
则在紧跟着的下一个周期的S3P1期间寄存器加l。
由于识别1至0的跳变需要2个机器周期(24个振荡周期),因此,最高计数速率为振荡频率的1/24。
为确保采样的正确性,要求输入的电平在变化前至少保持一个完整周期的时间,以保证输入信号至少被采样一次。
捕获模式:
在捕获模式下,两个选项被选中,EXEN2,T2CON进来的。
如果EXEN2=0,定时器2是一个16位的定时器或计数器溢出后集TF2,T2CON进来的。
这一点可以用来产生一个中断。
如果EXEN2=1,定时器2执行相同的操作,在外部输入1与0过渡T2EX也导致当前值在TH2和TL2捕获到RCAP2H,RCAP2L,分别。
此外,过渡在T2CON,T2EX导致EXF2设置。
EXF2,F2一样,可以产生一个中断。
捕获模式如图3所示。
图3
自动重载(向上或向下计数器):
定时器2可以向上或向下计数时配置的16位自动重载模式。
DCEN调用此功能的计数器使)位于SFR,T2MOD。
在重置,DCEN位设置为0,这样定时器2将默认计算。
当DCEN设置、定时器2可以向上或向下,这取决于T2EX引脚的值。
图4显示了当DCEN=0时,定时器2自动设置为向上计数,在这种方式下,T2CON中的EXEN2控制位有两种选择,若EXEN2,定时器2为向上计数至0FFFFH溢出,置位TF2激活中断,同时把16位计数寄存器RCAP2H和RCAP2L重装载,RCAP2H
和RCAP2L的值可由软件预置。
若EXEN2=1
,定时器2的16位重装载由溢出或外部输入端T2EX从1至0的下降沿触发。
这个脉冲使EXF2置位,如果中断允许,同样产生中断。
当DCEN=1时,允许定时器2向上或向下计数。
这种方式下,T2EX引脚控制计数器方向。
T2EX以引脚为逻辑“1”时。
定时器向上计数,当计数0FFFFH向上溢出时,置位TF2,同时把16位计数寄存器RCAP2H和RCAP2L
重装载到TH2和TL2中。
T2EX引脚为逻辑“0”时,定时器2向下计数。
当TH2和TL2中的数值等于RCAP2H
和RCAP2L中的值时,计数溢出,置位TF2,司时将0FFFFH数值重新装入定时寄存器中。
当定时了计数器2向上滋出或向下溢出时,置位EXF2位.
图4
图5
波特率发生器:
定时器2是选为波特率发生器通过设置TCLK或RCLK,T2CON。
注意,传输和接收的波特率可以是不同的,如果定时器2是用于接收机或发射机时,定时器1用于其他功能。
设置RCLK和/或TCLK把定时器2的波特率发生器模式,如图6所示。
波特率发生器的方式与自动重装载方式相仿,在此方式下,TH2翻转使定时器2的寄存器用RCAP2H和RCAP2L中的16位数值重新装载,该数值由软件设置。
定时器可以配置定时器或计数器操作。
在大多数应用程序中,它是配置为计时器操作(CP/T2=0)。
定时器2作为波特率发生器。
T2CON中的RCLK或TCLK=1时,波特率工作方式才有效。
在波特率发生器工作方式中,TH2翻转不能使TF2置位,故而不产生中断:
但若EXEN2
置位,且T2EX
端产生由l至0的负跳变,则会使EXF2置位,此时并不能将(RCAP2H,RCAP2L)的内容重新装入TH2和TL2中。
所以当定时器2作为波特率发生器使用时,T2EX可作为附加的外部中断源来使用。
需要注意的是,当定时器2
工作于波特频率器时,作为定时器运行(TR2=1)时,并不能访问TH2和TL2
。
因为此时每个状态时间定时器都会加1,对其读写将得到一个不确定的数值。
然而,对RCAP2则可读而不可写,因为写入操作将是重新装载,写入操作可能令写和/或重装载出错.在访问定时器2或RCAP2寄存器之前,应将定时器关闭(清除TR2)。
图6
可编程时钟输出:
定时器2可通过编程从P1.0
输出一个占空比为50%的时钟信号,如图7所示。
所示.P1.0引脚除了是一个标准的I/O口外,还可以通过编程使其作为定时/计数器2的外部时钟输入和输出占空比50%的时钟脉冲,当时钟振荡频率为16MHz时,输出时钟频率范围为6lH-4MHz。
当设置定时/计数器2为时钟发生器时,C/T2(T2CON.1)=0,T2OE(T2MOD.1)=1,必须由TR2(T2CON.2)启动或停止定时器。
时钟输出频率取决于振荡频率和定时器2捕获寄存器(RCAP2H,RCAP2L)的重新装载值在钟模式下,定时器2翻转不会产生一个中断。
这种行为类似于当定时器2是用作波特率发生器。
可以使用定时器2波特率发生器和一个同步时钟发生器。
但是请注意,波特率和独立钟频率不能确定从一个另一个,因为他们都使用RCAP2H和RCAP2L。
图7
UART:
AT89C52单片机的UART操作AT89C51单片机的UART操作一样。
中断:
AT89C52单片机共有6个中断向量:
两个外部中断(INT0和INT1),三个定时器中断(定时器0、1和2),和串口中断。
这些中断都如图8所示。
每个中断源可以单独启用或禁用通过设置或清除有点特殊功能寄存器中。
即还包含一个总禁止中断EA,禁用所有中断。
在AT89C51中IE.5也是保留位,程序员不应将“l”写入这些位,它们是将来AT89系列产品作为扩展用的。
定时器2的中断是由T2CIN中的TF2和EXF2逻辑或产生的.当转向中断服务程序时,这些标志位不能被硬件清除,事实上,服务程序需确定是TF2或EXF2产生中断,而由软件清除中断标志位。
定时器0和定时器1的标志位TF0和TFI在定时器溢出那个机器周期的S5PZ状态置位,而会在下一个机器周期才查询到该中断标志。
然而,定时器2的标志位TF2在定时器溢出的那个机器周期的S2P2
状态置位,并在同一个机器周期内查询到该标志。
图8
时钟振荡器:
XTAL1和XTAL2分别输入和输出,一个反相放大器,可以配置为使用作为一个芯片上的振荡器,如图9所示。
石英晶体或陶瓷谐振器可以使用。
驱动装置从外部时钟源,XTAL2应该孤立而XTAL1驱动,如图10所示。
没有要求的责任周期外部时钟信号,由于内部时钟电路的输入是通过除以2触发器,但最小和最大电压高和低时间必须遵守规范。
图9
图10
空闲模式:
在空闲模式下,CPU将处于睡眠状态在所有的芯片外设保持活跃。
由软件调用模式。
片上内存的内容,所有的特殊功能寄存器在这种模式保持不变。
空闲模式可以由任何启用中断或终止一个硬件复位。
注意,当空闲模式终止由硬件复位,恢复设备正常程序执行从那里离开,到前两个机器周期内部复位算法控制。
片上硬件抑制访问内部RAM在这种情况下,但访问端口针不抑制。
当用复位终止空闲方式时,为避免可能对端口产生意外写入,激活空闲模式的那条指令后一条指令不应是一条对端口或外部存储器的写入指令。
省电模式:
在省电模式下,振荡器停止,最后指令执行指令,调用断电。
芯片上的RAM和特殊功能寄存器保留它们的值,直到终止省电模式。
唯一退出省电模式的方法是硬件复位。
重置重新定义SFR但不改变芯片上的RAM。
重置不应该被激活之前VCC恢复正常操作水平,必须积极足够长的时间来允许重新启动和稳定的振荡器。
程序存储器的加密:
AT89C52单片机有三个密位,可以离开塔(U)或可编程(P)获得。
锁点1是编程时,在EA引脚逻辑电平采样和锁定在重置。
如果在设备没有复位,则锁存器的初始化到一个随机值,随机值将一直保留。
为了让设备正常运行,EA的锁闭的价值必须同意当前逻辑电平。
FLASH存储器的编程:
AT89C52单片机内部有8k字节的FlASHPEROM,这个FLASH存储阵列出厂时己处于擦除状态(即所有存储单元的内容均为FFH),用户随时可对其进行编程。
编程接口可接收高电压(+12V)或低电压(VCC)的允许编程信号。
低电平编程模式适合于用户在线编程系统,而高电平编程模式可与通用EPROM编程器兼容。
AT89C52单片机中,有些属于低电平编程方式,而有些则是高电平编程方式,用户可从芯片上的型号和读取芯片内的签名字节获得该信息。
编程算法:
AT89C52单片机编程之前,地址、数据和控制信号应设置根据Flash编程模式表和图11和图12。
AT89C52单片机程序,采取以下措施;
1.输入所需的内存位置的地址。
2.输入适当的数据字节的数据行。
3.激活控制信号的正确组合
4.提高EA/VPP12伏的高压编程模式。
5.每对FLASH存储阵列写入一个字节或每写入一个程序加密位,加上一个ALE/PROG编程脉冲。
每个字竹写入周期是自身定时的,通常约为1.5ms.重复1-5步骤.改变编程单元的地址和写入的数据,直到全部文件编程结束
图11
图12
数据查询:
AT89C52单片机的特性数据查询显示写周期的结束。
如需读取最后写入的一个字节,则读出的数据的最高位P0.7是原来写入字书最高位的反码。
一旦写周期已经完成,真正的数据是有效的对所有输出,和下一个周期开始。
数据轮询可能开始写周期之后任何时间已经启动。
准备/忙:
字节编程的进步也可以监视RDY/BSY输出信号。
P3.4拉低电平后在高电平编程指示忙。
编程时P3.4再次把高电平准备完成。
程序验证:
如果加密位LB1、LB2没有进行编程,则代码数据可通过地址和数据线读回原编写的数据。
加密位不可直接校验,加密位的校验可通过对存储器的校验和写入状态来验证。
芯片擦除:
利用控制信号的正确组合并保持ALE/PROG引脚10ms的低电平脉冲宽度即可将PEROM阵列和三个加密位整片擦除,代码阵列在片擦除操作中将任何非空单元写入“1"
,这步骤需再编程之前进行。
签名字节:
签名字节读取相同的过程作为一个正常的位置验证030H,031H,和032H,除了P3.6P3.7必须把逻辑低。
返回的值如下。
(030H)=1EH声明产品由ATMEL公司出品.
(031H)=52H声明为AT89C52单片机。
(032H)=FFH声明为12V编程电乐。
(032H)=05H声明为5V编程电压。