- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PIC单片机引脚中断程序的设计技巧
PIC单片机引脚中断程序的设计技巧
? 所有的中档系列 PIC 单片机,PORTB 端口最高的4个引脚(RB7~RB4)在设为输入模式时,当输入电平由高到低或由低到高发生变化时,可以让单片机产生中断。这就是通常所说的引脚状态变化中断。??? 在设计引脚中断程序时,有三个需要特别注意的地方。一是,在清除P0RTB中断标志位RBIF之前,必须安排一条必不可少的,以PORTB端口数据 寄存器PORTB为源寄存器的读操作指令。放置这一指令的目的有时并不只是为了读取有用的数据,而是为了取消状态变化的 硬件 信号,以便顺利清除RBIF标志位,为下一次中断做好准备。二是,由于端口PORTB是引脚 电子变化中断,即无论引脚出现上升沿还是下降沿都会产生中断请求,所以必须处理好不需要的虚假中断。三是,一般都利用PIC单片机的引脚功能来 检测按键,所以必须处理好按键消抖的问題。
2 引脚中断程序设计??? 在主程序里先设置有关的寄存器。??? ◇设置TRISB寄存器,使RB7~RB4相关的引脚处于输入状态;??? ◇如果需要弱上拉,通过OP TION_REG的第7位设置;??? ◇RBIF=O;??? ◇RBIE=1;??? ◇GIF=1。??? 响应状态变化后的中断服务程序。??? ◇检查RBIF是否为l,为l则是引脚变化引起的中断;??? ◇调用延时程序,延时20~30 ms,目的是为了按键去抖;??? ◇判断是引脚出现上升沿还是下降沿引起的中断;??? ◇调用按键处理程序;??? ◇读PORTB口的值,取消状态变化的硬件信号;??? ◇清除RBIF标志。??? 笔者认为上面程序设计最大的问题是在中断程序里调用延时程序。大家知道,中档PIC单片机只有8层深度的硬件堆栈,在中断里调用于程序出现极易堆栈溢出的情况。另外,PIC单片机中断程序人口只有一个,在响应中断的请求时,PIC单片机就会自动把全局中断的使能位(INTCON的第7位GIF)清除,这样其他中断就暂时不能被响应(此时,如果别的中断发出的中断请求,标志位将一直保留着),直到这个中断程序退出后才会得到响应。这就要求我们设计中断程序的时候必须尽量短,避免调用子程序,更不要在中断里进行复杂的运算。??? 下面给出笔者设计程序时的思路。??? 当引脚状态变化引起中断时,在中断子程序里首先判断引起中断的原因是不是我们需要的变化引起的中断。如果是,不要在这里延时,而是设置一个标志位,接着清除中断标志,退出中断。中断程序如下:else if((RBIERBlF)==1){ //如果引脚变化引起中断??? if(RB4==0){ //RB4上的按钮接地??? key=1; //按键标志位置位??? }??? RBIF=0; //清除引脚中断标志位??? }??? 其中,if(RB4==0)语句相当于读取了PORTB端口数据寄存器,取消了状态变化的硬件信号。??? 下面详细介绍怎么样进行按键去抖。??? 首先,在 定时器中断里设置一个lms的时间基准标志位“SYSlms”,每到lms,“SYSlms”便置位。程序如下:??? unsigned char count;??? if((ToIETOIF)==1){ //定时器中断??? TMRO+=0x09; //每250μs中断一次??? if(count==4){??? count=0;??? SYSlms=l; //系统时间标志??? couot++;??? }????
??? T0IF=0; //清除 时钟中断标志位??? }??? 有了这个时间基准,便可以在主程序里进行按键去抖处理了。为了更好地利用这个时间基准,定义一个消息标志SYSTime,笔者把它称作时间消息。为了让这个消息有自我发布和自我消失的功能.定义了如下一个宏:??? bit SYSTime;??? #defincTimeEnahle()SYSTime=0,if(SYSlms){SYSTime=l;SYSlms=0;)??? 可以把TimeEnable()放到主程序死循环的任何地方,每当程序执行这个宏,SYSTime就会清零,这就是标志位的自我消失.如果在定时器时间基准标志位SYSlms已经置位的话,SYSTime就会置1,这样别的程序就可以利用这个时间消息了,这就是消息的自我发布。下面就是利用这个时间消息来进行按键延时去抖的,首先看一下按键扫描子程序;??? void seaakey(){??? unsigned char KeyTime,KeyTask;//定义任务时间参数、??? //任务参
您可能关注的文档
- 基于STM32单片机的ADC与DMA配置的介绍与使用.doc
- 最好的辅助数据,MAP图对调速电机有什么作用?.doc
- 亚马逊卖家是否需要购买保险?.doc
- 二氧化碳培养箱的使用流程.doc
- 跨境卖家产品主推关键词选择的5个策略.doc
- wish选品及标签关键词查询工具大全.doc
- 电脑计量粉末包装机的基本清洁维护.doc
- 亚马逊卖家广告投放的六个步骤.doc
- ADC采样时钟的计算方法解析.doc
- 亚马逊卖家应对产品销量下降的正确方法.doc
- 辽宁省沈阳市第一二六中学2022-2023学年八年级下学期期中考试数学试题(含答案).pdf
- 16.1《赤壁赋》课件(共29张PPT) 2024-2025学年统编版高中语文必修上册.pptx
- (2024)新课标一年级语文上册2 江南 第2课时 课件(共29张PPT).pptx
- 3开满鲜花的小路 课件(共23张PPT).pptx
- 2024年秋一年级上册第一单元 书写提示 日积月累 课件(共18张ppt).pptx
- (2024)新课标一年级语文上册 我上学了 第1课时 我是中国人 课件(共32张PPT).pptx
- (2024)新课标一年级语文上册 我上学了 第3课时 我是小学生 课件(共25张PPT).pptx
- 江苏省常州市金坛区直溪中学2023-2024学年九年级上学期期末专项训练一英语试卷(无答案).pdf
- 6-2《再别康桥》课件(共35张PPT) 统编版高中语文选择性必修下册.pptx
- 市场形态周报.docx
最近下载
- (高清版)B 15982-2012 医院消毒卫生标准.pdf VIP
- 医院护理人员绩效考核评价制度.doc VIP
- JTG E 20-2011公路工程沥青及沥青混合料试验规程释义手册_(高清-无水印).pdf
- 初中英语新外研版七年级上册Unit 1 A new start课文讲解(2024秋).doc
- 可爱的四川 主题一:自然之美 第1课 享誉世界的超级明星-国宝大熊猫 教案.doc
- 机械安全培训PPT课件.ppt
- 昌吉市新联煤矿煤矿施工组织设计修改版.doc VIP
- 【精品课件】 苏科版信息技术五年级全一册 第3课 火柴人跳舞.ppt VIP
- ASME-B1.3-2007-个人中文翻译(仅供参考).docx VIP
- 《全面质量管理》习题集.docx VIP
文档评论(0)