STC89C51——中断系统
前言
本文介绍基于常见的51单片机,即如下图的芯片:
- STC89C51具备5个中断源
中断源 优先级 中断请求标志位 中断允许控制位 外部中断0 0 IE0 EX0 定时器中断0 1 TF0 ET0 外部中断1 2 IE1 EX1 定时器中断1 3 TF1 ET1 串口中断 4 RI / TI / 优先级数字越低,越优先得到CPU处理。配置中断时,需要将对应中断允许控制位置1。
使用任何中断,都需要打开总中断,即程序语句 EA = 1 ;
与中断相关的寄存器:IE 、TCON、SCON(此处只介绍了常用的)
一、中断相关寄存器介绍
1.IE:中断允许寄存器(可位寻址)
位 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
IE | EA | / | / | ES | ET1 | EX1 | ET0 | EX0 |
对寄存器位功能介绍如下:
①EA :CPU总中断允许控制位。EA=1,允许总中断;EA=0,屏蔽所有中断请求。
②ES:串口中断允许位。用到串口中断时需要置 1
③ET1:定时器1中断允许位。用到定时器1中断时需要置 1
④EX1:外部中断1中断允许位。用到外部中断1中断时需要置 1
⑤ET0:定时器0中断允许位。用到定时器0中断时需要置 1
⑥EX0:外部中断0中断允许位。用到外部中断0中断时需要置 1
实际应用中使用到中断的话,需根据对应中断将其中断允许位置 1,且EA也需置 1。
2.TCON:定时器/计数器控制寄存器(可位寻址)
位 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
TCON | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
对寄存器位功能介绍如下:
①TF1: T1 溢出标志位。T1溢出后,硬件置1,硬件清0。
②TR1:T1 运行控制位。在 GATE=0时(此位在TMOD寄存器),只要TR1=1 , T1开始工作。
③TF0:T0 溢出标志位。T0溢出后,硬件置1,硬件清0。
④TR0:T0 运行控制位。在 GATE=0时(此位在TMOD寄存器),只要TR0=1 , T0开始工作。
⑤IE1:外部中断1请求标志位。硬件置1,硬件清0。
⑥IT1:外部中断1触发方式控制位。IT1=0,低电平触发;IT1=1,下降沿触发。
⑦IE0:外部中断0请求标志位。硬件置1,硬件清0。
⑧IT0:外部中断0触发方式控制位。IT0=0,低电平触发;IT0=1,下降沿触发。
实际应用中,标志位不用配置,标志位是用来给CPU触发中断的;而控制位是在使用到任意中断时,需将对应的控制位置 1 。
3.SCON : 串行控制寄存器(可位寻址)
位地址 | 9FH | 9EH | 9DH | 9CH | 9BH | 9AH | 99H | 98H |
SCON | / | / | / | / | / | / | T1 | R1 |
下面对寄存器控制位进行介绍:
①TI:发送中断请求标志位。
②RI:接收中断请求标志位。
以上2个标志位,大多用于串口通信时,用于发送或接收到数据时的判断,由硬件置1,软件清0。实际应用中,可以配合2个标志位对数据进行处理。
二、程序
以下程序为外部中断0和外部中断1参考程序。
#include <reg51.h>void INT0( ) interrupt 0 //如果是外部中断1,中断号为2(即interrupt 2)
{//Something to do ;
}void main( )
{IT0=1; //中断触发方式,1为下降沿触发,0为低电平触发(如果是外部中断1,则为IT1)EX0=1; //使能外部中断0(如果是外部中断1,则为EX1)EA=1; //允许总中断while(1); //
}
STC89C51——中断系统相关推荐
- 基于STC89C51单片机中断系统操作
MCS-51 单片机中断系统 CPU正在处理某件事情时,外部发生另一件事情,请求CPU处理后CPU暂时停止工作后,转入处理发生的事情,结束后返回原任务.这一程序称为中断. Created with R ...
- 【DSP开发】C6000非多核非KeyStone系列DSP中断系统
C6000系列DSP的中断系统 上一篇介绍了C6455的GPIO系统,最后把GPIO4配置成了中断/事件模式,本文将介绍C6455的中断系统,介绍完基本概念后,给出把GPIO4映射到INT4的代码. ...
- Linux中断(interrupt)子系统之一:中断系统基本原理【转】
转自:http://blog.csdn.net/droidphone/article/details/7445825 这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于AR ...
- linux中断系统那些事之----中断处理过程【转】
转自:http://blog.csdn.net/xiaojsj111/article/details/14129661 以外部中断irq为例来说明,当外部硬件产生中断时,linux的处理过程.首先先说 ...
- PowerPC中断系统简介(一)
1. PowerPC中断系统简介 PowerPC处理器的中断系统由两部分组成,一是内核的中断及异常的处理:二是中断控制器.以P2020处理器为例,包括E500内核中断及异常处理系统和OpenPIC中断 ...
- 51单片机的中断系统
文章目录 1 51单片机的中断系统 1.1 中断的固有优先级和抢占优先级 1 51单片机的中断系统 1.1 中断的固有优先级和抢占优先级 中断使能寄存器: 中断查询序列: interrupt 后面中断 ...
- 51单片机 | 中断系统概念及结构
-------------------------------------------- 中断的过程: 对于单片机来讲,中断是指CPU在处理某一时间A时,发生了另一事件B请求CPU立刻去处理(中断发生 ...
- 8086中断系统——《x86汇编语言:从实模式到保护模式》读书笔记04
80X86中断系统 能够处理256个中断 用中断向量号0-255区别 可屏蔽中断还需要借助专用中断控制器Intel 8259A实现优先权管理 1.中断的分类 中断可以分为内部中断和外部中断. (1)内 ...
- S3C2410中断系统
S3C2410处理器是Samsung公司基于ARM公司的ARM920T处理器核,采用0.18um制造工艺的32位微控制器.该处理器拥有:独立的16KB指令Cache和16KB数据Cache,MMU,支 ...
最新文章
- PHP Liunx 服务安全防范方案
- 图解VC++ opengl环境配置和几个入门例子
- 结构体对齐,#pragma pack
- Spring Boot整合Spring Data Redis-存取JSON格式Java对象
- oracle11gasm,Oracle11gASM之ACFS创建案例
- Euler:欧拉函数&素数筛
- 飞信SDK内容【转载】
- 分段函数if语句_C语言函数系列之库函数中基础必会函数(一)
- Android中的onActivityResult和setResult方法的使用
- [译] 什么阻塞了 DOM?
- HashMap底层原理与扩容机制
- Blender简单建模
- 做个什么网站可以赚钱,这6种网站最好赚钱!
- 微信小程序学习(五)
- 网站社交登录之微博登录
- mysql数据库教学系统设计_MySQL-教学系统数据库设计
- bzoj1605 / P2905 [USACO08OPEN]农场危机Crisis on the Farm
- 运行mysql时,提示Table ‘performance_schema.session_variables’ doesn’t exis
- exchange2007+outlook2007,无法使用外出助理
- 2022年企业法律顾问综合法律知识考试模拟试题卷及答案
热门文章
- 分享一个数学公式编辑器 Mathtype 6.9 最新版 附注册码
- m基于中继协助的认知无线电频谱切换机制的matlab仿真分析
- ### 献给阿尔吉侬的花束python版本——bfs
- 信息摘要算法之一:MD5算法解析及实现
- web前端培训多长时间
- 如何通过自动下载使PlayStation 4(和游戏)保持最新
- 服务器响应未知 请再试一次,PS4 错误代码解决方法
- 倾斜矩形框的IOU计算与Python实现
- 昆仑通态TPC7022Nt物联网屏试用
- 《AutoCAD 2013中文版从入门到精通》——第 1 章 AutoCAD 2013基础 1.1 操作界面...