1、STC89C52 单片机用户手册键入作者姓名选取日期STC89C52RC 单片机介绍STC89C52RC 单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统 8051 单片机,12 时钟/机器周期和 6 时钟/机器周期可以任意选择。主要特性如下:1. 增强型 8051 单片机,6 时钟/机器周期和 12 时钟/机器周期可以任意选择,指令代码完全兼容传统 8051.2. 工作电压:5.5V3.3V(5V 单片机)/3.8V2.0V(3V 单片机)3. 工作频率范围:040MHz,相当于普通 8051 的 080MHz,实际工作频率可达 48MHz4. 用户应用程序
2、空间为 8K 字节5. 片上集成 512 字节 RAM6. 通用 I/O 口(32 个) ,复位后为:P1/P2/P3/P4 是准双向口/弱上拉,P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用时,需加上拉电阻。7. ISP(在系统可编程)/IAP(在应用可编程) ,无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片8. 具有 EEPROM 功能9. 具有看门狗功能10. 共 3 个 16 位定时器/计数器。即定时器 T0、T1、T211. 外部中断 4 路,下降沿中断或低电平触发电路,Power Do
3、wn 模式可由外部中断低电平触发中断方式唤醒12. 通用异步串行口(UART) ,还可用定时器软件实现多个 UART13. 工作温度范围:-40+85(工业级)/075(商业级)14.PDIP 封装STC89C52RC 单片机的工作模式 掉电模式:典型功耗0.1A,可由外部中断唤醒,中断返回后,继续执行原程序 空闲模式:典型功耗 2mA 正常工作模式:典型功耗 4Ma7mA 掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备STC89C52RC 引脚图STC89C52RC 引脚功能说明VCC(40 引脚):电源电压VSS(20 引脚):接地P0 端口(P0.0 P0.7,393
4、2 引脚):P0 口是一个漏极开路的 8 位双向I/O 口。作为输出端口,每个引脚能驱动 8 个 TTL 负载,对端口 P0 写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0 口也可以提供低 8位地址和 8 位数据的复用总线。此时,P0 口内部上拉电阻有效。在 Flash ROM编程时,P0 端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。P1 端口(P1.0 P1.7,18 引脚):P1 口是一个带内部上拉电阻的 8 位双向 I/O 口。P1 的输出缓冲器可驱动(吸收或者输出电流方式)4 个 TTL 输入。对端口写入 1 时,通过内部的上拉电阻
5、把端口拉到高电位,这是可用作输入口。P1 口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流( ) 。此外,P1.0 和 P1.1 还可以作为定时器 /计数器 2 的外部技术输入(P1.0/T2)和定时器/计数器 2 的触发输入(P1.1/T2EX) ,具体参见下表:在对 Flash ROM 编程和程序校验时,P1 接收低 8 位地址。表 XX P1.0 和 P1.1 引脚复用功能引脚号 功能特性P1.0 T2(定时器/计数器 2 外部计数输入) ,时钟输出P1.1 T2EX(定时器/计数器 2 捕获/重装触发和方向控制)P2 端口(P2.0 P2.7,2128 引脚):
6、P2 口是一个带内部上拉电阻的 8 位双向 I/O 端口。 P2 的输出缓冲器可以驱动(吸收或输出电流方式)4 个 TTL 输入。对端口写入 1 时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。P2 作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流( ) 。在访问外部程序存储器和 16 位地址的外部数据存储器(如执行“MOVX DPTR”指令)时, P2 送出高 8 位地址。在访问 8 位地址的外部数据存储器(如执行“MOVX R1”指令)时,P2 口引脚上的内容(就是专用寄存器(SFR)区中的 P2 寄存器的内容) ,在整个访问期间不会改变。在对 Fl
7、ash ROM 编程和程序校验期间,P2 也接收高位地址和一些控制信号。P3 端口(P3.0 P3.7,1017 引脚):P3 是一个带内部上拉电阻的 8 位双向 I/O 端口。 P3 的输出缓冲器可驱动(吸收或输出电流方式)4 个 TTL 输入。对端口写入 1 时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3 做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流( ) 。在对 Flash ROM 编程或程序校验时,P3 还接收一些控制信号。P3 口除作为一般 I/O 口外,还有其他一些复用功能,如下表所示:表 XX P3 口引脚复用功能引脚号 复用功能P
8、3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 (外部中断 0)P3.3 (外部中断 1)P3.4 T0(定时器 0 的外部输入)P3.5 T1(定时器 1 的外部输入)P3.6 (外部数据存储器写选通)P3.7 (外部数据存储器读选通)RST(9 引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。看门狗计时完成后,RST 引脚输出96 个晶振周期的高电平。特殊寄存器 AUXR(地址 8EH)上的 DISRTO 位可以使此功能无效。DISRTO 默认状态下,复位高电平有效。ALE/ ( 30 引脚):地址锁存控制信号(ALE
9、)是访问外部程序存储器时,锁存低 8 位地址的输出脉冲。在 Flash 编程时,此引脚( )也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址位 8EH 的 SFR 的第 0 位置“1” ,ALE 操作将无效。这一位置“1” ,ALE 仅在执行 MOVX 或 MOV 指令时有效。否则,ALE 将被微弱拉高。这个 ALE 使能标志位(地址位 8EH 的 SFR 的第 0 位)的设置对微控制器处于外部执行模式下无效。(29 引脚):外部程序存储器选通信号(
10、)是外部程序存储器选通信号。当 AT89C51RC 从外部程序存储器执行外部代码时, 在每个机器周期被激活两次,而访问外部数据存储器时, 将不被激活。/VPP(31 引脚):访问外部程序存储器控制信号。为使能从 0000H 到FFFFH 的外部程序存储器读取指令, 必须接 GND。注意加密方式 1 时,将内部锁定位 RESET。为了执行内部程序指令, 应该接 VCC。在 Flash 编程期间, 也接收 12 伏 VPP 电压。XTAL1(19 引脚):振荡器反相放大器和内部时钟发生电路的输入端。XTAL2(18 引脚):振荡器反相放大器的输入端。特殊功能寄存器在 STC89C52RC 片内存储
11、器中,80HFFH 共 128 个单元位特殊功能寄存器(SFR) ,SFR 的地址空间如下表 1 所示。并非所有的地址都被定义,从 80HFFH 共 128 个字节只有一部分被定义。还有相当一部分没有定义。对没有定义的单元读写将是无效的,读出的数值将不确定,而写入的数据也将丢失。不应将“1”写入未定义的单元,由于这些单元在将来的产品中可能赋予新的功能,在这种情况下,复位后这些单元数值总是“0” 。STC89C52RC 除了有定时器/ 计数器 0 和定时器/计数器 1 之外,还增加了一个一个定时器/计数器 2.定时器/计数器 2 的控制和状态位位于 T2CON(见表2)和 T2MOD(见表 4)
12、 。定时器 2 是一个 16 位定时/计数器。通过设置特殊功能寄存器 T2CON 中的C/T2 位,可将其作为定时器或计数器(特殊功能寄存器 T2CON 的描述如表 2 所列) 。定时器 2 有 3 种操作模式:捕获、自动重新装载(递增或递减计数)和波特率发生器,这 3 种模式由 T2CON 中的位进行选择(如表 2 所列)表 1 STC89C52RC 的特殊功能寄存器表 2 特殊功能寄存器 T2CON 的描述表 3 定时/ 计数器 2 控制寄存器各位功能说明符号 功能TF2 定时器 2 溢出标志。定时器 2 溢出时,又由硬件置位,必须由软件请 0.当 RCLK=1 或 TCLK=1 时,定时
13、器 2 溢出,不对 TF2 置位。EXF2定时器 2 外部标志。当 EXEN2=1,且当 T2EX 引脚上出现负跳变而出现捕获或重装载时,EXF2 置位,申请中断。此时如果允许定时器 2 中断,CPU 将响应中断,执行定时器 2 中断服务程序, EXF2必须由软件清除。当定时器 2 工作在向上或向下计数方式时(DCEN=1) ,EXF2 不能激活中断。RCLK接收时钟允许。RCLK=1 时,用定时器 2 溢出脉冲作为串口(工作于工作方式 1 或 3 时)的接收时钟,RCLK=0,用定时器 1 的溢出脉冲作为接收脉冲TCLK发送时钟允许。TCLK=1 时,用定时器 2 溢出脉冲作为串口(工作于工
14、作方式 1 或 3 时)的发送时钟,TCLK=0,用定时器 1 的溢出脉冲作为发送脉冲EXEN2定时器 2 外部允许标志。当 EXEN2=1 时,如果定时器 2 未用于作串行口的波特率发生器,在 T2EX 端口出现负跳变脉冲时,激活定时器 2 捕获或者重装载。EXEN2=0 时,T2EX 端的外部信号无效。TR2 定时器 2 启动/停止控制位。 TR2=1 时,启动定时器 2.C/ 定时器 2 定时方式或计数方式控制位。C/ =0 时,选择定时方式,C/ =1 时,选择对外部事件技术方式(下降沿触发) 。CP/捕获/重装载选择。CP/ =1 时,如 EXEN2=1,且 T2EX 端出现负跳变脉
15、冲时发生捕获操作。CP/ =1 时,若定时器 2 溢出或EXEN2=1 条件下,T2EX 端出现负跳变脉冲,都会出现自动重装载操作。当 RCLK=1 或 TCLK=1 时,该位无效,在定时器 2 溢出时强制其自动重装载。表 4 定时器 2 工作方式RCLK+TCLK CP/ TR2 模式0 0 1 16 位自动重装0 1 1 16 位捕获1 X 1 波特率发生器X X 0 (关闭)1、 捕获模式在捕获模式中,通过 T2CON 中的 EXEN2 设置 2 个选项。如果 EXEN2=0, 定时器 2 作为一个 16 位定时器或计数器(由 T2CON 中的 C/ 位选择) ,溢出时置位 TF2(定时
16、器 2 溢出标志位) 。该位可用于产生中断(通过使能 IE 寄存器中的定时器 2 中断使能位) 。如果 EXEN2=1,与以上描述相同,但增加了一个特性,即外部输入 T2EX 由 1 变 0 时,将定时器 2 中 TL2 和 TH2 的当前值各自捕获到RCAP2L 和 RACP2H。另外,T2EX 的负跳变使 T2CON 中的 EXF2 置位,EXF2 也像TF2 一样能够产生中断(其向量与定时器 2 溢出中断地址相同,定时器 2 中断服务程序通过查询 TF2 和 EXF2 来确定引起中断的事件) ,捕获模式如图 X 所示。在该模式中,TL2 和 TH2 勿重新装载值,甚至当 T2EX 产生捕
17、获时间时,计数器仍以 T2EX 的负跳变或振荡频率的 1/2(12 时钟模式)或 1/6(6 时钟模式)计数。图 XX 定时器 2 捕获模式2、 自动重装模式(递增/递减计数器)16 位自动重装模式中,定时器 2 可通过 C/T2 配置为定时器/计数器,编程控制递增/递减。计数的方向有 DCEN(递减计数使能位)确定,DCEN 位于T2MMOD 寄存器中,T2MOD 寄存器各位的功能描述如表 XX 所示。当 DCEN=0 时,定时器 2 默认为向上计数;当 DCEN=1 时,定时器 2 可通过 T2EX 确定递增或递减计数。图 XX 显示了当 DCEN=0 时,定时器 2 自动递增计数。在该模
18、式中,通过设置 EXEN2 位进行选择。如果 EXEN2=0,定时器 2 递增计数到 0FFFFH,并在溢出后将 TF2 置位,然后将 RCAP2L 和 RCAP2H 中的 16 位值作为重新装载值装入定时器 2。RCAP2L 和 RCAP2H 的值是通过软件预设的。表 5 定时器 2 模式(T2MOD)控制寄存器的描述符号 功能- 不可用,保留将来之用*T2OE 定时器 2 输出使能位DCEN 向下计数使能位。定时器 2 可配置成向上/向下计数器*用户勿将其置 1.这些为在将来 80C51 系列产品中用来实现新的特性。在这种情况下,以后用到保留位,复位时或非有效状态时,它的值应为 0;而在这些位有效状态时,它的值为 1.保留位读到的值不确定。如果 EXEN2=1,16 位重新装载可通过溢出或 T2EX 从 1 到 0 的负跳变实现。此负跳变同时将 EXF2 置位。如果定时器 2 中断被使能,则当 TF2 或 EXF2 置 1时,定时器 2 递增计数,计数到 0FFFFH 后溢出并置位 TF2,还将产生中断(如果中断被使能) 。定时器 2 的溢出将使 RCAP2L 和 RCAP2H 中的 16 位值作为重新