单片机笔记

中断系统

工作原理

功能描述

终止当前进行的事件,去处理突发需及时处理的事件,处理完还要返回原事件.

中断符函数

void ISR() interupt n

中断符函数与普通函数区别

  • 普通函数: 在主函数中需要时即可调用.
  • 中断符函数: 由中断系统来控制跳转, 不允许在主函数中调用 由硬件系统控制跳转和返回, 均自动完成

采用中断方式的优势

如没有中断系统, 单片机大量时间可能会浪费在查询是否有服务请求的定时查询操作上, 即不论是否有服务请求, 都必须去查询.

采用中断技术完全消除查询方式的等待, 大大提高单片机工作效率和定时性.

中断的一般概念

  • 中断响应过程: 由中断管理系统处理突发事件的过程.
  • 中断源: 中断管理系统能够处理的突发事件.
  • 中断请求: 中断源向CPU提出的处理请求.
  • 中断服务函数(ISR): 针对中断请求提供服务的函数.
  • 中断嵌套: 在中断服务中执行更高级别的中断服务.

AT89C51中断系统结构

有5个中断请求源

  1. 外部中断0(INT0) 中断标志位IE0
  2. 定时器中断(T0) 中断标志位TF0
  3. 外部中断1(NT1I) 中断标志位TF1
  4. 定时器1中断(T1) 中断标志位IE1
  5. 串行口中断 有两个中断标志位TI, RI分别代表发送和接收中断

中断管理系统介于CPU和外设之间

中断优先级

终端系统先处理高优先级事件, 8051单片机仅有两个优先级(高优先级, 低优先级), 即可实现两级的中断嵌套.

可通过软件手段设置5个中断源的优先级

AT89C51中断系统结构

中断标志位->中断允许位控制中断信号允许or禁止->优先级控制

  • TCON中断标志位: IE0, TF0, IE1, TF1, TI, RI (1: 有请求, 0: 无请求) 硬件系统自动设置
  • IE中断允许位:EX0, ET0, EX1, ET1, ES EA总允许位 (1: 允许, 0: 禁止) 软件可设置
  • IP优先级设置: PX0, PT0, PX1, PT1, PS (1: 高优先级, 0: 低优先级)

中断请求标志寄存器

TCON寄存器(IE0, TF0, IE1, TF1)

TCON为定时器/计数器的控制寄存器, 字节地址为88H

D7 D6 D5 D4 D3 D2 D1 D0
ICON TF1 TR1 TF0 TR0 IET IT1 IE0 IT0
位地址 8FH 8DH 8BH 8AH 89H 88H
  1. IT0: 选择外部中断请求0, 1为下降沿触发方式, 0为低电平触发.
  2. IT1: 选择外部中断请求1, 触发方式选择与IT0类似.
SCON寄存器(TI, RI)

SCON为串行口控制寄存器, 字节地址为98H.

串行口的发送中断和接收中断的中断请求标志T1和R1

D7 D6 D5 D4 D3 D2 D1 D0
SCON T1 R1
位地址 99H 98H
  1. T1 : 发送中断请求标志位. 串口每发送完一帧串行数据后, 硬件自动置"1". 必须在中断服务程序中用软件对T1标志清"0"
  2. R1: 接收中断请求标志位. 串口接收完一个数据帧, 硬件自动置"1". 必须在中断服务程序中用软件对R1标志清"0"
中断允许寄存器IE

各中断源开放或屏蔽, 是由片内中断允许寄存器IE控制, IE字节地址为A8H, 可进行位寻址

D7 D6 D5 D4 D3 D2 D1 D0
IE EA ES ET1 EX1 ET0 EX0
位地址 AFH ACH ABH AAH A9H A8H

IE中各位的功能

  1. EA: 中断允许总开关控制位
  2. ES: 串行口中断允许位
  3. ET1: 定时器/计数器T1溢出中断允许位
  4. EX1: 外部中断1中断允许位
  5. ET0: 定时器/计数器T0溢出中断允许位
  6. EX0: 外部中断0中断允许位
中断优先级寄存器IP

各中断源的中断优先级关系, 可归纳为下面两条基本规则:

  1. 低优先级可被高优先级中断, 高优先级不能被低优先级中断.
  2. 任何一种中断(不管是高级还是低级)一旦得到响应, 不会被它的同级中断源所中断.

AT89C51片内有一个中断优先级寄存器IP, 字节地址为B8H, 可位寻址.

只要用程序改变其内容, 即可进行各中断源优先级设置.

D7 D6 D5 D4 D3 D2 D1 D0
IP PS PT1 PX1 PT0 PX0
位地址 BCH BBH BAH B9H B8H

同级中断的查询次序

在同时收到几个同优先级的中断请求时, 哪一个中断请求能有线得到响应, 取决于内部查询顺序.

这相当于在同一个优先级还存在另一辅助优先级

查询次序(由高到低)

  1. 外部中断0
  2. T0溢出中断
  3. 外部中断1
  4. T1溢出中断
  5. 串行口中断
若IP = 0x06(0110), 进行优先级排序高优先级: PT0, PX1; PT0 > PX1低优先级: PX0, PT1, 串行口; PX0 > PT1 > 串行口

中断函数

中断服务函数一般形式为:

函数类型 函数名() interupt n using m

关键字interrupt后面的n是中断号, 对于8051单片机, n的取值为0-4, 编译器从(8 * n + 3)处产生中断向量.

AT89C51内部RAM中可使用4个工作寄存器区. 每个工作寄存器区包括8个工作寄存器(R0-R7).

关键字using后面的m用来选择4个工作寄存器区. using是一选项, 如不选, 中断函数中的所有工作寄存器内容将被保存在堆栈中.

中断向量: 中断服务程序的入口地址

中断号 中断源 中断向量(ROM地址)
0 外部中断 0003H
1 定时器0 000BH
2 外部中断1 0013H
3 定时器1 001BH
4 串行口 0023H
其他值 保留 8 * n + 3
特殊:复位 非中断源 0000H

习题一

/** 需求: 每按下一次按键时进入中断程序实现数码管循环显示0-9数字* 未经测试,仅提供思路*/#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define OUT P0//uchar code sng[] = []; // 数码管段码
uchar i; // 数码管显示数字void delay(uint t);int main(void)
{// 对外部中断初始化处理IT0 = 1; // IT0为下降沿触发EX0 = 1; // 允许IT0中断EA = 1; // 总允许位打开OUT = sng[i]; // 取得i的段码}while(1){// 中断函数执行数码管显示功能}return 0;
}void INT0_ISR(void) interrupt 0 using 1 // 中断服务函数, 默认main函数using为0, 避免冲突{i++;if (i > 9) // 数码管循环0-9, 防止i溢出{i = 0;}return;
}

51单片机笔记:中断系统相关推荐

  1. 51单片机的中断系统

    文章目录 1 51单片机的中断系统 1.1 中断的固有优先级和抢占优先级 1 51单片机的中断系统 1.1 中断的固有优先级和抢占优先级 中断使能寄存器: 中断查询序列: interrupt 后面中断 ...

  2. 51单片机之中断系统

    51单片机之中断系统 中断系统 四种中断类型: 外部中断: 定时器/计数器T0.T1中断: 串行口中断: 定时器/计数器T2中断: 中断入口: 与中断相关的特殊功能寄存器: 中断优先级: 中断响应时间 ...

  3. 51单片机的中断系统详解

    单片机的中断系统 概念 中断发生:CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理. 中断响应和中断服务:CPU暂时中断当前的工作,转去处理事件B. 中断返回:将事件B处理完毕后,回到事 ...

  4. 51单片机的中断系统及编程(附案例)

    本文简单粗暴地阐述了中断的一些概念.中断源.中断寄存器各位的作用,并写出了编写一个中断函数的流程/要点.不在意细节时,可直接查看照搬"三.中断程序的编程". 一.中断概念 中断定义 ...

  5. 51单片机:中断系统(外部中断,定时器中断,串口通信)

    目录 中断系统简介: 中断的优先级和嵌套: 8个中断请求源及其优先级: 中断的分别介绍: 1.外部中断0:INT0 2.外部中断1 3.T0和 T1:定时计数器的功能 4.串口中断(串口为什么使用定时 ...

  6. 51单片机仿真——中断系统(2)

    Proteus原理图如下: 要是没有设置中断优先级,则外部中断0比外部中断1的同级次序高.同级之间不会打断已被响应的中断请求.所以应该用IP寄存器设置两个中断源的中断优先级,就能使其中一个中断请求能被 ...

  7. 51单片机 | 外部中断实验

    文章目录 一.外部中断介绍 二.外部中断配置 三.硬件设计 四.软件设计 五.实验现象    51 单片机外部中断有 2 个,外部中断 0 和外部中断 1,它们的使用方法是一样的,所以只要学会一个即可 ...

  8. 基于51单片机的时钟系统

     这一次带来的项目是课程设计级别的基于51单片机的时钟系统,本次的项目共有两种,一种是基础功能时钟,上电后自动从00-00-00开始计时,另一种加上了调时功能,上电后自动从00-00-00开始,当需要 ...

  9. 使用51单片机采用中断方式进行串口通信的学习记录:

    使用51单片机进行串口通信的学习记录之中断方式: 1.51单片机采用中断方式的串口通信过程及程序分析: 所谓中断方式,就是串口收/发标志位出发中断后,在中断中执行既定操作,可通过函数调用来实现. 接收 ...

最新文章

  1. 抖音爬虫路上的填坑之路
  2. mysql 5.6.23免安装_mysql5.6.23免安装配置
  3. python数据分析函数大全_python中数据分析常用函数整理
  4. 小波变换和motion信号处理(二)【转载】
  5. 面向对象的软件开发方法简介
  6. 解决启动nginx时报80端口被占用的问题
  7. html游戏代码_新手使用的Mac系统的简易代码编辑器推荐
  8. WCF中NetTCp配置
  9. python将pdf中的每一页转化为图片保存
  10. Tableau开始试用期后的破解方法
  11. 如何批量转换图片格式为jpg?
  12. word中如何单独修改某一页页眉
  13. C语言关键字分析系列
  14. application octet stream java,java – 为什么上传到S3的文件具有内容类型application / octet-stream,除非我命名文件.html...
  15. aur打包linux微信,ArchLinux微信、TIM安装与乱码解决方法
  16. 第二十五章《图书管理系统》第1节:图书管理系统简介
  17. Java锁---偏向锁、轻量级锁、自旋锁、重量级锁
  18. JAVA黑白棋之算法浅析
  19. 2022年国家高新技术企业认定评审最新标准及补贴政策重点,补贴10-50万
  20. Web安全之SQL注入漏洞学习(一)

热门文章

  1. 酷我音乐linux版本,在Linux下可用Wine安装和运行酷我音乐、Microsoft 365家庭版/个人版...
  2. IP地址的解释以及计算
  3. 微信打飞机升级版(Qt实现)
  4. 台达ES2与台达温控器ASCII通讯程序 可以实现温控器运行,停止。 目标值设定,警报上下限的设定
  5. 【小伟哥AI之路】Jetson Nano之4针PWM风扇转速控制
  6. 分享:笔记本电脑有杂音解决技巧
  7. double+zookeeper
  8. 达芬奇去除水印的方法
  9. 第四章 eCallNG-eCall
  10. 超分论文笔记2020CVPR视频超分:Zooming Slow-Mo- VSR with Temporal Group Attention-TDAN