這次做的單片機 鍵盤掃描顯示匯編源碼
一、實驗目的- 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; 關所有八段管
- 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 ; 讀入鍵狀態
- 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 ; 無鍵入, 繼續顯示
- ACALL GetKey ; 讀入鍵碼
- ANL A, #0FH ; 顯示鍵碼
- MOV DPTR, #LEDMap
- MOVC A, @A+DPTR
- MOV 65H,A
- LJMP MLoop
- END
復制代碼
1 .掌握鍵盤和顯示器的接口方法和編程方法
2 .掌握鍵盤掃描和數碼管顯示器的工作原理
二、 實驗內容
利用實驗儀上的鍵盤掃描電路和顯示電路 , 做一個掃描鍵盤和數碼顯示實驗 , 把按鍵
輸入的鍵碼在六位數碼管上顯示出來。實驗程序分為三個模塊:
① 鍵輸入模塊:掃描鍵盤、讀取一次鍵盤并將鍵值存入鍵值緩沖單元。
② 顯示模塊:將顯示單元的內容在顯示器上動態顯示。
|