C52单片机机AT89C51 WR和RD脚可以用其它引脚代替么?

我知道的就是下载区别stc只要用┅个max232就可以了,51要用专门的下载器

你对这个回答的评价是?

你对这个回答的评价是

可以你要是不用到外部扩展存儲器或者接口芯片,空着就空着吧

你对这个回答的评价是

高电平指的是和你电源电压相等嘚为逻辑1

就是说你 40脚和20脚之间的电压这个值就是 IO 输出高电平值,作为输入的时候电压在2。8V以上都认为是高电平可以兼容3。3V系统

底電平一般在0。8V以下。不同的器件会有不同的标准

l 8K字节在系统可编程Flash存储器

l 三级加密程序存储器

l 三个16位定时器/计数器

l 全双工UART串行通道

l 低功耗空闲和掉电模式

AT89S52是一种低功耗、高性能CMOS8位微控制器,具有

8K 在系统可编程Flash 存储器使用Atmel 公司高密度非

易失性存储器技术制造,与工业80C51 产品指令和引脚完

全兼容片上Flash允许程序存储器在系统可编程,亦适于

常规编程器在单芯片上,拥有灵巧的8 位CPU 和在系统

可编程Flash使得AT89S52为众哆嵌入式控制应用系统提

供高灵活、超有效的解决方案。

32 位I/O 口线看门狗定时器,2 个数据指针三个16 位

定时器/计数器,一个6向量2级中断结構全双工串行口,

片内晶振及时钟电路另外,AT89S52 可降至0Hz 静态逻

辑操作支持2种软件可选择节电模式。空闲模式下CPU

停止工作,允许RAM、定時器/计数器、串口、中断继续工

作掉电保护方式下,RAM内容被保存振荡器被冻结,

C52单片机机一切工作停止直到下一个中断或硬件复位為止。

8K 字节在系统可编程

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.0 T2(定时器/计数器T2的外部计数输入),时钟输出

P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)

P2 口:P2 口是┅个具有内部上拉电阻的8 位双向I/O 口P2 输出缓冲器能驱动4 个

TTL 逻辑电平。对P2 端口写“1”时内部上拉电阻把端口拉高,此时可以作为输入

口使鼡作为输入使用时,被外部拉低的引脚由于内部电阻的原因将输出电流(IIL)。

在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)

时P2 口送出高八位地址。在这种应用中P2 口使用很强的内部上拉发送1。在使用

8位地址(如MOVX @RI)访问外部数据存储器时P2口输出P2鎖存器的内容。

在flash编程和校验时P2口也接收高8位地址字节和一些控制信号。

P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口p2 输出缓冲器能驱動4 个

TTL 逻辑电平。对P3 端口写“1”时内部上拉电阻把端口拉高,此时可以作为输入

口使用作为输入使用时,被外部拉低的引脚由于内部电阻的原因将输出电流(IIL)。

P3口亦作为AT89S52特殊功能(第二功能)使用如下表所示。

在flash编程和校验时P3口也接收一些控制信号。

P3.4 T0(定时器0外蔀输入)

P3.5 T1(定时器1外部输入)

P3.6 WR(外部数据存储器写选通)

P3.7 RD(外部数据存储器写选通)

RST: 复位输入晶振工作时,RST脚持续2 个机器周期高电平将使C52单片机機复位看门

狗计时完成后,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:振荡器反相放大器的输出端

表1 AT89S52 特殊寄存器映象及复位值

特殊功能寄存器(SFR)的地址空间映象如表1所示。

并不是所有的地址都被定义了片上没有定义的地址是不能用的。读这些地址一般将

得到一个随机数据;写入的数据将会无效。

用户不应该给這些未定义的地址写入数据“1”由于这些寄存器在将来可能被赋予新的

功能,复位后这些位都为“0”。

定时器2 寄存器:寄存器T2CON 和T2MOD 包含萣时器2 的控制位和状态位(如表2

和表3所示)寄存器对RCAP2H和RCAP2L是定时器2的捕捉/自动重载寄存器。

中断寄存器:各中断允许位在IE寄存器中六个Φ断源的两个优先级也可在IE中设置。

表2 T2CON:定时器/计数器2控制寄存器

定时器2 外部标志位EXEN2=1 时,T2EX 上的负跳变而出现捕捉或重

载时EXF2 会被硬件置位。定时器2 打开EXF2=1 时,将引导CPU

执行定时器2 中断程序EXF2 必须如见清“0”。在向下/向上技术模式

串行口接收数据时钟标志位若RCLK=1,串行口将使鼡定时器2 溢出

脉冲作为串行口工作模式1 和3 的串口接收时钟;RCLK=0将使用定

时器1计数溢出作为串口接收时钟。

串行口发送数据时钟标志位若TCLK=1,串行口将使用定时器2 溢出

脉冲作为串行口工作模式1 和3 的串口发送时钟;TCLK=0将使用定

时器1计数溢出作为串口发送时钟。

定时器2外部允許标志位当EXEN2=1时,如果定时器2没有用作串行

时钟T2EX(P1.1)的负跳变见引起定时器2 捕捉和重载。若EXEN2

=0定时器2将视T2EX端的信号无效

TR2 开始/停止控制萣时器2。TR2=1定时器2开始工作

定时器2 定时/计数选择标志位。=0定时; =1,外部事

捕捉/重载选择标志位当EXEN2=1时, =1T2EX出现负脉冲,

会引起捕捉操作;当定时器2溢出或EXEN2=1时T2EX出现负跳变都

会出现自动重载操作。=0 将引起T2EX 的负脉冲当RCKL=1

或TCKL=1时,此标志位无效定时器2溢出时,强制做洎动重载操作

双数据指针寄存器:为了更有利于访问内部和外部数据存储器,系统提供了两路16位

中DPS=0 选择DP0;DPS=1 选择DP1用户应该在访问数据指针寄存器前先初始化

0 看门狗(WDT)定时结束,Reset 输出高电平

0 空闲模式下WDT继续计数

1 空闲模式下,WDT停止计数

掉电标志位:掉电标志位(POF)位于特殊寄存器PCON的第四位(PCON.4)上电期

间POF置“1”。POF可以软件控制使用与否但不受复位影响。

DPS 数据指针选择位

MCS-51器件有单独的程序存储器和数据存储器外部程序存储器和数据存储器都可以

程序存储器:如果EA引脚接地,程序读取只从外部存储器开始

对于89S52,如果EA 接VCC程序读写先从內部存储器(地址为0000H~1FFFH)开

始,接着从外部寻址寻址地址为:2000H~FFFFH。

数据存储器:AT89S52 有256 字节片内数据存储器高128 字节与特殊功能寄存器重

叠。吔就是说高128字节与特殊功能寄存器有相同的地址而物理上是分开的。

当一条指令访问高于7FH 的地址时寻址方式决定CPU 访问高128 字节RAM 还是特

殊功能寄存器空间。直接寻址方式访问特殊功能寄存器(SFR)

例如,下面的直接寻址指令访问0A0H(P2口)存储单元

使用间接寻址方式访问高128 字节RAM例如,下面的间接寻址方式中R0 内容为

0A0H,访问的是地址0A0H的寄存器而不是P2口(它的地址也是0A0H)。

堆栈操作也是简介寻址方式因此,高128芓节数据RAM也可用于堆栈空间

WDT是一种需要软件控制的复位方式。WDT 由13位计数器和特殊功能寄存器中的看

门狗定时器复位存储器(WDTRST)构成WDT 在默认情况下无法工作;为了激活

WDT激活后,晶振工作WDT在每个机器周期都会增加。WDT计时周期依赖于外部

时钟频率除了复位(硬件复位或WDT溢絀复位),没有办法停止WDT工作当WDT

溢出,它将驱动RSR引脚一个高个电平输出

为了激活WDT,用户必须向WDTRST寄存器(地址为0A6H的SFR)依次写入0E1H

溢出当計数达到8191(1FFFH)时,13 位计数器将会溢出这将会复位器件。晶振正

常工作、WDT激活后每一个机器周期WDT 都会增加。为了复位WDT用户必须向

当WDT 计数器溢出时,将给RST 引脚产生一个复位脉冲输出这个复位脉冲持续96

个晶振周期(TOSC),其中TOSC=1/FOSC为了很好地使用WDT,应该在一定时间

内周期性写入那蔀分代码以避免WDT复位。

掉电和空闲方式下的WDT

在掉电模式下晶振停止工作,这意味这WDT也停止了工作在这种方式下,用户不

必喂狗有兩种方式可以离开掉电模式:硬件复位或通过一个激活的外部中断。通过硬

件复位退出掉电模式后用户就应该给WDT 喂狗,就如同通常AT89S52 复位┅样

通过中断退出掉电模式的情形有很大的不同。中断应持续拉低很长一段时间使得晶振

稳定。当中断拉高后执行中断服务程序。為了防止WDT在中断保持低电平的时候复

位器件WDT 直到中断拉低后才开始工作。这就意味着WDT 应该在中断服务程序中

为了确保在离开掉电模式最初的几个状态WDT不被溢出最好在进入掉电模式前就复

在进入待机模式前,特殊寄存器AUXR的WDIDLE位用来决定WDT是否继续计数

默认状态下,在待机模式下WDIDLE=0,WDT继续计数为了防止WDT在待机模

式下复位AT89S52,用户应该建立一个定时器定时离开待机模式,喂狗再重新进

更深入的关于UART 的信息,可参考ATMEL 网站(

定时器2是一个16位定时/计数器它既可以做定时器,又可以做事件计数器其工作

方式由特殊寄存器T2CON中的C/T2位选择(如表2所示)。定时器2有三种工作模式:

捕捉方式、自动重载(向下或向上计数)和波特率发生器如表3 所示,工作模式由

T2CON中的相关位选择定时器2 囿2 个8位寄存器:TH2和TL2。在定时工作方式

中每个机器周期,TL2 寄存器都会加1由于一个机器周期由12 个晶振周期构成,

因此计数频率就是晶振頻率的1/12。

表3 定时器2工作模式

1 × 1 波特率发生器

在计数工作方式下寄存器在相关外部输入角T2 发生1 至0 的下降沿时增加1。在这

种方式下每个机器周期的S5P2期间采样外部输入。一个机器周期采样到高电平而

下一个周期采样到低电平,计数器将加1在检测到跳变的这个周期的S3P1 期间,噺

的计数值出现在寄存器中因为识别1-0的跳变需要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中除此之外,

图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向上计数定时器计到0FFFFH

溢出,并置位TF2定时器的溢出也使得RCAP2H和RCAP2L中的16位值分别加载到

定时器存储器TH2囷TL2中。

RCAP2L中的值的时候计数器下溢。计数器下溢置位TF2,并将0FFFFH加载到定

定时器2上溢或下溢外部中断标志位EXF2 被锁死。在这种工作模式下EXF2鈈能

图6 定时器2重载模式(DCEN=0)

T2OE 定时器2输出允许位

DCEN 置1后,定时器2可配置成向上/向下计数

图7 定时器2自动重载(DCEN=1)

图8 定时器2 波特率发生器模式

通过設置T2CON(见表2)中的TCLK或RCLK可选择定时器2 作为波特率发生器

如果定时器2作为发送或接收波特率发生器,定时器1可用作它用发送和接收的波特

率可以不同。如图8 所示设置RCLK 和(或)TCLK 可以使定时器2 工作于波特率

波特率产生工作模式与自动重载模式相似,因此TH2 的翻转使得定时器2 寄存器重

模式1和模式3的波特率由定时器2溢出速率决定,具体如下公式:

模式1和模式3波特率=

定时器可设置成定时器也可为计数器。在多数應用情况下一般配置成定时方式

(CP/T2=0)。定时器2 用于定时器操作与波特率发生器有所不同它在每一机器周期

(1/12晶振周期)都会增加;然洏,作为波特率发生器它在每一机器状态(1/2晶振

周期)都会增加。波特率计算公式如下:

模式1和模式3的波特率=

晶振频率*原文少半个括號“(”

定时器2 作为波特率发生器如图8 所示。图中仅仅在T2CON 中RCLK 或TCLK=1

才有效特别强调,TH2的翻转并不置位TF2也不产生中断; EXEN2置位后,T2EX

引脚上1~0嘚下跳变不会使(RCAP2HRCAP2L)重载到(TH2,TL2)中因此,

定时器2作为波特率发生器T2EX也还可以作为一个额外的外部中断。

定时器2处于波特率产生模式TR2=1,定时器2正常工作TH2或TL2不应该读写。

在这种模式下定时器在每一状态都会增加,读或写就不会准确寄存器RCAP2可以

读,但不能写因為写可能和重载交迭,造成写和重载错误在读写定时器2 或RCAP2

寄存器时,应该关闭定时器(TR2清0)

如图9 所示,可以通过编程在P1.0 引脚输出一个占空比为50%的时钟信号这个引脚

除了常规的I/O 角外,还有两种可选择功能它可以通过编程作为定时器/计数器2 的

外部时钟输入或占空比为50%的時钟输出。当工作频率为16MHZ时时钟输出频率范

为了把定时器2配置成时钟发生器,位C/T2(T2CON.1)必须清0位T2OE(T2MOD.1)

必须置1。位TR2(T2CON.2)启动、停止定时器时钟输出频率取决于晶振频率和定

时器2捕捉寄存器(RCAP2H,RCAP2L)的重载值如公式所示:

在时钟输出模式下,定时器2不会产生中断这和定时器2用作波特率发生器一样。定

时器2也可以同时用作波特率发生器和时钟产生不过,波特率和输出时钟频率相互并

图9 定时器2时钟输出模式

AT89S52 囿6个中断源:两个外部中断(INT0 和INT1)三个定时中断(定时器0、1、

2)和一个串行中断。这些中断如图10所示

每个中断源都可以通过置位或清除特殊寄存器IE 中的相关中断允许控制位分别使得中

断源有效或无效IE还包括一个中断允许总控制位EA,它能一次禁止所有中断

如表5所示,IE.6位昰不可用的对于AT89S52,IE.5位也是不能用的用户软件不应

给这些位写1。它们为AT89系列新产品预留

定时器2可以被寄存器T2CON中的TF2和EXF2的或逻辑触发。程序进入中断服务后

这些标志位都可以由硬件清0。实际上中断服务程序必须判定是否是TF2 或EXF2激

活中断,标志位也必须由软件清0

定时器0和萣时器1标志位TF0 和TF1在计数溢出的那个周期的S5P2被置位。它们的

值一直到下一个周期被电路捕捉下来然而,定时器2 的标志位TF2 在计数溢出的那

个周期的S2P2被置位在同一个周期被电路捕捉下来。

表4 中断允许控制寄存器(IE)

中断允许控制位=1允许中断

中断允许控制位=0,禁止中断

EA IE.7 中斷总允许控制位EA=0,中断总禁止;EA=1各中断由各

ES IE.4 串行口中断允许控制位

如图10 所示,AT89S52 C52单片机机有一个用于构成内部振荡器的反相放大器XTAL1 和

XTAL2 汾别是放大器的输入、输出端。石英晶体和陶瓷谐振器都可以用来一起构成自

激振荡器从外部时钟源驱动器件的话,XTAL2 可以不接而从XTAL1 接叺,如图

12 所示由于外部时钟信号经过二分频触发后作为外部时钟电路输入的,所以对外部

时钟信号的占空比没有其它要求最长低电平歭续时间和最少高电平持续时间等还是要

图11 内部振荡电路连接图 图12 外部振荡电路连接图

在空闲工作模式下,CPU 处于睡眠状态而所有片上外蔀设备保持激活状态。这种状

态可以通过软件产生在这种状态下,片上RAM和特殊功能寄存器的内容保持不变

空闲模式可以被任一个中断戓硬件复位终止。

由硬件复位终止空闲模式只需两个机器周期有效复位信号在这种情况下,片上硬件禁

止访问内部RAM而可以访问端口引腳。空闲模式被硬件复位终止后为了防止预想

不到的写端口,激活空闲模式的那一条指令的下一条指令不应该是写端口或外部存储

在掉電模式下晶振停止工作,激活掉电模式的指令是最后一条执行指令片上RAM

和特殊功能寄存器保持原值,直到掉电模式终止掉电模式可鉯通过硬件复位和外部中

断退出。复位重新定义了SFR 的值但不改变片上RAM 的值。在VCC未恢复到正常

工作电压时硬件复位不能无效,并且应保歭足够长的时间以使晶振重新工作和初始化

表6 空闲模式和掉电模式下的外部引脚状态

空闲 内部 1 1 数据 数据 数据 数据

空闲 外部 1 1 浮空 数据 地址 數据

掉电 内部 0 0 数据 数据 数据 数据

掉电 外部 0 0 浮空 数据 数据 数据

AT89S52有三个加密位不可编程(U)和可编程获得下表所示的功能。

加密位1(LB1)编程后EA 引脚的逻辑值被采样,并在复位期间锁存如果器件复

位,而没有复位将锁存一个随机值,直到复位为止为了器件功能正常,锁存箌的

EA值必须和这个引脚的当前逻辑电平一致

Flash编程―并行模式

AT89S52 带有用作编程的片上Flash 存储器阵列。编程接口需要一个高电压(12V)编

程使能信號并且兼容常规的第三方*(原文:third-party,不知道对不对)Flash或EPROM

AT89S52程序存储阵列采用字节式编程

对AT89S52编程之前,需根据Flash编程模式表和图13、图14对地址、数据和控制信

号设置可采用下列步骤对AT89S52编程:

1.在地址线上输入编程单元地址信号

2.在数据线上输入正确的数据

3.激活相应的控制信號

5.每给Flash写入一个字节或程序加密位时,都要给ALE/PROG一次脉冲字节写周

期时自身定制的,典型值仅仅50us改变地址、数据重复第1步到第5步,知噵全

后面全是编程的时序问题实在译不下去了。感兴趣的接着翻啊

3.复旦大学出版社 C52单片机微型机原理、应用和实验 张友德等

我要回帖

更多关于 C52单片机 的文章

 

随机推荐