编程语言
首页 > 编程语言> > 《单片机汇编》期末考试、考研常见考题、习题,题型汇总(二十)、单片机定时器内部结构原理、内部特殊功能寄存器讲解

《单片机汇编》期末考试、考研常见考题、习题,题型汇总(二十)、单片机定时器内部结构原理、内部特殊功能寄存器讲解

作者:互联网

本文对文章一的补充,详细讲解单片机定时器及有关定时器的考试题。

对于单片机这门课来说,***定时器是必考内容,***往往以一道编程题出现,但也可能伴随一些选择题,填空题及判断题出现。

小知识点补充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

仿真图
在这里插入图片描述
仿真视频链接:

<iframe allowfullscreen="true" data-mediaembed="bilibili" frameborder="0" id="cUaD3mbw-1587376865342" src="https://player.bilibili.com/player.html?aid=925308988"></iframe>

《单片机汇编》期末考试、考研常见考题、习题,题型汇总(二十)、单片机定时器内部结构原理、内部特殊功能寄存器讲解

标签:定时器,中断,sfr,单片机,计数器,sbit,习题,定时,考研
来源: https://blog.csdn.net/liuxianfei0810/article/details/105562391