📄 key.s43
字号:
;此示例介绍行列式扫描键盘的程序编写方法,结果在R9
#include "msp430x13x.h"
RSEG CSTACK ; System stack
; DS 0
RSEG CODE ; Program code 的开始
Reset MOV #300H,SP
SetupWDT mov #WDTPW+WDTHOLD,&WDTCTL ; Stop WDT
MAIN CALL #KEYCODE
CALL #KEYJUDGE
JMP MAIN
KEYCODE MOV.B #0,&P5DIR
MOV.B #0FH,&P1DIR ;低4位作为扫描线行输出,高3位作为列线读入
MOV #0,R9
MOV #1,R8
KEYCODELOOP MOV.B R8,&P1OUT ;R8为扫描信号的输出
BIT.B #10H,&P1IN
JC KEYCODE1 ;测试P1.4
BIT.B #20H,&P1IN
JC KEYCODE2 ;测试P1.5
BIT.B #40H,&P1IN
JC KEYCODE3 ;测试P1.6
RLA.B R8
ADD.B #3,R9
CMP.B #12,R9 ;4根行线扫描完了吗
JNZ KEYCODELOOP
KEYCODE1 ADD #0,R9
RET
KEYCODE2 ADD #1,R9
RET
KEYCODE3 ADD #2,R9
RET
KEYJUDGE MOV.B #0FFH,&P1DIR
MOV.B #0,&P1OUT
MOV.B #0FH,&P1DIR
MOV.B #0FH,&P1OUT
BIT.B #070H,&P1IN ; 测试3根列线是否为1,是否有按健
RET ; 若有,C=1
COMMON INTVEC ; Interrupt vectors
ORG RESET_VECTOR
DW Reset
;---------------------------------------------------------------------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -