【ct107d】单片机中断

概述:

1:什么是中断
中断是单片机不可或缺的一种功能,何为中断,以我的理解举一个例子:

当我们在家看电视这就相当于在执行一个程序,当敲门声响起,我会停止我看电视去开门,这时敲门声相当于一个中断源,发出中断请求,请求开门.在去开门的途中这时电话突然响了,这也是一个中断源,但这时我会先接电话,接完电话再去开门,最后回去看电视,所以接电话这个中断源比开门这个中断源更优先.

你正在追电视剧《神雕侠侣》,正看得入迷的时候,电话响了,你暂停电视剧,去接电话,在接电话的过程中,门铃又响了,你暂时放下电话,去把门打开。如果追电视剧是在执行主程序,那么电话就是中断源,电话铃响了就是中断请求,暂停电视就是现场保护,接电话就是中断响应,门铃响了是更高一级的中断请求,去把门打开,那就是中断嵌套。开完门回来接着聊电话,那是中断返回,接完电话把电视剧暂停打开就是现场恢复。
内核与外设之间的主要交互方式有两种:轮询和中断。轮询的方式貌似公平,但实际工作效率很低,且不能及时响应紧急事件;中断系统使得内核具备了应对突发事件的能力。
中断有个特点,就是你不知道中断什么时候发生。因此,每个中断都需要有一个中断入口地址,也成为中断向量。这样,不管中断在什么时候发生,它都有一个确定的程序执行起始点。中断响应之后,执行的那段程序,我们称作中断服务函数,也就是这个函数专门是为该中断服务的。

2:51单片机的中断系统
一般来说,51单片机有5个中断源(忽略定时/计数器2),分2个优先级,这个5个中断源按照自然优先级从高到低依次为:
外部中断0:INT0 (中断函数编号0)
定时/计数器0:TF0 (中断函数编号1)
外部中断1:INT1 (中断函数编号2)
定时/计数器1:TF1 (中断函数编号3)
串口中断:RI/TI (中断函数编号4)

3:中断结构
在这里插入图片描述
4:中断相关寄存器
中断相关的寄存器有4个,每个寄存器都是可以位寻址的,这该编程带来了方便。

其中2个为控制寄存器:IE寄存器与IP寄存器:

在这里插入图片描述

另外2个为中断请求标志:TCON寄存器与SCON寄存器:

在这里插入图片描述
5:关于中断服务函数程序的编写
一般情况下,中断的处理函数有两个,其一为中断初始化函数,其二为中断服务函数。初始化函数就是一个普通的函数,而中断服务函数却有特殊的格式要求:
<1> 中断函数没有返回值,也不能带参数。
<2> 函数名后面要跟一个关键字interrupt,说明这是一个中断服务函数。
<3> 在关键字interrupt后面要跟上中断号,说明这个中断服务函数是为那个中断服务的。

中断服务函数的格式为:
void   函数名()  interrupt  中断号
{

        ----函数体----

}
我们要利用定时器0来进行间隔定时,中断程序架构我们C语言可以这样写:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值