电平变化按键中断.doc_第1页
电平变化按键中断.doc_第2页
电平变化按键中断.doc_第3页
电平变化按键中断.doc_第4页
电平变化按键中断.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PIC实 验 报 告 -电平变化按键中断任课教师:周燕学院:信息学院班级:11级电科一、实验目的 为了方便连接键盘,PIC中档单片机的I/O端口RB4RB7具有一个特别的功能-电平变化中断功能。单片机在使能此中断后(对RBIE置位),能够在PORTD4PORTD7这四个引脚的电平发生变化时产生中断,从而使软件可以通过中断的方式管理连接在这4个引脚上的键盘。本实验通过连接到RB4和RB5的两个按键来演示按键中断功能。二、实验功能内容使用RB4和RB5的按键中断功能,实现按键识别功能.即在每次按下和RB4 相连的KEY4后仅点亮LED4, 每次按下和RB5相连的KEY5后仅点亮LED5,三、实现功能用到的硬件电路设计和电路板的链接方法将跳线将JR_RB和KEY4、KEY5短接,跳线器JP_RD和LED4、LED5短接。四、软件设计1.流程图设计中断服务程序中断入口程序保护中断现场 通过RBIE和RBIF判断是否为外部中断 调用20ms延时子程序,消除按键抖动NY主程序读入RB4和RB5的电平,取反后送入RD4和RD5设定PORTD全部为输出引脚并输出00HN通过检测RB4和RB5是否全部恢复为1来判断按键是否松开将端口B设置为输入并使能其弱上拉功能Y使PORTB的电平变化中断使能全局中断和PORTB电平变化中断位调用20ms延时子程序,消除断开抖动的影响清RBIF标志无条件循环中断出口程序恢复中断现场中断返回 2.程序设计和注释#include p16f877a.inc COUNT EQU 20H ;定义COUNT寄存器 SAVEW EQU 21H ;定义SAVEW寄存器 SAVES EQU 22H ;定义SAVES寄存器 COUNT1 EQU 23H ;定义COUNT1寄存器 COUNT2 EQU 24H ;定义COUNT2寄存器ORG 00H NOP ;空指令 GOTO MAIN ORG 0x004 MOVWF SAVEW SWAPF STATUS,W CLRF STATUS MOVWF SAVES ;保护现场 GOTO RBINT ;函数名称:main;* 函数功能:使能由端口RB产生的中断;* 使用说明:;*MAIN BCF STATUS,RP1 BSF STATUS,RP0 ;转到体1 CLRF TRISD ;将PORTD设置为输出端口 CLRF OPTION_REG ;开启内部弱上拉 MOVLW B00111111 MOVWF TRISB ;将RB0-RB5设置为输入端口 BSF INTCON,RBIE ;允许端口RB产生的中断 BCF STATUS,RP0 ;转到体0 CLRF COUNT ;COUNT清零 CLRF PORTD ;将PORTD清零 BSF INTCON,GIE ;打开全局中断 BSF INTCON,PEIE ;打开外设中断 GOTO $ ;函数名称:RBINT; 函数功能:RB端口产生中断RBINT服务函数,判断是哪个按键被按击,并点亮对应的LED。RBINT BTFSS INTCON,RBIE ;判断是否允许端口RB产生的中断 GOTO JMP ;否结束中断 BTFSS INTCON,RBIF ;判断是否为端口RB中断 GOTO JMP ;否结束中断 CALL DELAY_20ms ;是,调用延时子程序 MOVF PORTB,0 ;RB的值送到W寄存器 MOVWF COUNT ;存到COUNT寄存器 MOVLW B11001111 ;0xCF送到W寄存器,屏蔽不显示位 IORWF COUNT,1 ;和COUNT做或后存到COUNT COMF COUNT,0 ;反逻辑,COUNT取反后送到W寄存器 MOVWF PORTD ;送到RD端口显示 BTFSS PORTB,4 ;判断按键4是否松开 GOTO $-1 ;否;继续检测 BTFSS PORTB,5 ;判断按键5是否松开 GOTO $-1 ;否;继续检测 CALL DELAY_20ms ;是,调用延时子程序 BCF INTCON,RBIF ;是,清标志位JMP SWAPF SAVES,W MOVWF STATUS SWAPF SAVEW,F SWAPF SAVEW,W ;恢复现场 RETFIE;* 函数名称:DELAY_20ms;* 函数功能:延时20msDELAY_20ms MOVLW D28 ;设置外部循环次数 MOVWF COUNT1 ;LOOP3 MOVLW D237 ;设置内部循环次数 MOVWF COUNT2 ; DECFSZ COUNT2 ,1 ;内部循环变量自减1,为0则跳转 GOTO $-1 ; DECFSZ COUNT1,1 ;外部循环变量自减1,为0则跳转 GOTO LOOP3 ; RETURN ;返回主程序END 五、实验结果与分析实验结果:将程序烧入目标板后,按下按键key4后led4亮,按下key5后,led4灭,led5亮。结果分析:在debug下烧入程序,打开watch窗口,添加SFR,运行程序观察。 figure1 figure2初始化 figure3按下key4 通过figure3可以看出,在终端入口设置断点,按下key4时,PORTB,4输出高电平,led4亮,进入中断后,终端总是能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论