中断系统——80C51单片机学习笔记

  • 中断的概念
    • 中断系统的结构
    • 中断请求标志
      • 1、TCON的中断标志
      • 2、SCON的中断标志位
    • 80C51中断的控制
      • 中断允许控制——IE
      • 中断优先级控制——IP
      • 中断优先级的原则
  • 80C51的定时/计数器
    • 一、定时/计数器的结构
    • 二、定时/计数器的工作原理
    • 三、定时/计数器的控制
      • 1、工作方式寄存器TMOD
      • 2、控制寄存器TCON
    • 四、定时/计数器的工作方式
      • 1、方式O
      • 2、方式1
      • 3、方式2
      • 4、方式3
    • 五、定时/计数器应用举例
  • 补充说明
    • 中断响应的条件为:
    • 中断服务函数要与中断一一照应

本篇略长,请以目录为导航;这是我观看 郭天祥老师的单片机视频后的整体汇结;

中断的概念

CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生);
CPU暂停中断当前的工作,转去处理事件B(中断响应和中断服务);
待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回);
这一过程称为—— 中断

引起CPU中断的根源,称为 中断源;中断源向CPU提出 中断请求,CPU暂时中断原来的事务A,转去处理事件B,对事件B处理完毕后,再回到原来被中断的地方(即 断点),称为中断返回。实现上述中断功能的部件称为 中断系统(中断机构)

中断系统的结构

80C51的中断系统有5个中断源(8052有6个),2个优先级,可实现二级中断嵌套。

  1. 外部中断0(P3.2引脚)可由IT0选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0置1,向CPU申请中断
  2. 外部中断1(P3.3引脚)可由IT1选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1置1,向CPU申请中断
  3. TF0——片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。
  4. TF1——片内定时/计数器T1溢出中断请求标志。当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断。
  5. RI或TI——串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。

中断请求标志

1、TCON的中断标志


IT0(TCON.0),外部中断0触发方式控制位。
当IT0=0时,为电平触发方式。
当IT0=1时,为边沿触发方式(下降沿有效)。
IE0(TCON.1),外部中断0中断请求标志位。
IT1(TCON.2),外部中断1触发方式控制位。
IE1(TCON.3),外部中断1中断请求标志位。
TF0(TCON.5),定时器/计数器T0溢出中断请求标志位
TF1(TCON.7),定时器/计数器T1溢出中断请求标志位

2、SCON的中断标志位


RI(SCON.0),串行口接收中断标志位。 当允许串行口接受数据时,每接收完一个串行帧,由 硬件置位RI。 注意: RI必须由软件清除
TI(SCON.1),串行口发送中断标志位。 当CPU将一个发送数据写入串行口发送缓存器时,就启动了发送进程。每发送完一个串行帧,由 硬件置位TI 。CPU响应中断时,不能自动清除TI,TI必须由软件清除。

80C51中断的控制

中断允许控制——IE

CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。
蔽是由中断允许寄存器IE控制的。

EXO(IE.0),外部中断0允许位;
ETO(IE.1),定时/计数器TO中断允许位;
EX1(IE.2),外部中断0允许位;
ET1(IE.3),定时/计数器T1中断允许位;
ES(IE.4),串行口中断允许位;
EA(IE.7),CPU中断允许(总允许)位。

中断优先级控制——IP

80C51单片机有两个中断优先级,即可实现二级中断服务嵌套。每个中断源的中断优先级都是由中断优先级寄存器IP中的相应位的状态来规定的。

PXO(IP.0),外部中断0优先级设定位;
PTO(IP.1),定时/计数器TO优先级设定位;
PX1(IP.2),外部中断0优先级设定位;
PT1(IP.3),定时/计数器T1优先级设定位;
PS (IP.4),串行口优先级设定位;
PT2 (IP.5),定时/计数器T2优先级设定位。

需要注意: 80C52单片机有四个中断优先级,即可实现四级中断服务嵌套。每个中断源的中断优先级由中断优先级寄存器IP和IPH中的相应位的状态来规定的。

PXO (IPH.0),外部中断0优先级设定位;
PTO (IPH.1),定时/计数器TO优先级设定位;
PX1 (IPH.2),外部中断0优先级设定位;
PT1 (IPH.3),定时/计数器T1优先级设定位;
PS (IPH.4),串行口优先级设定位;
PT2 (IPH.5),定时/计数器T2优先级设定位。

中断优先级的原则

同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,排列如下:

80C51单片机的中断优先级有三条原则:
■CPU同时接收到几个中断时,首先响应优先级别最高的中断请求
■正在进行的中断过程不能被新的同级或低优先级的中断请求所中断
■正在进行的低优先级中断服务,能被高优先级中断请求所中断
为了实现上述后两条原则,中断系统内部设有两个用户不能寻址的优先级状态触发器。其中一个置
1,表示正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个置1,表示正在响应低优先级
中断,它将阻断后来所有的低优先级中断请求。

80C51的定时/计数器

实现定时功能,比较方便的办法是利用单片机内部的定时/计数器。当然也可以采用下面三
种方法:

  1. 软件定时:软件定时不占用硬件资源,但占用了CPU时间,降低了CPU的利用率。
  2. 采用时基电路定时:例如采用555电路,外接必要的元器件(电阻和电容),即可构成硬件定时电路。但在硬件连接好以后,定时值与定时范围不能由软件进行控制和修改,即不可编程。
  3. 采用可编程芯片定时:这种定时芯片的定时值及定时范围很容易用软件来确定和修改,此种芯片定时功能强,使用灵活。在单片机的定时/计数器不够用时,可以考虑进行扩展。

一、定时/计数器的结构


定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制TO、T1的启动和停止及设置溢出标志

二、定时/计数器的工作原理

加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;一个是TO或T1引脚输入的外部脉冲源。每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TFO或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值
■设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t
■设置为计数器模式时,外部事件计数脉冲由TO或T1引脚输入到计数器。在每个机器周期的S5P2期间采样TO、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2us。

三、定时/计数器的控制

80C51单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。

1、工作方式寄存器TMOD

工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于TO,高四位用于T1。其格式如下:

GATE: 门控位。GATE=O时,只要用软件使TCON中的TRO或TR1为1,就可以启动定时/计数器工作; GATA=1时,要用软件使TRO或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。即此时定时器的启动多了一条件。
C/T: 定时/计数模式选择位。C/T=0为定时模式;C/T=1为计数模式。
M1MO: 工作方式设置位。定时/计数器有四种工作方式,由M1MO进行设置。

2、控制寄存器TCON

TCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于控制定时/计数器的启动和中断申请。其格式如下:

TF1(TCON.7): T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。
TR1(TCON.6): T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。
TFO (TCON.5): TO溢出中断请求标志位,其功能与TF1类同。
TRO (TCON.4) : TO运行控制位,其功能与TR1类同。

四、定时/计数器的工作方式

1、方式O

方式0为13位计数,由TLO的低5位(高3位未用)和THO的8位组成。TLO的低5位溢出时向THO进位,TH0溢出时,置位TCON中的TFO标志,向CPU发出中断请求。

定时器模式时有:N = t / Tcy
计数初值计算的公式为 : X=213 - N
定时器的初值还可以采用计数个数直接取补法获得。
计数模式时,计数脉冲是TO引脚上的外部脉冲

门控位GATE具有特殊的作用。当GATE=O时,经反相后使或门输出为1,此时仅由TRO控制与门的开启,与门输出1时,控制开关接通,计数开始;当GATE=1时,由外中断引脚信号控制或门的输出,此时控制与门的开启由外中断引脚信号和TRO共同控制。当TRO=1时,外中断引脚信号引脚的高电平启动计数,外中断引脚信号引脚的低电平停止计数。这种方式常用来测量外中断引脚上正脉冲的宽度。

2、方式1

方式1的计数位数是16位,由TLO作为低8位、THO作为高8位,组成了16位加1计数器。
计数个数与计数初值的关系为 : X=216 - N

3、方式2

方式2为自动重装初值的8位计数方式。

计数个数与计数初值的关系为: X=28 - N
工作方式2特别适合于用作较精确的脉冲信号发生器。

4、方式3

方式3只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数。

工作方式3将T0分成为两个独立的8位计数器TH0和TL0。

五、定时/计数器应用举例

以定时器0为例,核心代码如下:

void Timer0Init() //定时器0初始化函数
{TMOD|=0x01; // 选择为定时器0模式,工作方式1,仅用TR0方式打开启动TH0=(65536-1000)/256; // 给定时器赋初值,定时1ms TL0=(65536-1000)%256; // TH0高八位 TL0低八位ET0=1;//打开定时器0中断允许EA=1;//打开总中断TR0=1;//打开定时器0
}void Time0() interrupt 1 //定时器0中断服务函数
{unsigned int x; //计数值TH0=(65536-1000)/256;//重新装载初值TL0=(65536-1000)%256;x++;if(x==1000)//1s{x=0;{//{定时器控制程序}}}
}

补充说明

中断响应的条件为:

1. 中断源有中断请求;
2. 此中断源的中断允许位为1;
3. CPU开中断(EA=1);

以上三条必须同时满足时,CPU才有可能响应中断。

中断服务函数要与中断一一照应

外部中断0 —— interrupt 0
外部中断1 —— interrupt 2
定时/计数器0 —— interrupt 1
定时/计数器1 —— interrupt 3
串口中断 —— interrupt 4

