找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1713|回復(fù): 0
收起左側(cè)

設(shè)計(jì)代碼

[復(fù)制鏈接]
ID:242349 發(fā)表于 2017-10-24 11:01 | 顯示全部樓層 |閱讀模式
scan_code EQU 30H
          ORG 0000H
                  JMP start
                  ORG 0030H
start:   
          MOV P0,#0FFH ;初始化p0口,使輸出無顯示
loop:                                    ; 循環(huán)調(diào)用read—key獲取鍵盤信息,若鍵盤按下,
         CALL read_key        ; 則用R7返回鍵值信息
         CJNE R7,#0FFH,next         ; 若R7返回值不為0xff,則調(diào)用顯示函數(shù)
                  JMP loop
next:                                             ;顯示程序
          MOV A,R7
                  MOV DPTR,#disp_code
                 MOVC A,@A+DPTR
                  MOV P0,A
                  JMP loop
read_key:
          MOV scan_code,#7FH
                  MOV P1,#0FH
                  MOV A,P1
                  MOV R7,#0FFH
                 CJNE A,#0FH,wait_key   ;鍵盤按下則p1的值會(huì)改變
                  JMP end_key
wait_key:
         CALL delay_10ms        ;延時(shí)10ms,若p1口仍右鍵按下,則跳到scan—key
                  MOV A,P1
                  MOV R7,#0FFH
                  MOV R6,#4
                 CJNE A,#0FH,scan_key
                  JMP end_key
scan_key:
          MOV P1,scan_code       ;將0x7f循環(huán)右移并賦給P1
                  MOV A,P1
                 CJNE A,scan_code,get_key;p1的值改變則確定出其行數(shù)
                   RR A
                  MOV scan_code,A
                 DJNZ R6,scan_key
                  JMP end_key
get_key:
   ;       MOV P1,#0FH
        ;          MOV R1,P1
        ;         CJNE R1,#0FH,$
                  MOV R7,#4
get_key0:
          JNB ACC.0,add_r6;移位循環(huán)判斷最低位,為0則確定其列數(shù)
                   RR A
                 DJNZ R7,get_key0
                  MOV R7,#0FFH
                  JMP end_key
add_r6:
          DEC R6        ;從第0個(gè)鍵盤數(shù)起,數(shù)滿(R6-1)*4個(gè)鍵盤,再加上第R6行
                  MOV A,R6      ;的列數(shù)R7-1,便得第幾個(gè)鍵盤按下
                  MOV B,#4
                  MUL AB
                  DEC R7
                  ADD A,R7
                  MOV R7,A
end_key:
          RET
delay_10ms:
          MOV R7,#10
delay0:
          MOV R6,#0FAH
delay1:
          NOP                    ;   1us
                  NOP                        ;  1us
……………………

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表