📄 tesk500.asm
字号:
PAGE7
AND A,P2S_STATE
;DIRECT KEY MASK 2002/6/12
MOV P2S_STATE ,A
MOV A ,KEYP2
OR A ,P2S_STATE
MOV P2S,A
MOV P2S_STATE,A
endif
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@updateP3:
page2
mov a p3_go2
caje #1111b @@updateP4
;;;; For Drive & Sink function ;;;;;;;;;;;
MOV A,#1111B
XOR A,P3_GO2
PAGE7
OR A ,P3S_STATE
;DIRECT KEY MASK 2002/6/12
MOV P3S_STATE ,A
MOV A ,KEYP3
OR A ,P3S_STATE
MOV P3S,A
MOV P3S_STATE,A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
page0
mov a p3state
page2
and a p3_go2
or a p3_go1
page0
mov p3state a
mov p3 a
;;;; For Drive & Sink function ;;;;;;;;;;;
PAGE2
MOV A,P3_GO2
PAGE7
AND A,P3S_STATE
;DIRECT KEY MASK 2002/6/12
MOV P3S_STATE ,A
MOV A ,KEYP3
OR A ,P3S_STATE
MOV P3S,A
MOV P3S_STATE,A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@updateP4:
ifndef mrx_3
page7
mov a #1111b
xor a p4_go2
caje #0 @@updateP5
;;;; For Drive & Sink function ;;;;;;;;;;;
MOV A,#1111B
XOR A,P4_GO2
OR A ,P4S_STATE
MOV P4S,A
MOV P4S_STATE,A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mov a p4state
and a p4_go2
or a p4_go1
mov p4state a
mov p4 a
;;;; For Drive & Sink function ;;;;;;;;;;;
MOV A,P4_GO2
AND A,P4S_STATE
MOV P4S,A
MOV P4S_STATE,A
endif
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@updateP5:
page7
mov a #1111b
xor a p5_go2
caje #0 @@updateP6
;;;; For Drive & Sink function ;;;;;;;;;;;
MOV A,#1111B
XOR A,P5_GO2
OR A ,P5S_STATE
MOV P5S,A
MOV P5S_STATE,A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mov a p5state
and a p5_go2
or a p5_go1
mov p5state a
mov p5 a
;;;; For Drive & Sink function ;;;;;;;;;;;
MOV A,P5_GO2
AND A,P5S_STATE
MOV P5S,A
MOV P5S_STATE,A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@updateP6:
ifndef mrx_4
page7
mov a #1111b
xor a p6_go2
caje #0 @@updateDone
;;;; For Drive & Sink function ;;;;;;;;;;;
MOV A,#1111B
XOR A,P6_GO2
OR A ,P6S_STATE
;DIRECT KEY MASK 2002/6/12
MOV P6S_STATE ,A
MOV A ,KEYP6
OR A ,P6S_STATE
MOV P6S,A
MOV P6S_STATE,A
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mov a p6state
and a p6_go2
or a p6_go1
mov p6state a
mov p6 a
;;;; For Drive & Sink function ;;;;;;;;;;;
MOV A,P6_GO2
AND A,P6S_STATE
;DIRECT KEY MASK 2002/6/12
MOV P6S_STATE ,A
MOV A ,KEYP6
OR A ,P6S_STATE
MOV P6S,A
MOV P6S_STATE,A
endif
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@updateDone:
page7
ifndef mrx_3
mov p4_go2 #1111b
endif
mov p5_go2 #1111b
ifndef mrx_4
mov p6_go2 #1111b
endif
page2
mov p2_go2 #1111b
mov p3_go2 #1111b
jmp @@ChkRandReg
@@ChkRandReg_Back:
;*************** WaveMark Routine ***************
ifdef @_event_@
page6
mov a eventmark
caje #0001b @@e1
caje #0010b @@e2
caje #0011b @@e3
caje #0100b @@e4
caje #0101b @@e5
caje #0110b @@e6
caje #0111b @@e7
caje #1000b @@e8
caje #1001b @@e9
caje #1010b @@e10
caje #1011b @@e11
caje #1100b @@e12
caje #1101b @@e13
caje #1110b @@e14
caje #1111b @@e15
endif
;*************** WaveMark Routine OK ***************
PAGE1
mov a #0010b
and a m12
caje #0010b @@Check_Delay_s
mov a #0100b
and a m12
caje #0100b @@Check_Delay_p
cjc @@4ms
jmp @@no_toggle
@@4ms:
rstcf
;*************** WaveMark Routine ***************
ifdef @_event_@
@@Check_e_Delay:
page6
mov a e_delay01
caje #0000b @f
jmp @@delaye
@@:
mov a e_delay8m
caje #0000b @f
jmp @@delaye
@@:
endif
;*************** WaveMark Routine OK ***************
@@check_4ms:
page7
mov a deboc_count ;debounce counter inca
inca
mov deboc_count a
page0
mov a #0100b
xor a m6
mov m6 a
mov a #0100b
and a m6
caje #0000b @@8ms
jmp @@no_toggle
@@8ms: ;melody begin
;; m12 bit 2: fore ground delay, bit1: output delay, bit0:background delay.
page1
mov a delay8m
caje #0000b @@chk_s_delay1
mov a #0001b
or a m12
mov m12 a
@@chk_s_delay1:
page1
mov a s_delay1
caje #0000b @@chk_p_delay1
mov a #0010b
or a m12
mov m12 a
@@chk_p_delay1:
page2
mov a p_delay1
caje #0000b @@chk_ok
page1
mov a #0100b
or a m12
mov m12 a
@@chk_ok:
PAGE1
MOV A BGROUND2
caje #0000b @@Check_Delay8m
mov a #0010b
or a m12
mov m12 a
@@Check_Delay8m:
page1
mov a delay8m ;; if delay8m == 0 goto [@@check_delay_s]
caje #0000b @@Check_Delay_s ;;
jmp @@delay ;; m12=xxx1b and delay8m !=0, go to [@@delay] routine.
;; after [@@delay] routine, m12 = xxx0b
@@Check_Delay_s:
page1
mov a s_delay1 ;; if s_delay1 == 0 goto [@@check_delay_p]
caje #0000b @@m12xx0x ;;
jmp @@delay1 ;; m12=xx1xb and s_delay1 !=0, go to [@@delay1] routine.
;; after [@@delay1] routine, m12 = xx0xb
@@m12xx0x:
page1
mov a #1101b
and a m12
mov m12 a
@@Check_Delay_p:
page2
mov a p_delay1 ;; if s_delay1 == 0 goto [@@check_delay_OK]
caje #0000b @@m12x0xx ;;
jmp @@delayp ;; m12=x1xxb and p_delay1 !=0, go to [@@delayp] routine.
;; after [@@delayp] routine, m12 = x0xxb
@@m12x0xx:
page1
mov a #1011b
and a m12
mov m12 a
@@Check_Delay_OK:
page1
jmp @@ChkBGround ;; check back ground event
@@ChkBGround_Back:
@@toggle_2_back:
@@no_toggle:
page0
mov a #1000b
and a m14
caje #0000b @@no_toggle_00
jmp @@loop1
@@no_toggle_00:
ifdef mrx_2
page6
mov a skblock
page0
caje #1 @@scan4 ;;scan key 17~32
endif
ifdef mrx_3
caje #2 @@scan8
endif
ifdef mrx_4
caje #3 @@scan12
endif
jmp @@pd
;********** trigger routine ok ***************
trigger:
rstc
rstcf
@@ini_lp:
cjc @@ready_scan
jmp @@ini_lp
@@ready_scan:
rstcf
;;;; Scankey P2-->P1
page0
mov a mrx
and a p2state
mov p2state a
mov p2 a
;;;;;; For IR receive function ;;;;;;
;;;;;; WAKEUP STATE
PAGE2
MOV A,#0010B
OR A,TRIGGER_FLAG
MOV TRIGGER_FLAG,A ;; TRIGER FLAG for IR
jmp @@scankey
;********** power down routine ok ********
@@pd:
ifdef IR_Transmit
PAGE2
MOV A,#0001B
AND A,IRout_ON_OFF
CAJE #0001B,@@scankey1
endif
page1
mov a delay8m
caje #0000b @@no_delay
jmp @@scankey1
@@no_delay:
mov a s_delay1
caje #0000b @@no_s_delay
jmp @@scankey1
@@no_s_delay:
page2
mov a p_delay1
caje #0000b @@no_p_delay
jmp @@scankey1
@@no_p_delay:
page0
mov a #0011b
and a v_state
caje #0000b @@no_bk
jmp @@scankey1
@@no_bk:
PAGE1
MOV A BGROUND2
PAGE0
caje #0000b @@pd_ready
jmp @@ChkBGround
@@pd_ready:
cjp1 @@scankey1
cjp2 @@scankey1
mov a #1000b
and a m14
caje #1000b @@scankey1
mov a #0001b
and a m14
caje #0000b @@power_down
MOV A #0001B
AND A DAA
caje #0000b @@power_down
play1 sn1#xo.wav
mov a #0110b
and a m14
mov m14 a
page7
mov deboc_count #0 ;clear debounce counter
@@wait_t:
cjp1 @@wait_t
jmp @@scankey1
@@power_down:
;=================== power down scan key =================
page0
mov a mrx ;add at 03/17'04
caje #1111b @@pd_key0_
@@pd_scan0:
mov scanid #0001b ;scanid: scan loop
jmp @@pd_trig_scan
@@pd_scan0_back:
mov a p1
xor a tr1_4
caje #0000b @@pd_scan1
jmp @@trig_chk
@@pd_scan1:
mov scanid #0010b ;scanid: scan loop
jmp @@pd_trig_scan
@@pd_scan1_back:
mov a p1
xor a tr5_8
caje #0000b @@pd_scan2
jmp @@trig_chk
@@pd_scan2:
mov scanid #1000b
mov a mrx
caje #1100b @@pd_scan_ok
mov scanid #0100b ;scanid: scan loop
jmp @@pd_trig_scan
@@pd_scan2_back:
mov a p1
xor a tr9_12
caje #0000b @@pd_scan3
jmp @@trig_chk
@@pd_scan3:
mov scanid #1000b
mov a mrx
caje #1000b @@pd_scan_ok
jmp @@pd_trig_scan
@@pd_scan3_back:
mov a p1
xor a tr13_16
caje #0000b @@pd_scan_ok
jmp @@trig_chk
@@pd_scan_ok:
ifdef @_key_type_@ ;add at 05-26'04 for mix key
@@pd_Mkeyp2:
page0
mov a p2
mov scanid a
mov a keyp2
and a scanid
mov scanid #0011b
page6
xor a Mtr2
caje #0000b @@pd_Mkeyp3
jmp @@trig_chk
@@pd_Mkeyp3:
page0
mov a p3
mov scanid a
mov a keyp3
and a scanid
mov scanid #0111b
page6
xor a Mtr3
caje #0000b @@pd_Mkeyp6
jmp @@trig_chk
@@pd_Mkeyp6:
page0
mov a p6
mov scanid a
mov a keyp6
and a scanid
mov scanid #1111b
page6
xor a Mtr6
caje #0000b @@pd_scankey_ok
jmp @@trig_chk
endif
jmp @@pd_scankey_ok
@@pd_key0_:
mov a p1
mov scanid a
mov a keyp1
and a scanid
mov scanid #0001b
xor a tr1_4
caje #0000b @@pd_key1_
jmp @@trig_chk
@@pd_key1_:
mov a p2
mov scanid a
mov a keyp2
and a scanid
mov scanid #0010b
xor a tr5_8
caje #0000b @@pd_key2_
jmp @@trig_chk
@@pd_key2_:
mov a p3
mov scanid a
;;;; If IR occur ....disable p33 , p32
PAGE1
MOV TEMP0,#1111B
ifdef IR_Transmit
ifdef IR_Receive
;;; IR_Bidirection
PAGE1
MOV TEMP0,#0011B
else
;;;; IR_TRANSMIT
PAGE1
MOV TEMP0,#0111B
endif
elseifdef IR_Receive
;;;;; IR_RECEIVE
PAGE1
MOV TEMP0,#0111B
endif
mov a keyp3
AND A TEMP0
page0
and a scanid
mov scanid #0100b
xor a tr9_12
caje #0000b @@pd_key3_
jmp @@trig_chk
@@pd_key3_:
mov a p6
mov scanid a
mov a keyp6
and a scanid
mov scanid #1000b
xor a tr13_16
caje #0000b @@pd_scankey_ok
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -