当前位置:首页 > 嵌入式 > 嵌入式分享
[导读]什么是PIC中断程序呢?形象的生活比喻就比如你现在这在看我的文章,突然你的朋友喊你一起去烤地瓜,这时候你就中断了看文章和朋友烤地瓜去了,烤完地瓜之后你又回来看文章。烤地瓜这件事就好比中断程序,他中断了你看文章这件事。在程序方面来说 当CPU在执行一个程序的时候,突然产生了中断事件CPU就去执行中断程序了,当执行完成后CPU又回来执行原先的程序。

什么是PIC中断程序呢?形象的生活比喻就比如你现在这在看我的文章,突然你的朋友喊你一起去烤地瓜,这时候你就中断了看文章和朋友烤地瓜去了,烤完地瓜之后你又回来看文章。烤地瓜这件事就好比中断程序,他中断了你看文章这件事。在程序方面来说 当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,并且执行中断程序。

中断服务程序有一个特殊的定义方法: void interrupt ISR(void)其中的函数名“ISR”可以改成任意合法的字母或数字组合,但其入口参数和返回参数类型必须是“void”型,亦即没有入口参数和返回参数,且中间必须有一个关键词“interrupt”中断函数可以被放置在原程序的任意位置。因为已有关键词“interrupt”声明,PICC 在最后进行代码连接时会自动将其定位到0x0004 中断入口处,实现中断服务响应。编译器也会实现中断函数的返回指令“retfie”。

一个简单的中断服务示范函数如下:

void interrupt ISR(void) { //中断服务程序

if (T0IE && T0IF){ //判TMR0 中断

T0IF = 0; //清除TMR0 中断标志 //在此加入TMR0 中断服务

}

if (TMR1IE && TMR1IF){ //判TMR1 中断 T

MR1IF = 0; //清除TMR1 中断标志

//在此加入TMR1 中断服务

}

} //中断结束并返回

PICC 会自动加入代码实现中断现场的保护,并在中断结束时自动恢复现场,所以编程员无需象编写汇编程序那样加入中断现场保护和恢复的额外指令语句。但如果在中断服务程序中需要修改某些全局变量时,是否需要保护这些变量的初值将由编程员自己决定和实施。用C 语言编写中断服务程序必须遵循高效的原则:

z 代码尽量简短,中断服务强调的是一个“快”字。

z 避免在中断内使用函数调用。 虽然PICC 允许在中断里调用其它函数,但为了解决递归调用的问题,此函数必须为中断服务独家专用。既如此,不妨把原本要写在其它函数内的代码直接写在中断服务程序中。

z 避免在中断内进行数学运算。数学运算将很有可能用到库函数和许多中间变量,就算不出现递归调用的问题,光在中断入口和出口处为了保护和恢复这些中间临时变量就需要大量的开销,严重影响中断服务的效率。

中档系列PIC 单片机的中断入口只有一个,因此整个程序中只能有一个中断服务函数。

1)系统初始化的时候会打开总中断控制位(GIE),打开某个中断控制位,如果是外围中断还要打开外围中断控制位(PEIE);

2)CPU正在执行某个用户程序时,突然收到一个随机产生的中断信号,使某个中断标志位置为1;

3)CPU立刻停止当前的程序,并将下一条要执行的程序的地址保存起来;

4)CPU自动关闭总中断控制位(GIE),控制指令指针跳到中断入口处;

5)从中断入口跳转至中断服务子程序(ISR)。在ISR中程序员应该首先保护中断现场(保存相应重要寄存器的值),

然后根据中断标志位来响应何种中断并作出处理;

6)中断程序执行完毕,首先清空中断标志位并恢复中断现场,执行特殊的指令返回原先用户程序终止处。

要避免上述问题,其实只需要我们在代码上注意以下两点便可以避免。

1、在中断响应函数中,判断条件除了标志位判断再增加使能判断,如外部中断原来只判断INTF,现写为INTF&&INTE;

2、在开启一个中断前,必须先将其标志位清零;

3、PIC每个中断响应处理函数内,必须将其标志位清零,虽然某些标志位是硬件清零,但是考虑不同芯片型号设置不一致,或者遗忘,反正加一条软件清零不会出错。

声明:该篇文章为本站原创,未经授权不予转载,侵权必究。
换一批
延伸阅读

中断机制在单片机及嵌入式系统中是重中之重,我们必须深入理解。首先我们要明白一点:CPU执行指令代码,并非一直顺序地逐条执行,而是可能突然跳到某段代码上去的。因为这段代码的优先级更高,或者说它更加紧迫,CPU必须暂时放下手...

关键字: 中断 单片机 嵌入式系统

PIC单片机是基于RISC系统结构的单片机,最初的设计是支持PDP(编程数据处理器)计算机。大量的操作可以用来控制外围设备。PIC单片机比微控制器具有更快的程序执行能力。它是由微芯片技术公司于1889年发明的,是一种8位...

关键字: PIC单片机 定时器 中断

STC单片机是一款增强型51单片机,完全兼容MCS-51,还增加了新的功能,比如新增两级中断优先级,多一个外中断,内置EEPROM,硬件看门狗,具有掉电模式,512B内存等。还支持ISP下载,不用编程器,只要一个MAX2...

关键字: 单片机 看门狗 中断

MCS—51系列单片机内部只需两个外部接中断连源输入端,当外部接连源多于两个时,就必须进行拓宽,下面介绍几种简略的拓宽办法:

关键字: 单片机 软件 中断

本人从事单片机应用系统的开发已有多年,使用过多种型号的PIC单片机,深感PIC单片机使用起来确实很方便:

关键字: PIC 单片机 寄存器

PIC单片机(Peripheral Interface Controller)是一种用来开发的去控制外围设备的集成电路(IC)。一种具有分散作用(多任务)功能的CPU。与人类相比,大脑就是CPU,PIC 共享的部分相当于...

关键字: PIC 单片机 硬件

新型调制器将速度和规模提高到224G/λ,适用于未来的高速应用 加利福尼亚州山景城2023年3月7日 /美通社/ -- OpenLight 今天宣布已开发并成功展示了一种224G InP调制器,可用于Tower的PH1...

关键字: IC设计 LIGHT PIC 调制器

新产品可为实验室测试提供灵活性,并能够提高PIC设计精度,从而加快上市时间 加利福尼亚州山景城2023年3月3日 /美通社/ -- 为提高对工艺技术的熟悉程度并增加光子集成电路(PIC)的可及性,OpenLight 今...

关键字: LIGHT PEN PD PIC

美国罗克维尔和中国苏州2023年2月16日 /美通社/ -- 信达生物制药集团(香港联交所股票代码:01801),一家致力于研发、生产和销售肿瘤、自免、代谢、眼科等重大疾病领域创新药物的生物制药公司,宣布其重组抗白介素2...

关键字: CAN PIC TE OV

北京2023年1月6日 /美通社/ -- 近日,PICO顺利通过权威认证机构BSI的严格审核,获得ISO/IEC 27001信息安全管理体系和ISO/IEC 27701隐私信息管理体系国际标准认证,成为VR行业...

关键字: ISO PIC 信息安全 安全管理
关闭