中断服务程序有一个特殊的定义方法: 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 语言编写中断服务程序必须遵循高效的原则:
1. 代码尽量简短,中断服务强调的是一个“快”字。
2.避免在中断内使用函数调用。虽然PICC 允许在中断里调用其它函数,但为了解决递归调用的问题,此函数必须为中断服务独家专用。既如此,不妨把原本要写在其它函数内的代码直接写在中断服务程序中。
3.避免在中断内进行数学运算。数学运算将很有可能用到库函数和许多中间变量,就算不出现递归调用的问题,光在中断入口和出口处为了保护和恢复这些中间临时变量就需要大量的开销,严重影响中断服务的效率。
 
中档系列PIC 单片机的中断入口只有一个,因此整个程序中只能有一个中断服务函数。

PIC单片机中断服务程序相关推荐

  1. 一点点学pic单片机,如何设计pic单片机中断程序

    pic单片机使用很多,但pic单片机的学习存在一定难度.为帮助大家稳步提高对pic单片机的认识,本文将对pic单片机引脚中断程序设计技巧加以介绍.如果你正在学习pic单片机,或对本文即将讲解的内容存在 ...

  2. ioca0中断 pic单片机_关于PIC单片机的一些经验总结 -单片机-电子工程世界网

    为了给前一段时间学习PIC16F616型单片机的一个总结和方便大家的交流,我写了这篇关于PIC单片机的学习心得,都是在看了手册和编程调试后用自己的语言组织的,其中有不足或者有疑问的地方希望大家能及时的 ...

  3. ioca0中断 pic单片机_关于PIC单片机的模块和功能总结

    PIC 单片机的概述 PIC16F616 是一款 14 引脚.8 位的 CMOS 单片机.采用精简指令集,仅有 35 条指令,由于采用了数据总线和指令总线分离的哈佛总线结构,使得除少量指令不是单周期之 ...

  4. PIC单片机入门_中断系统详解

    1.中断的基本概念 当单片机正在执行程序时,出现了某些特殊状况,例如定时时间到.有键盘信号输入等,此时CPU须要暂时停止当前的程序,而转去执行处理这些事件的程序,待执行完这些特定的程序之后,再返回到原 ...

  5. 【PIC单片机】-- 中断、定时器相关知识

    文章目录 文章目录 00 写在前面 01 中断相关知识 02 定时器相关知识 03 定时器相关寄存器 04 定时器相关电路 05 定时器补充 06 结尾 00 写在前面 该系列的文章,源自于担任过PI ...

  6. ioca0中断 pic单片机_PIC单片机学习笔记

    1.前言 为了给前一段时间学习PIC16F616型单片机的一个总结和方便大家的交流,我写了这篇关于PIC单片机的学习心得,都是在看了手册和编程调试后用自己的语言组织的,其中有不足或者有疑问的地方希望大 ...

  7. PIC单片机3——外部中断

    //RB2(INT2)作为外中断 #include <p18cxxx.h>/*18F系列单片机头文件*/ void PIC18F_High_isr(void);/*中断服务函数声明*/ v ...

  8. ioca0中断 pic单片机_单片机入门知识-PIC为例程序.ppt

    PIC单片机原理及应用 内容提要 单片机概述 PIC单片机的特色 PIC单片机的程序设计 单片机概述 单片机正名为:微控制器 --MCU ,MicroController Unit 单片机概述 何为单 ...

  9. PIC单片机之中断程序

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

最新文章

  1. js技巧--转义符\的妙用(转)
  2. UVA 10479 The Hendrie Sequence
  3. 4 angular 重构 项目_vuejs angularjs 框架的一些比较(vue项目重构四)
  4. 【Android 逆向】Android 系统文件分析 ( /proc/pid 进程号对应进程目录 | oom_adj | maps | smaps | mem | task | environ )
  5. hadoop学习-海量日志分析(提取KPI指标)
  6. mysql严格模式 报错_代码一上传服务器就报错-尝试开启 MySQL 严格模式
  7. java 读utf-8 xml_〖JAVA经验〗JDom输出UTF-8的XML完美解决方法
  8. redisson MultiLock原理及分布式锁的应用
  9. pythonlive2d_Unity-Live2D资源载入
  10. android unzip file,Unzip File in Android Assets
  11. 清华MBZUAICMU牛津提出DenseCLIP,用上下文感知的提示进行语言引导密集预测!代码已开源!...
  12. 数据库oracle修改属性列,Oracle修改表结构
  13. kernel32.dll已加载但找不到入口点_关键词分析法和工具,关键词分析包括哪几个方面(已帮助1376人)...
  14. User-Agent 及其构造
  15. web前端笔试题——JS
  16. 0xc0000005 系统应用日志_关于游戏崩溃并提示0xC0000005错误的解决方案!
  17. 系统设计师之路·第二节·看山是山,看水是水——设计师的三种境界
  18. python代码变量作业_1作业python数据类型 条件循环 列表
  19. 即时聊天的一些解决方案
  20. 牛客-Mysql实战-按热度排序(前20)

热门文章

  1. U盘数据恢复软件哪款好恢复效果好
  2. HBase内置过滤器的一些总结
  3. Pointofix的下载安装及其快捷键
  4. 实现HMTL网页的全屏幕显示或模态显示 (JS代码)
  5. [学习引导]WiFi在智能家居控制领域应用
  6. 你知道腾讯极光盒子与当贝盒子有什么区别吗?
  7. 基础向:「财务对账」的秘密都在这篇 3000 字的文章里
  8. [爆笑网文]10年假球白练了!----伤心球迷致中国足球队的一封信
  9. 老猿学5G扫盲贴:中国移动网络侧CHF的功能分解说明
  10. Unity 入门笔记 - 07(完) - 菜单手机端静态类生成游戏