PIC中断不同型号的不同写法

发布者:水手谷水手最新更新时间:2018-08-12 来源: eefocus关键字:PIC  中断 手机看文章 扫描二维码
随时随地手机看文章

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


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


void low_isr(void);

void high_isr(void); 

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

#pragma code low_vector=0x18//低优先级中断入口

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;

}


4.说dsPIC30系列(XC16编译器下):


dsPIC30系列,对于每个中断源,用户可分配的中断优先级位(IP<2:0>) ,位于 IPCx 寄存器中每个半字节的最低 3位中。每个半字节的 bit 3 未使用,读为 0。这些位定义了用户分配给特定中断的优先级。用户可分配的优先级为从 0 到 7,0是最低优先级,7是最高优先级。 

下面是一个定时器的例子:


void time1_init(void)

{

    T1CON=0;

    TMR1=0;

    PR1=(Fcy/256);

    T1CON=0x8030;

    IPC0bits.T1IP=3;//这里定义了优先级 为3

    IFS0bits.T1IF=0;

    IEC0bits.T1IE=1;


}


void __attribute__((interrupt, auto_psv)) _T1Interrupt(void)

{

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

   IFS0bits.T1IF=0;

   //LED_OVER=~LED_OVER;

}


关键字:PIC  中断 引用地址:PIC中断不同型号的不同写法

上一篇:PIC24串口发送和接收程序
下一篇:PIC单片机-AD转换

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