80C51的中断系统 - 定时/计数器相关推荐

  1. 80C51的中断系统

    80C51的中断系统 一.中断的概念 CPU在处理某一事件A时,发生了另一事件B,请求CPU迅速去处理(中断发生): CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务). 待CPU将事件B ...

  2. 单片机综合实验 - 02 | 中断与定时/计数器实验

    一.实验目的和任务 1.掌握80C51单片机外部中断的初始化及中断服务子程序设计方法. 2.掌握80C51单片机定时器/计数器的程序控制方法. 二.实验原理简介 中断是指在突发事件到来时先中止当前正在 ...

  3. 以梦为马之89c51单片机精确1s时间LED灯闪烁(中断技术+定时/计数器技术)

    y看了郭天祥老师的视频点亮LED后,感慨颇多,于是在今年完成了多函数编写方法的教程. 在高中阶段我是个追求极度完美的人,再解答任何问题我都要追寻最简单的方法,或者是掌握问题本质,直接猜出答案,对,所以 ...

  4. 单片机基础:什么是中断系统、中断系统如何用(附中断系统应用实例)

    中断系统 1.前言 2.什么是中断 3.什么是中断系统 4.中断的流程 5.中断的优先级控制 6.中断源 外部中断 7.与中断有关的特殊功能寄存器 7.1.定时/计数器控制寄存器 `TCON` 7.2 ...

  5. 定时/计数器应用——从P1.0输出周期为1s的方波,让发光二极管以1Hz闪烁

    利用定时/计数器T0从P1.0输出周期为1s的方波,让发光二极管以1Hz闪烁,设晶振频率为12MHz. 2021-01-20,51单片机学习笔记 代码(精简注释): /**************** ...

  6. 【Keil5 C51】AT89C52 中断系统与定时/计数器的介绍

    80C51中断系统 结构 80C51有5个中断源(89C52有6个),2个优先级,可实现二级中断嵌套 TCON中断标志 IT0(TCON.0),外部中断0触发方式控制位 IE0(TCON.1),外部中 ...

  7. 51单片机—详细(存储器RAM/ROM、引脚、中断系统、定时/计数器、串行口通信)

    目录 一.数据存储器RAM 1.拓展RAM 2.片内256字节 1.高128位(80H~FFH) 2.低128位(00H~7FH) 二.程序存储器ROM 三.引脚 1.4组8位并行I/O口 2.其他引 ...

  8. 单片机入门:80C51定时/计数器简介

    实现定时功能,比较方便的办法是利用单片机内部的定时/计数器. 1.定时/计数器的结构 定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成. TMOD是定时/计数器的工作方式寄存器 ...

  9. stm32寄存器版学习笔记04 定时计数器中断

    STM32共有8个定时计数器,其中TIME1和TIME8是高级定时器,TIME2~TIME5是通用定时器,TIME6和TIME7是基本定时器.以TIME3为例总结定时计数器的基本用法. 1.TIM3的 ...

最新文章

  1. 舆情分析项目-重庆公交坠江原因
  2. Vue 框架-05-动态绑定 css 样式
  3. opencv-api resize
  4. 2016年第5本:必然
  5. 2021五一杯数学建模A题 疫苗生产问题
  6. MapGuide open source开发系列教程四: 体系结构(转贴)
  7. 2014全国计算机等级考试四级数据库工程师考试大纲,全国计算机等级考试四级数据库工程师...
  8. 从 Sentence-BERT 谈句子表征
  9. vue常用插件(一)
  10. MA5680T配置指导
  11. 权力的游戏第七季/全集Game of Thrones迅雷下载
  12. 电商3D展示360全景展示可以突出产品优势
  13. 华为应用市场名称问题
  14. java in thread main_linux运行java项目中的main方法,报错:Exception in thread main jav
  15. 蓝桥基础练习 特殊的数字 JAVA
  16. wjw的剪纸(DFS)
  17. VR开发之使用VRTK实现拾取和手柄扣下扳机触发事件(Unity灭火器灭火功能的实现)
  18. go http post请求
  19. Traffic Manager
  20. 最优雅高效的 19 条工作习惯 · 职场亮剑

热门文章

  1. c#传统SqlTransaction事务和TransactionScope事务
  2. 基于电磁信号特征的人体姿态分类研究
  3. 大佬福利之在你眼中 Web 3.0 是什么?(转)
  4. 小米手机续航尿崩?其实只要注意这5个功能,一天一充很轻松
  5. C#图解教程经典的C#入门书
  6. linux系统root改密码忘记了怎么办,linux系统root密码忘记修改办法
  7. matplotlib部件(widgets)之矩形选区(RectangleSelector)
  8. BCGControlBar 7.31的使用方法
  9. 招商银行2020FinTech精英训练营数据赛道参赛回顾
  10. Windows下安装zerotier,网络状态提示PORT_ERROR错误解决