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

📄 tesk500.asm

📁 SNC539 两channel 语音播放
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        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 + -