AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。
编辑本段主要功能特性
1、兼容MCS51指令系统 2、8k可反复擦写(大于1000次)Flash ROM; 3、32个双向I/O口; 4、256x8bit内部RAM; 5、3个16位可编程定时/计数器中断; 6、时钟频率0-24MHz; 7、2个串行中断,可编程UART串行通道; 8、2个外部中断源,共8个中断源; 9、2个读写中断口线,3级加密位; 10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能; 11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。
编辑本段引脚功能及管脚电压
AT89C52为8 位通用微处理器,采用工业标 PDIP封装的AT89C52引脚图
准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0~P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(32~39 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。
P0 口
P0 口是一组8 位漏极开路型双向I/O 口, 也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的 方式驱动8 个TTL逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。 在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。 在Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1 口
P1 是一个带内部上拉电阻的8 位双向I/O 口, P1 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑 门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉 电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。 与AT89C51 不同之处是,P10 和P11 还可分别作为定时/计数器2 的外部计数输入(P10/T2)和输入(P11/T2EX), 参见表1。 Flash 编程和程序校验期间,P1 接收低8 位地址。 表P10和P11的第二功能 引脚号 功能特性
P10 T2,时钟输出
P11 T2EX(定时/计数器2)
P2 口
P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑 门电路。对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。 在访问外部程序存储器或16 位地址的外部数据存储器(例如执行MOVX @DPTR 指令)时,P2 口送出高8 位地址数据。在访问8 位地址的外部数据存储器(如执行MOVX @RI 指令)时,P2 口输出P2 锁存器的内容。 Flash 编程或校验时,P2亦接收高位地址和一些控制信号。
P3 口
P3 口是一组带有内部上拉电阻的8 位双向I/O 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻 辑门电路。对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3 口将用上拉电阻输出电流(IIL)。 P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能 P3 口还接收一些用于Flash 闪速存储器编程和程序校验的控制信号。
RST
复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
ALE/PROG
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8 位字 节。一般情况下,ALE 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE 脉冲。 对Flash 存储器编程期间,该引脚还用于输入编程脉冲(PROG)。 如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0 位置位,可禁止ALE *** 作。该位置位后,只有一条 MOVX 和MOVC指令才能将ALE 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE 禁止位无效。
PSEN
程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52 由外部程序存储器取指令(或数 据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP
外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000H—FFFFH),EA 端必须保持低电平(接 地)。需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA端状态。 如EA端为高电平(接Vcc端),CPU 则执行内部程序存储器中的指令。 Flash 存储器编程时,该引脚加上+12V 的编程允许电源Vpp,当然这必须是该器件是使用12V 编程电压Vpp。
XTAL1
振荡器反相放大器的及内部时钟发生器的输入端。
XTAL2
振荡器反相放大器的输出端。
编辑本段特殊功能寄存器
在AT89C52 片内存储器中,80H-FFH 共128 个单元为特殊功能寄存器(SFE),SFR 的地址空间映象如表2 所示。 并非所有的地址都被定义,从80H—FFH 共128 个字节只有一部分被定义,还有相当一部分没有定义。对没有定义的 单元读写将是无效的,读出的数值将不确定,而写入的数据也将丢失。 不应将数据“1”写入未定义的单元,由于这些单元在将来的产品中可能赋予新的功能,在这种情况下,复位后这些单 元数值总是“0”。 AT89C52除了与AT89C51所有的定时/计数器0 和定时/计数器1 外,还增加了一个定时/计数器2。定时/计数器2 的控 制和状态位位于T2CON(参见表3)T2MOD(参见表4),寄存器对(RCAO2H、RCAP2L)是定时器2 在16 位捕获方式或16 位 自动重装载方式下的捕获/自动重装载寄存器。
编辑本段数据存储器
AT89C52 有256 个字节的内部RAM,80H-FFH 高128 个字节与特殊功能寄存器(SFR)地址是重叠的,也就是高128 字节的RAM 和特殊功能寄存器的地址是相同的,但物理上它们是分开的。 当一条指令访问7FH 以上的内部地址单元时,指令中使用的寻址方式是不同的,也即寻址方式决定是访问高128 字节 RAM 还是访问特殊功能寄存器。如果指令是直接寻址方式则为访问特殊功能寄存器。 例如,下面的直接寻址指令访问特殊功能寄存器0A0H(即P2 口)地址单元。 MOV 0A0H,#data 间接寻址指令访问高128 字节RAM,例如,下面的间接寻址指令中,R0 的内容为0A0H,则访问数据字节地址为0A0H, 而不是P2 口(0A0H)。 MOV @R0,#data 堆栈 *** 作也是间接寻址方式,所以,高128 位数据RAM 亦可作为堆栈区使用。 ·定时器0和定时器1: AT89C52的定时器0和定时器1 的工作方式与AT89C51 相同。
编辑本段片上资源
定时器2
基本特性: 定时器2 是一个16 位定时/计数器。它既可当定时器使用,也可作为外部事件计数器使用,其工作方式由特殊功能寄 存器T2CON(如表3)的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。为确保采样的正确性,要求输入的电平在变化前至少保持一个完整周期的时间,以保证输 入信号至少被采样一次。 捕获方式: 在捕获方式下,通过T2CON 控制位EXEN2 来选择两种方式。如果EXEN2=0,定时器2 是一个16 位定时器或计数器, 计数溢出时,对T2CON 的溢出标志TF2 置位,同时激活中断。如果EXEN2=1,定时器2 完成相同的 *** 作,而当T2EX 引 脚外部输入信号发生1 至0 负跳变时,也出现TH2 和TL2 中的值分别被捕获到RCAP2H 和RCAP2L 中。另外,T2EX 引 脚信号的跳变使得T2CON 中的EXF2 置位,与TF2 相仿,EXF2 也会激活中断。捕获方式如图4 所示。 自动重装载(向上或向下计数器)方式: 当定时器2工作于16位自动重装载方式时,能对其编程为向上或向下计数方式,这个功能可通过特殊功能寄存器T2CON (见表5)的DCEN 位(允许向下计数)来选择的。复位时,DCEN 位置“0”,定时器2 默认设置为向上计数。当DCEN 置位时,定时器2 既可向上计数也可向下计数,这取决于T2EX 引脚的值,参见图5,当DCEN=0 时,定时器2 自动设置 为向上计数,在这种方式下,T2CON 中的EXEN2 控制位有两种选择,若EXEN2=0,定时器2 为向上计数至0FFFFH 溢 出,置位TF2 激活中断,同时把16 位计数寄存器RCAP2H 和RCAP2L重装载,RCAP2H 和RCAP2L 的值可由软件预置。 若EXEN2=1,定时器2 的16 位重装载由溢出或外部输入端T2EX 从1 至0 的下降沿触发。这个脉冲使EXF2 置位,如果 中断允许,同样产生中断。 定时器2 的中断入口地址是:002BH ——0032H 。 当DCEN=1 时,允许定时器2 向上或向下计数,如图6 所示。这种方式下,T2EX 引脚控制计数器方向。T2EX 引脚为逻 辑“1”时,定时器向上计数,当计数0FFFFH 向上溢出时,置位TF2,同时把16 位计数寄存器RCAP2H 和RCAP2L 重装 载到TH2 和TL2 中。 T2EX 引脚为逻辑“0”时,定时器2 向下计数,当TH2 和TL2 中的数值等于RCAP2H 和RCAP2L 中的值时,计数溢出,置位TF2,同时将0FFFFH 数值重新装入定时寄存器中。 当定时/计数器2 向上溢出或向下溢出时,置位EXF2 位。 波特率发生器: 当T2CON(表3)中的TCLK 和RCLK 置位时,定时/计数器2 作为波特率发生器使用。如果定时/计数器2 作为发送器或 接收器,其发送和接收的波特率可以是不同的,定时器1 用于其它功能,如图7 所示。若RCLK 和TCLK 置位,则定时器2 工作于波特率发生器方式。 波特率发生器的方式与自动重装载方式相仿,在此方式下,TH2 翻转使定时器2 的寄存器用RCAP2H 和RCAP2L 中的16 位数值重新装载,该数值由软件设置。 在方式1 和方式3 中,波特率由定时器2 的溢出速率根据下式确定: 方式1和3的波特率=定时器的溢出率/16 定时器既能工作于定时方式也能工作于计数方式,在大多数的应用中,是工作在定时方式(C/T2=0)。定时器2 作为波 特率发生器时,与作为定时器的 *** 作是不同的,通常作为定时器时,在每个机器周期(1/12 振荡频率)寄存器的值加1, 而作为波特率发生器使用时,在每个状态时间(1/2 振荡频率)寄存器的值加1。波特率的计算公式如下: 方式1和3的波特率=振荡频率/{32[65536-(RCP2H,RCP2L)]} 式中(RCAP2H,RCAP2L)是RCAP2H 和RCAP2L中的16 位无符号数。 定时器2 作为波特率发生器使用的电路如图7 所示。T2CON 中的RCLK 或TCLK=1 时,波特率工作方式才有效。在 波特率发生器工作方式中,TH2 翻转不能使TF2 置位,故而不产生中断。但若EXEN2 置位,且T2EX 端产生由1 至0 的 负跳变,则会使EXF2 置位,此时并不能将(RCAP2H,RCAP2L)的内容重新装入TH2 和TL2 中。所以,当定时器2 作 为波特率发生器使用时,T2EX 可作为附加的外部中断源来使用。需要注意的是,当定时器2 工作于波特率器时,作为定 时器运行(TR2=1)时,并不能访问TH2 和TL2。因为此时每个状态时间定时器都会加1,对其读写将互憨忿佳莜簧冯伪辅镰得到一个不确定的 数值。 然而,对RCAP2 则可读而不可写,因为写入 *** 作将是重新装载,写入 *** 作可能令写和/或重装载出错。在访问定时器2 或RCAP2 寄存器之前,应将定时器关闭(清除TR2)。 可编程时钟输出: 定时器2 可通过编程从P10 输出一个占空比为50%的时钟信号,如图8 所示。P10 引脚除了是一个标准的I/O 口外, 还可以通过编程使其作为定时/计数器2 的外部时钟输入和输出占空比50%的时钟脉冲。当时钟振荡频率为16MHz 时,输 出时钟频率范围为61Hz—4MHz。 当设置定时/计数器2 为时钟发生器时,C/T2(T2CON 1)=0,T2OE (T2MOD1) =1,必须由TR2(T2CON2)启 动或停止定时器。时钟输出频率取决于振荡频率和定时器2 捕获寄存器(RCAP2H,RCAP2L)的重新装载值,公式如下: 输出时钟频率=振荡器频率/{4[65536-(RCP2H,RCP2L)]} 在时钟输出方式下,定时器2 的翻转不会产生中断,这个特性与作为波特率发生器使用时相仿。定时器2 作为波特率 发生器使用时,还可作为时钟发生器使用,但需要注意的是波特率和时钟输出频率不能分开确定,这是因为它们同使用 RCAP2L和RCAP2L。
UART串口
AT89C52的UART 工作方式与AT89C51 工作方式相同。
时钟振荡器
AT89C52 中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1 和XTAL2 分别是该放大器的输入端和输出端。 这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图10。 外接石英晶体(或陶瓷谐振器)及电容C1、C2 接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2 虽 然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳 定性,如果使用石英晶体,我们推荐电容使用30pF±10pF,而如使用陶瓷谐振器建议选择40pF±10pF。 用户也可以采用外部时钟。采用外部时钟的电路如图10 右图所示。这种情况下,外部时钟脉冲接到XTAL1 端,即内部 时钟发生器的输入端,XTAL2 则悬空。 由于外部时钟信号是通过一个2 分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但 最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。
编辑本段中断
AT89C52 共有6 个中断向量:两个外中断(INT0 和INT1),3 个定时器中断(定时器0、1、2)和串行口中断。所有 这些中断源如图9 所示。 这些中断源可通过分别设置专用寄存器IE 的置位或清0 来控制每一个中断的允许或禁止。IE 也有一个总禁止位EA, 它能控制所有中断的允许或禁止。 注意表5 中的IE6 为保留位,在AT89C51 中IE5 也是保留位。程序员不应将“1”写入这些位,它们是将来AT89 系 列产品作为扩展用的。 定时器2 的中断是由T2CON 中的TF2 和EXF2 逻辑或产生的,当转向中断服务程序时,这些标志位不能被硬件清除, 事实上,服务程序需确定是TF2 或EXF2 产生中断,而由软件清除中断标志位。 定时器0 和定时器1 的标志位TF0 和TF1 在定时器溢出那个机器周期的S5P2 状态置位,而会在下一个机器周期才查 询到该中断标志。然而,定时器2 的标志位TF2 在定时器溢出的那个机器周期的S2P2 状态置位,并在同一个机器周期内 查询到该标志。
编辑本段低功耗模式
空闲节电模式
在空闲工作模式状态, CPU 自身处于睡眠状态而所有片内的外设仍保持激活状态,这种方式由软件产生。此时,同 时将片内RAM 和所有特殊功能寄存器的内容冻结。空闲模式可由任何允许的中断请求或硬件复位终止。 由硬件复位终止空闲状态只需两个机器周期有效复位信号,在此状态下,片内硬件禁止访问内部RAM,但可以访问端 口引脚,当用复位终止空闲方式时,为避免可能对端口产生意外写入,激活空闲模式的那条指令后一条指令不应是一条对 端口或外部存储器的写入指令。
掉电模式
在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内RAM 和特殊功能寄存器的内 容在终止掉电模式前被冻结。退出掉电模式的唯一方法是硬件复位,复位后将重新定义全部特殊功能寄存器,但不改变RAM 中的内容,在Vcc恢复到正常工作电平前,复位应无效,且必须保持一定时间以使振荡器重启动并稳定工作。
编辑本段编程和加密
Flash存储器的编程
AT89C52单片机内部有8k字节的Flash PEROM,这个Flash 存储阵列出厂时已处于擦除状态(即所有存储单元的内容 均为FFH),用户随时可对其进行编程。编程接口可接收高电压(+12V)或低电压(Vcc)的允许编程信号。低电压编程模 式适合于用户在线编程系统,而高电压编程模式可与通用EPROM 编程器兼容。 AT89C52 单片机中,有些属于低电压编程方式,而有些则是高电压编程方式,用户可从芯片上的型号和读取芯片内的 签名字节获得该信息。 AT89C52 的程序存储器阵列是采用字节写入方式编程的,每次写入一个字节,要对整个芯片内的PEROM 程序存储器 写入一个非空字节,必须使用片擦除的方式将整个存储器的内容清除。
编程方法
编程前,须按表9 和图11 所示设置好地址、数据及控制信号, AT89C52 编程方法如下: 1. 在地址线上加上要编程单元的地址信号。 2. 在数据线上加上要写入的数据字节。 3. 激活相应的控制信号。 4. 在高电压编程方式时,将EA/Vpp 端加上+12V 编程电压。 5. 每对Flash 存储阵列写入一个字节或每写入一个程序加密位,加上一个ALE/PROG 编程脉冲。每个字节写入周期 是自身定时的,通常约为15ms。重复1—5 步骤,改变编程单元的地址和写入的数据,直到全部文件编程结束。
程序存储器的加密
AT89C52 有3 个程序加密位,可对芯片上的3 个加密位LB1、LB2、LB3 进行编程(P)或不编程(U)来得到。 当加密位LB1 被编程时,在复位期间,EA 端的逻辑电平被采样并锁存,如果单片机上电后一直没有复位,则锁存起的 初始值是一个随机数,且这个随机数会一直保存到真正复位为止。为使单片机能正常工作,被锁存的EA 电平值必须与该引 脚当前的逻辑电平一致。此外,加密位只能通过整片擦除的方法清除。
数据查询
AT89C52 单片机用Data Palling 表示一个写周期结束为特征,在一个写周期中,如需读取最后写入的一个字节,则读出的数据的最高位(P07)是原来写入字节最高位的反码。写周期完成后,所输出的数据是有效的数据,即可进入下一个字节的写周期,写周期开始后,Data Palling 可能随时有效。 Ready/Busy:字节编程的进度可通过“RDY/BSY 输出信号监测,编程期间,ALE 变为高电平“H”后,P34(RDY/BSY)端电平被拉低,表示正在编程状态(忙状态)。编程完成后,P34 变为高电平表示准备就绪状态。 程序校验:如果加密位LB1、LB2 没有进行编程,则代码数据可通过地址和数据线读回原编写的数据,采用如图12的电路。加密位不可直接校验,加密位的校验可通过对存储器的校验和写入状态来验证。 芯片擦除:利用控制信号的正确组合(表6)并保持ALE/PROG 引脚10mS 的低电平脉冲宽度即可将PEROM 阵列(4k字节)和三个加密位整片擦除,代码阵列在片擦除 *** 作中将任何非空单元写入“1”,这步骤需再编程之前进行。 读片内签名字节:AT89C52 单片机内有3 个签名字节,地址为030H、031H 和032H。用于声明该器件的厂商、型号和编程电压。读AT89C52 签名字节需将P36 和P37 置逻辑低电平,读签名字节的过程和单元030H、031H 及032H 的正常校验相仿,只返回值意义如下: (030H)=1EH 声明产品由ATMEL公司制造。 (031H)=52H 声明为AT89C52 单片机。 (032H)=FFH 声明为12V 编程电压。 (032H)=05H 声明为5V 编程电压。
我是单片机入门者,可以说是一片空白,请大哥大姐们帮帮忙,最好有数据流程(字面的也没关系)。谢谢哦
没说什么类型的大企业,所以,推荐通用的了
一、OFFICE 文字、报表、演示文稿,必备
二、接发邮件软件,公司不一样,软件有区别
三、QQ或其他公司要求使用的通讯软件、
四、FLASH 、PHOTOSHOP 之类的专业项软件,根据公司工作而定
以8051内核为例,其它种类大致相同
AT89S52
主要性能
l 与MCS-51单片机产品兼容
l 8K字节在系统可编程Flash存储器
l 1000次擦写周期
l 全静态 *** 作:0Hz~33Hz
l 三级加密程序存储器
l 32个可编程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内容被保存,振荡器被冻结,
单片机一切工作停止,直到下一个中断或硬件复位为止。
R
8 位微控制器
8K 字节在系统可编程
Flash
AT89S52
Rev 1919-07/01
AT89S52
2
引脚结构
AT89S52
3
方框图
引脚功能描述
AT89S52
4
VCC : 电源
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)。
此外,P10和P12分别作定时器/计数器2的外部计数输入(P10/T2)和时器/计数器2
的触发输入(P11/T2EX),具体如下表所示。
在flash编程和校验时,P1口接收低8位地址字节。
引脚号第二功能
P10 T2(定时器/计数器T2的外部计数输入),时钟输出
P11 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P15 MOSI(在系统编程用)
P16 MISO(在系统编程用)
P17 SCK(在系统编程用)
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口也接收一些控制信号。
AT89S52
5
引脚号第二功能
P30 RXD(串行输入)
P31 TXD(串行输出)
P32 INT0(外部中断0)
P33 INT0(外部中断0)
P34 T0(定时器0外部输入)
P35 T1(定时器1外部输入)
P36 WR(外部数据存储器写选通)
P37 RD(外部数据存储器写选通)
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:振荡器反相放大器的输出端。
AT89S52
6
表1 AT89S52 特殊寄存器映象及复位值
特殊功能寄存器
特殊功能寄存器(SFR)的地址空间映象如表1所示。
并不是所有的地址都被定义了。片上没有定义的地址是不能用的。读这些地址,一般将
得到一个随机数据;写入的数据将会无效。
用户不应该给这些未定义的地址写入数据“1”。由于这些寄存器在将来可能被赋予新的
功能,复位后,这些位都为“0”。
定时器2 寄存器:寄存器T2CON 和T2MOD 包含定时器2 的控制位和状态位(如表2
和表3所示),寄存器对RCAP2H和RCAP2L是定时器2的捕捉/自动重载寄存器。
中断寄存器:各中断允许位在IE寄存器中,六个中断源的两个优先级也可在IE中设置。
AT89S52
7
表2 T2CON:定时器/计数器2控制寄存器
T2CON 地址为0C8H 复位值:0000 0000B
位可寻址
TF2 EXF2 RLCLK TCLK EXEN2 TR2
7 6 5 4 3 2 1 0
符号功能
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 的串口接收时钟;RCLK=0,将使用定
时器1计数溢出作为串口接收时钟。
TCLK
串行口发送数据时钟标志位。若TCLK=1,串行口将使用定时器2 溢出
脉冲作为串行口工作模式1 和3 的串口发送时钟;TCLK=0,将使用定
时器1计数溢出作为串口发送时钟。
EXEN2
定时器2外部允许标志位。当EXEN2=1时,如果定时器2没有用作串行
时钟,T2EX(P11)的负跳变见引起定时器2 捕捉和重载。若EXEN2
=0,定时器2将视T2EX端的信号无效
TR2 开始/停止控制定时器2。TR2=1,定时器2开始工作
定时器2 定时/计数选择标志位。=0,定时; =1,外部事
件计数(下降沿触发)
捕捉/重载选择标志位。当EXEN2=1时, =1,T2EX出现负脉冲,
会引起捕捉 *** 作;当定时器2溢出或EXEN2=1时T2EX出现负跳变,都
会出现自动重载 *** 作。=0 将引起T2EX 的负脉冲。当RCKL=1
或TCKL=1时,此标志位无效,定时器2溢出时,强制做自动重载 *** 作。
双数据指针寄存器:为了更有利于访问内部和外部数据存储器,系统提供了两路16位
数据指针寄存器:位于SFR中82H~83H的DP0和位于84H~85。特殊寄存器AUXR1
中DPS=0 选择DP0;DPS=1 选择DP1。用户应该在访问数据指针寄存器前先初始化
AT89S52
8
DPS至合理的值。
表3a AUXR:辅助寄存器
AUXR 地址:8EH 复位值:XXX00XX0B
不可位寻址
- - - WDIDLE DISRTO - - DISALE
7 6 5 4 3 2 1 0
- 预留扩展用
DISALE ALE使能标志位
DISALE *** 作方式
0 ALE 以1/6晶振频率输出信号
1 ALE 只有在执行MOVX 或MOVC指令时激活
DISRTO 复位输出标志位
DISRTO
0 看门狗(WDT)定时结束,Reset 输出高电平
1 Reset 只有输入
WDIDLE 空闲模式下WDT使能标志位
WDIDLE
0 空闲模式下,WDT继续计数
1 空闲模式下,WDT停止计数
掉电标志位:掉电标志位(POF)位于特殊寄存器PCON的第四位(PCON4)。上电期
间POF置“1”。POF可以软件控制使用与否,但不受复位影响。
表3b AUXR1:辅助寄存器1
AUXR1 地址:A2H 复位值:XXXXXXX0B
不可位寻址
- - - - - - - DPS
7 6 5 4 3 2 1 0
- 预留扩展用
DPS 数据指针选择位
DPS
0 选择DPTR寄存器DP0L和DP0H
1 选择DPTR寄存器DP1L和DP1H
AT89S52
9
存储器结构
MCS-51器件有单独的程序存储器和数据存储器。外部程序存储器和数据存储器都可以
64K寻址。
程序存储器:如果EA引脚接地,程序读取只从外部存储器开始。
对于89S52,如果EA 接VCC,程序读写先从内部存储器(地址为0000H~1FFFH)开
始,接着从外部寻址,寻址地址为:2000H~FFFFH。
数据存储器:AT89S52 有256 字节片内数据存储器。高128 字节与特殊功能寄存器重
叠。也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。
当一条指令访问高于7FH 的地址时,寻址方式决定CPU 访问高128 字节RAM 还是特
殊功能寄存器空间。直接寻址方式访问特殊功能寄存器(SFR)。
例如,下面的直接寻址指令访问0A0H(P2口)存储单元
MOV 0A0H , #data
使用间接寻址方式访问高128 字节RAM。例如,下面的间接寻址方式中,R0 内容为
0A0H,访问的是地址0A0H的寄存器,而不是P2口(它的地址也是0A0H)。
MOV @R0 , #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 复位一样。
通过中断退出掉电模式的情形有很大的不同。中断应持续拉低很长一段时间,使得晶振
AT89S52
10
稳定。当中断拉高后,执行中断服务程序。为了防止WDT在中断保持低电平的时候复
位器件,WDT 直到中断拉低后才开始工作。这就意味着WDT 应该在中断服务程序中
复位。
为了确保在离开掉电模式最初的几个状态WDT不被溢出,最好在进入掉电模式前就复
位WDT。
在进入待机模式前,特殊寄存器AUXR的WDIDLE位用来决定WDT是否继续计数。
默认状态下,在待机模式下,WDIDLE=0,WDT继续计数。为了防止WDT在待机模
式下复位AT89S52,用户应该建立一个定时器,定时离开待机模式,喂狗,再重新进
入待机模式。
UART
在AT89S52 中,UART 的 *** 作与AT89C51 和AT89C52 一样。为了获得更深入的关于
UART 的信息,可参考ATMEL 网站(http://wwwatmelcom)。从这个主页,选择
“Products”,然后选择“8051-Architech Flash Microcontroller”,再选择“Product
Overview”即可。
定时器0 和定时器1
在AT89S52 中,定时器0 和定时器1 的 *** 作与AT89C51 和AT89C52 一样。为了获得
更深入的关于UART 的信息,可参考ATMEL 网站(http://wwwatmelcom)。从这个主
页,选择“Products”,然后选择“8051-Architech Flash Microcontroller”,再选择“Product
Overview”即可。
定时器2
定时器2是一个16位定时/计数器,它既可以做定时器,又可以做事件计数器。其工作
方式由特殊寄存器T2CON中的C/T2位选择(如表2所示)。定时器2有三种工作模式:
捕捉方式、自动重载(向下或向上计数)和波特率发生器。如表3 所示,工作模式由
T2CON中的相关位选择。定时器2 有2 个8位寄存器:TH2和TL2。在定时工作方式
中,每个机器周期,TL2 寄存器都会加1。由于一个机器周期由12 个晶振周期构成,
因此,计数频率就是晶振频率的1/12。
表3 定时器2工作模式
RCLK+TCLK CP/RL2 TR2 MODE
0 0 1 16位自动重载
0 1 1 16位捕捉
1 × 1 波特率发生器
× × 0 (不用)
在计数工作方式下,寄存器在相关外部输入角T2 发生1 至0 的下降沿时增加1。在这
AT89S52
11
种方式下,每个机器周期的S5P2期间采样外部输入。一个机器周期采样到高电平,而
下一个周期采样到低电平,计数器将加1。在检测到跳变的这个周期的S3P1 期间,新
的计数值出现在寄存器中。因为识别1-0的跳变需要2个机器周期(24个晶振周期),
所以,最大的计数频率不高于晶振频率的1/24。为了确保给定的电平在改变前采样到
一次,电平应该至少在一个完整的机器周期内保持不变。
捕捉方式
在捕捉模式下,通过T2CON中的EXEN2来选择两种方式。如果EXEN2=0,定时器2
时一个16位定时/计数器,溢出时,对T2CON 的TF2标志置位,TF2引起中断。如果
EXEN2=1,定时器2做相同的 *** 作。除上述功能外,外部输入T2EX引脚(P11)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(P11)引脚上的1到0的下跳变都会触发16位重载。这个跳变也置位EXF2
中断标志位。
如图6所示,置位DCEN,允许定时器2向上或向下计数。在这种模式下,T2EX引脚
控制着计数的方向。T2EX上的一个逻辑1使得定时器2向上计数。定时器计到0FFFFH
AT89S52
12
溢出,并置位TF2。定时器的溢出也使得RCAP2H和RCAP2L中的16位值分别加载到
定时器存储器TH2和TL2中。
T2EX 上的一个逻辑0 使得定时器2 向下计数。当TH2 和TL2 分别等于RCAP2H 和
RCAP2L中的值的时候,计数器下溢。计数器下溢,置位TF2,并将0FFFFH加载到定
时器存储器中。
定时器2上溢或下溢,外部中断标志位EXF2 被锁死。在这种工作模式下,EXF2不能
触发中断。
图6 定时器2重载模式(DCEN=0)
表4 T2MOD-定时器2控制寄存器
T2MOD 地址:0C9H 复位值:XXXXXX00B
不可位寻址
- - - - - - T2OE DCEN
7 6 5 4 3 2 1 0
符号功能
- 无定义,预留扩展
T2OE 定时器2输出允许位
DCEN 置1后,定时器2可配置成向上/向下计数
AT89S52
13
图7 定时器2自动重载(DCEN=1)
图8 定时器2 波特率发生器模式
AT89S52
14
波特率发生器
通过设置T2CON(见表2)中的TCLK或RCLK可选择定时器2 作为波特率发生器。
如果定时器2作为发送或接收波特率发生器,定时器1可用作它用,发送和接收的波特
率可以不同。如图8 所示,设置RCLK 和(或)TCLK 可以使定时器2 工作于波特率
产生模式。
波特率产生工作模式与自动重载模式相似,因此,TH2 的翻转使得定时器2 寄存器重
载被软件预置16位值的RCAP2H和RCAP2L中的值。
模式1和模式3的波特率由定时器2溢出速率决定,具体如下公式:
模式1和模式3波特率=
16
2溢出率定时器
定时器可设置成定时器,也可为计数器。在多数应用情况下,一般配置成定时方式
(CP/T2=0)。定时器2 用于定时器 *** 作与波特率发生器有所不同,它在每一机器周期
(1/12晶振周期)都会增加;然而,作为波特率发生器,它在每一机器状态(1/2晶振
周期)都会增加。波特率计算公式如下:
模式1和模式3的波特率=
)] 2 , 2 ( 65536 [ 32 L RCAP H RCAP - ´
晶振频率原文少半个括号“(”
其中,(RCAP2H,RCAP2L)是RCAP2H和RCAP2L组成的16位无符号整数。
定时器2 作为波特率发生器,如图8 所示。图中仅仅在T2CON 中RCLK 或TCLK=1
才有效。特别强调,TH2的翻转并不置位TF2,也不产生中断; EXEN2置位后,T2EX
引脚上1~0的下跳变不会使(RCAP2H,RCAP2L)重载到(TH2,TL2)中。因此,
定时器2作为波特率发生器,T2EX也还可以作为一个额外的外部中断。
定时器2处于波特率产生模式,TR2=1,定时器2正常工作。TH2或TL2不应该读写。
在这种模式下,定时器在每一状态都会增加,读或写就不会准确。寄存器RCAP2可以
读,但不能写,因为写可能和重载交迭,造成写和重载错误。在读写定时器2 或RCAP2
寄存器时,应该关闭定时器(TR2清0)。
可编程时钟输出
如图9 所示,可以通过编程在P10 引脚输出一个占空比为50%的时钟信号。这个引脚
除了常规的I/O 角外,还有两种可选择功能。它可以通过编程作为定时器/计数器2 的
外部时钟输入或占空比为50%的时钟输出。当工作频率为16MHZ时,时钟输出频率范
围为61HZ到4HZ。
为了把定时器2配置成时钟发生器,位C/T2(T2CON1)必须清0,位T2OE(T2MOD1)
必须置1。位TR2(T2CON2)启动、停止定时器。时钟输出频率取决于晶振频率和定
时器2捕捉寄存器(RCAP2H,RCAP2L)的重载值,如公式所示:
时钟输出频率=
] 2 , 2 65536 [ 4 ) -(
晶振频率
L RCAP H RCAP ´
在时钟输出模式下,定时器2不会产生中断,这和定时器2用作波特率发生器一样。定
AT89S52
15
时器2也可以同时用作波特率发生器和时钟产生。不过,波特率和输出时钟频率相互并
不独立,它们都依赖于RCAP2H和RCAP2L。
图9 定时器2时钟输出模式
中断
AT89S52 有6个中断源:两个外部中断(INT0 和INT1),三个定时中断(定时器0、1、
2)和一个串行中断。这些中断如图10所示
每个中断源都可以通过置位或清除特殊寄存器IE 中的相关中断允许控制位分别使得中
断源有效或无效。IE还包括一个中断允许总控制位EA,它能一次禁止所有中断。
如表5所示,IE6位是不可用的。对于AT89S52,IE5位也是不能用的。用户软件不应
给这些位写1。它们为AT89系列新产品预留。
定时器2可以被寄存器T2CON中的TF2和EXF2的或逻辑触发。程序进入中断服务后,
这些标志位都可以由硬件清0。实际上,中断服务程序必须判定是否是TF2 或EXF2激
活中断,标志位也必须由软件清0。
定时器0和定时器1标志位TF0 和TF1在计数溢出的那个周期的S5P2被置位。它们的
值一直到下一个周期被电路捕捉下来。然而,定时器2 的标志位TF2 在计数溢出的那
个周期的S2P2被置位,在同一个周期被电路捕捉下来。
AT89S52
16
表4 中断允许控制寄存器(IE)
(MSB) (LSB)
EA - ET2 ES ET1 EX1 ET0 EX0
中断允许控制位=1,允许中断
中断允许控制位=0,禁止中断
符号位地址功能
EA IE7 中断总允许控制位。EA=0,中断总禁止;EA=1,各中断由各
自的控制位设定
- IE6 预留
ET2 IE5 定时器2中断允许控制位
ES IE4 串行口中断允许控制位
ET1 IE3 定时器1中断允许控制位
EX1 IE2 外部中断1允许控制位
ET0 IE1 定时器0中断允许控制位
EX0 IE0 外部中断1允许控制位
图10 中断源
AT89S52
17
晶振特性
如图10 所示,AT89S52 单片机有一个用于构成内部振荡器的反相放大器,XTAL1 和
XTAL2 分别是放大器的输入、输出端。石英晶体和陶瓷谐振器都可以用来一起构成自
激振荡器。从外部时钟源驱动器件的话,XTAL2 可以不接,而从XTAL1 接入,如图
12 所示。由于外部时钟信号经过二分频触发后作为外部时钟电路输入的,所以对外部
时钟信号的占空比没有其它要求,最长低电平持续时间和最少高电平持续时间等还是要
符合要求的。
图11 内部振荡电路连接图图12 外部振荡电路连接图
石英晶振C1,C2=30PF±10PF
陶瓷谐振器C1,C2=40PF±10PF
空闲模式
在空闲工作模式下,CPU 处于睡眠状态,而所有片上外部设备保持激活状态。这种状
态可以通过软件产生。在这种状态下,片上RAM和特殊功能寄存器的内容保持不变。
空闲模式可以被任一个中断或硬件复位终止。
由硬件复位终止空闲模式只需两个机器周期有效复位信号,在这种情况下,片上硬件禁
止访问内部RAM,而可以访问端口引脚。空闲模式被硬件复位终止后,为了防止预想
不到的写端口,激活空闲模式的那一条指令的下一条指令不应该是写端口或外部存储
器。
掉电模式
在掉电模式下,晶振停止工作,激活掉电模式的指令是最后一条执行指令。片上RAM
AT89S52
18
和特殊功能寄存器保持原值,直到掉电模式终止。掉电模式可以通过硬件复位和外部中
断退出。复位重新定义了SFR 的值,但不改变片上RAM 的值。在VCC未恢复到正常
工作电压时,硬件复位不能无效,并且应保持足够长的时间以使晶振重新工作和初始化。
表6 空闲模式和掉电模式下的外部引脚状态
模式程序存储器ALE PSEN PORT0 PORT1 PORT2 PORT3
空闲内部1 1 数据数据数据数据
空闲外部1 1 浮空数据地址数据
掉电内部0 0 数据数据数据数据
掉电外部0 0 浮空数据数据数据
程序存储器的加密位
AT89S52有三个加密位不可编程(U)和可编程获得下表所示的功能。
表7 加密位保护模式
加密位1(LB1)编程后,EA 引脚的逻辑值被采样,并在复位期间锁存。如果器件复
位,而没有复位,将锁存一个随机值,直到复位为止。为了器件功能正常,锁存到的
EA值必须和这个引脚的当前逻辑电平一致。
Flash编程―并行模式
AT89S52 带有用作编程的片上Flash 存储器阵列。编程接口需要一个高电压(12V)编
程使能信号,并且兼容常规的第三方(原文:third-party,不知道对不对)Flash或EPROM
编程器。
AT89S52程序存储阵列采用字节式编程。
编程方法
对AT89S52编程之前,需根据Flash编程模式表和图13、图14对地址、数据和控制信
号设置。可采用下列步骤对AT89S52编程:
AT89S52
19
1.在地址线上输入编程单元地址信号
2.在数据线上输入正确的数据
3.激活相应的控制信号
4.把EA/Vpp升至12V
5.每给Flash写入一个字节或程序加密位时,都要给ALE/PROG一次脉冲。字节写周
期时自身定制的,典型值仅仅50us。改变地址、数据重复第1步到第5步,知道全
部文件结束。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)