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

📄 tesk500.asm

📁 SNC539 两channel 语音播放
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        mov     tr1_4   a
        mov     a       p2
        mov     scanid     a
        mov     a       keyp2
        and     a       scanid
        mov     tr5_8   a
        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     tr9_12  a

        mov     a       p6
        mov     scanid     a
        mov     a       keyp6
        and     a       scanid
        mov     tr13_16 a

        jmp     @@_init

;******* check speech playing routine ok*************************
@@chk_s_play:
        page0
        mov     a       #0001b
        and     a       v_state

        caje    #0000b  @@no_v1_1
        jmp     @@with_v1
@@no_v1_1:
        mov     a       #1111b
        xor     a       p3_fva
        and     a       p3state
        mov     p3state a
        mov     p3      a
        jmp     @@no_v1
@@with_v1:
	page6
        mov     a       fra1
        mov     temp1   #0100b
        and     a       temp1
	page0
        caje    #0100b  @@no_v1_fsh
        jmp     @@v1_fsh
@@no_v1_fsh:
        mov     a       #1111b
        xor     a       p3_fva
        and     a       p3state
        mov     p3state a
        mov     p3      a
        jmp     @@fv1_ok
@@v1_fsh:
        page0
        mov     a       p3_fva
        or      a       p3state
        mov     p3state a
        mov     p3      a
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@fv1_ok:
        page0
        cjp1    @@no_v1                     ;voice is playing
        PLAY1   sil#xo.wav
        mov     a       #1110b
        and     a       v_state
        mov     v_state a

        page0
        MOV     A       #0010B
        AND     a       DOUBLE_F
        caje    #0000b  @@not_dubble_play1
        page0
        mov     a       #0010b
        and     a       v_state
        caje    #0010b  @@with_v2
        page0
        MOV     A,#0101B
        AND     A,DOUBLE_F
        MOV     DOUBLE_F,A
@@not_dubble_play1:

        PAGE0
        mov     a       #0100b
        and     a       v_state
        caje    #0000b  @@fv1_ok_ret1

        mov     a       #1011b
        and     a       v_state
        mov     v_state a

        PAGE2
        mov     a       #0100b
        and     a       enter_b
        caje    #0000b  @@fv1_ok_ret2
        mov     a       #1011b
        and     a       enter_b
        mov     enter_b a
        jmp     @@scankey1
@@fv1_ok_ret2:
	@@chk_p_delay1_ret2	@@no_v1		;add in 04/10/2003 for ret2 problem
;        page3					;mark in 04/10/2003
;        ret2					;mark in 04/10/2003

@@fv1_ok_ret1:
        PAGE2
        mov     a       #0100b
        and     a       enter_b
        caje    #0000b  @@fv1_ok_ret11
        mov     a       #1011b
        and     a       enter_b
        mov     enter_b a
        jmp     @@scankey1
@@fv1_ok_ret11:
	@@chk_delay8m_ret1	@@no_v1		;add in 04/10/2003 for ret1 problem
;        page3					;mark in 04/10/2003
;        ret1					;mark in 04/10/2003
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@no_v1:
	page0
        mov     a       #0010b
        and     a       v_state
        caje    #0010b  @@with_v2
        mov     a       #1111b
        xor     a       p3_fvb
        and     a       p3state
        mov     p3state a
        mov     p3      a
        jmp     @@no_s_play
@@with_v2:
        mov     a       fra1
        mov     m15     #1000b
        and     a       m15
        caje    #1000b  @@no_v2_fsh
        jmp     @@v2_fsh
@@no_v2_fsh:
        mov     a       #1111b
        xor     a       p3_fvb
        and     a       p3state
        mov     p3state a
        mov     p3      a
        jmp     @@fv2_ok
@@v2_fsh:
        mov     a       p3_fvb
        or      a       p3state
        mov     p3state a
        mov     p3      a
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@fv2_ok:
        cjp2    @@no_s_play                     ;voice is playing
        PLAY2   sil#xo.wav
        mov     a       #1101b
        and     a       v_state
        mov     v_state a

        page0
        MOV     A       #0010B
        AND     a       DOUBLE_F
        caje    #0000b  @@not_dubble_play2
        page0
        mov     a       #0001b
        and     a       v_state
        caje    #0001b  @@scankey1
        page0
        MOV     A,#0101B
        AND     A,DOUBLE_F
        MOV     DOUBLE_F,A
;;;;;;  mov     DOUBLE_F        #0000b
@@not_dubble_play2:

        PAGE0
        mov     a       #1000b
        and     a       v_state
        caje    #0000b  @@fv2_ok_ret1

        mov     a    ,  #0111b
        and     a    ,  v_state
        mov     v_state,a

        PAGE2
        mov     a       #1000b
        and     a       enter_b
        caje    #0000b  @@fv2_ok_ret2
        mov     a       #0111b
        and     a       enter_b
        mov     enter_b a
        jmp     @@scankey1
@@fv2_ok_ret2:
	@@chk_p_delay1_ret2	@@no_s_play	;add in 04/10/2003 for ret2 problem
;        page3					;mark in 04/10/2003
;        ret2					;mark in 04/10/2003

@@fv2_ok_ret1:
        PAGE2
        mov     a       #1000b
        and     a       enter_b
        caje    #0000b  @@fv2_ok_ret11
        mov     a       #0111b
        and     a       enter_b
        mov     enter_b a
        jmp     @@scankey1
@@fv2_ok_ret11:
	@@chk_delay8m_ret1	@@no_s_play	;add in 04/10/2003 for ret1 problem
;        page3					;mark in 04/10/2003
;        ret1					;mark in 04/10/2003

@@no_s_play:
	page0
        jmp     @@chk_s_play_back
;*******delay routine ok *****************************************
;******* wavemark timer routine ok *****************************************
ifdef	@_event_@
@@delaye:
        page6
        mov     a       e_delay8m
        inca
        mov     e_delay8m a
        caje    #0000b  @@e01_sec
        jmp	@@Check_4ms
@@e01_sec:
        mov     a       e_delay01
        inca
        mov     e_delay01 a           
        caje    #0000b  @@e_delay_ok
        jmp	@@Check_4ms
@@e_delay_ok:
	page6
	rcode
	mov	eventmark	a			;load mark
	rcode
	mov	e_delay8m	a			;load event timer
	rcode
	mov	e_delay01	a			;load event timer

	jmp	@@check_4ms
endif
;*******delay routine ok *****************************************
@@delay:
        page1
        mov     a       delay8m
        inca
        mov     delay8m a
        caje    #0000b  @@01_sec
	mov	a	#1110b
	and	a	m12
	mov	m12	a
        jmp	@@Check_Delay_s
@@01_sec:
        mov     delay8m #0100b
        mov     a       delay01
        inca
        mov     delay01 a
        caje    #0000b  @@1sec
	mov	a	#1110b
	and	a	m12
	mov	m12	a
        jmp	@@Check_Delay_s
@@1sec:
        mov     delay01 #0110b
        mov     a       delay1s
        inca
        mov     delay1s a
        caje    #0000b  @@delay_ok
	mov	a	#1110b
	and	a	m12
	mov	m12	a
        jmp	@@Check_Delay_s
@@delay_ok:
        mov     delay8m #0000b
        PAGE1
	mov	a	#1110b
	and	a	m12
	mov	m12	a
        page3
        ret1
;*******delay routine ok *****************************************
@@delay1:
        page1
        mov     a       s_delay1
        inca
        mov     s_delay1 a
        caje    #0000b  @@s01_sec
	mov	a	#1101b
	and	a	m12
	mov	m12	a
	jmp	@@Check_Delay_p
@@s01_sec:
        mov     s_delay1 #0100b
        mov     a       s_delay2
        inca
        mov     s_delay2 a
        caje    #0000b  @@s1sec
	mov	a	#1101b
	and	a	m12
	mov	m12	a
	jmp	@@Check_Delay_p
@@s1sec:
        mov     s_delay2 #0110b
        mov     a       s_delay3
        inca
        mov     s_delay3 a
        caje    #0000b  @@s_delay_ok
	mov	a	#1101b
	and	a	m12
	mov	m12	a
	jmp	@@Check_Delay_p
@@s_delay_ok:
        mov     s_delay1 #0000b
        PAGE1
	mov	a	#1101b
	and	a	m12
	mov	m12	a
        page3
        ret3
;*******delay routine ok *****************************************
@@delayp:
        page2
        mov     a       p_delay1
        inca
        mov     p_delay1 a
        caje    #0000b  @@p01_sec
        page1
	mov	a	#1011b
	and	a	m12
	mov	m12	a
	jmp	@@Check_Delay_OK
@@p01_sec:
        page2
        mov     p_delay1 #0100b
        mov     a       p_delay2
        inca
        mov     p_delay2 a
        caje    #0000b  @@p1sec
        page1
	mov	a	#1011b
	and	a	m12
	mov	m12	a
	jmp	@@Check_Delay_OK
@@p1sec:
        page2
        mov     p_delay2 #0110b
        mov     a       p_delay3
        inca
        mov     p_delay3 a
        caje    #0000b  @@p_delay_ok
        page1        
	mov	a	#1011b
	and	a	m12
	mov	m12	a
	jmp	@@Check_Delay_OK
@@p_delay_ok:
        page2
        mov     p_delay1 #0000b
        page1        
	mov	a	#1011b
	and	a	m12
	mov	m12	a        
        page3
        ret2

;*******timer routine ok**********************************
;*************** WaveMark Routine ***************
ifdef	@_event_@
@@LOAD_EVENT_DATA:
	page6
	mov	a	#0001b
	and	a	eventflag
	caje	#0000b	@@no_event			;check event function enable
	
	rcode
	mov	eventmark	a				;load mark
	rcode
	mov	e_delay8m	a			;load event timer
	rcode
	mov	e_delay01	a			;load event timer
	ret1
@@no_event:
	mov	e_delay8m	#0
	mov	e_delay01	#0
	ret1
endif
;*************** WaveMark Routine END ***************
@@ChkRandReg:
        page2
        mov     a       Rand0Max
        caje    #0      @@ChkRand1
        mov     a       Rand0
        caje    Rand0Max @@RstRand0
        inca
        mov     Rand0   a
        jmp     @@ChkRandReg_Back
@@RstRand0:
        mov     Rand0   #0
@@ChkRand1:
        mov     a       Rand1Max
        caje    #0      @@ChkRand2
        mov     a       Rand1
        caje    Rand1Max @@RstRand1
        inca
        mov     Rand1   a
        jmp     @@ChkRandReg_Back
@@RstRand1:
        mov     Rand1   #0
@@ChkRand2:
        mov     a       Rand2Max
        caje    #0      @@ChkRandReg_Back
        mov     a       Rand2
        caje    Rand2Max @@RstRand2
        inca
        mov     Rand2   a
        jmp     @@ChkRandReg_Back
@@RstRand2:
        mov     Rand2   #0
        jmp     @@ChkRandReg_Back
;=============================================================
@@timer_ok:


; ##########################################################
;       For IR function
;  IR_TRANSMIT.... Disable P3.3
;  IR_RECEIVE .... Disable P3.3
;  IR_Bidirection .... Disable P3.2 and P3.3
; ##########################################################
ifdef   IR_Transmit

ifdef   IR_Receive
        PAGE2
        MOV     A,#0011B
        AND     A,P3_GO1
        MOV     P3_GO1,A

        MOV     A,#1100B
        OR      A,P3_GO2
        MOV     P3_GO2,A
else
        PAGE2
        MOV     A,#0111B
        AND     A,P3_GO1
        MOV     P3_GO1,A

        MOV     A,#1000B
        OR      A,P3_GO2
        MOV     P3_GO2,A
endif

elseifdef       IR_Receive
        PAGE2
        MOV     A,#0111B
        AND     A,P3_GO1
        MOV     P3_GO1,A

        MOV     A,#1000B
        OR      A,P3_GO2
        MOV     P3_GO2,A
endif
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
        page0
        mov     a       p3_fva
        page2
        or      a       p3_fv1
        mov     p3_fv1  #0000b
        and     a       p3_go2
        page0
        mov     p3_fva  a
        mov     a       p3_fvb
        page2
        or      a       p3_fv2
        mov     p3_fv2  #0000b
        and     a       p3_go2
        page0
        mov     p3_fvb  a
@@toggle_1_back:
ifndef mrx_3
        page2
        mov     a       p2_go2
        caje    #1111b  @@updateP3

;;;; For Drive & Sink function ;;;;;;;;;;;
        MOV     A,#1111B
        XOR     A,P2_GO2
        PAGE7
        OR      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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

        page0
        mov     a       p2state
        page2
        and     a       p2_go2
        or      a       p2_go1
        page0
        mov     p2state a
        mov     p2      a

;;;; For Drive & Sink function ;;;;;;;;;;;
        PAGE2
        MOV     A,P2_GO2

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -