键盘扫描汇编程序

嵌入式操作系统

58人已加入

描述

PIC键盘扫描汇编程序

;;...............................

键盘扫描子程序---16键,D口低四位输出,高四位输入
;...............................
JIANPAN MOVLW 00H
   MOVWF PORTD
   MOVLW 0F0H
   ANDWF PORTD,W
   SUBLW 0F0H
   BTFSC STATUS,Z;判断D口高四位是否全为“1”
   RETURN           ;是,无键输入,返回
   CALL DELAY10MS;否,有键输入,延时20ms
   CALL DELAY10MS
   CALL DELAY10MS
   MOVLW 00H       ;再判断一次
   MOVWF PORTD
   MOVLW 0F0H
   ANDWF PORTD,W
   SUBLW 0F0H
   BTFSC STATUS,Z;判断D口高四位是否全为“1”
   RETURN           ;是虚假输入,返回
   MOVLW 0FEH    ;确定有键输入,逐行判断,首先RD0=0
   MOVWF PORTD
   BTFSS PORTD,4   ;判键“0”
   GOTO JIAN0
   BTFSS PORTD,5   ;判键“1”
   GOTO JIAN1
   BTFSS PORTD,6   ;判键“2”
   GOTO JIAN2
   BTFSS PORTD,7   ;判键“3”
   GOTO JIAN3
   MOVLW 0FDH    ;确定有键输入,逐行判断,首先RD1=0
   MOVWF PORTD
   BTFSS PORTD,4   ;判键“4”
   GOTO JIAN4
   BTFSS PORTD,5   ;判键“5”
   GOTO JIAN5
   BTFSS PORTD,6   ;判键“6”
   GOTO JIAN6
   BTFSS PORTD,7   ;判键“7”
   GOTO JIAN7
   MOVLW 0FBH    ;确定有键输入,逐行判断,首先RD0=2
   MOVWF PORTD
   BTFSS PORTD,4   ;判键“8”
   GOTO JIAN8
   BTFSS PORTD,5   ;判键“9”
   GOTO JIAN9
   BTFSS PORTD,6   ;判键“A”
   GOTO JIANA
   BTFSS PORTD,7   ;判键“B”
   GOTO JIANB
   MOVLW 0F7H    ;确定有键输入,逐行判断,首先RD0=3
   MOVWF PORTD
   BTFSS PORTD,4   ;判键“C”
   GOTO JIANC
   BTFSS PORTD,5   ;判键“D”
   GOTO JIAND
   BTFSS PORTD,6   ;判键“E”
   GOTO JIANE
   BTFSS PORTD,7   ;判键“F”
   GOTO JIANF
   RETURN
;.................
;10 ms延时子程序
;.................
DELAY10MS MOVLW 0FH
    MOVFW 20H
LP2    MOVLW 0FFH
    MOVWF 21H
LP1    DECFSZ 21H,F
    GOTO LP1
    DECFSZ 22H,F
    GOTO LP2
    RETURN
;........................
;键‘0’子程序,可自定义
;........................
JIAN0 CALL SFANG;调用键盘释放子程序
   .
   .
   .
   RETURN
;...................
;键盘释放等待子程序
;...................
SFANG MOVLW 00H
   MOVWF PORTD
   MOVLW 0F0H
   ANDWF PORTD,W
   SUBLW 0F0H
   BTFSS STATUS,Z
   GOTO SFANG;键未释放
   CALL DELAY10MS; 已释放,延时
   CALL DELAY10MS
   CALL DELAY10MS
   MOVLW 0F0H;再判断一次
   ANDWF PORTD,W
   SUBLW 0F0H
   BTFSS STATUS,Z
   GOTO SFANG;刚才为虚假释放,等待进一步判断
   RETURN

以上为所有程序代码

另外一个汇编语言源代码:

我的键盘扫描程序:


 

key equ p2
disp equ p0



;7------+--+--+--+
;6------+--+--+--+
;5------+--+--+--+
;4------+--+--+--+
;3______|  |  |  |
;2_________|  |  |
;1____________|  |
;0_______________|


      
       org 0000h
       ajmp start
       org 0100h
start: mov disp,#0
       mov dptr,#tab
loopscan:acall keyin
       acall keyoff
       mov a,r0
       movc a,@a+dptr
       mov disp,a
       ajmp loopscan

keyin:  mov key,#0fh
        mov a,key
        cjne a,#0fh,select
        sjmp keyin
select: mov a,key  
        cjne a,#0eh,next1
        ajmp row1
next1:  cjne a,#0dh,next2
        ajmp row2
next2:  cjne a,#0bh,next3
        ajmp row3
next3:  ajmp row4


row1:   mov key,#0feh
        mov a,key
        cjne a,#0feh,row1scan
        ajmp row2
row1scan:cjne a,#0eeh,row11
         mov r0,#12
         acall delay20ms
         ajmp scanend
row11:   cjne a,#0deh,row12
         mov r0,#13
         acall delay20ms
         ajmp scanend       
row12:   cjne a,#0beh,row13
         mov r0,#14
         acall delay20ms
         ajmp scanend
row13:   mov r0,#15
         acall delay20ms
         ajmp scanend
        


row2:   mov key,#0fdh
        mov a,key
        cjne a,#0fdh,row2scan
        ajmp row3
row2scan:cjne a,#0edh,row21
         acall delay20ms
         mov r0,#8
         ajmp scanend
row21:   cjne a,#0ddh,row22
         mov r0,#9
         acall delay20ms
         ajmp scanend       
row22:   cjne a,#0bdh,row23
         mov r0,#10
         acall delay20ms
         ajmp scanend
row23:   mov r0,#11
         acall delay20ms
         ajmp scanend


row3:   mov key,#0fbh
        mov a,key
        cjne a,#0fbh,row3scan
        ajmp row4
row3scan:cjne a,#0ebh,row31
         mov r0,#4
         acall delay20ms
         ajmp scanend
row31:   cjne a,#0dbh,row32
         mov r0,#5
         acall delay20ms
         ajmp scanend       
row32:   cjne a,#0bbh,row33
         mov r0,#6
         acall delay20ms
         ajmp scanend
row33:   mov r0,#7
         acall delay20ms
         ajmp scanend


row4:    mov key,#0f7h
         mov a,key
         cjne a,#0e7h,row41
         mov r0,#0
         acall delay20ms
         ajmp scanend
row41:   cjne a,#0d7h,row42
         mov r0,#1
         acall delay20ms
         ajmp scanend       
row42:   cjne a,#0b7h,row43
         mov r0,#2
         acall delay20ms
         ajmp scanend
row43:   mov r0,#3
         acall delay20ms
         ajmp scanend


scanend:ret



;判断是否松开
keyoff:  mov key,#0fh
         mov a,key
         cjne a,#0fh,keyret
         sjmp keyoff
keyret:  acall delay20ms
         ret
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;12Mhz Crystal!!!!!!!!!!!!!!!!!!!!!!!12周期单片机
delay20ms:mov r7,#250
delay20msd0:mov r6,#60
delay20msd1:djnz r6,$
            djnz r7,delay20msd0
            ret
           
tab:db 11100111b,10000100b,11010011b,11010110b,10110100b,

01110110b,01110111b,11000100b,11110111b,11110110b


db 11110101b,00110111b,01100011b,10010111b,01110011b,

01110001b,01100111b,10110101b,00100001b,10000111b
db 00100011b,00010101b,00010111b,11110001b,11110100b,10110110b


         end

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
systechillinois 2022-08-23
0 回复 举报
http://house.china.com.cn/sousou/%25CA%25D6%25BB%25FAAPP%252C%2B%25F6%25CE%25CA%25A4%25C6%25BD%25CC%25A8%25BF%25CD%25BB%25A7%25B6%25CB%25CF%25C2%25D4%25D8B2024.cN%252C%25B2%25D7%25D6%25DD%25C1%25AA%25CD%25A8_2s.htm http://house.china.com.cn/sousou/%25D4%25DA%25CF%25DF%25BF%25CD%25B7%25FE%252C%2B%25D3%25F1%25CF%25E9%25B9%25FA%25BC%25CA%25D3%25E9%25C0%25D6%25B3%25C7B2024.cN%252C%25B0%25FC%25CD%25B7%25C8%25CB%25B2%25C5%25CD%25F8_2s.htm http://house.china.com.cn/sousou/%25B9%25D9%25B7%25BD%252C%2B%25C3%25E5%25B5%25E9%25B5%25CF%25CD%25FE%25D3%25E9%25C0%25D6%25B3%25C7B2024.cN_94s.htm http://house.china.com.cn/sousou/%25B9%25D9%25B7%25BD%252C%2B%25F6%25CE%25B0%25DB%25C0%25FB%25D3%25E9%25C0%25D6%25C8%25FD%25BA%25CF%25D2%25BBB2024.cN%252C%25D3%25F1%25CF%25AA%25CE%25C0%25CA%25D3_2s.htm http://house.china.com.cn/sousou/%25C1%25AA%25CF%25B5%25B7%25BD%25CA%25BD%252C%2B%25C3%25E5%25B5%25E9%25CC%25DA%25C1%25FA%25B9%25AB%25CB%25BEB2024.cN%252C%25C9%25CC%25C7%25F0%25D2%25DF%25C7%25E9_2s.htm 收起回复
  • 相关推荐
  • 热点推荐
  • 键盘

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分