PIC12C508单片机控制灯光源程序
;P IC 12C508 单片机 控制灯光源程序 ;以上程序使用PIC12C508 单片机 ,内部4M Hz 时钟,4脚输入50HZ脉冲信号,7,6,3脚(GP0,GP1,GP4端口)为输出口。其中渐变部分是让灯慢慢的变亮(或灭)。不知道以上程序有没错误,有错误之处请大家多多给意见。谢谢 ;程序如下: GPI0 EQU 6 COUNT1 EQU 11 COUNT2 EQU 12 COUNT3 EQU 13 COUNT4 EQU 14 COUNT5 EQU 15 POINTER EQU 16 POINTER1 EQU 17 ORG 00H MOVLW 07H ;设定时钟参数1:256 分频 OPTION MOVL
[单片机]
JDM PIC 编程器的制作
rd09朋友提供了FENG3对JDM PIC 编程器改进版的制作方法,我照做了一个,觉得这是一款性价比非常高的烧写器,为让大家在制作过程中少走弯路,尽快品尝到成功的喜悦,特撰此文共享。 JDM PIC 编程器最初的设计是一个奇特的创新,它非常灵活地运用了三极管及串口的工作原理,在无外部电源供应的情况下实现了VDD+5V、VPP+ 13V电源供应和时钟、数据的收发。而且串口的使用也不拘泥于其端口引脚的原定义,令人不得不佩服设计者的智慧。当初原设计时作者应该写了一个DOS下的驱动,而后来IC-PROG对其的支持使其在WINDOWS下面发扬光大。鉴于现在JDM被推荐和受欢迎的程度,我们实在应该感谢Jens Dyekjar Madse
[单片机]
JDM <font color='red'>PIC</font> 编程器的制作
STM32 IIC 详解 之 stm32 IIC 从机模式(中断方式收发数据)
1、IIC简介 第二节代码会用到该部分内容,对于IIC来说,从机是不能主动发送数据的,开始条件都是由主机生成。 1.1、主机发送数据流程 1) 主机在检测到总线为“空闲状态”(即 SDA、SCL 线均为高电平)时,发送一个启动信号“S”,开始一次通信的开始 2) 主机接着发送一个命令字节。该字节由 7 位的外围器件地址和 1 位读写控制位 R/W组成(此时 R/W=0) 3) 相对应的从机收到命令字节后向主机回馈应答信号 ACK(ACK=0) 4) 主机收到从机的应答信号后开始发送第一个字节的数据 5) 从机收到数据后返回一个应答信号 ACK 6) 主机收到应答信号后再发送下一个数据字节 7) 当主机发送
[单片机]
STM32 NVIC 中断优先级管理
CM3 内核支持 256 个中断,其中包含了 16 个内核中断和 240 个外部中断,并且具有 256级的可编程中断设置。但 STM32 并没有使用 CM3 内核的全部东西,而是只用了它的一部分。STM32 有 84 个中断,包括 16 个内核中断和 68 个可屏蔽中断,具有 16 级可编程的中断优先级。而我们常用的就是这 68 个可屏蔽中断,但是 STM32 的 68 个可屏蔽中断,在 STM32F103 系列上面,又只有 60 个(在 107 系列才有 68 个)。 在 MDK 内,与 NVIC 相关的寄存器,MDK 为其定义了如下的结构体:   typedef struct   {   vu32 ISER ;  
[单片机]
STM32 NVIC <font color='red'>中断</font>优先级管理
PIC单片机实现的IC卡读写器
摘要:详细介绍PIC单片机使用SPI方式与IC卡进行数据传输的原理和电路设计,以及使用USART方式与PC机进行串行异步通信的工作原理;介绍PIC单片机听SPI方式和USART方式的设置方法。 关键词:PIC单片机 IC卡读写器 SPI方式 USART方式 引言 本设计的主要目的是介绍IC卡的数据存储技术和IC卡的数据通信,因而使用存储器卡。由于本设计中既可与IC卡进行串行同步通信,又要与上位机进行中行异步通信,因而需要选择一种同时具有这两种通信方式的单片机。因为PIC16F877不仅具有本设计所需要的两种通信方式,而且还具有运行速度快、低功耗、价格低等优点,所以选择PIC16F877单片机作为本设计的单片机。 图1是本
[单片机]
安防监控调测仪的中断点检测功能设计
引言   调像仪又称安防监控调测仪,是一款用于对监控系统进行测试的仪器。在监控项目现场施工及维护过程中,经常需要对摄像设备的姿态、通信线路、电源等进行测试,使用该款仪器可减少日常工作量,提高工作效率。   在现场的安装及维护过程中,经常出现同轴线缆断路的现象,如外力拉断、老鼠咬断等,导致图像无法传输。而线缆多是隐藏在天花板内、地下、墙壁管线内等不容易检测的地方,这就对仪器提出增加断线检测功能的需求。通过在线缆的一端测试,可直接测量出线缆的长度(即断点的位置),从而帮助施工人员快速确认故障位置,及时维修。 1 检测原理   根据TDR理论,在同轴线缆的一端发送低压脉冲,当终端负载阻抗与线缆特征阻抗相等时,发射脉冲被负载完全吸
[安防电子]
安防监控调测仪的<font color='red'>中断</font>点检测功能设计
选择PIC单片机存储体0或1的方法
PIC单片机中级产品PIC16C6X的数据存储器通常分为两个存储体,即存储体0(Bank0)和存储体1(Bank1)。每个存储体都是由专用寄存器和通用寄存器两部分组成的。两个存储体中的一些寄存器单元实际上是同一个寄存器单元,却又具备有不同的地址。例如本版介绍的PIC16F84的状态寄存器STATUS-Reg的两个地址是03H和83H。又如通用寄存器也是如此。   不同型号的PIC单片机,其数据存储器的组成(即功能)是不完全相同的,所以设计人员一旦选用了某个PIC单片机的型号后,常要查找该单片机的数据存储器资料,以便编程用。   笔者以PIC16F84在MPLAB集成开发软件的环境下编写的源程序中,有关RB口(RB7、RB6…RB0
[单片机]
关于PIC单片机的一些经验总结
为了给前一段时间学习PIC16F616型单片机的一个总结和方便大家的交流,我写了这篇关于PIC单片机的学习心得,都是在看了手册和编程调试后用自己的语言组织的,其中有不足或者有疑问的地方希望大家能及时的给予纠正和批评,提出宝贵的意见. 2.PIC单片机的概述 PIC16F616是一款14引脚、8位的CMOS单片机.采用精简指令集,仅有35条指令,由于采用了数据总线和指令总线分离的哈佛总线结构,使得除少量指令不是单周期之外,大部分的指令都是单周期指令.这样有利于提高单片机的运行速度和执行效率. PIC16F616这款单片机供电电压可以在2V到5.5V之间,内部集成了一个RC振荡器,频率可以配置成8MHZ或者4MHZ,也可以用外部
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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