少走弯路,PIC单片机中断总结

发布者:Tiger8最新更新时间:2018-11-19 来源: eefocus关键字:PIC单片机  中断总结 手机看文章 扫描二维码
随时随地手机看文章

PIC单片机有多个中断源,16系列只有一个中断入口,18系列有两个中断入口,不同编译器下书写格式又不大一样。网上资源千篇一律,也不够系统,只是简单的罗列程序,代码生存的环境不一样也少有说明。在此做个简单的总结,因为又走了弯路...


1.先说18系列(MCC18编译器下):


MPLAB C18不自动把中断服务程序放在中端向量处。通常将GOTO指令放在中断向量处,从而把控制权转交给相应中断服务程序。


void low_isr(void);


void high_isr(void);


*****************************低级中断入口及服务子程序************************************/


#pragma code low_vector=0x18//低优先级中断入口,转自21ic基础知识


void interrupt_at_low_vector(void)


{


_asm GOTO low_isr _endasm


}


#pragma interrupt low_isr


#pragma code


void low_isr(void)


{


//低优先级中断服务函数写在这里


}


*****************************高级中断入口及服务子程序************************************/


#pragma code high_vecotr=0x08//高优先级中断入口


void interrupt_at_high_vector(void)


{


_asm GOTO high_isr _endasm


}


#pragma code


#pragma interrupt high_isr


void high_isr(void)


{


//高优先级中断服务函数写在这里


}


2.再说18系列(PICC18编译器下):


//void PIC18F_High_isr(void);


//void PIC18F_Low_isr(void);



*****************************低级中断服务子程序************************************/


#pragma interrupt lowlow_priority PIC18F_Low_isr


void PIC18F_Low_isr (void)


{


//低优先级中断服务函数写在这里


}


*****************************高级中断服务子程序************************************/


#pragma interrupt PIC18F_High_isr


void PIC18F_High_isr (void)


{


//高优先级中断服务函数写在这里


}


3.三说16系列(PICC编译器下)(只有一个中断入口,无所谓高了就):


void interrupt isr (void)


{


//中断服务函数写在这里


}


void init_interrupt()


{


GIE=0;


PEIE=1;


IPEN=1;


//TMR1IE=1;


//TMR1IF=0;


//TMR1IP=0;


//TMR1L=61;


//T1CON=0xC7;//set up timer0 - 8bit -prescaler


//TMR0IE=1;


//TMR0IF=0;


//TMR0IP=0;


//TMR0L=61;


//T0CON=0xC7;//set up timer0 - 8bit -prescaler 1:256


GIE=1;


}


关键字:PIC单片机  中断总结 引用地址:少走弯路,PIC单片机中断总结

上一篇:PIC单片机PIC18F26K80中断优先级图
下一篇:PIC单片机之PWM原理

推荐阅读最新更新时间:2024-03-16 16:17

PIC单片机gpio配置与使用步骤
配置步骤如下: 第一步:首先配置ANSELx寄存器,将IO口定义为数字IO,还是模拟输入IO 第二步:配置TRISx, 将IO口定义为输入,还是输出 第三步:若定义IO口为输入,要得到IO端口的实际电平,则直接读取PORTx寄存器,若将IO口定义为输出,则通过写LATx来达到对IO口置高低电平操作。 注意:若直接写PORTx寄存器,实际上会写入到LATx中,所以一般不写入PORTx寄存器。若直接读取LATx寄存器,读取到的是锁存在GPIO Latch中的数据,而不是真正的IO端口数据,所以一般不读取LATx寄存器。 当某个引脚配置成模拟IO时候,必须将其相应的TRISx配置成输入,这样才能读取到引脚上外部电压
[单片机]
<font color='red'>PIC单片机</font>gpio配置与使用步骤
PIC单片机之I2C通信-主-从模式
主模式: 我们今天来讲I2C通信。那I2C通信的特点是什么能。我们一般使用的串口 (半双工异步串行通信)与I2C 有什么区别呢。 串口(半双工异步串行通信):就是好像朋友在对话。我可以主动和你讲话,你也可以主动和我讲话。 I2C:就好像上下级对话。一个领导面对一个或者多个员工。只有领导主动说话的份儿,下面的员工不能主动说话。只有领导问了,员工才能答。 I2C通信 I2C通信只需要两个引脚 一个数据线,一个时钟线。 数据线顾名思义就是用来传递数据的。时钟线是来决定数据传输的速度。当时钟线为高电平时,数据线上的数据才会被认为是有效的。 数据线的 数据有四种状态 : 高电平,低电平,下降沿(高电平变低电平),上
[单片机]
<font color='red'>PIC单片机</font>之I2C通信-主-从模式
PIC单片机编程小技巧
在pic单片机编程当中,会遇到这个问题,程序已经没有问题,也烧录成功了,硬件也上电了,但是为什么什么反应也没有呢? 后来我发现是我的configuration bits没有配置好,以下是我总结出来,如何让PIC正常工作的所需作的检查,前提是代码没有问题。 1、选择好芯片; 2、设置好Configuration Bits; 3、系统上电; 针对Configuration Bits;我在pic16f873a的设置如下: 当然不同芯片设置不同,具体参见各个cpu的数据手册了。 在系统启动后,比如振动器起振了,系统还是不如所愿,那么就检查一下代码的逻辑正确与否,当然也不能排除硬件上的问题,软硬结合才能找到问题的所在。
[单片机]
<font color='red'>PIC单片机</font>编程小技巧
基于PIC单片机设计的热水控制器
   引言   当前市场上的热水控制器基本上采用双金属片温控,控温精度低、可靠性差、功能单一。随着微电子技术的发展,单片微处理器功能日益增强,价格低廉,在各方面得到广泛应用。在热水控制器中应用单片机,具有设计简单、可靠性高、功能易扩展等优点。   热水控制器主要实现对水温的控制,并满足不同用户的个性需求。因此一个较完善的控制器应具有以下功能:   水温的测量与显示;   水量的测量与显示;   用户设定功能(如水温设定,定时设定等);   对电加热管的控制功能;   一些功能键(如定时自动加水,恒温控制,手动加水,手动加热等)。   安全措施(漏电检测,安全失效保护,限温保护等)。
[单片机]
基于<font color='red'>PIC单片机</font>设计的热水控制器
如何设计一个以PIC单片机为核心的医用呼叫对讲系统
医用呼叫系统是病员需要获得护理或诊断时发出请求的呼叫工具,可将病员的请求快速传达给值班医生或护士,是提高医院护理水平的必需设备之一。它作为病员与护士及医生之间联系的桥梁,正日益显现出其实用性和优越性。它在提升医院的综合水平,提高服务质量和服务效率,解决因陪护引起的医患矛盾等方面扮演了相当重要的角色。早期的医用呼叫系统大多采用集中式结构,各个病房单独通过信号电缆和护士室相连,此类系统具有成本高、安装调试困难、故障率较高等缺点。 本文介绍了一种新型的呼叫系统,主机与病房分机均采用PIC系列单片机实现,主机和分机之间不采用计算机通信口连接,而是采用电源载波技术,通过主机向各分机提供的电源线实现数据通信和语音通信。整个系统安装简单、维
[单片机]
如何设计一个以<font color='red'>PIC单片机</font>为核心的医用呼叫对讲系统
PIC单片机该怎么加密
见过很多初学者对PIC16系列单片机的ID码的读和写犯迷糊。说实话,这方面的资料也不怎么全。有些教材可能会涉及ID区域的介绍,可是往往是一代而过。这对初学者来说是比较容易犯错的地方。今天有空,对相关的问题作了一些整理,分享给大家。可能有些地方说的不够妥当,欢迎大家多多探讨。 1.什么是ID区域? ID区域是独立于EEPROM,FLASH,RAM的区域。程序设计人员可以利用该区域存放软件的版本号,编写日期,烧录日期,产品标识等信息。不过该区域很小PIC16系列只能存放4个字节。 2.ID码怎么烧录到ID区域里面去? 可以利用PICC自带的宏命令IDLOC(X)来实现。具体操作如下: ........
[单片机]
STM32入门编程总结4 (中断+串口)
系统异常中断与外部中断统称为中断,复位中断的优先级最高, NVIC(NestedVectored Interrupt Controller)嵌套向量中断控制器,调整各个中断的优先级,中断优先级 =抢占优先级(1-4bit)+子优先级(0、1)如果两个中断的抢占优先级与子优先级参数一致,则按照中断向量表里的顺序区分优先级。GPIO的中断,EXTI(External interrupt/event controller)外部中断/事件(event)控制器,外部中断为用户自定义中断内容(用户编写程序发生中断后要干啥事儿),外部事件为具体对应外设自动执行,EXTI 0-15总共16个,GPIO A-G当中的pin尾数与EXTI尾数对应
[单片机]
STM32入门编程<font color='red'>总结</font>4 (<font color='red'>中断</font>+串口)
PIC单片机端口RB中断的程序设计
在本例中采用了模块化的编程方法,程序的规划、编写、拼装、调试、修改、   程序流程如图1~图7所示。   图1 主程序流程   图2 中断服务子程序流程   图3 低发音子程序流程   图4 高发音子程序流程   图5 高声1s子程序流程   图6 3声发音子程序流程   图7 延时1s子程序流程   程序的模块化设计是较常用的编程方式,这可以给阅读和交流带来便利。   (1)定义端口及寄存器地址。   (2)定义复位向量和中断向量。   (3)主程序。   (4)INT中断处理函数。   (5)R13中断处理函数。   (6)低音调发声子
[单片机]
<font color='red'>PIC单片机</font>端口RB<font color='red'>中断</font>的程序设计
热门资源推荐
热门放大器推荐
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved