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

📄 test56.asm

📁 4channel 语音播放程序 26个字母播放. 4x12 小扫描按键
💻 ASM
📖 第 1 页 / 共 5 页
字号:
SN56085
SN0#XO.WAV
SN1#XO.WAV
SIL#XO.WAV
A.WAV
B.WAV
C.WAV
D.WAV
E.WAV
F.WAV
G.WAV
H.WAV
I.WAV
J.WAV
K.WAV
L.WAV
M.WAV
N.WAV
O.WAV
P.WAV
Q.WAV
R.WAV
S.WAV
T.WAV
U.WAV
V.WAV
W.WAV
X.WAV
Y.WAV
Z.WAV
R8_0#XO.dat
R8_1#XO.dat
R8_2#XO.dat
R10_0#XO.dat
R10_1#XO.dat
R10_2#XO.dat
R12_0#XO.dat
R12_1#XO.dat
R12_2#XO.dat
R16_2#XO.dat
INST#XO.dat
PROGRAM
includestd	macro56000_2.h
deboc	equ	#0101b
	IR_SPEED_SLOW	EQU	1
	IR_MODE	EQU	#0000B
	@_4ms_@	equ	#1
MRXB_2	EQU	#1111B
MRX_2	EQU	#0000B
MRXB_3	EQU	#1111B
MRX_3	EQU	#0000B
MRXB	EQU	#1111B
MRX	EQU	#0000B
KeyP1	EQU	#0000B
KeyP2	EQU	#0000B
KeyP3	EQU	#0000B
KeyP6	EQU	#0000B
Rand0Max	EQU	#0100B
Rand1Max	EQU	#1111B
Rand2Max	EQU	#1101B
;;**********************************************************
;;  Standard Easy Variable:                               **
;;                                                        **
;;**********************************************************
@_fvMax_@       equ     #3
;***************** page0 *****************

ifdef	mrx_4
tr61_64		equ	m11
tr57_60		equ	m12
tr53_56		equ	m13
tr49_52		equ	m14
endif
ifdef	mrx_3
tr45_48		equ	m15
endif
;***************** page1 *****************
p1_go1          equ     m0
p1_go2          equ     m1
p1state         equ     m2
scanP1          equ     m3			;scankey port value
pause           equ     m4
tr1_4           equ     m5
tr5_8           equ     m6
tr9_12          equ     m7
tr13_16         equ     m8
ifdef	mrx_2
tr17_20         equ     m9
tr21_24         equ     m10
tr25_28         equ     m11
tr29_32         equ     m12
endif
ifdef	mrx_3
tr33_36		equ	m13
tr37_40		equ	m14
tr41_44		equ	m15
endif
ifdef	@_key_type_@
MTR2		equ	m13
MTR3		equ	m14
MTR6		equ	m15			;for direct key of mix key mode
endif
;***************** page2 *****************
vol_pp		equ	m0			;push-pull vol
skblock         equ     m1			;scan key block
delay8m         equ     m2			;foreground routine delay
delay01         equ     m3			;foreground routine delay
delay1s         equ     m4			;foreground routine delay
s_delay1        equ     m5			;output routine delay
s_delay2        equ     m6			;output routine delay
s_delay3        equ     m7			;output routine delay
p_delay1        equ     m8			;background routine delay
p_delay2        equ     m9			;background routine delay
p_delay3        equ     m10			;background routine delay
Rand0           equ     m11			;random1
Rand1           equ     m12			;random2
Rand2           equ     m13			;random3
delay_flag	equ	m14	; Bit 0 --> Foreground Delay 8ms flag
				; Bit 1 --> Background Delay 8ms flag
				; Bit 2 --> Output     Delay 8ms flag
				; Bit 3 --> Scan all Key flag
enter_b         equ     m15			;
;***************** page3 *****************
call_b1         equ     m0		;bit1:melody play at foreground/background;0=foreground
loop            equ     m1		;repeat command of foreground(do loop)
outloop         equ     m2		;repeat command of background (do loop)
BGround1        equ     m3		;background path
BGround2        equ     m4		;background path
TrigState1      equ     m5		;input states
TrigState2      equ     m6		;input states
debocr          equ     m7		;bit3:keypress
					;bit2:8ms
					;bit1:eflag
					;bit0:power down scan flag

keyid           equ     m8		;scankey keyid
deboc_count	equ	m9		;debounce counter=8ms*n
en_ret          equ     m10		;check forground or background return.
					;bit0:foreground speech ret1;1:enable
					;bit1:foreground melody ret1;1:enable
					;bit2:background speech ret1;1:enable
					;bit3:background melody ret1;1:enable
mpF             equ     m11		;MELODY PLAY FLAG
					;0:LEFT CHANNEL PLAY
					;1:RIGHT CHANNEL PLAY
					;2:LEFT	CHANNEL HEAD PLAY OK
					;3:RIGHT CHANNEL HEAD PLAY OK
spF             equ     m12		;SPEECH PLAY FLAG: 0:CH1 ,1:CH2 ,2:CH3 3:CH4
bspF            equ     m13		;BACKGROUND SPEECH PLAY :0:CH1 ,1:CH2 ,2:CH3 3:CH4
temp3           equ     m14
temp4           equ     m15
;***************** page4 *****************
beat1_h         equ     m0		;beat_H of CH1
beat1_l         equ     m1		;beat_L of CH1
beat2_h         equ     m2		;beat_H of CH2
beat2_l         equ     m3		;beat_L of CH2
beat3_h         equ     m4		;beat_H of CH3
beat3_l         equ     m5		;beat_L of CH3
beat4_h         equ     m6		;beat_H of CH4
beat4_l         equ     m7		;beat_L of CH4
vol1_h          equ     m8
vol1_l          equ     m9
vol2_h          equ     m10
vol2_l          equ     m11
vol3_h          equ     m12       	;; bit1-0: melody MSB , bit3-2:voice MSB
vol3_l          equ     m13       	;;
vol4_h          equ     m14      	;;
vol4_l          equ     m15       	;;
;***************** page5 *****************
v_vol1          equ     m0     	  	;;TONE1
v_vol2          equ     m1     	  	;;TONE2
v_vol3          equ     m2     	  	;;TONE3
v_vol4          equ     m3	        ;;TONE4
instyp1         equ     m4		;bit0,1:note octave of ch1
					;bit2.3:sample rate of instrument 00:8k,01:10k,10:12.5k,11:16k
instyp2         equ     m5		;bit0,1:note octave of ch2
					;bit2.3:sample rate of instrument 00:8k,01:10k,10:12.5k,11:16k
instyp3         equ     m6		;bit0,1:note octave of ch3
					;bit2.3:sample rate of instrument 00:8k,01:10k,10:12.5k,11:16k
instyp4         equ     m7          	;bit0,1:note octave of ch4
					;bit2.3:sample rate of instrument 00:8k,01:10k,10:12.5k,11:16k
ins1            equ     m8		;ch1 instrument no.
ins2            equ     m9		;ch2 instrument no.
ins3            equ     m10		;ch3 instrument no.
ins4            equ     m11		;ch4 instrument no.
res1            equ     m12		;interval of release time of ch1
res2            equ     m13		;interval of release time of ch2
res3            equ     m14		;interval of release time of ch3
res4            equ     m15		;interval of release time of ch4
;***************** page6 *****************
resCnt          equ     m0		;release counter for envelope downcount
resF            equ     m1		;release step of channel,
tempo           equ     m2		;tempo setting
t_count         equ     m3		;tempo counter
mpStat          equ     m4		;melody play state.bit0:encounter a stop;1:encount
					;bit2:changenote
dsAD            equ     m5
dsEnvDC         equ     m6		;disable envelope downcount.bit0~3=ch1~ch4;1=diable
adsr            equ     m7		;adsr setting.bit0~bit3=ch1~ch4.0=adsr;1=adr
rhyF            equ     m8		;rhythm playing flag. bit0~3=ch1~ch4; 1=playing
fvCnt           equ     m9		;flash time counter
rStep1          equ     m10		;downcount step time of ch1
rStep2          equ     m11		;downcount step time of ch2
rStep3          equ     m12		;downcount step time of ch3
rStep4          equ     m13		;downcount step time of ch4
p2state         equ     m14		;P2 state
p3state         equ     m15		;P3 state
;***************** page7 *****************
p6state         equ     m0		;P6 state
p2_go1          equ     m1		;P2 output state
p2_go2          equ     m2		;P2 output mask
p3_go1          equ     m3		;P3 output state
p3_go2          equ     m4		;P3 output mask
p6_go1          equ     m5		;P6 output state
p6_go2          equ     m6		;P6 output mask
p3_fv           equ     m7		;P3 fv output state
p3_fv1          equ     m8		;P3 fv output mask
p6_fv           equ     m9		;P6 fv output state
p6_fv1          equ     m10		;P6 fv output mask
p2_mdy          equ     m11
p3_mdy          equ     m12
p6_mdy          equ     m13
temp1           equ     m14
temp2           equ     m15

;--------------------------------------------
;	CallTo	Macro	Label
;--------------------------------------------
JumpTo	Macro	label
	Jmp	label
@@&label&_Bk:
ENDM


;;**************** power on routine ***************
start:                                  ;power on initial routine
        JumpTo	Initial_Chip
	JumpTo	Update_Key
	jmp     @@_init
@@Scankey1:	
	JumpTo	Check_EnterB			; Check Enter B function.
Main_Loop:       
        JumpTo	ScanKey				; Scankey Function.
        	
        JumpTo	Check_Speech			; Speech Play Function.       
        JumpTo	Update_Output			; I/O output Function.
        JumpTo	Check_Delay
        JumpTo	Check_Random			; Random Function.
@@ChkRandReg_Back:        
        JumpTo	Check_Event			; Event Mark Function.
        jmp     @@ChkBGround    		; check back ground event
@@ChkBGround_Back:
@@TOGGLE_2_BACK:
        JumpTo	Check_Timer			; 4ms Timer. unmet 4ms jmp to main_loop
ifdef   @_MELODY_@
	JumpTo	Melody_routine	
endif	
@@melody_back1:
ifdef   @_ChangeNote_@                          ;;\
        page6                                   ;; | 2.4.1999
        mov     a       mpstat                  ;; | ChangeNote
        and     a       #0100b                  ;; |
        caje    #0000b  @@_changeNoteRet           ;;/
        mov	a	mpstat
        and	a	#1011b
        mov	mpstat	a
        jmp	@@_ChangeNote
        
endif
@@_changeNoteRet:
	
	JumpTo	Check_PowerDown			; Power Down Routine
		
	jmp	Main_Loop
	
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
trigger:
        rstc
@@ini_lp:
        mov     a       timer
        and     a       #0010b          ;;wait 4mS
        caje    #0010b          @f            ;;s1
        jmp     @@ini_lp
@@:					;;@@ready_scan:
        rstcf   #0010b
        mov     a       mrx
        page6
        and     a       p2state
        mov     p2state a
        mov     p2      a
ifdef   mrx_2
        mov     a       mrx_2
        page7
        and     a       p6state
        mov     p6state a
        mov     p6      a
endif
        page3
	mov	a	#0111b			;clear key press
	and	a	debocr
	mov	debocr	a
	mov	deboc_count	#0		;clear debounce counter
        page2
        mov     delay8m		#0000b
        mov     s_delay1 	#0000b
        mov     p_delay1        #0000b
        mov	a	delay_flag		;set scan all key flag
	or	a	#1000b
	mov	delay_flag	a
        Jmp	Main_Loop



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;	EZ Command need function
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        
        


;;**********************************************
ifdef @_melody_@
@@chk_mdy1:
        page3
        mov     a       spF             ;; STOP Current Voice
        mov     temp3   a
        call4   @@off_channel           ;; turn-off f-speech
	page3
        mov     spF     #0              ;;

        call4   @@off_melody
                                        ;; dsAD ... move to start_melody(1.11)
        page3
        mov     a       #1101b          ;; disable B-melody
        and     a       call_b1         ;;
        mov     call_b1 a               ;;
        mov     a       en_ret
        or      a       #0010b          ;; enable f-melody return
        and     a       #1110b          ;; disable f-voice return
        mov     en_ret  a               ;;        
	page2
        mov     delay8m #0000b
        ret1
;;**********************************************
@@chk_mdy2:
        page3
        mov     a       bspF            ;; STOP Current Background Voice
        mov     temp3   a
        call4   @@off_channel
	page3
        mov     bspF    #0              ;; turn-off b-speech

        call4   @@off_melody
        page6
        mov     dsAD    #0
        mov     dsEnvDC #0
        mov     rhyF    #0
        mov     fvcnt   #0fh
        page3
        mov     a       #0010b          ;; enable B-melody
        or      a       call_b1         ;;
        mov     call_b1  a              ;;
        mov     a       en_ret
        or      a       #1000b          ;; enable  b-melody return
        and     a       #1011b          ;; disable b-voice  return
        mov     en_ret  a   
	page2
        mov     p_delay1 #0000b
        ret2
;;******* initialize melody playing ok**********
@@melody_start:
	page1
        mov     pause        #0      ;;pause melody
        page3
        mov     a               mpF
        and     a               #0011b
        caje    #0              @f
        mov     a               mpF
        and     a               #1100b
        caje    #1100b	        @f            ;;sn1
        call4   @@HEAD
@@:
_@@mlst_head_ok:
        rstc
        page6
        mov     t_count         #0000b
        mov     mpStat          #0
        mov     resF            #0              ;;\   insert 1.11
        mov     dsAD            #0              ;; |  move from chk_mdy1
        mov     dsEnvDC         #0              ;; |            chk_mdy2 (1.11)
        mov     rhyF            #0              ;; |
        mov     fvcnt           #0fh            ;;/
        page3
        mov     a               mpF
        and     a               #0001b
        caje    #0              _@@mlst_Right	;check left play
        call4   @@melody_load_ch1
	page6
        mov     a               mpStat
        and     a               #0001b
        caje    #0001b          _@@mlst_stop	;check melody play over
        call4   @@melody_load_ch2
_@@mlst_Right:
        page3
        mov     a               mpF
        and     a               #0010b
        caje    #0              @@scankey1
        call4   @@melody_load_ch3
	page6
        mov     a               mpStat
        and     a               #0001b
        caje    #0001b          _@@mlst_stop
        call4   @@melody_load_ch4
        jmp     @@scankey1

_@@mlst_stop:
        page1
        mov     pause        #0
	page3
        mov     a               #1100b
        and     a               mpF
        mov     mpF             a
        mov     a               call_b1
        and     a               #0010b
        caje    #0010b          @f            ;;s1
        nop
        ret1
@@:
;;_@@mlst_stop_bk:
        ret2
endif
;;*****************************************************************
@@chk_voc1:
        page3
        mov     a       spF             ;; STOP Current Voice
        mov     temp3   a
        call4   @@off_channel
	page3
        mov     a       call_b1         ;; if b-melody ON then don't off it.
        and     a       #0010b          ;;
        caje    #0010b		@f            ;;s1          ;;
        call4   @@off_melody            ;;
@@:
	page2
        mov     delay8m #0000b
	page3
        mov     a       en_ret
        or      a       #0001b          ;; enable  f-voice return
        and     a       #1101b          ;; disable f-melody return
        mov     en_ret  a               ;;
        ret1
;;*****************************************************************
@@chk_voc2:
        page3
        mov     a       bspF            ;; STOP Current Background Voice
        mov     temp3   a
        call4   @@off_channel
	page3
        mov     a       call_b1         ;; if b-melody ON then off it.
        and     a       #0010b          ;;
        caje    #0      @f            ;;s1              ;;
        call4   @@off_melody            ;;
@@:
	page3
        mov     a       call_b1
        and     a       #1101b
        mov     call_b1 a
	mov     a       en_ret
        or      a       #0100b          ;; enable  b-voice return
        and     a       #0111b          ;; disable b-melody return
        mov     en_ret  a               ;;
        page2
        mov     p_delay1 #0000b
        ret2
;;*********** initialize speech playing ok ************************

⌨️ 快捷键说明

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