?? ti c54xx dsp 十天速成講義 五.txt
字號:
TI C54xx DSP 十天速成講義 <五>
實驗4.2 鍵盤接口實驗
實驗板上有四個按鍵,當(dāng)有鍵按下時,會觸發(fā)DSP的INT1中斷,在INT1的中斷服務(wù)程序中讀入鍵碼,判斷哪一個鍵被按下,然后執(zhí)行相應(yīng)的操作。各鍵對應(yīng)的二進(jìn)制和十六進(jìn)制鍵碼分別為:
按鍵1: 0001B 1H
按鍵2: 0010B 2H
按鍵3: 0100B 4H
按鍵4: 1000B 8H
下面有一個小例子:
******************************************************
*keyboardTest.asm
*測試按鍵的功能,響應(yīng)按鍵中斷,讀取鍵值,
*并對不同鍵按鍵次數(shù)計數(shù)
******************************************************
.mmregs
.global CodeStart
.global INT1_ISR
.include "../DefineIO.asm"
.data
DATA_DP:
Counter1: .word 0 ;按鍵1計數(shù)器
Counter2: .word 0 ;按鍵2計數(shù)器
Counter3: .word 0 ;按鍵3計數(shù)器
Counter4: .word 0 ;按鍵4計數(shù)器
KeyValue: .space 30H*16 ;按鍵歷史緩沖區(qū)
.text
CodeStart:
.copy "../SP_DP_IPTR.asm" ;初始化SP、DP和IPTR代碼段
;初始化變量
STM #KeyValue,AR2
ST #0,Counter1
ST #0,Counter2
ST #0,Counter3
ST #0,Counter4
SSBX INTM ;關(guān)中斷
STM #00000010B,IMR ;允許INT1中斷
STM #0FFH,IFR ;清除掛起的中斷
RSBX INTM ;開中斷
wait:
B wait;
*******************************************************
*鍵盤中斷子程序
*******************************************************
INT1_ISR:
PORTR #Keyboard,*AR2 ;讀取鍵碼
ANDM #0FH,*AR2 ;Keyvalue只有低四位有效
BITF *AR2,#01H ;如果鍵碼為1,跳轉(zhuǎn)到FuncKey1
BC FuncKey1,TC
BITF *AR2,#02H ;如果鍵碼為2,跳轉(zhuǎn)到FuncKey2
BC FuncKey2,TC
BITF *AR2,#04H ;如果鍵碼為3,跳轉(zhuǎn)到FuncKey3
BC FuncKey3,TC
BITF *AR2,#08H ;如果鍵碼為4,跳轉(zhuǎn)到FuncKey4
BC FuncKey4,TC
B FuncKeyEnd ;
FuncKey1:
ADDM #1,Counter1 ;按鍵1計數(shù)器+1
B FuncKeyEnd
FuncKey2:
ADDM #1,Counter2 ;按鍵2計數(shù)器+1
B FuncKeyEnd
FuncKey3:
ADDM #1,Counter3 ;按鍵3計數(shù)器+1
B FuncKeyEnd
FuncKey4:
ADDM #1,Counter4 ;按鍵4計數(shù)器+1
B FuncKeyEnd
FuncKeyEnd:
PORTW *AR2+,Digital0 ;當(dāng)前鍵碼顯示到數(shù)碼管上
STM #0FFH,IFR ;清除掛起的中斷
RETE
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -