?? 8733_tp.dt
字號:
;****************************************************************;
; TILTE: eKTP8733 I2C TRANSMISSION DEMO CODE ;
; FUNCTION: eKTP8733 I2C FUNCTION ;
; COMPANY: ELAN MICROELECTRONICS (SZ) LTD. ;
;****************************************************************;
; 該范例用eKTP8733掃描Touchpad,總共掃描3個按鍵. Fc: IRC 4MHz
; Key1按下,Port5輸出0x01;Key2按下,Port5輸出0x02;
; Key3按下,Port5輸出0x03;Key4按下,Port5輸出0x04;
; Key5按下,Port5輸出0x05;Key6按下,Port5輸出0x06;
; Key7按下,Port5輸出0x08;Key8按下,Port5輸出0x08;
;-----------------------------------------------------------------
INCLUDE "ektr8730.h"
INCLUDE "RamData.inc"
;-----------------------------------------------------------------
ORG 0x00
NOP
JMP Main
ORG 0x0F
LJMP TCC_INT
ORG 0x3F
LJMP TPCV_INT
ORG 0x42
LJMP TPOVF_INT
ORG 0x50
;-----------------------------------------------------------------
; TCC interrupt: 4.096ms
TCC_INT:
BANK 0
com 0x06
INC NOKeyPCNT
BC ISR1, TCIF
RETI
;-----------------------------------------------------------------
; Touch pad convert interrupt
TPCV_INT:
; User code
; ...
BANK 4
BC TPCR3, TPIF
RETI
;-------------------------------------------------------------------
; Touch pad counter overflow interrupt
TPOVF_INT:
; User code
; ...
BANK 4
BC TPCR3, TPOIF
RETI
;===================================================================
Main:
DISI
CALL CLEAR_SRAM
CALL INIT_DEVICE
main_loop:
NOP
ENI
NOP
CALL MainReadTPVa
;CALL MainStudyTP
CALL MainScanKey
JMP main_loop
;===================================================================
INIT_DEVICE:
NOP
BANK 0
MOV A, @0x00
MOV PORT5, A
MOV PORT6, A
MOV PORT7, A
MOV PORT8, A
BANK 1
MOV A, @0x00
MOV IOC5, A
MOV IOC6, A
MOV IOC7, A
MOV IOC8, A
MOV A, @0x10
MOV IMR1, A ; Enable TCC interrupt
BANK 2
MOV A, @0x0D ; TCC P --> 64
MOV TCCCR, A
BANK 3
CLR TCC
MOV A, @0x1F ; Select ekt8733, irc: 1*F
MOV COBS1, A
MOV A, @0x30 ; Select IRC 4MHz
MOV COBS2, A
;-------------------------------------------
; TP set
BANK 4
MOV A, @0X20 ; Enable TP function, TP0 on
MOV TPCR1, A
MOV A, @0x21 ; TP detect frequency select F/8, PLL output Fr: 48MHz
MOV TPCR2, A ; System frequency(Fm) is IRC 4MHz, PLL clock source select Fm/2
MOV A, @0x08 ; Disable TPIF/TPOIF interrupt, Touch pad read time: 4
MOV TPCR3, A
MOV A, @0x0F ; Touch pad current: 10uA
MOV TPCC, A
MOV A, @0X01 ; Select TPEP0, other pin as IO pin
MOV TPEPCR0, A
MOV A, @0X00 ; Other pin as IO pin
MOV TPEPCR1, A
MOV TPEPCR2, A
MOV TPEPCR3, A
;-------------------------------------------
BANK 0
BS Key_Tone, PWON_AD
MOV A, @Key_Psd_Va
MOV KeyPsdValue, A
CALL DelaySomeT
RET
;-----------------------------------------------------------------
MainReadTPVa:
NOP
BANK 0
MOV A, DitheringR
JBS status, z
DEC DitheringR
MOV A, LOOSDitheringR
JBS status, z
DEC LOOSDitheringR
CLR TP_Psd_Flag
;---------------------------------------
; Check TP0
Main_Chk_TP0:
BANK 4
MOV A, @0X20 ; TP0 switch on
MOV TPCR1, A
MOV A, @0X01 ; Select TP0, other pin as IO pin
MOV TPEPCR0, A
CALL TPVaRoutine ; 320us * 2
MOV A, @TP0_NPsd_VAL
CALL ReleaseOldKeyVa
MOV A, @TP0_RlTm_VAL
CALL StoreRLKeyVa ; Store the tp value currently.
CALL CMP_TWO_Value
;
JBC status, c
BS TP_Psd_Flag, TP0
;---------------------------------------
; Check TP1
Main_Chk_TP1:
BANK 4
MOV A, @0X21 ; TP1 switch on
MOV TPCR1, A
MOV A, @0X02 ; Select TP1, Other pin as IO pin
MOV TPEPCR0, A
CALL TPVaRoutine
MOV A, @TP1_NPsd_VAL
CALL ReleaseOldKeyVa
MOV A, @TP1_RlTm_VAL
CALL StoreRLKeyVa
CALL CMP_TWO_Value
JBC status, c
BS TP_Psd_Flag, TP1
;---------------------------------------
; Check TP2
Main_Chk_TP2:
BANK 4
MOV A, @0X22 ; TP2 switch on
MOV TPCR1, A
MOV A, @0X04 ; Select TP2, Other pin as IO pin
MOV TPEPCR0, A
CALL TPVaRoutine
MOV A, @TP2_NPsd_VAL
CALL ReleaseOldKeyVa
MOV A, @TP2_RlTm_VAL
CALL StoreRLKeyVa
CALL CMP_TWO_Value
JBC status, c
BS TP_Psd_Flag, TP2
;---------------------------------------
; Check TP3
Main_Chk_TP3:
BANK 4
MOV A, @0X23 ; TP3 switch on
MOV TPCR1, A
MOV A, @0X08 ; Select TP3, Other pin as IO pin
MOV TPEPCR0, A
CALL TPVaRoutine
MOV A, @TP3_NPsd_VAL
CALL ReleaseOldKeyVa
MOV A, @TP3_RlTm_VAL
CALL StoreRLKeyVa
CALL CMP_TWO_Value
JBC status, c
BS TP_Psd_Flag, TP3
;---------------------------------------
; Check TP4
Main_Chk_TP4:
BANK 4
MOV A, @0X24 ; TP4 switch on
MOV TPCR1, A
MOV A, @0X10 ; Select TP4, Other pin as IO pin
MOV TPEPCR0, A
CALL TPVaRoutine
MOV A, @TP4_NPsd_VAL
CALL ReleaseOldKeyVa
MOV A, @TP4_RlTm_VAL
CALL StoreRLKeyVa
CALL CMP_TWO_Value
JBC status, c
BS TP_Psd_Flag, TP4
;---------------------------------------
; Check TP5
Main_Chk_TP5:
BANK 4
MOV A, @0X25 ; TP5 switch on
MOV TPCR1, A
MOV A, @0X20 ; Select TP5, Other pin as IO pin
MOV TPEPCR0, A
CALL TPVaRoutine
MOV A, @TP5_NPsd_VAL
CALL ReleaseOldKeyVa
MOV A, @TP5_RlTm_VAL
CALL StoreRLKeyVa
CALL CMP_TWO_Value
JBC status, c
BS TP_Psd_Flag, TP5
;---------------------------------------
; Check TP6
Main_Chk_TP6:
BANK 4
MOV A, @0X26 ; TP6 switch on
MOV TPCR1, A
MOV A, @0X40 ; Select TP6, Other pin as IO pin
MOV TPEPCR0, A
CALL TPVaRoutine
MOV A, @TP6_NPsd_VAL
CALL ReleaseOldKeyVa
MOV A, @TP6_RlTm_VAL
CALL StoreRLKeyVa
CALL CMP_TWO_Value
JBC status, c
BS TP_Psd_Flag, TP6
;---------------------------------------
; Check TP7
Main_Chk_TP7:
BANK 4
MOV A, @0X27 ; TP7 switch on
MOV TPCR1, A
MOV A, @0X80 ; Select TP7, Other pin as IO pin
MOV TPEPCR0, A
CALL TPVaRoutine
MOV A, @TP7_NPsd_VAL
CALL ReleaseOldKeyVa
MOV A, @TP7_RlTm_VAL
CALL StoreRLKeyVa
CALL CMP_TWO_Value
JBC status, c
BS TP_Psd_Flag, TP7
;
;---------------------------------------
JBS Key_Tone, PWON_AD
JMP Main_Chk_Ret
INC PWON_CNT
MOV A, PWON_CNT
ADD A, @255-5
JBC status, C
JMP Main_Chk_Ret
MOV A, @0x20
CALL SwapKeyValue
CLR PWON_CNT
BC Key_Tone, PWON_AD
Main_Chk_Ret:
RET
;-----------------------------------------------------------------
MainScanKey:
NOP
CLR KeyValue
CLR buffer
MOV A, Tp_Psd_Flag
JBC status, z
JMP CheckKeyLoos
BC Key_Tone, SYSKEYLOOS
;---------------------------------------
; Check whether two key are Pressed.
MOV buffer+1, A
MOV A, @0x08
MOV buffer+2, A
RRC_Lp:
BC status, C
RRC buffer+1
JBC status, C
INC buffer
DJZ BUFFER+2
JMP RRC_Lp
MOV A, @255-1
ADD A, buffer
JBC status, C
JMP NoKey_Pressed2 ; Two key pressed, treat as no key pressed
;---------------------------------------
Key_Pressed:
BC Key_Tone, SYSKEYLOOS
MOV A, Tp_Psd_Flag
SUB A, OldKey
JBC status, z
JMP Check_Key_Up
SetNewKeyDithering:
; New key checked
MOV A, Tp_Psd_Flag
MOV OldKey, A
MOV A, @DitheringTM ; 10
MOV DitheringR, A ; 5ms * 10 = 50ms
JMP ScanKey_Out
Check_Key_Up:
MOV A, DitheringR
JBS STATUS, Z
JMP ScanKey_Out
NewKeyDown:
BC Key_Tone, STYKey
BS Key_Tone, KeyPressed
CLR NOKeyPCNT
MOV A, OldKey
MOV KeyValue, A
SUB A, OldKeyValue
JBC STATUS, Z ; = 0 Skip
JMP NoKey_Pressed2
; sure new key pressed
SetOldKeyValue:
MOV A, OldKey
MOV OldKeyValue, A
JMP ScanKey_Out
CheckKeyLoos:
MOV A, OldKeyValue
JBC Status, z
JMP NoKey_Pressed
;
JBC Key_Tone, SYSKEYLOOS
JMP Check_Key_Loos_Up
BS Key_Tone, SYSKEYLOOS
MOV A, @LOOSDitheringTM ;10*5ms
MOV LOOSDitheringR, A
JMP ScanKey_Out
Check_Key_Loos_Up:
MOV A, LOOSDitheringR
JBS STATUS, Z
JMP ScanKey_Out
BC Key_Tone, SYSKEYLOOS
NoKey_Pressed:
MOV A, @0xF0
AND Port5, A
and port8,a
CLR OldKeyValue
MOV A, NOKeyPCNT
ADD A, @256-20
JBC Key_Tone, KeyPressed
ADD A, @256-75
JBS status, C
JMP NoKey_Pressed2
BC Key_Tone, KeyPressed
BS Key_Tone, STYKey
CLR NOKeyPCNT
NoKey_Pressed2:
CLR OldKey
CLR KeyValue
ScanKey_Out:
MOV A, KeyValue
JBC STATUS, Z ;
JMP Key_Check_Ret ; no key pressed
CALL Main_Key_Do
Key_Check_Ret:
NOP
RET
;-----------------------------------------------------------------
Main_Key_Do:
MOV A, @0x01
SUB A, KeyValue
JBC status, Z
JMP main_key1_psd ; key1
;
MOV A, @0x02
SUB A, KeyValue
JBC status, Z
JMP main_key2_psd ; key2
;
MOV A, @0x04
SUB A, KeyValue
JBC status, Z
JMP main_key3_psd ; key3
;
MOV A, @0x08
SUB A, KeyValue
JBC status, Z
JMP main_key4_psd ; key4
;
MOV A, @0x10
SUB A, KeyValue
JBC status, Z
JMP main_key5_psd ; key5
;
MOV A, @0x20
SUB A, KeyValue
JBC status, Z
JMP main_key6_psd ; key6
;
MOV A, @0x40
SUB A, KeyValue
JBC status, Z
JMP main_key7_psd ; key7
;
MOV A, @0x80
SUB A, KeyValue
JBC status, Z
JMP main_key8_psd ; key8
;-----------------------------------
main_key1_psd:
MOV A, @0x01
;OR Port5, A
JMP main_key_Psd_Out
;-----------------------------------
main_key2_psd:
MOV A, @0x02
;OR Port5, A
JMP main_key_Psd_Out
;-----------------------------------
main_key3_psd:
MOV A, @0x03
;OR Port5, A
JMP main_key_Psd_Out
;-----------------------------------
main_key4_psd:
MOV A, @0x04
;OR Port5, A
JMP main_key_Psd_Out
;-----------------------------------
main_key5_psd:
MOV A, @0x05
;OR Port5, A
JMP main_key_Psd_Out
;-----------------------------------
main_key6_psd:
MOV A, @0x06
;OR Port5, A
JMP main_key_Psd_Out
;-----------------------------------
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -