瀵勫瓨鍣?- 鐧惧害鏂囧簱 下载本文

一、TMOD:定时器/计数器模式控制寄存器(TIMER/COUNTER MODE

CONTROL REGISTER)

定时器/计数器模式控制寄存器TMOD是一个逐位定义的8位寄存器,但只能使用字节寻址,其字节地址为89H。 其格式为:

TMOD结构图

======================================================位 序 位符号 B7 GATE 门控位 B6 C/T 定时方式或计数方式选择位 B5 M1 B4 M0 B3 GATE 门控位 B2 C/T 定时方式或计数方式选择位 B1 M1 B0 M0 工作方式选择位 工作方式选择位 功能 控制定时器号 定时器T1 定时器T0 =========================== 其中低四位定义定时器/计数器T0,高四位定义定时器/计数器T1,各位的说明:

一,GATE——门控制。

●GATE=1时,由外部中断引脚INT0、INT1和控制寄存器的TR0,TR1来启动定时器。 当INT0引脚为高电平时TR0置位,启动定时器T0; 当INT1引脚为高电平时TR1置位,启动定时器T1。

●GATE=0时,仅由TR0,TR1置位分别启动定时器T0、T1。

二,C/T——功能选择位

C/T=0时为定时功能,C/T=1时为计数功能。 (清零时选择定时功能,置位时选择计数功能) 三,M0、M1——方式选择功能 由于有2位,因此有4种工作方式

================================================================

M1M0 工作方式 计数器模式 TMOD(设置定时器模式) 0 0 方式0 13位计数器 TMOD=0x00 0 1 方式1 16位计数器 TMOD=0x01

1 0 方式2 自动重装8位计数器 TMOD=0x02

1 1 方式3 T0分为2个8位独立计数器,T1为无中断重装8位计数器 TMOD=0x03

二、TCON

位地址 8FH 位符号 TF1 8EH TR1 8DH STF0 8CH TR0 [1]8BH IE1 8AH IT1 89H IE0 88H IT0 TCON(Timer Control Register)定时器/计数器控制寄存器 TCON在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)为88H一8FH,由于有位地址,十分便于进行位操作。 TCON的作用是控制定时器的启、停,标志定时器溢出和中断情况。 TCON的格式如下图所示。其中,TFl,TRl,TF0和TR0位用于定时器/计数器;IEl,ITl,IE0和IT0位用于中断系统。 各位定义如下: TF1:定时器1溢出标志位。当定时器1计满溢出时,由硬件使TF1置“1”,并且申请中断。进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件清“0”。 TR1:定时器1运行控制位。由软件清“0”关闭定时器1。当GATE=1,且INT1为高电平时,TR1置“1”启动定时器1;当GATE=0,TR1置“1”启动定时器1。 TF0:定时器0溢出标志。其功能及操作情况同TF1。 TR0:定时器0运行控制位。其功能及操作情况同TR1。 IE1:外部中断1请求标志位。 IT1:外部中断1触发方式选择位。当IT1=0,为低电平触发方式;当IT1=1,为下降沿触发方式。 IE0:外部中断0请求标志位。 IT0:外部中断0触发方式选择位。 当IT0=0,为低电平触发方式;当IT0=1,为下降沿触发方式。 TCON中低4位与中断有关。由于TCON是可以位寻址的,因而如果只清溢出或启动定时器工作,可以用位操作命令。例如:执行“CLR TF0”后则清定时器0的溢出;执行“SETB TR1”后可启动定时器1开始工作(当然前面还要设置方式定)。 定时器/计数器的初始化 由于定时器/计数器的功能是由软件编程确定的,所以一般在使用定时/计数器前都要对其进行初始化,使其按设定的功能工作。初始化的步骤一般如下: 1、确定工作方式(即对TMOD赋值); 2、预置定时或计数的初值(可直接将初值写入TH0、TL0或TH1、TL1); 3、根据需要开放定时器/计数器的中断(直接对IE位赋值); 4、启动定时器/计数器(若已规定用软件启动,则可把TR0或TR1置“1”;若已规定由外中断引脚电平启动,则需给外引脚步加启动电平。当实现了启动要求后,定时器即按规定的工作方式和初值开始计数或定时)。 下面介绍一下确定定时器/计数器初值的具体方法。

因为在不同工作方式下计数器位数不同,因而最大计数值也不同。 现假设最大计数值为M,那么各方式下的 最大值M值如下:

方式0:M=2 *13=8 192 方式1:M=2*16=65 536 方式2:M=2*8=256

方式3:定时器0分成两个8位计数器,所以两个M均为256。 因为定时器/计数器是作“加1”计数,并在计数满溢出时产生中断,因此初值X可以这样计算:

在计数方式下:X=M-计数值

在定时方式下:X=M-定时值/机器周期

三、IE:中断允许控制寄存器

寄存器地址A8H,位寻址AFH~A8H。 位地址 AF AE AD 位符号 EA / ET2 AC ES AB ET1 AA EX1 A9 ET0 A8 EX0

(1)EA(IE.7):总允许位它是个总开关,凡是要设置中端都得先通过它。 EA=1,开放所有的中断;EA=0,则所有中断都被禁止。 (2)(IE.6:保留)

(3)ET2(IE.5):定时器2中断允许位(只适用于8052及其增强型) (4)ES(IE.4):串行中断允许位。

当ES=0 禁止串行中断 当ES=1 允许串行中断

(5)ET1(IE.3):定时/计数器 1 中断控制位。ET1=1,允许中断;ET1=0,禁止中断。

(6)EX1(IE.2):外中断 1 中断控制位。EX1=1,允许中断;EX1=0,禁止中断。 (7)ET0(IE.1):定时器0中断允许位。 当ET0(ET1)=0 禁止定时(或计数)中断 当ET0(ET1)=1 允许定时(或计数)中断 (8)EX0(IE.0):外部中断0允许位。 当EX0( EX1)=0 禁止外中断

当EX0( EX1)=1 允许外中断

四、IP:中断优先级控制寄存器

寄存器地址B8H,位寻址BFH~B8H。 位地址 BF BE BD 位符号 / / PT2 BC PS BB PT1 BA PX1 B9 PT0 B8 PX0 (IP.7:保留) (IP.6:保留)

PT2(IP.5):定时器2优先级设定位。

若PT2=1,定时器2中断设为高优先级(只适用于8052及其增强型)。 PS(IP.4):串口中断优先级设定位。 若PS =1,串行中断设为高优先级。 PT1(IP.3):定时中断1优先级设定位。 若PT1=1,定时器1中断设为高优先级。 PX1(IP.2):外部中断1优先级设定位。 若PX1=1,外部中断1设为高优先级。 PT0(IP.1):定时中断0优先级设定位。 若PT0=1,定时器0中断设为高优先级。 PX0(IP.0):外部中断0优先级设定位。 若PX0=1,外部中断0设为高优先级。 五、SCON:串行口控制寄存器 寄存器地址98H,位寻址9FH~98H。 位地址 9F 9E 9D 9C 位符号 SM0 SM1 SM2 REN SM0、SM1:串行口工作方式选择位 9B TB8 9A RB8 99 TI 98 RI