太原工业学院毕业设计
掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备 (2)STC89C52RC的引脚介绍[4]
STC89C5RC2的引脚图如图3.1所示:
图3.1 STC89C52RC引脚图
STC89C52RC引脚功能说明如下: VCC(40引脚):电源电压 VSS(20引脚):接地
P0端口(P0.0~P0.7,39~32引脚):P0口是一个漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。此时,P0口内部上拉电阻有效。在Flash ROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。
11
太原工业学院毕业设计
P1端口(P1.0~P1.7,1~8引脚):P1口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流()。
此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体参见表3.1:
在对Flash ROM编程和程序校验时,P1接收低8位地址。
表3.1 P1.0和P1.1引脚复用功能
引脚号 P1.0 P1.1 功能特性 T2(定时器/计数器2外部计数输入),时钟输出 T2EX(定时器/计数器2捕获/重装触发和方向控制) P2端口(P2.0~P2.7,21~28引脚):P2口是一个带内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流()。
在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVX @DPTR”指令)时,P2送出高8位地址。在访问8位地址的外部数据存储器(如执行“MOVX @R1”指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变。
在对Flash ROM编程和程序校验期间,P2也接收高位地址和一些控制信号。 P3端口(P3.0~P3.7,10~17引脚):P3是一个带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。
在对Flash ROM编程或程序校验时,P3还接收一些控制信号。P3口除作为一般I/O口外,还有其他一些复用功能,如表3.2所示:
引脚号 P3.0 P3.1 P3.2 表3.2 P3口引脚复用功能 复用功能 RXD(串行输入口) TXD(串行输出口) (外部中断0) 12
太原工业学院毕业设计
P3.3 P3.4 P3.5 P3.6 P3.7 (外部中断1) T0(定时器0的外部输入) T1(定时器1的外部输入) (外部数据存储器写选通) (外部数据存储器读选通) RST(9引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。看门狗计时完成后,RST引脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。
ALE/(30引脚):地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在Flash编程时,此引脚()也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
如果需要,通过将地址位8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE仅在执行MOVX或MOV指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位(地址位8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。
(29引脚):外部程序存储器选通信号()是外部程序存储器选通信号。当AT89C51RC从外部程序存储器执行外部代码时,在每个机器周期被激活两次,而访问外部数据存储器时,将不被激活。
/VPP(31引脚):访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,必须接GND。注意加密方式1时,将内部锁定位RESET。为了执行内部程序指令,应该接VCC。在Flash编程期间,也接收12伏VPP电压。
XTAL1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2(18引脚):振荡器反相放大器的输入端。
3.2 单片机定时/计数器的原理与应用方法
3.2.1定时/计数器的基本结构
定时/计数器的基本结构如图3.2所示[5]。包括两个定时器/计数器T0和T1、工作方式寄存器TMOD和控制寄存器TCON。其中每个定时/计数器是由两个8位寄存器TH0、TL0和TH1、TH1构成,用于存放定时/计数器的计数初值和经过值;
13
太原工业学院毕业设计
工作方式寄存器TMOD用于定时/计数器的工作方式设置;控制寄存器TCON用来对定时/计数器进行启动、停止运行控制管理。
图3.2 定时/计数器的基本结构
3.2.2定时/计数器的工作原理
定时器T0和T1分别是由TH0、TL0和TH1、TL1,这两个8位计数器构成的16位计数器。两个16位计数器都可以理解为16位的加1计数器[7]。
T0和T1定时/计数器都可由软件设置为定时或计数的工作方式,其中T1还可作为串行口的波特率发生器。T0和T1这些功能的实现都由特殊功能寄存器中的TMOD和TCON进行控制
当T0或T1用作对外部事件计数的计数器时,通过89C51外部引脚T0(P3.4)或T1(P3.5)对外部脉冲信号进行计数。当加在T0或T1引脚上的外部脉冲信号出现一个由1到0的负跳变时,计数器加1,如此直至计数器产生溢出。
当T0或T1用作定时器时,对外接晶振产生的振荡信号进行12分频后,提供给计数器,作为计数的脉冲输入,计数器对输入的脉冲进行计数,直至产生溢出。
不论T0或T1是工作于定时方式还是计数方式,它们在对内部时钟或外部事件进行计数时,都不占用CPU时间,直到定时/计数器产生溢出。如果满足条件,CPU才会
14
太原工业学院毕业设计
停下当前的操作,去处理“时间到”或者“计数满”这样的事件。因此,定时/计数器是与CPU‘并行’工作的,除非溢出不会影响CPU的其它工作。
3.2.3定时/计数器的方式寄存器与控制寄存器
[6][7]
T0和T1由两个8位寄存器TMOD和TCON来控制,分别用来设置各个定时/计数器的工作方式、选择定时或计数功能、控制启动运行以及作为运行状态的标志等。当89C52系统复位时,TMOD和TCON所有位都清0。 (1)定时器/计数器的方式寄存器TMOD
图3.3 定时/计数器的方式寄存器
TMOD在特殊功能寄存器中,字节地址为89H。由于TMOD只能进行字节寻址,所以对T0或T1工作方式的控制只能整字节(8位)写入。在TMOD中,高4位用于对定时器T1的方式控制,而低4位用于对定时器T0的方式控制。图3.3中给出了各位的定义,各位功能简述如下:
工作方式选择位
M1M0:定时器工作方式选择位。通过对M1M0的设置,可使定时器工作于4种工作方式之一。参考表3.3
表3.3 定时器工作方式
M1 M0 0 0 0 1 1 0 1 1 方式 0 1 2 3 说 明 13 位定时器(TH的 8 位和TL的低 5 位) 16 位定时器/计数器 自动重装入初值的 8 位计数器 T0 分成两个独立的8位计数器,T1在方式3时停止工作 ① C/T定时/计数器选择位 —C/T=1,工作于计数方式; —C/T=0,工作于定时方式。
15