定时器与中断是整个单片机学习过程中比较重要的知识点,而且应用非常广泛,几乎可以说没有中断的程序都是新手练习用的。学习中断之前先了解一下寄存器这个概念,寄存器简单来说就是个宾馆,可以暂时存储一些数据,脉冲信号等等,在80C51中有一类寄存器叫做特殊功能寄存器,总共定义了21个,在80C52中又增加了5个,所以,80C52中总共有26个。今天讲一下里面几种常用的寄存器,第一个是TMOD寄存器,这个寄存器既可以做定时器也可以做计数器,总共有4中工作模式,前期用的比较多的是模式1,写成TMOD = 0X01;需要注意一下,这些寄存器的名称是不用定义的,也不可以更改。

选择模式的方法很简单,就是把M1,M0组合起来,图片已经给出,用到哪种模式可以直接查表即可。
第二个常用寄存器是SCON寄存器,叫做串行口控制寄存器,有兴趣的同学可以自行搜索,我会在串口那一节详细说明。
下面进入正题,中断,顾名思义,就是在程序执行过程中断掉了,断掉的程序去哪了呢,它开始执行中断里的内容,简单说就好比玩游戏,从主线任务中开启了副本,副本并不会影响主线任务的剧情发展。中断也是,它会占用主程序的极少的执行时间,(大概是几十个机器周期左右),而会执行大量的重复性的程序,比如刷新数码管,扫描按键等等。这些程序如果放在主程序里的话会占用掉大量的时间,使得程序的效率大大降低,所以,中断的其中一个意义就是提高代码的执行效率。如何设置中断呢,就要用到刚才介绍的寄存器,下面给一段代码:
EA = 1; //开启中断总开关
TMOD = 0X01; //选择TMOD寄存器的模式1
TH0 = 0X00; //16位定时器的高8位
TL0 = 0X00; //低8 位
TR0 = 1; //打开定时器
ET0 = 1; //允许中断
以上代码就是打开定时器中断的方法,补充一下,TMOD是16位寄存器,所以他的极限值是2的16次方65536,这个寄存器从0开始跑直到溢出大概是71毫秒(晶振为11.0592M)。下面就教大家怎么计算初始值.
定时时间 = (2的N次方 - X)*12/晶振频率
举个栗子:假如现在我们用11.0592M的晶振来设置TMOD寄存器的时间为20毫秒,求初值。
0.02 = (2的16次方 - x)*12/11059200
X = 47104 然后转化成16进制 X = B800,
一个16进制代表4位2进制,所以,高8位 为 B8 ;低8位为 00;
程序为
EA = 1; //开启中断总开关
TMOD = 0X01; //选择TMOD寄存器的模式1
TH0 = 0XB8; //16位定时器的高8位
TL0 = 0X00; //低8 位
TR0 = 1; //打开定时器
ET0 = 1; //允许中断
这样就能进入中断程序了,中断程序如何写呢?下一节讲
关键字:51单片机 中断 寄存器 定时器
引用地址:
51单片机笔记6 -- 中断1 寄存器、定时器
推荐阅读最新更新时间:2026-03-25 11:21
51单片机的定时器中断(寄存器)
中断是为使单片机具有对外部或内部随机发生的事件进行处理而设置的。51单片机有5种中断源,即有5种对应的情况发生时会使单片机去处理中断程序(中断函数)。 此篇主要整理定时器中断笔记。采用定时器中断会涉及中断寄存器,定时器/计数器相关寄存器(TCON,TMOD),中断函数等知识点。 其中,中断寄存器,定时器/计数器相关寄存器本身或者相关位用来做初始化,中断函数的内容主要是体现发生中断后所需要的操作(在中断函数内写代码)。 1.中断允许寄存器IE 图1.中断寄存器IE 中断寄存器用来设定各个中断源的打开和关闭,IE在特殊功能寄存器中,字节地址为A8H,位地址(由低位到高位)分别是A8H~AFH,该寄存器运行位寻址,即可对该
[单片机]
MCS-51单片机的定时器/计数器概念 非常好的寄存器关系图
一、MCS-51单片机的定时器/计数器概念 单片机中的定时器和计数器其实是同一个物理的电子元件,只不过计数器记录的是单片机外部发生的事情(接受的是外部脉冲),而定时器则是由单片机自身提供的一个非常稳定的计数器,这个稳定的计数器就是单片机上连接的晶振部件;MCS-51单片机的晶振经过12分频之后提供给单片机的只有1MHZ的稳定脉冲;晶振的频率是非常准确的,所以单片机的计数脉冲之间的时间间隔也是非常准确的,这个准确的时间间隔是1微秒; MCS-51单片机外接的是12MHZ的晶振(实际上是11.0592MHZ),所以,MCS-51单片机内部的工作频率(时钟脉冲频率)是12MHZ/12=1MHZ=1000000次/秒=100000
[单片机]
【51单片机STC89C52】定时器(中断)控制LED
一、定时器/计数器T0 1、定时器/计数器的相关寄存器 2、定时器/计数器控制寄存器TCON TCON格式如下: 3、定时器/计数器工作模式寄存器TMOD 模式选择: 二、配置相关寄存器 1、使用STC-ISP工具 2、配置寄存器 设置定时器模式(16位定时器) 配寄存器推荐使用按位操作: 需要清零的位与等于0,不清零的位与等于1 需要置1的位或等于1,不需要置一的位或等于0 TMOD &= 0xF0; //清零低四位、高四位不变 TMOD |= 0x01; //低四位的bit0置1 设置定时器初值 TL0=0x00; //低八位、需要计算 TH0=0xDC
[单片机]
51单片机:定时器与中断系统的运用
#include regx52.h void Delay(int time) { while(time--) //while循环一次需要10us { } } void Timer0Init(void) //1毫秒@11.0592MHz { TMOD &= 0xF0; //设置定时器模式 TMOD |= 0x01; //设置定时器模式 TL0 = 0x66; //设置定时初值 TH0 = 0xFC; //设置定时初值 TF0 = 0; //清除TF0标志 TR0 = 1; //定时器0开始计时 ET0 = 1; EA = 1;
[单片机]
51单片机学习笔记6 -- 定时器中断
1.引脚复用 通过原理图可以发现定时器0(T0)和定时器1(T1)是P3.4引脚和P3.5引脚的复用功能,当将这两个引脚配置为定时器功能时,引脚外接的传感器(模块)将不能正常使用,即引脚同一时间只能作为一个功能使用(普通I/O或复用功能) T0、T1是两个16位定时器/计数器,每经过1个机器周期内部的16位计数寄存器的值加1,当计数器装满时会溢出,在定时模式时单次最大的定时时间是 65535*1.085us 的时间(单位us) 2.定时器配置 定时器0配置需要用到的寄存器(TCON、TMOD、TL0、TH0) 1.定时器/计数器控制寄存器TCON TCON为定时器/计数器T0、T1的控制寄存器,同时也锁存T0、T1溢出
[单片机]
51单片机中断主要关于计时--定时--计算定时器初值--的简介
看到的关于中断 计时器定时器的介绍,个人看明白了。 目录: 1、单片机中断简介 2、中断允许寄存器IE 3、中断优先级寄存器IP 4、定时器中断 TMOD:定时器/计数器的工作方式寄存器,确定工作方式和功能。 TCON:控制寄存器,控制T0,T1的启动和停止及设置溢出标志。 工作方式 5、如何计算定时器的初值 6、中断服务程序的写法 7、代码示例 单片机中断简介 52单片机一共有6个中断源,它们的符号,名称以及各产生的条件分别如下: INT0 - 外部中断0,由P3.2端口线引入,低电平或下降沿引起 INT1 - 外部中断1,由P3.3端口线引入,低电平或下降沿引起 T0 - 定时器/计数器0中断, 由
[单片机]
手把手教学51单片机 | 第三课之 定时器中断
1. 中断 (1)外部中断 打开总中断EA,选择外部中断EX0或EX1,因为ie可寻址,所以直接对EX0或者EX1操作,然后设置IT0(TCOD中)为电平触发还是跳变沿触发(上电默认寄存器0,为电平触发方式),然后写中断处理函数根据下表优先级确定 interrupt 后面的数字 (2)定时器中断 TMOD是定时器/计数器的工作方式寄存器, TCON是控制寄存器,控制T0T1的启动和停止及设置溢出标志 如果选用01工作方式,TH TL是16位 2^16=65536 (65536-N)/256相当于一个能装65536的水桶舀出N单位的水,然后每1us加入1单位的水的时间,最后用了5000us=50ms 接下来是TC
[单片机]
8051单片机(STC89C52)以定时器中断模式实现倒计时器
之前用轮询方式实现了定时器精准定时, 这里用前后台系统架构实现倒计时器. 每10ms都会触发一次中断处理程序T0_INT(), 根据tcount的值, 决定显示个位数字还是十位数字: 当tcount = 100时, 将tcount置回初始值0, 并将sec的值减1. 当sec的值减到-1时, 将sec重新置回15. #include STC89C5xRC.H unsigned char code DIG_CODE = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};//对应数码管显示0~9 int tcount = 0;//记录经过的10m
[单片机]