中断系统

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

而能够触发中断的事件称为中断源,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);
}

暂无评论

发送评论 编辑评论


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