89C51单片机中的中断系统

article/2025/9/17 7:15:30

89C51单片机中的中断系统

对于在单片机中的学习,中断系统是一难点,如果中断系统没有理解透彻,51单片机的学习就算是失败的。
首先,举例说明下什么是中断。
eg.当你在家正在吃着爆米花,看着电视,突然门铃响了,这时你不得不停止吃爆米花看电视,起身去开门,这个过程就是中断。
中断概念
CPU在处理某一事件A时,发生了另一件事件B请求CPU马上去处理(中断发生)
CPU暂时中断当前工作,转去处理事件B(中断响应和中断服务)
等待CPU把事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回), 这整个一个过程 称为中断
中断系统的概念:
引起CPU中断的根源,叫中断源 。 是中断源向CPU提出的中断请求。 CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(被中断的地方叫 断点,“断点”不是一个实际存在的,只是一个人为提出的概念 ), 这一过程称为中断返回。实现以上中断功能的部件称为 中断系统。

在这里插入图片描述
中断技术解决了 快速主机与慢速I/O设备之间的数据传送 问题
中断系统优点: 1. 分时操作 CPU可以分时为多个I/O设备服务,提高了计算机的利用率
2.实时响应 CPU能够及时处理应用系统的随机事件,系统的实时性增强
3.可靠性高 CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高
eg. 89C51/52 的中断系统有5个中断源,2个优先级,可以实现二级中断嵌套
中断允许控制
CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制

EX0(IE.0):外部中断0允许控制位
EX1(IE.2):外部中断1允许控制位
ET0(IE.1):定时/计数器T0允许控制位
ET1(IE.3):定时/计数器T1允许控制位
ES(IE.4):串行口中断允许位
EA(IE.7):CPU中断允许位(总中断允许位)
中断请求标志 TCON
在这里插入图片描述
IT0(TCON.0):外部中断0触发方式控制位
当IT0=0,则是电平触发方式,分为低电平和高电平
当IT0=1,则是边沿触发方式,那么此时为下降沿有效控制
IT1(TCON.2):外部中断1触发方式控制位
IE0(TCON.1):外部中断0中断请求标志位
IE1(TCON.3):外部中断1中断请求标志位
TF0(TCON.5):定时器/计数器T0溢出中断请求标志位
TF1(TCON.7):定时器/计数器T1溢出中断请求标志位
TR0(TCON.4):串行口R0中断请求标志位
TR1(TCON.6):串行口R1中断请求标志位

当同一优先级中的中断申请不止一个的时候,就有中断优先权排队的问题,同一优先级的中断优先权排队,是由中断系统硬件确定的自然优先级形成
外部中断0(IE0) > 定时/计数器0(TF0) > 外部中断1(IE1) > 定时/计数器1(TF1) > 串行口(RI/TI)
中断源
在这里插入图片描述
中断优先级三条原则:

  1. CPU同时接收到几个中断时,首先响应优先级别最高的中断请求

  2. 正在进行的中断过程不能被新的同级或低优先级的中断请求所中断

  3. 正在进行的低优先级中断服务,能被高优先级中断请求所中断
    为实现2,3原则,中断系统内部设有两个用户不能寻址的优先级状态触发器 ,其中一个触发器置为 1 ,表示正在响应高优先级的中断, 它会阻断后来所有的中断请求;另外一个同样置为 1 ,表示正在响应低优先级中断,它会阻断后来所有的低优先级的中断请求

    中断响应的条件

  4. 中断源有中断请求

  5. 中断源的中断允许位是 1

  6. CPU开启中断(EA=1)
    只有3条同时满足时,CPU才有可能会响应中断
    对于如上的概念,需经常阅读和理解,对于程序员来说,并不需要熟知硬件中的各种电路图,对于程序员来使用中断,只需要记住:
    1 想使用的中断是哪个,选择相应的中断号;
    2 触发条件是什么,低电平触发 or 下降沿触发 ;
    3 中断之后做什么

下面是不同中断的代码
外部中断0:

#include "reg51.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit k3=P3^2;
sbit led=P2^0;void delay(u16 i)
{while(i--);
}
void zhongduan()
{IT0=1;EX0=1;EA=1;}
void Int0() interrupt 0
{delay(1000);if(k3==0);{led=~led;}
}
void main()
{zhongduan();while(1);
}

定时器中断0:

#include "reg51.h"
typedef   unsigned char u8;
typedef unsigned int u16;sbit led=P2^0;void time0()
{TMOD=0x01;TH0=0xfc;TL0=0x18;EA=1;TR0=1;ET0=1;
}
void time01() interrupt 1{static u16 i;TH0=0xfc;TL0=0x18;i++;if(i==1000){led=~led;i=0;}
}void main()
{time0();
}

本人同样也是在学习过程中,如有问题,欢迎下方留言讨论


http://chatgpt.dhexx.cn/article/YHvWXE7L.shtml

相关文章

AT89C51单片机交通灯仿真图+代码

接上篇万年历,这篇博客也是记录我的实训内容,我们实训有万年历和交通灯。好了不说闲话,上正文。 不知道为何突然发现说原创审核不过,完全手写的,也不知道为何,哭 注:在评论有附本人交通灯的图噢…

基于AT89C51单片机的电子万年历PROTEUS仿真设计

目录 前 言 1 第一章 工作原理 2 1.1设计目标 2 1.1.1基本功能 2 第二章 硬件设计与原理 3 2.1 总设计框图 3 2.2 硬件设计分析 3 2.2.1 电源的设计 3 2.2.2 单片机最小系统 4 2.2.3 显示系统 10 2.2.4 LCD1602的指令说明及时序 12 2.2.5 LCD1602的RAM地址映射及标准字库表 14 …

基于at89c51单片机的交通灯控制设计

** 单片机自主学习项目*设计分析 —模拟LED交通灯 ** 一、开发背景与需求 1 开发背景 交通事业蓬勃发展,交通流量年年增长,道路交通繁忙,经常有严重堵车现象,特别是在交叉口,为了在叉口的各条干道实现合理的科学分…

以梦为马之89c51单片机驱动lcd

路有千万条,我要选择那条最难的走,这才是我该走的路 控制LCD实际上就是控制两个牛屎芯片 观察lcd1602,它有16个引脚,其含义如下图所示 查看数据手册看到如下时序图 再看说明书看到时序图介绍: 芯片手册混合写的&a…

AT89C51单片机的C语言代码和仿真模拟学习

单片机定时器学习 一、代码图片与仿真模拟图 #include <reg51.h>/*定义KEY*/ sbit KEY1 P1^0; sbit KEY2 P1^1;void Delay100ms() //12.000MHz延时100ms {unsigned char i, j;i 195;j 138;do{while (--j);} while (--i); }//判断KEY值并执行程序 void Judgefunctio…

AT89C51单片机制作简易密码锁

51单片机课程设计—制作密码锁 文章目录 51单片机课程设计---制作密码锁1.设计要求2.设计流程图3.重要代码解释4.仿真电路设计5.完整代码设计6.仿真结果图7.工程源码及protues仿真下载 1.设计要求 1.1能设定一组4位的数字开启密码&#xff08;设定密码功能&#xff09; 1.2用L…

AT89C51单片机万年历仿真图+代码

首先申明&#xff0c;这篇博客是用作记录本人实训内容的&#xff0c;代码我个人一字一字码的&#xff0c;就上网查了下数字温度传感器DS18B20的处理方法&#xff0c;基本都是个人完成的。 在这里吐槽下&#xff0c;本人辛辛苦苦码的代码&#xff0c;最后实训分数还没那些抄的人…

基于AT89C51单片机的电子万年历系统

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/87708258 源码获取 主要内容&#xff1a; 电子万年历系统以实时时钟芯片DS1302和AT89C52单片机为主要研究对象&#xff0c;着重进行51单片机控制系统的设计研究和如…

c51单片机时钟c语言程序设计,AT89C51单片机为核心的时钟电路的程序设计

当前位置:电工之家 > 电工知识 > 单片机 > 正文 AT89C51单片机为核心的时钟电路的程序设计 时间:2018-06-05 08:38 来源:电工之家 AT89C51单片机为核心的时钟电路的程序设计 1.主程序设计及系统主流程图 设计中采用定时器T0中断完成,其余状态循环调用显示子程序。系…

AT89C51单片机

目录 一、AT89S51单片机的I/O端口二、AT89S51单片机的中断系统  1、中断处理过程  2、AT89S51单片机的中断源&#xff08;2&#xff09;AT89S51单片机的中断控制&#xff08;3&#xff09;AT89S51单片机的中断优先级&#xff08;4&#xff09;AT89S51单片机中断系统的结构&…

89c51c语言程序,AT89C51单片机流水灯c语言程序及详解

许多朋友不知道怎么用C语言编程实现AT89C51单片机流水灯&#xff0c;这里给大家讲解一下。 首先将单片机的头函数导入。 #include"reg51.h" 定义单片机P1口的8个管脚&#xff0c;使其分别代表流水灯的8个led。 sbit p0P1^0; sbit p1P1^1; sbit p2P1^2; sbit p3P1^3; …

keil ISIS AT89C51单片机

突然想起大学时候学习的知识&#xff0c;最近空余时间较多&#xff0c;想回顾一下&#xff0c;然后发现连最简单的编辑器的名字都快忘记了&#xff0c;于是赶紧抓紧时间复习一遍&#xff0c;在此记录一下这个过程遇到的问题。 首先是对于keil的安装&#xff0c;我是直接从网上…

AT89C51单片机性能介绍

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器&#xff08;FPEROM—Falsh Programmable and Erasable Read Only Memory&#xff09;的低电压&#xff0c;高性能CMOS8位微处理器&#xff0c;俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造&#xff0c;与工业标…

微机基础与89C51单片机部分知识

1&#xff0c;微机基础知识 微机: 具有完整运算及控制能力的计算机。包括微处理器&#xff0c;储存器&#xff0c;接口适配器&#xff0c;输入输出设备。 微处理器&#xff1a; 控制器&#xff1a;由程序计数器&#xff0c;指令寄存器&#xff0c;指令译码器&#xff0c;时序发…

基于AT89C51单片机的计算器设计

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87772564 源码获取 主要内容: 本设计是基于51系列的单片机进行的设计,可以完成计算器的键盘输入,进行加、减、3位无符号数字的简单运算,并在LED上相应的显示结果。设计过…

基于 AT89C51 单片机的数字时钟设计

目录 1.设计目的、作用 2.设计要求 3.设计的具体实现 3.1 设计原理 3.2 硬件系统设计 3.2.1 AT89C51 单片机原理 3.2.2 晶振电路设计 3.2.3 复位电路设计 3.2.4 LED 数码管显示 3.3 系统实现 3.3.1 系统仿真与调试 3.3.2 演示结果 4.总结 附录 附录 1 附录 2 1.…

89C51单片机之寄存器

文章目录 片内RAM中的寄存器内容介绍 低128字节片内RAM4组工作寄存器 高128字节片内RAM&#xff08;SFR区&#xff09;部分特殊功能寄存器累加器 ACC寄存器 B程序状态寄存器 PSW栈指针 SP数据指针 DPTRI/O端口 P0~P3 中断系统中的特殊寄存器定时器控制寄存器 TCON 之中断定时器…

【89c51汇编语言】51单片机结构及其原理

单片机结构及其原理 51单片机的内部结构单片机CPU控制器控制器&#xff1a;程序计数器&#xff1a;PC 控制器&#xff1a;数据指针寄存器&#xff1a;DPTR运算器累加器APSW程序状态字CY&#xff08;PSW.7&#xff09;进位标志AC&#xff08;PSW.6&#xff09;辅助进位标志RS1和…

89c51单片机

89c51是一款很大众化的入门级单片机&#xff0c;ATMEL、NXP、STC、和SST等公司生产的与80c51兼容低功耗、高性能8位89c51/s51单片机具有比80c31更丰富的外设资源。 89c51/s51单片机芯片内包括&#xff1a; ①一个8位的80c51微处理器&#xff08;CPU&#xff09; ②片内256字…

关于会话(session),你应该了解这些

一、什么是会话 会话Session代表的是客户端与服务器的一次交互过程&#xff0c;这个过程可以是连续也可以是时断时续的。在Servlet中&#xff08;jsp&#xff09;&#xff0c;一旦用户与服务端交互&#xff0c;服务器tomcat就会为用户创建一个session&#xff0c;同时前端会有…