本文对文章一的补充,详细讲解单片机定时器及有关定时器的考试题。
对于单片机这门课来说,***定时器是必考内容,***往往以一道编程题出现,但也可能伴随一些选择题,填空题及判断题出现。
小知识点补充20:定时/计数方式:
1,软件定时
2,数字电路硬件定时
3,可编程定时/计数器
小知识点补充21:
51单片机有5个中断请求源和两个中断优先级。
5个中断源分别是:
1,外部中断0
2,外部中断1
3,定时器溢出中断0
4,定时器溢出中断1
5,串行口中断
中断系统结构图如下:
(备注:此图摘自百度)
重要寄存器详解:
1,TCON(timer control)定时器/计数器控制寄存器 (可位寻址)
IT0(TCON.0): 外部中断0触发方式控制位。
当 IT0 =0 时,为电平触发方式。
当 IT0 =1 时,为边沿触发方式(下降沿有效)
IE0(TCON.1): 外部中断0中断请求标志位。
IT1(TCON.2): 外部中断1触发方式控制位。
IE1(TCON.3): 外部中断1中断请求标志位。
TR0(TCON.4): T0运行控制位,其功能与 TR1 类同。
TF0(TCON.5): T0溢出中断请求标志位,其功能与TF1类同。
TR1(TCON.6): T1运行控制位。TR1置1时,T1 开始工作;TR1 置0时,T1停止工作。
TR1 由软件置1或清0。即:用软件可控制定时/计数器的启动与停止。
TF1(TCON.7): T1溢出中断请求标志位。
备注:T1计数溢出时由硬件自动置TF1为1。CPU 响应中断后TF1由硬件自动清 0。T1 工作时,CPU 可随时查询 TF1 的状态。TF1 也可以用软件置 1 或清 0,同硬件置 1 或清 0 的效果一样。
2,定时器方式控制寄存器(timer mode)(不可位寻址)
GATE:门控位。
GATE =0 时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;
GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚INT0(或 INT1)也为
高电平时,才能启动定时/计数器工作。即此时定时器的启动多了一条件。
C/T: 定时/计数模式选择位。
C/T =0 为定时模式;
C/T =1 为计数模式。
M1 M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0 进行设置。
M1 M0 工作方式 说 明
0 0 方式 0 13位定时/计数器
0 1 方式 1 16位定时/计数器
1 0 方式2 8位自动重装定时/计数器
1 1 方式 3 T0 分成两个独立的8位定时/计数器,此时T1不能工作在方式3
3, TL0 ,地址: 8AH ,定时器 0 低八位
4, TL1 ,地址: 8BH ,定时器 1 低八位
5, TH0 ,地址: 8CH,定时器 0 高八位
6, TH1 ,地址: 8DH ,定时器 1 高八位
7,中断允许控制寄存器IE(interrupt enable)(可位寻址)
EX0(IE.0): 外部中断0允许位(高电平有效)
ET0(IE.1): 定时/计数器T0中断允许位(高电平有效)
EX1(IE.2): 外部中断0允许位(高电平有效)
ET1(IE.3): 定时/计数器T1 中断允许位(高电平有效)
ES(IE.4): 串行口中断允许位(高电平有效)
EA(IE.7): CPU 中断允许(总允许)位(高电平有效)
ET2(IE.5): 定时/计数器T2中断允许位(51单片机没有此定时器)
8,中断优先级控制寄存器(interrupt priority)(可位寻址)
PX0(IP.0): 外部中断0优先级设定位(高电平有效)
PT0(IP.1): 定时/计数器 T0 优先级设定位(高电平有效)
PX1(IP.2): 外部中断0优先级设定位(高电平有效)
PT1(IP.3): 定时/计数器T1优先级设定位(高电平有效)
PS(IP.4): 串行口优先级设定位(高电平有效)
PT2(IP.5): 定时/计数器 T2 优先级设定位(高电平有效)(51单片机没有此定时器)
中断向量表
小知识点补充22:
C语言书写中断函数格式:
void 函数名 (void) interrupt 中断向量号m using 寄存器组号n
{
}
其中:
中断向量号m: 0-4
寄存器组号n: 0-3
小知识点补充23:
单片机C语言中头文件reg51.h或reg52.h内容为:
#ifndef __REG51_H__
#define __REG51_H__
/* BYTE Register */
sfr P0 = 0x80;
sfr P1 = 0x90;
sfr P2 = 0xA0;
sfr P3 = 0xB0;
sfr PSW = 0xD0;
sfr ACC = 0xE0;
sfr B = 0xF0;
sfr SP = 0x81;
sfr DPL = 0x82;
sfr DPH = 0x83;
sfr PCON = 0x87;
sfr TCON = 0x88;
sfr TMOD = 0x89;
sfr TL0 = 0x8A;
sfr TL1 = 0x8B;
sfr TH0 = 0x8C;
sfr TH1 = 0x8D;
sfr IE = 0xA8;
sfr IP = 0xB8;
sfr SCON = 0x98;
sfr SBUF = 0x99;
/* BIT Register */
/* PSW */
sbit CY = 0xD7;
sbit AC = 0xD6;
sbit F0 = 0xD5;
sbit RS1 = 0xD4;
sbit RS0 = 0xD3;
sbit OV = 0xD2;
sbit P = 0xD0
/* TCON */
sbit TF1 = 0x8F;
sbit TR1 = 0x8E;
sbit TF0 = 0x8D;
sbit TR0 = 0x8C;
sbit IE1 = 0x8B;
sbit IT1 = 0x8A;
sbit IE0 = 0x89;
sbit IT0 = 0x88;
/* IE */
sbit EA = 0xAF;
sbit ES = 0xAC;
sbit ET1 = 0xAB;
sbit EX1 = 0xAA;
sbit ET0 = 0xA9;
sbit EX0 = 0xA8;
/* IP */
sbit PS = 0xBC;
sbit PT1 = 0xBB;
sbit PX1 = 0xBA;
sbit PT0 = 0xB9;
sbit PX0 = 0xB8;
/* P3 */
sbit RD = 0xB7;
sbit WR = 0xB6;
sbit T1 = 0xB5;
sbit T0 = 0xB4;
sbit INT1 = 0xB3;
sbit INT0 = 0xB2;
sbit TXD = 0xB1;
sbit RXD = 0xB0;
/* SCON */
sbit SM0 = 0x9F;
sbit SM1 = 0x9E;
sbit SM2 = 0x9D;
sbit REN = 0x9C;
sbit TB8 = 0x9B;
sbit RB8 = 0x9A;
sbit TI = 0x99;
sbit RI = 0x98;
#endif
51单片机定时器内部结构图:
备注:
计数模式:是指对外部事件进行计数,实质是对外部脉冲计数(注:对外部计数脉冲的最高计数频率为机器周期的2分频,同时要求外部脉冲高低电平保持时间均大于一个机器周期)
定时器工作方式
1,方式0:(M1M0=00)
内部框图如下:
定时器/计数器工作于此方式时,为13为计数器,由TL的低5位和TH的整个8位构成。
内部原理分析:
1,当C/T=0时,电子开关打到上面位置,此时为定时器工作模式,计数脉冲为对时钟的12分频。当GATE=0时,通过反相器输出1,此时不管INT0是什么电位,或非门始终输出1,只要TR0定时开关等于1,则与门输出1,使得控制开关打开,定时开始。当13位计数器中的值计数设置的最大值时,置位TF0,如果定时中断允许位ETX(X=0或1)和总中断允许位EA打开则产生定时溢出中断。(注:此种工作方式下,计数值需要手动更新)
2,当C/T=1时,电子开关打到下面位置,此时为计数器工作模式,工作过程与1相似。
2,方式1:(M1M0=01)
内部框图如下:
内部原理分析:
工作原理和分析方法与方式0类似,只是此种模式是16位计数器。
3,方式2:(M1M0=10)
内部框图如下:
内部原理分析:
分析方法与方式0类似,只是此种模式是8位计数器。此种模式下,计数值自动重载,无需手动更新即:TLx为计数值,THx为重载值。
4,方式3:(M1M0=11)
内部框图如下:
程序源码:
内部原理分析:
分析方法与方式0类似,此种模式下,定时T0分为两个独立的8位计数器:TL0和TH0,TH0此时占用定时器1的中断请求源TF1,此时定时1不能工作在方式3。
备注:一般情况下,定时器1作为串口的波特率发生器,定时器0才工作在方式3.
注:考试常考定时器模式而非计数器模式
题35
利用定时器1编程实现循环点亮8位LED,间隔时间为100毫秒(设晶振为6MHz)电路图如下:(低电平点亮LED)。
解析:
计数方式: X=M-要求的计数初值
定时方式: X=M-要求的定时值/机器周期 即:
X=M-fosc*要求定时值/12
注:M为最大计数值
当fosc=6MHz时,机器周期为2uS,
根据上述对工作方式的分析:
方式0: 最长计数2^13*2/1000=16.384 ms
方式1: 最长计数2^16*2/1000=131.072 ms(满足题目要求)
方式2: 最长计数2^8*2/1000= 512 us
程序源码:
ORG 0000H
LJMP START
ORG 001BH
LJMP T1ADDR
ORG 002CH
START:
MOV SP,#60H
MOV A,#0FEH
MOV P1,A
SETB ET1
SETB EA
MOV TMOD,#10H
MOV TL1,#0AFH
MOV TH1,#3CH
SETB TR1
SJMP $
ORG 0050H
T1ADDR:
MOV TL1,#0AFH
MOV TH1,#3CH
RL A
MOV P1,A
RETI
END
仿真图
仿真视频链接:
《单片机汇编》期末考试、考研常见考题、习题,题型汇总(二十)、单片机定时器内部结构原理、内部特殊功能寄存器讲解