?? ex3-3.asm
字號:
;--------------程序信息-----------------
;文件名 : ex3-3.asm
;版本 : 1.0
;作者 :
;修改時間 :
;--------------程序說明------------------
;CHAP 3.3 掃描方式鍵盤輸入實例
;-----------常量和變量聲明---------------
KEYIN EQU P1;
;--------------預定義--------------------
ORG 0000H
LJMP START
;------------中斷入口地址分配------------
;ORG 0003H
;LJMP INT0PRG
;ORG 000BH
;LJMP INT1PRG
;ORG 0013H;
;LJMP
;ORG 0030H
START:
;--------------初始化子程序--------------
MOV SP,60H;
;--------------主程序--------------------
MAIN:
LCALL KEYBOARD;
LJMP MAIN
;----------------子程序------------------
;---------------------------------
; 行列式鍵盤掃描方式子程序部分
;---------------------------------
KEYBOARD:
MOV R0,#00H; r0寄存器保存鍵值,初始化清零
MOV KEYIN,#0FH; 所有列置高電平
MOV A,KEYIN; 讀取行值
MOV R0,A; 保存這次的行值
LCALL DEYLAY10MS; 延時去抖
MOV KEYIN,#0FH; 再讀行值
MOV A,KEYIN;
;CJNE A,R0,KEYBOARD; 比較去抖前后,相同則認為有鍵按下,否則重新讀鍵值
CJNE A,#0FH,HAVEKEY;
LJMP KEYBOARD;
HAVEKEY:
MOV KEYIN,#08H; 第一列置高電平掃描
MOV A,KEYIN; 讀出掃描的行值
CJNE A,#08H,COL1; 判斷按鍵是否在第一列
LJMP COL2; 否,則跳轉掃描下一列
COL1: MOV R1,#00H; 是,則記下列數
JMP KEYBOARDEND; 跳轉到鍵值處理部分
COL2: CJNE A,#04H,COL22; 同上,判斷按鍵是否在第二列
LJMP COL3;
COL22: MOV R1,#01H; 是,記下列數,第二列
JMP KEYBOARDEND;
COL3: CJNE A,#02H,COL33;
LJMP COL4;
COL33: MOV R1,#02H; 記下列數,第三列
JMP KEYBOARDEND;
COL4: CJNE A,#01H,COL44;
LJMP KEYBOARD;
COL44: MOV R1,#01H ;第四列
JMP KEYBOARDEND;
KEYBOARDEND: ;鍵值處理程序塊
MOV A,R0;
LCALL COLSCAN; 判斷按鍵在第幾行,R0返回行基數
MOV R0,A; R1保存列數,R0保存行基數
ADD A,R1; 則 鍵值=R1+R0
MOV R0,A;
RET;
;---------------------------------
; 行掃描方式識別子程序部分
; R0返回行增加的鍵值基數
; 具體是第一行R0<=0第三行R0<=8 第二行R0<=4第四行R0<=12
;---------------------------------
COLSCAN: MOV A,R0;
JNB ACC.4,ROW2; 判斷是否是第一行
MOV R0,#00H; 是,則R0=0保存行基數
JMP COLSCANEND; 否,則跳轉判斷下一行
ROW2: JNB ACC.5,ROW3;
MOV R0,#04H;
JMP COLSCANEND;
ROW3: JNB ACC.6,ROW4;
MOV R0,#08H;
JMP COLSCANEND;
ROW4: JNB ACC.7,COLSCANEND;
MOV R0,#0CH;
JMP COLSCANEND;
COLSCANEND:
RET;
;--------------中斷子程序----------------
;---------------延時子程序---------------
DEYLAY10MS: MOV R6,#40H;
DELAY0: MOV R7,#248H;
DJNZ R7,$;
DJNZ R6,DELAY0;
RET;
END
;---------------注意事項-----------------
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -