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

📄 lspeech_demo.asm

📁 语音处理
💻 ASM
字号:
;;/////////////////////////////////////////////////////////////////
;;/////////////////////////////////////////////////////////////////
;;	This is a demo program for single ROM Bodies.
;;
;;  (For JA21003-JA21018, JA23048 and JA23060)
;;
;;
;;		General Function:
;;
;;			PWM Mode
;;
;;			I/O--
;;				1. PB are direct inputs
;;				2. PA are outputs
;;			Sound--
;;				1. PB0 plays speech1
;;				2. PB1 plays speech2
;;				3. PB2 stops sound
;;		
;;
;;		Interrupt Used:
;;				Timer0 -->  play speech
;;				1mS    -->  keyscan and melody envelop slop
;;		
;;						Date: 2004/04/12
;;/////////////////////////////////////////////////////////////////
;;/////////////////////////////////////////////////////////////////

;;==========================================
;; H A R D W A R E     S E T T I N G S
;; D A T A    A L L O C A T E
;;==========================================
	.INCLUDE	INH/LHardware.inh
	.INCLUDE	INH/JazMacroLib.inh
	.INCLUDE	LSpeech_Demo.IDX

;;==========================================
;;	P R O G R A M    S T A R T
;;==========================================
		ORG		PROG_START

;;=========================================
;;	J A Z T E K    M O D U L E S
;;=========================================		      
		.INCLUDE	Module/KeyIn.asm 
		.INCLUDE	Module/KeyAction.asm
		.INCLUDE	Module/LSpeech.asm

;;=========================================
;;	P R O G R A M    S T A R T    H E R E 
;;=========================================		      
V_START:

		LDA		#$80
		STA		D_DA1
		STA		D_DA2
		
	M_HardwareInitial        

;;--------------------------------
;;	Set the Stack pointer to $FF
;;--------------------------------
	M_InitialStackPoint

;;------------------------------
;;	CLEAR ALL RAM
;;------------------------------
	M_ClearRAM

;;------------------------------
        LDA     #$00
        STA     D_PAC			;; Set PA0-PA7 as Output
        STA		D_PAR
        STA     D_PA         

        LDA     #$FF
        STA     D_PBR			;; Set PB pull-hi resister enable
        STA     D_PBC			;; Set PB0-PB7 as Input

		LDA		#$0F
        STA		R_KeySet

		LDA		R_Maflag		;; Set PWM mode
		ORA		#B_Pwm
		STA		R_Maflag
		
		LDA		#$80
		STA		R_Dac0Buf
		
	M_Enable1msInt				;; Enable 1ms interrupt

;;**********************************************
;;	M O N I T O R    L O O P
;;**********************************************
F_MainLoopService:		
		JSR		F_Wait1msInt
		JSR		F_KeyIn
		JSR		F_UserProgram
		JMP		F_MainLoopService

;;**********************************************
;;**********************************************
F_Wait1msInt:

		LDA		R_SystemFlag
		AND		#B_Hardware1mS
		BEQ		F_Wait1msInt
		RTS

;;==============================================
F_UserProgram:

L_ChkHaltDelay:	
		LDA		R_SystemFlag
		AND		#B_Delay80mS
		BEQ		L_ChkKeyChange
		JSR		F_HaltDelay

L_ChkKeyChange:
		LDA		R_SystemFlag		
		AND		#B_KeyChange
		BEQ		L_ChkCh1Play
		
L_KeyChanged:
		LDA		R_SystemFlag
		AND		#%11100101
		STA		R_SystemFlag
		JSR		F_KeyAction

;;-----------------------------------------
L_ChkCh1Play:

		M_TestCh1Playing	;; C=1 --> Ch1 is playing
		BCC		L_NoPlay

		RTS

	L_NoPlay:
		LDA		R_SystemFlag      
		AND		#B_Delay80mS
		BNE		L_ChkDelayEnd
		
		LDA		R_SystemFlag      
		ORA		#B_Delay80mS
		STA		R_SystemFlag
		
		LDA		#80
		STA		R_DelayCnt
		RTS

;;-----------------------------------
L_ChkDelayEnd:
		LDA		R_SystemFlag
		AND		#B_DelayOK
		BNE		L_DelayOK
		RTS

L_DelayOK:		
		LDA		R_SystemFlag
		AND		#%11100111
		STA		R_SystemFlag

F_Sleep:
		LDA		D_PB

        LDA 	#B_PbI
        STA 	D_INTC

        LDA 	#B_PowerHalt+B_PowerStop
        STA 	D_POWERC

        NOP
        NOP
        NOP

		LDA		#$80
		STA		D_DA1
		STA		D_DA2
		STA		R_Dac0Buf
		
        LDA		#0
        STA		D_INTC

		M_Enable1msInt			;; Enable 1ms interrupt

		JMP 	F_MainLoopService

;;=====================================================
;;	Function: F_HaltDelay
;;		to check key and debounce again before "sleep"
;;=====================================================
F_HaltDelay:
		DEC		R_DelayCnt
		BNE		L_HaltDelayOut

		LDA		R_SystemFlag
		ORA		#B_DelayOK	
		STA		R_SystemFlag

L_HaltDelayOut:
		RTS		

;;======================================================
;;	I N T E R R U P T    S E R V I C E    R O U T I N E
;;======================================================
V_IRQ:
		SEI
		PHA
		TXA
		PHA

;;------------------------------
L_ChkTMR0Int:		
		LDA     D_INTF            
    	AND     #B_Tmr0F			;; check TMR0F(B1)
    	BEQ     L_ChkTMR1Int

		M_Tmr0IntSpeech
;;------------------------------
L_ChkTMR1Int:		
;		LDA     D_INTF            
;    	AND     #B_Tmr1F			;; check TMR1F (B2)
;    	BEQ     L_Chk1msInt

;		M_Tmr1IntMelody
;;------------------------------
L_Chk1msInt:	
		LDA		D_INTF
		AND		#B_1msF				;; check 1msF (B6)
		BEQ		L_IntfOut
		
		M_1msInt
;;------------------------------
L_IntfOut:
		LDA		D_INTF
		BNE		L_ChkTMR0Int
    	
    	PLA
    	TAX
    	PLA
    	CLI
    	RTI

;;=========================================
;;	V E C T O R     T A B L E
;;=========================================		      
		ORG		$FFFC
		DW		V_START
		DW		V_IRQ
		
;;*****************************************
;;	E N D    O F    P R O G R A M
;;*****************************************

	
      
     

⌨️ 快捷键说明

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