中断系统
本文最后更新于190 天前,其中的信息可能已经过时,如有错误请发送邮件到1739584917@qq.com

中断是计算机在执行某一程序的过程中,由计算机系统内部或外部的某种原因而必须终止当前程序的运行,先去执行相应的处理程序,然后再返回继续执行原程序。而实现中断功能的软、硬件系统统称为中断系统。常情况下,一个程序中可能会有多个中断,优先级越高的中断优先执行。如果在一个中断的服务过程中,有一个优先级更高的中断插入,则当前中断暂停,前往执行优先级更高的中断。当优先级高的中断执行完毕后再返回继续执行低优先级的中断。

而能够触发中断的事件称为中断源,89C51单片机中共有5个中断源,两个外部中断(INT0、INT1)、两个定时器/计数器T0、T1的溢出中断(最常用的一种)、串行口的发送和接受中断(只占用一个中断源)。

中断查询次序(中断号)

中断号是系统分配给每个中断源的代号,以便识别和处理。

与中断有关的特殊功能寄存

与中断有关的特殊功能寄存器一共有4个:

1、定时/计数器控制寄存器(TCON)、
2、串行口控制寄存器(SCON)、
3、中断允许控制寄存器(IE)、
4、中断优先级控制寄存器(IP)

中断结构

这些中断寄存器就像开关一样控制着中断的开启以及设置优先级。

外部中断

从单片机外部引脚INT0和INT1输入中断请求信号的中断。
外部中断的触发方式有两种电平触发IT0 =0和跳变触发(边沿)IT0 = 1,可以通过定时/计数器控制寄存器TCON编程选择。

定时/计数器控制寄存器 TCON

控制定时/计数器T0和T1的溢出中断
控制外部中断的触发方式.,由IT0和IT1控制
锁存外部中断请求标志位

串行口控制寄存器 SCON

串行口的接收发送数据中断请求标志位(RI和TI)

TI:串行口发送中断请求标志位。CPU每发送一帧数据,硬件置位1(TI=1),但是中断被响应时,需要在中断服务程序中通过软件对TI清零

RI:串行口接受中断请求标志位。每接收一帧数据,硬件置位1(TI=1),但是中断被响应时,一样需要在中断服务程序中通过软件对TI清零

串行口中断不能由硬件自动清除中断请求标志位,需要用户通过软件进行控制清零。

中断允许控制寄存器 IE

IE是控制中断的开关,通过对IE的清0和置1操作来控制中断的屏蔽和开放。

中断允许控制寄存器IE对中断的开放与屏蔽实现两级控制,存在一个总的中断控制位EA

中断优先级控制寄存器 IP

PS :串行口中断优先级控制位。PS=1,串行口中断为高优先级;PS=0,为低优先级。
PT1 :定时/计数器1中断优先级控制位。当PT1=0时,T1溢出中断为低优先级;当PT1=1时,T1溢出中断为高优先级。
PT0 :定时/计数器0中断优先级控制位。当PT0=0时,T0溢出中断为低优先级;当PT0=1时,T0溢出中断为高优先级。
PX1 :外部中断1的中断优先级控制位。当PX1=0时,外部中断1为低优先级;当PX1=1时,外部中断1为高优先级。
PX0 :外部中断0的中断优先级控制位。当PX0=0时,外部中断0为低优先级;当PX0=1时,外部中断0为高优先级。


同级内第二优先级的次序:
外部中断0 > T0溢出中断 > 外部中断1 > T1溢出中断 > 串行口中断

实例:外部中断控制LED亮灭

#include<reg52.h>
void Delay(int xms)		//@12.000MHz
{
	unsigned char data i, j;
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
	
}


void init()		   // 中断的初始化
{
	EA = 1;	   // 打开总中断控制
	EX0 = 1;   // 允许外部中断0
	IT0 = 1;   // 外部中断为下降沿触发方式
}


void main()	   
{
	init();
	while(1)
	{
		P2=0;//LED亮
	}
}

void int0() interrupt 0			   // 中断服务程序
{
	P2=0xff;//LED熄灭
	Delay(1000);
}
如果觉得本文对您有所帮助,可以支持下博主,一分也是缘

评论

  1. Windows Chrome
    6月前
    2023-11-18 13:58:18

    看不懂,好复杂

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
/* */