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

📄 speechsr.asm

📁 语音录放(单片机),用ASM实现.含压缩算法
💻 ASM
字号:
;************************************************************************
;*  Name:     SpeechSR.ASM to EPG3231 body
;*  Company:  ELAN MICROELECTRONICS CORP.
;*  Crystal:  32768 Hz
;*  Designer: Knight kuo    Date:2006/03/09
;Modify : gates.zhong 2006/5/29
;************************************************************************
INCLUDE	"EPG3231.H"
INCLUDE	"Constant.H"
INCLUDE	"ADPCM0509.H"

;  ---  come from Adpcm.obj
EXTERN	DecodeStart, AdpcmDecode,EncodeStart, AdpcmEncode
;  ---  come from MX1605A.asm
EXTERN	IniSPI, SendSPI, ChipErase, SecErase, ReadWIP, SetStaReg
EXTERN	ReadFlash, WriteAddr, DataRW, WriteEn, WriteDi, IncAddr
;
ResetSEG	CSEG	0x00
	LJMP	MSTART	;(0X00) Initialize
	SJMP	IPAINT	;(0X02) Input Port And Touch Panel Interrupt
	NOP
	LJMP	CAPINT	;(0X04) Capture Input Interrupt
	SJMP	SPHINT	;(0X06) Speech Timer Interrupt
	NOP
	SJMP	TMRINT	;(0X08) Timer-0,1,2 Interrupt
	NOP
	SJMP	PERIPH	;(0X0A) Peripheral Interrupt
	NOP
SphTabSeg	CSEG	0x20
PgmSEG	CSEG	0x100
;  ===  Port A input interrupt routine
IPAINT:
	CLR	PAINTSTA
	RETI
;  ===  Capture Input Interrupt
CAPINT:
	BC	INTSTA,CPIF
	RETI
;  ===  Speech Timer Interrupt
SPHINT:
	PUSH
	BC	SPHTCON,SPHTI

 	MOV	A,PRODH
	XOR	A,#0X80
	MOV	SPHDR,A

	POP
	RETI
;  ===  Timer-0,1,2 Interrupt
TMRINT:
	JBS	INTSTA,TMR2I,JTim2Int	;To timer2 int. routine.
	JBS	INTSTA,TMR1I,JTim1Int	;To timer1 int. routine.
	BC	INTSTA,TMR0I
	RETI
;  ***  Timer 2 interrupt routine
JTim2Int:
	BC	INTSTA,TMR2I
	BS	ADCON,ADEN		;AD enable
	RETI
;  ***  Timer 1 interrupt routine
JTim1Int:
	BC	INTSTA,TMR1I
	RETI
;  ===  Peripheral Interrupt
PERIPH:
;  ---  AD Interrupt routine
	BC	INTSTA,ADIF
	MOVRP	PRODH,ADOTH
 MOV A,PRODH
;;;;;;;	BS	ADCON,ADEN	;AD enable	
	RETI
;  ---  Check SPI Interrupt routine
IChkSPI:
	BC	SPISTA,SRBFI
	RETI
;***************************************
;Function : Change fast mode freq.
;Input parameter : A <= PLL number
;output parameter : none
;***************************************
ENTER_PFS:
	JLE	A,#183,Q_PFSdown
PFS_Stable:
	BC	CPUCON,MS0
	BS	CPUCON,PEN
	MOV	PFS,A
	MOV	A,#82		;Delay 5ms
	RPT	ACC
	NOP
	BS	CPUCON,MS0
	BC	CPUCON,PEN
	RET
Q_PFSdown:
	MOV	PFS,A
	RET
;  ===  Speech initial routine
;  ---  Check DAC or PWM code option
SpeechIni:

	BC	FDAOUT/16,FDAOUT%16 ;0:DAC 1:PWM output

	RET
;*********************************************
;*  Main program start
;*********************************************
MSTART:
	BC	CPUCON,GLINT	;Di. all un-mask interrupt.
	CLR	STKPTR		;Stack reset 00
;  ---  EPG3231 I/O setting
	BC	STBCON,REN	;PA pull-up
	MOV	A,#0xFF
	CLR	DCRB		;PB output
	MOV	PORTB,A
	BC	xREC/16,xREC%16	;Record control
	CLR	DCRC		;PC output
	MOV	PORTC,A

;  ---  Change Fast mode frequency
	MOV	A,#cPFS		;8MHZ
	LCALL	ENTER_PFS

;  ---  Initial A/D setting
	MOV	A,#cADCF		;FA/D==999K
	MOV	ADCF,A          	
	MOV	A,#00000100b	;B6VRS:in. & Diff.
	MOV	ADCON,A		;ADIN5
	BS	ADOTL,FSS		;A/D clock source is from Fpll/2
	BS	INTCON,ADIE	;A/D int. enable
;  ---  Timer 2 & Speech Timer setting
	MOV	A,#cTR2CON
	MOV	TR2CON,A
	BS	SFCR,SPHSB	;Speech channel
	CLR	SPHTCON		;Speech Timer=1/4Mz x (DIPSW)
	MOV	A,#00000111b	;D/A output control by speeech timer
	MOV	VOCON,A
	BS	CPUCON,GLINT	;En. all un-mask interrupt.
;/*
ToSpeech16K:
;  ---  Speech timer 32K
	MOV	A,#cSPT32K%0x100
	MOV	SPHTRL,A
	MOV	A,#cSPT32K/0x100
	MOV	SPHTCON,A
;  ---  Timer2 16K
	MOV	A,#cADT16K
	MOV	TRL2,A
;*/
/*
ToSpeech12K:
;  ---  Speech timer 24K
	MOV	A,#cSPT24K%0x100
	MOV	SPHTRL,A
	MOV	A,#cSPT24K/0x100
	MOV	SPHTCON,A
;  ---  Timer2 12K
	MOV	A,#cADT12K
	MOV	TRL2,A
*/
/*	
ToSpeech9K6:
;  ---  Speech timer 19.2K
	MOV	A,#cSPT19K%0x100
	MOV	SPHTRL,A
	MOV	A,#cSPT19K/0x100
	MOV	SPHTCON,A
;  ---  Timer2 9.6K
	MOV	A,#cADT9K
	MOV	TRL2,A	
*/	
/*	
ToSpeech8K:
  ---  Speech timer 16K
	MOV	A,#cSPT16K%0x100
	MOV	SPHTRL,A
	MOV	A,#cSPT16K/0x100
	MOV	SPHTCON,A
;  ---  Timer2 8K
	MOV	A,#cADT8K
	MOV	TRL2,A	
*/

 SCALL	VO_On

	BS	ADCON,ADEN	;AD enable
 BS TR2CON,T2EN	
 BS INTCON,TMR2IE
 BC INTSTA,TMR2I
 BS CPUCON,GLINT		
MainLoop1:

 nop
 nop	
	SJMP	MainLoop1
;*****************************************************
;Function : Voice turn-on
;Input parameter :  ADCODE
;Output parameter : SPHDR
;*****************************************************
VO_On:
	BS	SPHTCON,SPHTIE		;En. speech timer int.
	BS	SPHTCON,SPHTEN		;En. speech timer
	BS	VOCON,VOEN		;En. Voice output
	MOV	A,ADCODE

	RET

⌨️ 快捷键说明

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