📄 按键测试.txt
字号:
;===================================================
; ===== Key Scan Service Routine =====
;===================================================
;S3f9488 , Fosc = 6 MHz , subFosc=32768 KHz
.include "s3c9488.reg"
;---------------------------------------------------------------
; Register Definition , Pin Configuration , Variety Definition
; Key Inputs : P3.0 , P3.5(SDAT) , P3.6(SCLK) Input mode with external pull-up resistor
; Key Outputs: P1.0 , P1.2 , P1.3
Key_Down EQU 0009H
;sKey1 EQU 0010H
;sKey2 EQU 0011H
;sKey3 EQU 0012H
;oldKeyin EQU 0013H
;Key_Flag EQU 11 ;r11
;KeyIN EQU 10 ;r10
;---------------------------------------------------------------
;Interrupt Vector Address
.ORG 0000H
VECTOR 00H, F9488_INT
; --------------------------------------------------------------
; Smart Option 003CH-003FH
.ORG 003CH
DB 0FFH
DB 0FFH
DB 7FH
DB 0FBH
;---------------------------------------------------------------
;Initialize system and peripheral
.ORG 0100H
RESET: DI
LD OSCCON, #0 ;主/次晶振启用,选主晶振
LD BTCON, #0BH ;输入频率:Fxx/128
LD WDTCON, #90H ;禁用Watchtime Dog
LD CLKCON, #18H ;时钟控制器不分频
LD SP, #0C0H ;设置堆栈首地址
LD SYM, #0
LD STPCON, #00H ;禁止STOP指令
LD P0CONH, #10101000B ;P0.7,0.6,0.5为普通输出口
LD P0PUR, #00000000B ;不使用上拉电阻
LD P1CONH, #11111111B ;取P1.7-1.4为COM0-COM3
LD P1CONL, #10011010B ;P1.1为BUZ输出,P1.3,1.2,1.0为普通输出口
LD P1PUR, #00000000B ;不使用上拉电阻
LD P2CONH, #11111111B
LD P2CONL, #11111111B ;P2作为SEG3-10
LD P3CONH, #01011010B ;P3.6,3.5普通输入,3.4,3.3上拉电阻输出
LD P3CONL, #01100101B ;使用TXD(输出)和RXD(输入),P3.0普通输入
LD P4CONH, #00011111B ;P4.6作为普通输出口
LD P4CONL, #11111111B ;P4.5-4.0作为SEG0-2,11-13
LD TACON, #00001000B ;TA,fxx/1024,关中断
LD TBCON, #11100011B ;TB未使用
;LD sKey3, #0CH
;LD sKey2, #09H
;LD sKey1, #05h ;扫描数值
;---------------------------------------------------------------
MAIN:
EI
NOP
NOP
LD Key_Down, #55H
CALL Key_Scan
NOP
NOP
JP MAIN
;--------------------------------------------------------------- 按键扫描模块
Key_Scan:
TM Key_Down, #0AAH
JR NZ,Key_ScanEND
NOP
CALL K_Scan1
NOP
CALL Delay10mS
NOP
CALL K_Scan2
Key_ScanEND:
RET
;---------------------------------------------------------------
K_Scan1:
;LD P1, sKey1
AND P1,#11110111B
NOP
NOP
TM P3, #01100001B
JP NZ, Line1
LD Key_Down, #01H ;置位有按键标志位
Line1:
;LD P1, sKey2
AND P1,#11111011B
NOP
NOP
TCM P3, #01100001B
JP NZ, Line2
LD Key_Down, #01H
Line2:
;LD P1, sKey3
AND P1,#11111110B
NOP
NOP
TCM P3, #01100001B
JP NZ, Scan1End
LD Key_Down, #01H
Scan1End:
RET
;---------------------------------------------------------------
K_Scan2:
CP Key_Down, #01H
JP NE, Scan2End
LD P0, sKey1
NOP
NOP
TM P3, #00000001B ;检测P3.0
JP Z, Key_ONOFF
TM P3, #00100000B ;检测P3.5
JP Z, Key_workMD
TM P3, #01000000B ;检测P3.6
JP Z, Key_TeInc
LD P0, sKey2
NOP
NOP
TM P3, #00000001B ;检测P3.0
JP Z, Key_TeDec
TM P3, #00100000B ;检测P3.5
JP Z, Key_TiINC
TM P3, #01000000B ;检测P3.6
JP Z, Key_TiDec
LD P0, sKey3
NOP
NOP
TM P3, #00000001B ;检测P3.0
JP Z, Key_TiMD
TM P3, #00100000B ;检测P3.5
JP Z, Key_WindSP
TM P3, #01000000B ;检测P3.6
JP Z, Key_SP
Scan2End:
LD Key_Down, #00H ;清有按键标志位
RET
;--------------------------------------------------------------- 按键处理模块
Key_ONOFF: ;点亮P4.6
LD P4, #0BFH
CALL Delay2S
LD P4, #0FFH
JP Scan2End
Key_workMD: ;点亮P0.5
LD P0, #0D8H
CALL Delay2S
LD P0, #0F8H
JP Scan2End
Key_TeInc: ;点亮P0.6
LD P0, #0B8H
CALL Delay2S
LD P0, #0F8H
JP Scan2End
Key_TeDec: ;点亮P0.7
LD P0, #78H
CALL Delay2S
LD P0, #0F8H
JP Scan2End
Key_TiINC: ;点亮P4.6+P0.5
LD P4, #0BFH
LD P0, #0D8H
CALL Delay2S
LD P4, #0FFH
LD P0, #0F8H
JP Scan2End
Key_TiDec: ;点亮P0.5+P0.6
LD P0, #98H
CALL Delay2S
LD P0, #0F8H
JP Scan2End
Key_TiMD: ;点亮P0.6+P0.7
LD P0, #38H
CALL Delay2S
LD P0, #0F8H
JP Scan2End
Key_WindSP: ;点亮P4.6+P0.5+P0.6
LD P4, #0BFH
LD P0, #98H
CALL Delay2S
LD P4, #0FFH
LD P0, #0F8H
JP Scan2End
Key_SP: ;点亮P0.5+P0.6+P0.7
LD P0, #18H
CALL Delay2S
LD P0, #0F8H
JP Scan2End
;---------------------------------------------------------------
Delay10mS: ;延时10mS
LD TADATA, #3AH
OR TACON, #01H
TaWait:
CP TACNT, #3AH
JP ULE, TaWait
AND TACON, #0FEH
RET
;---------------------------------------------------------------
Delay2S:
LD r0, #2DH ;延时2S
TaFull:
LD TADATA, #0FFH ;43.52mS
OR TACON, #01H
TFcnt:
CP TACNT, #0FFH
JP ULE, TFcnt
AND TACON, #0FEH
DEC r0
CP r0, #2DH
JP ULE, TaFull
RET
;---------------------------------------------------------------
F9488_INT:
NOP
NOP
IRET
;---------------------------------------------------------------
.END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -