⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key.s43

📁 MSP430F133开发板代码包 独立按键(C) 5_1_6_1.c 扫描按键 key.s43 扫描按键(C) key.c ADC 5_1_8.s43 5_1_9_1.s43 I
💻 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 + -