0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

了解什么是中断程序和实现中断的步骤

2oON_changxuemc 来源:未知 作者:工程师郭婷 2018-06-30 11:54 次阅读

什么是中断程序呢?形象的生活比喻就比如你现在这在看我的文章,突然你的朋友喊你一起去烤地瓜,这时候你就中断了看文章和朋友烤地瓜去了,烤完地瓜之后你又回来看文章。烤地瓜这件事就好比中断程序,他中断了你看文章这件事。在程序方面来说 当CPU在执行一个程序的时候,突然产生了中断事件CPU就去执行中断程序了,当执行完成后CPU又回来执行原先的程序。

中断事件

什么是中断事件,就是引起中断的事件。对于单片机来说这些事件是多种多样的。比如 说一个按键按下,一定的时间到了,一串数据发送完毕,或接收完一个数据。

讲到中断不得不讲讲和中断相对的 查询。其实不管是按键按下 还是 时间到,还是数据发送完毕,这些事实上都可以用查询的方式办到。比如 你是经理 如果你想知道属下任务完成了没有 一种方式就是去询问属下,任务完成没有。早上没完成,下午在问。下午没完成第二天再问。。。。一直到完成为止 这种方式就相当于查询的方式,另一种就是然属下完成任务好直接汇报,在下属执行任务的期间你无需去打挠下属,当下属任务完成后就第一时间向你汇报,这种方式就好像中断。

查询方式:缺点就是可能会大量浪费CPU的时间,不断去查询。如果事情不多还好,可是一旦事情多了会明显感到运行速度变慢。

中断方式:可以用在对时间和响应速度有要求的场合。

具体有哪些事件会引起中断 可以看

1,中断控制寄存器INTCON

2,外设中断允许寄存器 PIEX 注 : X可以是1 2 3 4.。。。不同型号的单片机数目不同

3,外设中断标志寄存器 PIRX 注: X可以是1 2 3 4.。。。不同型号的单片机数目不同

INTCON 中断控制寄存器讲解:

1开启或关闭 全体的中断功能(GIE)

2开启或关闭全体外设的中断功能(PEIE)外设就是在外设中断允许/标志寄存器里面所写的设备。

3开启一些中断事件。

PIEX 与 PIRX 是相互对应的如:当把PIE1的TMR1IE设置为1 定时器timr1将开启中断。等到TMR1定时器溢出后,则会在PIR1的TMRIF将为1,并且执行中断程序。

实例讲解:

我们把上一讲的《PIC单片机之定时器》中的实例修改成中断方式 实现 每隔 50MS亮起LED,每隔50MS灭掉LED。

/*开发环境MPLAB X IDE 芯片型号PIC16LF1823*/

#include

__CONFIG(FOSC_INTOSC&WDTE_OFF&PWRTE_ON&MCLRE_OFF&CP_ON&CPD_OFF&BOREN_ON

&CLKOUTEN_OFF&IESO_ON&FCMEN_ON);//这个要放到上一行去

__CONFIG(PLLEN_OFF&LVP_OFF) ;

#define LED LATA5

void init_fosc(void)

{

OSCCON= 0x68;

}

void init_gpio(void)

{

PORTA = 0;

LATA = 0;

ANSELA = 0;

TRISAbits.TRISA5=0;

}

void init_timer0(void)

{

OPTION_REG=0x87;

}

void interrupt isr(void)//中断程序,interrupt是个关键字说明该函数,是中断函数。

{

LED = ~LED;//改变LED的状态

INTCONbits.TMR0IF=0;//清零中断标志位 如果在离开中断程序前没有清零,程序将不停的中断。

TMR0=61;//给TMR0付初始值61 ,开始下一个50ms计时做准备。

//中断函数结束 返回主函数。哪里来回 回那里去,也就是回到主函数的while(1);处

}

int main(int argc, char** argv)

{

init_fosc();

init_gpio();

init_timer0();

INTCONbits.GIE=1; //开启总中断

INTCONbits.TMR0IF=0;//清零TMR0溢出中断标志位

INTCONbits.TMR0IE=1;//开启TMR0溢出中断

TMR0=61;

while(1);//主函数 在此什么都没做一直在死循环。但等到50ms时间到了TMR0将会溢出,程序就会跳到void interrupt isr(void)处执行。

}

理清下中断初始设置大致的步骤

1 ,开启总中断,开启外设中断。INTCONbits.GIE=1; INTCONbits.PEIE=1;其实即使没用到外设开启也无妨。

2 ,清楚相应中断的标志位。如INTCONbits.TMR0IF=0;

3 ,开启相应中断。如INTCONbits.TMR0IE=1;

中断函数/程序 中要注意的就是 清零相应的中断标志位 如INTCONbits.TMR0IF=0; 否则单片机会认为中断未被执行 则一直中断。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 中断程序
    +关注

    关注

    0

    文章

    34

    浏览量

    8675
  • 控制寄存器
    +关注

    关注

    0

    文章

    34

    浏览量

    11479

原文标题:pic单片机之中断程序(附实例)

文章出处:【微信号:changxuemcu,微信公众号:畅学单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32F407 外部中断配置步骤

    介绍STM32F407外部中断配置步骤,以按键为例,实现外部中断配置,使用按键触发中断进行LED灯控制。
    的头像 发表于 07-06 14:31 1858次阅读
    STM32F407 外部<b class='flag-5'>中断</b>配置<b class='flag-5'>步骤</b>

    RISC-V的中断处理 中断操作三个步骤

    中断操作三个步骤: 1、中断初始化 2、trap处理 3、用户中断处理
    的头像 发表于 05-20 16:38 1076次阅读

    中断程序设计

    实 验 五  软中断程序设计 一、实验目的    通过对软中断程序的编写和调试,掌握IBM-PC系列机的软
    发表于 09-28 23:26 2705次阅读
    软<b class='flag-5'>中断</b><b class='flag-5'>程序</b>设计

    vxworks中断服务程序

    中断服务程序用来处理来自硬件的中断,是设备驱动程序的重要组成部分。为及时响应外部中断,防止中断
    发表于 06-27 11:09 1397次阅读

    中断是什么?STM32中断系统介绍和中断配置步骤资料免费下载

    本文档的主要内容详细介绍的是中断是什么?STM32中断系统介绍和中断配置步骤资料免费下载。
    发表于 10-11 08:00 5次下载
    <b class='flag-5'>中断</b>是什么?STM32<b class='flag-5'>中断</b>系统介绍和<b class='flag-5'>中断</b>配置<b class='flag-5'>步骤</b>资料免费下载

    STM32单片机实现外部中断步骤及方法

    和配置NVIC一样,这也是EXTI配置的一般步骤:清除相应中断线标志位(这个很重要,刚开始一直没找到这个问题),联结端口与中断线(也可以在GPIO初始化时配置),选择中断线,设置
    发表于 11-20 15:46 2.4w次阅读
    STM32单片机<b class='flag-5'>实现</b>外部<b class='flag-5'>中断</b>的<b class='flag-5'>步骤</b>及方法

    了解linux的中断机制?

    中断是指在CPU正常运行期间,由于内外部事件或由程序预先安排的事件引起的CPU暂时停止正在运行的程序,转而为该内部或外部事件或预先安排的事件服务的程序中去,服务完毕后再返回去继续运行被
    发表于 05-05 15:30 706次阅读

    中断时间间隔的中断服务程序实现免费下载

    本文档的主要内容详细介绍的是中断时间间隔的中断服务程序实现免费下载。
    发表于 08-06 17:34 1次下载
    <b class='flag-5'>中断</b>时间间隔的<b class='flag-5'>中断</b>服务<b class='flag-5'>程序</b><b class='flag-5'>实现</b>免费下载

    中断系统详解、外部中断

    图:允许中断:配置中断方式:编写中断处理函数:5个中断源的中断入口及中断级别:
    发表于 11-22 12:51 14次下载
    <b class='flag-5'>中断</b>系统详解、外部<b class='flag-5'>中断</b>

    定时器中断实现步骤及实例笔记

    定时器中断实现步骤使能定时器时钟。 RCC_APB1PeriphClockCmd();初始化定时器,配置ARR,PSC。 TIM_TimeBaseInit();开启定时器
    发表于 11-23 18:06 13次下载
    定时器<b class='flag-5'>中断</b><b class='flag-5'>实现</b><b class='flag-5'>步骤</b>及实例笔记

    中断指令及程序的讲解

    首先要理解中断,必须知道PLC程序的三大构体,主程序、子程序中断程序,其中
    的头像 发表于 05-22 14:35 4754次阅读
    <b class='flag-5'>中断</b>指令及<b class='flag-5'>程序</b>的讲解

    arm中断是怎么实现

    arm中断是怎么实现的  首先,了解什么是中断中断是指在CPU执行某个程序时,突然发生的一些事
    的头像 发表于 09-05 16:22 1038次阅读

    ARM中的异常中断是如何实现进入中断程序的?如何进入呢?

    ARM中的异常中断是如何实现进入中断程序的?如何进入呢? 在计算机系统中,异常和中断是两个常见的概念。 在ARM中,异常和
    的头像 发表于 10-19 16:36 967次阅读

    STM32如何配置外部中断?STM32外部中断配置步骤

    STM32如何配置外部中断?STM32外部中断配置步骤  作为一款现代化的微控制器,STM32系列芯片在各种应用场合中广泛应用。其中最常见的应用是外部中断。本文将详细介绍如何在STM3
    的头像 发表于 10-26 17:47 3362次阅读

    CPU中断程序:从硬件看什么是中断

    CPU响应中断转去执行中断服务程序前,需要把被中断程序的现场信息保存起来,以便执行完中断服务
    发表于 03-26 11:36 3072次阅读
    CPU<b class='flag-5'>中断</b><b class='flag-5'>程序</b>:从硬件看什么是<b class='flag-5'>中断</b>?