A 主要完成三个功能: *确定选择定时器还是计数器; *选择何种工作方式; *是否借用外中断控制定时器和计数器的启停; B TMOD的低4位是控制T0的字段(T0--P3.4 定时器/计数器0外部事件脉冲输入端)
C 控制字的格式和含义
分为两种情况:GATE=0,定时器的启停和INT1无关,只取决于TR0; GATE=1,定时器的启停不仅要由TR0来控制,而且要INT1引脚的控制,只有二者 都为高电平时定时器 才开始工作; C/T=1,用作计数器; 用M1,M0来控制定时器/计数器的4种工作方式: *方式0:M1=0,M0=0.13位定时/计数方式 *方式1:M1=0,M0=1.16位定时/计数器 *方式2,M1=1,M0=0.8位初值自动重新装入的8位定时/计数器 *方式3,M1=1,M0=1.仅适用于T0,分为两个8位计数器,T1停止计数
2、定时器/计数器控制寄存器TCON TCON是一个8位的特殊功能寄存器,对应的地址为88H,可为寻址。 A 控制字的格式和含义 a、TF1(TCON.7),TF0(TCON.5)----T1、T0计数溢出标志位 当计数器计数溢出时,该位置“1”。使用查询方式时,此位作为状态位供cpu 查询,但应注意在查询该位有效后应以软件方法及时将该位清“0”。使用中断 方式时,此位作为中断申请标志位,进入中断服务程序后由硬件自动清0. b、TR1(TCON.6),TR0(TCON.4)----计数运行控制位 TR1(TR0)=1,启动定时/计数器工作的必要条件,还与GATE位的状态有关。 TR1(TR0)=0,停止定时/计数器工作。 该位可由软件置1或清0. C、 IE1(TCON.3),IE0(TCON.1)----外部中断INT1(P3.3)、INT0(P3.2)的中断请求标志位 当有外部的中断请求时,INT1(INT0)=1(有硬件完成),在cpu响应中断后,由硬件将 IE1(IE0)清0. d、 IT1(TCON.2),IT0(TCON.0)----INT1(INT0)触发方式控制位 可由软件进行置位和复位。IT0(IT1)=0,INT0(INT1)为低电平触发方式; IT0(IT1)=1,INT0(INT1)为负跳变触发方式;
3、中断允许寄存器IE 在51中断系统中,中断的允许或禁止是由片内可进行位寻址的8位中断允许寄存器IE来 控制的 ES(IE.4):串行口中断允许; ET1:定时器1中断允许; EX1:外中断1中断允许; ET0:定时器0中断允许; EX0;外中断0中断允许; 4、5个中断源的优先级 单片机的中断服务入口地址如下,它们的自然优先级由高到低排列。 外中断0:0003H; 定时器0:000BH; 外中断1:0013H; 定时器1:001BH; 串口:0023H; 采用c51的编程语言,该语言中断服务函数的完整语法如下: 返回值 函数名称(【参数】)【模式】【重入】interrupt n 【using n】 interrupt对应的是中断源的编号,而【using】决定了使用寄存器的组号。这里,需要对 寄存器的组号进行简单的解释。51系统中有4个寄存器组,具体的位置取决于psw(程序状态字) 的两位RS0、RS1的设置。当运行一个中断任务时,采用不同的寄存器组。在c51 中,寄存器组的选择就取决于using后的变量的指定,变量位0~3的整数。 在这里给出不同中断服务程序的c51程序写法: *外中断INT0--------void intsvr0(void) interrupt 0 using 1 *定时/计数器T0-----void timer0(void) interrupt 1 using 1 *外中断INT1--------void intsvr0(void) interrupt 2 using 1 *定时/计数器T1-----void timer0(void) interrupt 3 using 1 *串口中断----------void serial0 interrupt 4 using 1 |
TMOD:工作方式控制寄存器
寄存器地址89H,不可位寻址。
位序 | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
位符号 | GATE | C/T | M1 | M0 | GATE | C/T | M1 | M0 |
GATE——门控位
当=0时,以运行TR0(或TR1)启动或禁止定时器、计数器
当=1时,以TR0*/INT0(或TR1*/INT1)启动或禁止定时器、计数器
GATE=0 以TR0(TR1)启动定时器
GATE=1 以INT0(INT1)启动定时器
C/T=0 定时/计数工作方式选择位
M
T2MOD:工作方式控制寄存器
寄存器地址
- | - | - | - | - | - | T2OE | DCEN |
T2OE:定时器2输出允许位,当=1时,P1.0/T2引脚输出连续脉冲信号
T2CON:定时器控制寄存器
寄存器地址0C8H,位寻址0C8H~0CFH。
位地址 | CF | CE | CD | CC | CB | CA | C9 | C8 |
位符号 | TF2 | EXF2 | RCLK | TCLK | EXEN2 | TR2 | C/T2 | CP/RL2 |
TF2:T2溢出标记
当T2溢出时TF2=1,TD2只能用软件清除
当RCLK=1或TCLK=1时,TF2将不置位
EXF2:T2外部标记
当EXEN2=1时,T2EX/P1.1引脚上的负跳变引起T2的捕捉/重装操作,此时EXF2=1。在T2中断允许时,EXF2=1将引起中断,EXF2只能用软件清除。在T2的向上、向下计数模式下(DCEN=1)EXF2的置位将不引起中断。
RCLK:接收时钟允许
当RCLK=1时,T2的溢出脉冲可用作串行口的接收时钟信号,适于串行口模式1、3当RCLK=0时,T1的溢出脉冲用作串行口接收时钟信号
TCLK:发送时钟允许
EXEN2:T2外部事件(引起捕捉/重装的外部信号)允许
当EXEN2=1时,如果T2没有作串行时钟输出(即RCLK+TCLK=0),则在T2EX/P1.1引脚跳变将引起T2的捕捉/重装操作;
当EXEN2=0时,在T2EX引脚的负跳变将不起作用
TR2:T2的启动/停止控制
C/T2:计数定时
CP/RL2:捕捉/重装选择
当CP/RL2=1且EXEN2=1时,T2EX/P1.1引脚的负跳变将引起捕捉操作
当CP/RL2=0且EXEN2=1时,T2EX/P1.1引脚的负跳变将引起重装操作
当CP/RL2=0且EXEN2=0时,T2的溢出将引起T2的自动重装操作
SCON:串行口控制寄存器
寄存器地址98H,位寻址9FH~98H。
位地址 | | 9E | 9D | | 9B | | 99 | 98 |
位符号 | SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI | RI |
SM0、SM1:串行口工作方式选择位
SM2:多机通信控制位
REN:允许/禁止串行口接收的控制位
TB8:在方式2和方式3中,是被发送的第9位数据,可根据需要由软件置1或清零,也可以作为奇偶校验位,在方式1中是停止位。
RB8:在方式2和方式3中,是被接收的第9位数据(来自第TB8位);在方式1中,RB8收到的是停止位,在方式0中不用。
TI——串行口发送中断请求标志位
当发送完一帧串行数据后,由硬件置1;在转向中断服务程序后,用软件清0。
RI——串行口接收中断请求标志位
PSW:程序状态字
寄存器地址D0H,位寻址D7H~D0H。
位地址 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
位符号 | CY | AC | F0 | RS1 | RS0 | OV | - | P |
CY——进位标记
AC——半进位标记
F0——用户设定标记
RS1 、RS0——4个工作寄存器区的选择位。
VO——溢出标记
P——奇偶校验标记
PCON:电源控制器及波特率选择寄存器
字节地址=87H,不可位寻址
SMOD | - | - | POF | GF1 | GF0 | PD | IDL |
SMOD——波特率倍增位
GF1、GF0——用户通用标记
PD——掉电方式控制位,PD=1时进入掉电模式
IDL——空闲方式控制位,IDL=1时进入空闲方式
联系客服