📄 speechsr.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 + -