pic单片机键盘程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

pic单片机键盘程序

作者:Admin来源:机电之家下载站录入:Admin更新时间:2008-9-30 16:53:32点击数:6

【字体:

;该pic单片机键盘程序通过PORTB的"电平变化中断"进行键盘的输入,使按下K1键时第一个数码管显示1,按下K2

;键时第一个数码管上显示2,按下K3键时第一个数码管上显示3,按下K4键时第一个数码管上显示4 ;对键盘的扫描采用中断方式

LIST P=18F458

INCLUDE "P18F458.INC"

;所用的寄存器

JIANR EQU 0X20

DEYH EQU JIANR+1

DEYL EQU JIANR+2

ORG 0X00

GOTO MAIN

ORG 0X08

GOTO INTSERVE

ORG 0X30

;************以下为码值转换表**************

CONVERT ADDWF PCL,1

RETLW 0XC0 ;0,显示段码与具体的硬件连接有关

RETLW 0XF9 ;1

RETLW 0XA4 ;2

RETLW 0XB0 ;3

RETLW 0X99 ;4

RETLW 0X92 ;5

RETLW 0X82 ;6

RETLW 0XD8 ;7

RETLW 0X80 ;8

RETLW 0X90 ;9

RETLW 0X88 ;A

RETLW 0X83 ;B

RETLW 0XC6 ;C

RETLW 0XA1 ;D

RETLW 0X86 ;E

RETLW 0X8E ;F

RETLW 0X7F ;"."

RETLW 0XBF ;"-"

RETLW 0X89 ;H

RETLW 0XFF ;DARK

RETURN

;***************初始化子程序*************** INITIAL

CLRF INTCON ;禁止总中断和外围中断

BSF INTCON,RBIE ;B口变位中断允许

BCF INTCON2,7 ;使弱上拉有效

BSF INTCON2,0 ;B口变位中断高优先级

BSF RCON,7 ;使能中断优先级

BCF TRISA,5 ;置RA5为输出方式,以输出锁存信号BCF TRISB,1

BCF TRISA,3

BCF TRISE,0

BCF TRISE,1

BSF TRISB,4 ;设置与键盘有关的各口的输入输出方式BCF TRISC,5

BCF TRISC,3 ;设置SCK与SDO为输出方式MOVLW 0XC0

MOVWF SSPSTAT ;设置SSPSTAT寄存器

MOVLW 0X30

MOVWF SSPCON1 ;设置SPI的控制方式,允许SSP方式,并在时钟下降;沿发送数据,与“74HC595当其SCLK从低到高电平

;跳变时,串行输入数据(DI)移入寄存器"的特点相对应。

MOVLW 0X01

MOVWF JIANR ;显示值寄存器赋初值

BCF PORTB,1

BCF PORTA,3

BCF PORTE,0

BCF PORTE,1 ;K1,K2,K3,K4四条列线置0,为电平变化中断的

;产生创造初始条件

MOVF PORTB,W ;读PORTB端口,建立变位中断的初始条件

; (由高到低时中断)

RETURN ;返回

;*************中断服务子程序*****************

INTSERVE NOP

BCF INTCON,RBIF ;中断标志清0

CALL KEYDELAY ;调用8ms的软件延时子程序,以消除抖动

MOVF PORTB,W ;读PORTB的值,并同时改变中断发生的条件,可屏蔽;一次按键松开时产生的无效的中断,又可以防止按键

;时间过长发生连续中断

BTFSC PORTB,4

RETFIE ;判断为干扰,则返回,并可以屏蔽一次无用的中断

CALL KEYSERVE ;调用键服务子程序,确定键值

BCF PORTB,1

BCF PORTA,3

BCF PORTE,0

BCF PORTE,1 ;送低电平至K1,K2,K3,K4,以防止键扫描时改变

;K1,K2,K3,K4的电平,从而改变中断条件

BCF INTCON,RBIF ;键扫描时可能会产生“电平变化”而使RBIF ;置1,再清除一次RBIF以求避免额外中断

MOVF JIANR,W ;把需要显示的值送给W寄存器

CALL CONVERT ;查要显示的段码

CALL DISPLAY ;调用显示子程序

RETFIE ;中断返回

;***************显示子程序******************

DISPLAY

CLRF PORTA

MOVWF SSPBUF

LOOP NOP

BTFSS PIR1,SSPIF

GOTO LOOP

NOP

BCF PIR1,SSPIF

BSF PORTA,5 ;详细程序语句请参考3. 1. 3节

RETURN

;*********键盘去抖子程序(8ms的延时)****************** KEYDELAY

MOVLW 0X0A

MOVWF DEYH

AGAIN2 MOVLW 0XFF

MOVWF DEYL

AGAIN1 DECFSZ DEYL,1

GOTO AGAIN1

DECFSZ DEYH,1

GOTO AGAIN2 ;具体程序语句参考3. 2节

RETURN

相关文档
最新文档