PIC单片机中断程序设计技巧

合集下载

PIC单片机中断程序设计技巧

PIC单片机中断程序设计技巧

PIC 单片机中断程序设计技巧
所有的中档系列PIC 单片机,PORTB 端口最高的4 个引脚(RB7~RB4)在设为输入模式时,当输入电平由高到低或由低到高发生变化时,可以让单片
机产生中断。

这就是通常所说的引脚状态变化中断。

在设计引脚中断程序时,有三个需要特别注意的地方。

一是,在清除
P0RTB 中断标志位RBIF 之前,必须安排一条必不可少的,以PORTB 端口数据寄存器PORTB 为源寄存器的读操作指令。

放置这一指令的目的有时并
不只是为了读取有用的数据,而是为了取消状态变化的硬件信号,以便顺利
清除RBIF 标志位,为下一次中断做好准备。

二是,由于端口PORTB 是引脚电子变化中断,即无论引脚出现上升沿还是下降沿都会产生中断请求,所以
必须处理好不需要的虚假中断。

三是,一般都利用PIC 单片机的引脚功能来检测按键,所以必须处理好按键消抖的问题。

引脚中断程序设计
在主程序里先设置有关的寄存器。

◇设置TRISB 寄存器,使RB7~RB4 相关的引脚处于输入状态;
◇如果需要弱上拉,通过OPTION_REG 的第7 位设置;
◇RBIF=O;。

PIC系列单片机的中断资源特点及其应用方法详解

PIC系列单片机的中断资源特点及其应用方法详解

PIC系列单片机的中断资源特点及其应用方法详解1 PIC单片机简介PIC系列单片机是美国Microchip技术公司推出的高性能价格比的8位嵌入式控制器(Embedded Controller),它采用了精简指令集计算机RISC (Reduced Instruction Set Computer)和哈佛(Harvard)双总线以及两级指令流水线结构。

具有高速度、低工作电压、低功耗等特点和优良的性能价格比,因而PIC系列单片机越来越受到单片机开发与应用工程技术人员的青睐。

该系列独特的结构和中断资源使其在使用时与其它系列的单片机有许多不同之处。

下面以PIC16CXX系列微控制器为例来介绍PIC 系列单片机的中断资源特点以及应用方法。

2 中断资源的开发与屏蔽图1是PIC16C64/64A/65/65A的中断逻辑电路图,其它型号芯睡的中断资源也大致相同,只是资源多少不一而已,但它们的中断入口只有一个(入口地址在004H)。

PIC 单片机的中断大致可以分为两类。

第一类是由中断控制器INTCON直接控制的中断,包括外部引脚中断INT的RB口电平变化中断以及定时器TMRO溢出中断,它们的中断允许位和中断标志都在INTCON寄存器中。

引脚中断INT和定时器TMRO溢出中断与其它微处理器相同。

RB口电平变化中断是PIC 单片机特有的中断,当把RB口高4位I/O口线设置为输入时,只要这4位I/O 口线上的电平发生变化就会引起中断。

RB口的电平中断特性对用户是非常有用的。

用户可以直接利用这些口线的关键部位进行电平检测,并可利用中断进行保护性控制等操作;另一方面,电平中断特性还可以利用RB口的软件控制弱上拉特性组成一个矩阵键盘,并用按键唤醒CPU,这对于那些以电池供电的系统特别有用。

另一类是外围接口中断,包括定时器TMR1溢出中断、TMR溢出或匹配中断、同步串行口中断、异步串行口中断、并行从动口中断和CCP(Capture/Compare/PWM)中断等,而带A/D功能的PIC16C7X系列微处理器还有A/D转换完成中断。

PIC单片机实验5-中断的使用

PIC单片机实验5-中断的使用
姓 吴东铃 名: 学 物 理 与光 电电 信息 科技 院 :学院 实 验 目 的 实 验 环 境 内 容 与 步 骤 过 程 分 析
学 班Leabharlann 号 级:106032008176 :08 电信四班
学会 RB 中断的使用,掌握中断处理程序的编程方法
MPLAB IDE v8.33,PIC 实验板
1 2 3 4
根据题目要求画出相应的流程图,见过程分析图例 根据流程图写出程序,并进行软件调试 将调试好的程序下载到 PIC 实验板中进行硬件调试 按键按下,观察 LED 灯的亮灭情况
GOTO LOOP1 ;回到 LOOP1 RETURN ;返回调用程序 ;************************************************************************* END ;程序结束 ;**********************************************************************88
MOVLW 0DH MOVWF 20H LOOP1 MOVLW 0FFH MOVWF 21H LOOP2 DECFSZ 21H GOTO LOOP2 DECFSZ 20H 间跳
;送立即数 0D 到 W 寄存器 ;将 W 寄存器内容的值送到 20H 寄存器 ;移立即数 0FF 到 W 寄存器 ;将 W 寄存器的内容送到 21h 单元 ;21h 单元的内容减一,是否为 0,为 0 则间跳。 ;否,回到 LOOP2 ;20h 单元的内容自减一,检测是否为 0,为 0 则
-------------------------以下内容为教师填写-------------------------教师评阅:
成绩:

PIC单片机中断系统详细汇总

PIC单片机中断系统详细汇总
详细描述
随着物联网、人工智能等技术的发展,中断系统与其他系 统的融合成为未来的发展方向。
在物联网和人工智能应用中,设备需要实时响应各种事件 ,如传感器数据变化、网络数据包到达等。因此,将中断 系统与操作系统、网络协议栈等其他系统进行融合,可以 实现更高效的事件处理和资源调度,提高系统的实时性和 可靠性。
串行通信中断的配置
需要设置串行通信的波特率、数据位、停止位、奇偶 校验等参数,以及中断触发方式。
串行通信中断的应用
在RS-232、RS-485、SPI等串行通信协议中广泛应 用。
外部事件中断
外部事件中断
01
用于实现外部事件触发中断,例如按键按下、传感器触发等。
外部事件中断的配置
02
需要设置外部事件的检测方式、触发条件以及中断处理程序。
中断的作用:提高CPU的效率,实现对外部事件的实时响应 和处理。
PIC单片机的中断源
外中断
由外部硬件设备产生的中断,例如定 时器溢出、串口接收数据等。
内中断
由单片机内部硬件产生的中断,例如 比较器匹配、捕获比较器等。
中断优先级和向量
中断优先级
用于标识不同中断的优先级,优先级高的中断会优先得到处理。
中断处理程序执行
一旦PIC单片机响应中断,它会跳转 到相应的中断向量表地址,执行中断 处理程序。
中断返回和清除
中断返回
中断处理程序执行完毕后,PIC单片机会自动返回到被中断的程序继续执行。
中断清除
某些中断源在响应后会自行清除中断标志位,而有些则需要手动清除。
03
PIC单片机中断系统的应用
定时器中断
中断处理程序应遵循一定的编写规范,以确 保程序正确、稳定地运行。例如,应避免在 中断处理程序中进行耗时的操作,以减小对 系统性能的影响。

PIC单片机RB口中断程序设计

PIC单片机RB口中断程序设计

2 引ISB寄存器,使RB7~RB4相关的引脚处于输入状态;
◇如果需要弱上拉,通过OPTION_REG的第7位设置;
◇RBIF=O;
◇RBIE=1;
◇GIF=1。
响应状态变化后的中断服务程序。
bit SYSTime;
#defineTimeEnable()SYSTime=0,if(SYSlms){SYSTime=l;SYSlms=0;)
可以把TimeEnable()放到主程序死循环的任何地方,每当程序执行这个宏,SYSTime就会清零,这就是标志位的自我消失.如果在定时器时间基准标志位SYSlms已经置位的话,SYSTime就会置1,这样别的程序就可以利用这个时间消息了,这就是消息的自我发布。下面就是利用这个时间消息来进行按键延时去抖的,首先看一下按键扫描子程序;
首先,在定时器中断里设置一个lms的时间基准标志位“SYSlms”,每到lms,“SYSlms”便置位。程序如下:
unsigned char count;
if((ToIE&TOIF)==1){ //定时器中断
TMRO+=0x09; //每250μs中断一次
if(count==4){
if(RB4==0){ //RB4上的按钮接地
key=1; //按键标志位置位
}
RBIF=0; //清除引脚中断标志位
}
其中,if(RB4==0)语句相当于读取了PORTB端口数据寄存器,取消了状态变化的硬件信号。
下面详细介绍怎么样进行按键去抖。
void seaakey()
{
unsigned char KeyTime,KeyTask;//定义任务时间参数、

pic 中断程序实例

pic 中断程序实例

pic 中断程序实例
下面是一个简单的中断程序实例:
#include <avr/io.h>
#include <avr/interrupt.h>
volatile int count = 0;
ISR(TIMER0_COMPA_vect) 定时器0比较匹配中断
{
count++;
}
int main(void)
{
初始化定时器0和比较匹配值
OCR0A = 255; 设置比较匹配值
TCCR0A = (1 << WGM01); CTC模式
TCCR0B = ((1 << CS00) (1 << CS02)); 分频器1024 TIMSK0 = (1 << OCIE0A); 打开比较匹配中断
sei(); 开启中断
while(1)
{
if(count > 1000) 如果计数超过1000
{
执行你想要做的操作
count = 0; 清零计数器
}
}
}
这个程序使用定时器0的比较匹配中断来计数,每次中断发生时,计数器就会加1。

在主循环中,如果计数器超过了1000,程序就会执行一些操作,并且将计数器清零。

要使这个程序工作,你需要连接一个LED或者其他的输出设备到Arduino板的一个数字引脚上,并在中断发生时将其输出高电平。

你还需要调整比较匹配值和分频器以控制中断的频率。

PIC单片机之中断程序

PIC单片机之中断程序

PIC单片机之中断程序
什么是中断程序呢?
形象的生活比喻就比如你现在这在看我的文章,突然你的朋友喊你一起去烤地瓜,这时候你就中断了看文章和朋友烤地瓜去了,烤完地瓜之后你又回来看文章。

烤地瓜这件事就好比中断程序,他中断了你看文章这件事。

在程序方面来说当CPU 在执行一个程序的时候,突然产生了中断事件CPU 就去执行中断程序了,当执行完成后CPU 又回来执行原先的程序。

中断事件
什么是中断事件,就是引起中断的事件。

对于单片机来说这些事件是多种多样的。

比如说一个按键按下,一定的时间到了,一串数据发送完毕,或接收完一个数据。

讲到中断不得不讲讲和中断相对的查询。

其实不管是按键按下还是时间到,还是数据发送完毕,这些事实上都可以用查询的方式办到。

比如你是经理如果你想知道属下任务完成了没有一种方式就是去询问属下,任务完成没有。

早上没完成,下午在问。

下午没完成第二天再问。

一直到完成为止这种方式就相当于查询的方式,另一种就是然属下完成任务好直接汇报,在下属执行任务的期间你无需去打挠下属,当下属任务完成后就第一时间向你汇报,这种方式就好像中断。

查询方式:缺点就是可能会大量浪费CPU 的时间,不断去查询。

如果事情
不多还好,可是一旦事情多了会明显感到运行速度变慢。

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

具体有哪些事件会引起中断可以看
1,中断控制寄存器INTCON。

pic单片机中断

pic单片机中断

PIC18系列的低优先级中断入口地址在0x0018地址,下面的代码是在入口地址处放置一个向量函数,这个向量函数里就是一个内嵌汇编的GOTO指令,GOTO到低优先级的中断服务函数InterruptHandlerLow。

//----------------------------低优先级中断入口-----------------------------------1#pragma code InterruptVectorLow = 0x18 //用#pragma伪指令定义一个名字叫InterruptVectorLow的段,并把这个段放到0x18地址起始的代码空间2void InterruptVectorLow (void) //低优先级中断向量函数3 {4_asm5goto InterruptHandlerLow //内嵌汇编指令6_endasm7 }8#pragma code //这里不是多余的,它是告诉连接器回到默认的代码段,如果不加的话,连接器就会傻傻地把后面的代码紧跟着上面的代码一直放下去。

而LKR文件里定义了向量区最多到0x29地址,所以如果没加此行通常会报错910#pragma interruptlow InterruptHandlerLow //这里使用interruptlow这个关键词来声明InterruptHandlerLow这个函数是低优先级中断服务函数,用了关键词后,这个函数将会由编译器自动产生基本的现场保护,并且这个函数的返回将是使用RETFIE 返回的。

111213void InterruptHandlerLow (void)14 {15/* 低优先级服务函数的代码写在这里*/16 }PIC18系列的高优先级中断入口地址在0x0008地址,下面的代码是在这个入口地址处放置一个向量函数,这个向量函数里就是一个内嵌汇编的GOTO指令,GOTO到高优先级的中断服务函数InterruptHandlerHigh 。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PIC单片机中断程序设计技巧
所有的中档系列PIC 单片机,PORTB 端口最高的4 个引脚(RB7~RB4)在设为输入模式时,当输入电平由高到低或由低到高发生变化时,可以让单片机产
生中断。

这就是通常所说的引脚状态变化中断。

在设计引脚中断程序时,有三个需要特别注意的地方。

一是,在清除P0RTB 中断标志位RBIF 之前,必须安排一条必不可少的,以PORTB 端口数据寄存
器PORTB 为源寄存器的读操作指令。

放置这一指令的目的有时并不只是为了
读取有用的数据,而是为了取消状态变化的硬件信号,以便顺利清除RBIF 标
志位,为下一次中断做好准备。

二是,由于端口PORTB 是引脚电子变化中断,即无论引脚出现上升沿还是下降沿都会产生中断请求,所以必须处理好不需要
的虚假中断。

三是,一般都利用PIC 单片机的引脚功能来检测按键,所以必须处理好按键消抖的问題。

引脚中断程序设计
在主程序里先设置有关的寄存器。

◇设置TRISB 寄存器,使RB7~RB4 相关的引脚处于输入状态;
◇如果需要弱上拉,通过OPTION_REG 的第7 位设置;
◇RBIF=O;
◇RBIE=1;
◇GIF=1。

响应状态变化后的中断服务程序。

◇检查RBIF 是否为l,为l 则是引脚变化引起的中断;
◇调用延时程序,延时20~30 ms,目的是为了按键去抖;。

相关文档
最新文档