標題:
單片機鍵盤掃描顯示匯編源碼
[打印本頁]
作者:
趙子龍OL
時間:
2019-6-20 20:47
標題:
單片機鍵盤掃描顯示匯編源碼
這次做的單片機 鍵盤掃描顯示匯編源碼
一、實驗?zāi)康?div id="5i4dr6c" class="blockcode">
ORG 0000H
AJMP MAIN
LEDMAP:
DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H
DB 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71H
; 八段管顯示碼
Delay: MOV R6, #01H; 延時子程序
Delay1:MOV R7, #00H
Delay2:DJNZ R7, Delay2
DJNZ R6, Delay1
RET
DisplayLED:
MOV R0, #60H
MOV R1, #06H ; 共 共 6 個八段管
MOV R2, #00100000B ; 從左邊開始顯示
Loop:
MOV DPTR, #8002H
MOV A, #00H
MOVX @DPTR, A; 關(guān)所有八段管
MOV A, @R0
MOV DPTR, #8004H ; 段控制口
MOVX @DPTR, A
MOV DPTR, #8002H ; 位控制口
MOV A, R2
MOVX @DPTR,A ; 顯示一位八段管
ACALL Delay
MOV A, R2 ; 顯示下一位
RR A
MOV R2,A
INC R0
DJNZ R1, Loop
RET
TestKey:
MOV DPTR, #8002H
MOV A, #00H
MOVX @DPTR, A; 輸出線置為 0
MOV DPTR, #8001H
MOVX A, @DPTR ; 讀入鍵狀態(tài)
CPL A
ANL A, #0FH ; 高四位不用
RET
KeyTable: ; 鍵碼定義
DB 16H, 15H, 14H, 0FFH
DB 13H, 12H, 11H, 10H
DB 0DH, 0CH, 0BH, 0AH
DB 0EH, 03H, 06H, 09H
DB 0FH, 02H, 05H, 08H
DB 00H, 01H, 04H, 07H
GetKey:
MOV DPTR, #8002H
MOV R1, #00100000B
MOV R2, #06H
KLoop:
MOV A, R1 ; 找出鍵所在列
CPL A
MOV DPTR, #8002H
MOVX @DPTR, A
CPL A
RR A
MOV R1,A ; 下一列
MOV DPTR, #8001H
MOVX A, @DPTR
CPL A
ANL A, #0FH
JNZ Goon1 ; 該列有鍵入
DJNZ R2, KLoop
MOV R2, #0FFH ; 沒有鍵按下,
回 返回 0FFH
AJMP Exit
Goon1:
MOV R1,A; 值 鍵值 = 列 列 *4 + 行 行
MOV A, R2
DEC A
RL A
RL A
MOV R2, A ; R2 = (R2-1)*4
MOV A, R1 ; R1 中為讀入的行值
MOV R1, #04H
LoopC:
RRC A ; 移位找出所在行
JC Exit
INC R2 ; R2 =R2+ 行值
DJNZ R1, LoopC
Exit:
MOV A, R2 ; 取出鍵碼
MOV DPTR, #KeyTable
MOVC A, @A+DPTR
MOV R2, A
WaitRelease:
MOV DPTR, #8002H ; 等鍵釋放
CLR A
ACALL TestKey
JNZ WaitRelease
MOV A, R2
RET
MAIN:
MOV 60H, #0FFH ; 示 顯示 8.8.8.8.
MOV 61H, #0FFH
MOV 62H, #0FFH
MOV 63H, #0FFH
MOV 64H, #00H
MOV 65H, #00H
MLoop: ACALL DisplayLED ; 顯示
ACALL TestKey ; 有鍵入?
JZ MLoop ; 無鍵入, 繼續(xù)顯示
ACALL GetKey ; 讀入鍵碼
ANL A, #0FH ; 顯示鍵碼
MOV DPTR, #LEDMap
MOVC A, @A+DPTR
MOV 65H,A
LJMP MLoop
END
復(fù)制代碼
1 .掌握鍵盤和顯示器的接口方法和編程方法
2 .掌握鍵盤掃描和數(shù)碼管顯示器的工作原理
二、 實驗內(nèi)容
利用實驗儀上的鍵盤掃描電路和顯示電路 , 做一個掃描鍵盤和數(shù)碼顯示實驗 , 把按鍵
輸入的鍵碼在六位數(shù)碼管上顯示出來。實驗程序分為三個模塊:
① 鍵輸入模塊:掃描鍵盤、讀取一次鍵盤并將鍵值存入鍵值緩沖單元。
② 顯示模塊:將顯示單元的內(nèi)容在顯示器上動態(tài)顯示。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1