pic单片机中断服务c语言程序,PIC 中断 服务程序
中断服务程序有一个特殊的定义方法: 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 单片机的中断入口只有一个,因此整个程序中只能有一个中断服务函数。
pic单片机中断服务c语言程序,PIC 中断 服务程序相关推荐
- pic单片机配置字c语言,PIC单片机配置字说明及使用.pdf
PIC单片机配置字说明及使用 PIC 单片机器件配置字简介和使用 在PIC系列单片机里,其芯片内部大都有设置一个特殊的程序存储单元,地 址为2007 ,由单片机的用户自由配置,用来定义一些单片机功能电 ...
- 简易电子钟c语言程序,(最新整理)基于51单片机的电子钟C语言程序
<(最新整理)基于51单片机的电子钟C语言程序>由会员分享,可在线阅读,更多相关<(最新整理)基于51单片机的电子钟C语言程序(9页珍藏版)>请在人人文库网上搜索. 1.完整) ...
- AT89C51单片机流水灯c语言程序及详解(扫盲教程)
AT89C51单片机是我们学习单片机必学的一个单片机,也是单片机入门的教材,下面给大家展示一下流水灯的编写方法适合初学者 首先先在proteus画出仿真图,方便仿真程序 下面来编写程序,先来写入头函数 ...
- 51单片机的电子钟c语言程序,基于51单片机的电子钟C语言程序
基于单片机C语言的电子钟程序代码与仿真 基于51单片机的电子钟C语言程序: 程序代码 #include #include #define uchar unsigned char #define uin ...
- pic单片机解惑篇,6个pic单片机问题解疑(上)
pic单片机具备很多应用,对于pic单片机,想必大家并不陌生.往期文章中,小编对pic单片机做过诸多介绍.本文中,小编将为大家带来6个pic单片机问题,并予以解答.而在之后的pic单片机文章中,小编将 ...
- LED数码管静态显示 C语言程序,PIC单片机驱动LED数码管显示程序
;*****该程序用于驱动led数码管显示,在8个LED数码管上依次显示数字1.2.3.4.5.6.7.8******* ;****http://www.51hei.com 单片机学习网经典程序已测试 ...
- 单片机外部中断实验C语言程序,STC89C52单片机外部中断0实验
原标题:STC89C52单片机外部中断0实验 / 实现功能: 设置,然后通过点亮与P1口第一个引脚相连的D1来 显示系统进入了外部中断0 实验板型号:BS-XYD-C52 实验名称: 外部中断0测试 ...
- 单片机 中断秒表 c语言程序,51单片机c语言的秒表设计.doc
51单片机c语言的秒表设计.doc 课程设计报告 基于AT89C51单片机的秒表设计 院 系 电子信息工程学院 专 业 电子信息工程 1 姓 名 摘 要 本设计是设计一个单片机控制的多功能秒表系统. ...
- 16F877A和24C02通信汇编语言,pic单片机IIC通信读24C02程序例 16F877A 主频4M
#define _iic_h_//pic单片机IIC通信初始化函数声明 void iiccsh(void); //pic单片机IIC通信读外围设备函数声明 //功能:传送一个8位地址,返回一个8位数据 ...
- 单片机定时报警C语言程序,51单片机 定时器 中断程序 (C语言)
EA 是 中断总开关, 不管是定时器,串口还是外部中断,都需要打开 EA 才能触发中断; ET0 是 定时器0 的专用中断开关, 也就是说: 打开了EA.而不打开ET0,定时器0是无法触发 ...
最新文章
- 老榕智能建站软件_2020年,10大最佳免费建站软件
- 如何将Swift数组转换为字符串?
- VMDNS服务器未响应,vmware克隆虚拟机后进行网络配置
- php 自动测试,PHP自动化测试
- 第二阶段团队冲刺10
- java 输出流_Java中输入输出流方法总结
- [转载]建立团队沟通协作工作方式
- Spring Cloud Alibaba —— Sentinel 详细使用
- android 层叠轮播,vue手写一个卡片化层叠轮播(支持滑动,移动端连续滚动,点击)...
- 专访阿里巴巴研究员赵海平:从Facebook到阿里巴巴
- (十)损失函数与反向传播
- Android辅助功能之自动安装apk
- python上市公司有哪些_python调用tushare获取A股上市公司基础信息
- [转]CreateDIBitmap与CreateDIBSection
- C语言实现一维信号小波阙值去噪
- 基于微信小程序的签到系统设计与实现-计算机毕业设计源码+LW文档
- 调用网易云二维码登录API,实现微信小程序登录
- ‘step’的调用中是否存在不正确的参数数据类型或缺少参数
- dell r730服务器系统安装后,无法进入系统
- 广西计算机对口升学学校有哪些,广西职高对口升学有哪些专业