?? 691speechmodal.s14
字號(hào):
;*========================================================================
;* .SPEECHDATA
;* .SPEECHCONST
;* .SPEECHCODE
;*========================================================================
; .SPEECHDATA
;*========================================================================
RSEG SPEECHDATA
;*========================================================================
.public Speech691_lenResidue
.public Speech691_len
.public Sp691_Speed
.public Sp691_SpeedFlag
.public Sp691_returnValue
.public Sp691_wordTemp
.public Sp691_wordTemp1
.extern gTPOnOffState
.extern _ADCCON1
.extern _IER1
.extern Sp691_volume
.extern DictSysFlag
.extern _DATAx1
.extern _PEDR
.extern _PER
.extern _PIOE
.extern _POG
.extern _PI
.extern _PIR
.extern _SOper1
.extern _oper1
.extern _oper2
.extern _ChanCONx
.extern _ADDRHx
.extern _ADDRMx
.extern _ADDRLx
.extern _CSx
.extern _INCRx
.extern _BK_ADRL
.extern _BK_ADRH
.extern _BK_SEL
.extern _MAC_CON
.extern _BLK_MV
.extern _ISR1
Speech691_lenResidue: BLKB 1
Speech691_len: BLKB 4 ;.equ Speech691_lenResidue+1 ;temp 2 byte
Sp691_Speed: BLKB 1 ; .equ Speech691_len+2 ;temp 1 byte
Sp691_SpeedFlag: BLKB 1 ;.equ Speech691_len+3 ;temp 1 byte
Sp691_returnValue: BLKB 4 ;.equ Speech691_len+4 ;temp 4 byte
Sp691_wordTemp: BLKB 4 ;.equ Speech691_len+9
Sp691_wordTemp1: BLKB 4 ;.equ Speech691_len+13
Sp691_Delay BLKB 1 ;
Sp691_Psrt BLKB 3
Sp691_InitDelay BLKB 3
Sp691_oper1 BLKB 2
Sp691_oper2 BLKB 2
Sp691_Address BLKB 4
Sp691_wordNumber BLKB 3
Sp691_VolumeFlag BLKB 1
CSxSpeDictInd BLKB 1
ADDRHxSpeDictInd BLKB 1
ADDRMxSpeDictInd BLKB 1
ADDRLxSpeDictInd BLKB 1
CSxSpeDict BLKB 1
ADDRHxSpeDict BLKB 1
ADDRMxSpeDict BLKB 1
ADDRLxSpeDict BLKB 1
;*========================================================================
; .SPEECHCONST
;*========================================================================
RSEG SPEECHCONST
;*========================================================================
;* IODEFINE
;*========================================================================
;*****************************端口信息定義*******************************
;------------------------------I/O口定義---------------------------------
; Attention : input and output is at mcu
; PIOE0-3 -> 691 DATA(0-4) input / output
; PIOE4 -> 691 DATA/Control output
; PIOE5 -> 691 OP output
; POG0 -> STROBE output (output) ;0 -> Enable
; POG1 -> R/W output (output) ;0 -> W ; 1 -> R
; POG2 -> RESET output (input) ;0 -> Enable
; PI1-> OUTRDY input (output) ;0 -> Enable
; PI2 -> INRDY input
;************************************************************************
;reset value
PEDR_691_VALUE .equ 00110000b
PER_691_VALUE .equ 11001111b
PIOE_691RESET_VALUE .equ 11111111b
POG_691RESET_VALUE .equ 00000111b
;READ 691 VALUE
PEDR_RD691_VALUE .equ 00110000b
PER_RD691_VALUE .equ 11001111b
;691 INIT VALUE
PIR_INIT_VALUE .equ 00000111b
PEDR_WR691_VALUE .equ 00111111b
PER_WR691_VALUE .equ 11000000b
POG_VALUE .equ 00000111b
;PIOE_691OP_MASK .equ 11011111b
PIOE_691OP_MASK .equ 11111111b
PIOE_691OP_ORMASK .equ 00100000b
;PIOE_691OP_NMASK .equ 11111111b
PIOE_691OP_NMASK .equ 11011111b
;691 sleep state
;PIOE_691SLEEP_VALUE .equ 11111111b
PIOE_691SLEEP_VALUE .equ 11011111b
PI_691SLEEP_VALUE .equ 00000111b
POG_691SLEEP_VALUE .equ 00000111b
;******************************脈沖信號(hào)定義*******************************
RESETL: .equ 0fbh ; -----_--
RESETH: .equ 04h ; _____-__
INRDYL: .equ 0fbh ; -----_--
INRDYH: .equ 04h ; _____-__
OUTRDYL: .equ 0fdh ; ------_-
OUTRDYH: .equ 02h ; ______-_
RWL: .equ 0fdh ; ------_-
RWH: .equ 02h ; ______-_
STROBEL: .equ 0feh ; -------_
STROBEH: .equ 01h ; _______-
;**************************************************************************
;*========================================================================
;* .SPEECHCODE
;*========================================================================
RSEG SPEECHCODE
;*========================================================================
.public _Speech691_initial
.public _Speech691Sleep
EXTERN TRACELP
DEFFN TRACELP(32768,0,4,0)
public SysSpe691Initial
DEFFN SysSpe691Initial(0,0,0,0,32768,0,0,0)
public BellPlay_Flash
DEFFN BellPlay_Flash(0,0,0,0,32768,0,2,0)
public BellPlay_Rom
DEFFN BellPlay_Rom(0,0,0,0,32768,0,4,0)
public Spe691FMMusicPlay_Flash
DEFFN Spe691FMMusicPlay_Flash(0,0,0,0,32768,0,2,0)
public Spe691FMMusicPlay_Rom
DEFFN Spe691FMMusicPlay_Rom(0,0,0,0,32768,0,4,0)
public SysSpeEngPlay
DEFFN SysSpeEngPlay(0,0,0,0,32768,0,3,0)
public SysSpeEngSpell
DEFFN SysSpeEngSpell(0,0,0,0,32768,0,3,0)
public SysSpeGetDlg
DEFFN SysSpeGetDlg(0,0,0,0,32768,0,4,0)
public SysSpe691SetVolume
DEFFN SysSpe691SetVolume(0,0,0,0,32768,0,1,0)
public SysSpe691GetVolume
DEFFN SysSpe691GetVolume(0,0,1,0,32768,0,0,0)
public Pause691Play
DEFFN Pause691Play(0,0,0,0,32768,0,2,0)
;public testcelp
;DEFFN testcelp(0,0,0,0,32768,0,0,0)
public PlaySineWave
DEFFN PlaySineWave(0,0,0,0,32768,0,0,0)
public MidiPlay
DEFFN MidiPlay(0,0,0,0,32768,0,2,0)
extern SysGetKey
DEFFN SysGetKey(32768,0,0,0)
;public SysDownDictSpe
;DEFFN SysDownDictSpe(0,0,0,0,32768,0,4,0)
public SysSetPerformSpeed
DEFFN SysSetPerformSpeed(0,0,0,0,32768,0,1,0)
public SysGetPerformSpeed
DEFFN SysGetPerformSpeed(0,0,1,0,32768,0,0,0)
public SysSetSpe691RomAddress
DEFFN SysSetSpe691RomAddress(0,0,1,0,32768,0,8,0)
public _Speech691Sleep
DEFFN _Speech691Sleep(0,0,0,0,32768,0,0,0)
public Speech691_sendData
DEFFN Speech691_sendData(0,0,1,0,32768,0,1,0)
public _Spe691_ReadRetValue
DEFFN _Spe691_ReadRetValue(0,0,4,0,32768,0,0,0)
public _Speech691_initial
DEFFN _Speech691_initial(0,0,1,0,32768,0,0,0)
public Spe691SendBufData
DEFFN Spe691SendBufData(0,0,1,0,32768,0,4,0)
public Spe691CalcuBuf
DEFFN Spe691CalcuBuf(0,0,1,0,32768,0,0,0)
public SpeSetVolumeFlag
DEFFN SpeSetVolumeFlag(0,0,0,0,32768,0,0,0)
public DelayDlg
DEFFN DelayDlg(0,0,0,0,32768,0,0,0)
public Spe691DlgState
DEFFN Spe691DlgState(0,0,0,0,32768,0,0,0)
public DelayDlg_10ms
DEFFN DelayDlg_10ms(0,0,0,0,32768,0,0,0)
public Spe691_sendData
DEFFN Spe691_sendData(0,0,1,0,32768,0,1,0)
public GameBlkMove
DEFFN GameBlkMove(0,0,1,0,32768,0,12,0)
public SysSpeRomADPCM
DEFFN SysSpeRomADPCM(0,0,1,0,32768,0,4,0)
;*------------------------------------------------------------------------
;* Delay691
;*------------------------------------------------------------------------
#include <DictCtl.h>
;*----------------------------------------------------------------------------------------------------
;* TimeMacroDefine
;*----------------------------------------------------------------------------------------------------
# ifdef _FQ_4M_
# define DELAYERXIT691 3
# define DLGDELAYTIME 34
# endif
# ifdef _FQ_6M_
# define DELAYERXIT691 60
# define DLGDELAYTIME 50
# endif
# ifdef _FQ_8M_
# define DELAYERXIT691 60
# define DLGDELAYTIME 60
# endif
;*==================================================================================================================================
;*函數(shù)名: SysSpeRomADPCM
;*函數(shù)原型: void SysSpeRomADPCM(U32 Dstadr)
;*注釋: no.1 ADPCMMusicAddress
;*==================================================================================================================================
SysSpeRomADPCM:
ldy #0
lda np:PRMBN SysSpeRomADPCM,y
sta np:Sp691_wordTemp1
iny
lda np:PRMBN SysSpeRomADPCM,y
sta np:Sp691_wordTemp1+1
iny
lda np:PRMBN SysSpeRomADPCM,y
sta np:Sp691_wordTemp1+2
iny
lda np:PRMBN SysSpeRomADPCM,y
sta np:Sp691_wordTemp1+3
jsr SysSpeDisableTouchPanel
lda #00000001b
sta _ChanCONx
lda np:Sp691_wordTemp1+3
sta np:_CSx
clc
lda np:Sp691_wordTemp
adc #40
sta np:_ADDRLx
lda np:Sp691_wordTemp+1
adc #0
sta np:_ADDRMx
lda np:Sp691_wordTemp+2
adc #0
sta np:_ADDRHx
lda np:_INCRx
ora #01h
sta np:_INCRx
lda #00000001b
and #00000111b
ora #00100000b
sta _ChanCONx
lda _DATAx1
sta np:Speech691_len
lda _DATAx1
sta np:Speech691_len+1
lda _DATAx1
sta np:Speech691_len+1
lda _DATAx1
sta np:Speech691_len+1
lda np:DictSysFlag+1
and #0fdh
sta np:DictSysFlag+1
lda np:DictSysFlag+3
and #0feh
sta np:DictSysFlag+3
SysSpeRomADPCM_OK:
lda #1
sta np:Sp691_VolumeFlag
jsr _Speech691_initial
jsr SysSpeRomADPCM_Judge
jsr SysSpeEnableTouchPanel
jsr DelayDlg
jsr _Speech691_initial
jsr _Speech691Sleep
rts
SysSpeRomADPCM_Judge:
lda np:Sp691_volume
cmp #10h
bcs SysSpeRomADPCM_SendData_Start
lda #0
rts
SysSpeRomADPCM_SendData_Start:
lda #04
jsr Speech691_sendData
lda #01
jsr Speech691_sendData
SysSpeRomADPCM_Wait:
ldy #0ffh
sty np:Sp691_wordTemp
lda #DELAYERXIT691
sta np:Sp691_wordTemp+1
SysSpeRomADPCM_Wait_Dec:
dey
cpy #0
bne SysSpeRomADPCM_Wait1
dec np:Sp691_wordTemp
bne SysSpeRomADPCM_Wait2
dec np:Sp691_wordTemp+1
bne SysSpeRomADPCM_Wait3
jsr DelayDlg
jsr _Speech691_initial
lda #03
jsr _Speech691Sleep
lda #0
rts
SysSpeRomADPCM_Wait3
ldy #0ffh
sty np:Sp691_wordTemp
SysSpeRomADPCM_Wait2:
ldy #0ffh
SysSpeRomADPCM_Wait1:
lda np:_PI
and #INRDYH
bne SysSpeRomADPCM_Wait_Dec
lda np:Speech691_len
bne SysSpeRomADPCM_SendData
lda np:Speech691_len+1
bne SysSpeRomADPCM_SendData
lda np:Speech691_len+2
bne SysSpeRomADPCM_SendData
lda np:Speech691_len+3
bne SysSpeRomADPCM_SendData
lda #1h
rts
SysSpeRomADPCM_SendData:
lda _DATAx1
sta np:Sp691_wordNumber
lsr a
lsr a
lsr a
lsr a
ora #10h
jsr Speech691_sendData
lda np:Sp691_wordNumber
and #0fh
ora #010h
jsr Speech691_sendData
clc
lda _SOper1
adc #1
sta _SOper1
lda _SOper1+1
adc #0
sta _SOper1+1
sec
lda np:Speech691_len
sbc #1
sta np:Speech691_len
lda np:Speech691_len+1
sbc #0
sta np:Speech691_len+1
lda np:Speech691_len+2
sbc #0
sta np:Speech691_len+2
lda np:Speech691_len+3
sbc #0
sta np:Speech691_len+3
lda np:DictSysFlag+1
and #02
cmp #0
bne SysSpeRomADPCM_End ;_Speech691Play_Stop_Dialog
lda np:DictSysFlag+3
and #01
cmp #0
bne SysSpeRomADPCM_End
jmp SysSpeRomADPCM_Wait1
SysSpeRomADPCM_End:
lda #0ffh
jsr Speech691_sendData
lda #0ffh
jsr Speech691_sendData
jsr DelayDlg
jsr _Speech691_initial
lda #03
jsr _Speech691Sleep
lda #2
rts
;*==================================================================================================================================
;*函數(shù)名: BLKMOVE
;*函數(shù)原型: void BlkMove(U32 Dstadr , U32 Srcadr , U32 Length , U8 flag)
;*注釋: no.1 src , no.2 dst . no.3
;*==================================================================================================================================
GameBlkMove:
lda _oper1 ;dummy ??? lda a zpage var.
lda np:_INCRx
ora #03h
sta np:_INCRx ;Enable no.1 and no.2 increse automatic
;Set auto-access circuit 1
LDA #00000001B ;Step 1: active bit must be ready first
STA _ChanCONx
LDA np:PRMBN GameBlkMove+7 ;Step 2: select the memory types , SrcAddr no.4 byte
and #00000111b
STA np:_CSx ;CH1CSM2/1/0
LDA np:PRMBN GameBlkMove+6 ;Step 3: set the memory address , no.3 byte
STA np:_ADDRHx
LDA np:PRMBN GameBlkMove+5 ;
STA np:_ADDRMx
LDA np:PRMBN GameBlkMove+4
STA np:_ADDRLx
LDA #00100000B
ora _ChanCONx
STA _ChanCONx ;Step 4: write the address from buffers to internal registers
;Set auto-access circuit 2
LDA #00000010B ;Step 1: active bit must be ready first
STA _ChanCONx
LDA np:PRMBN GameBlkMove+3 ;Step 2: select the memory types , SrcAddr no.4 byte
asl np:PRMBN GameBlkMove+3
asl np:PRMBN GameBlkMove+3
asl np:PRMBN GameBlkMove+3
and #00111000b
STA np:_CSx ;CH2CSM2/1/0
LDA np:PRMBN GameBlkMove+2 ;Step 3: set the memory address , no.3 byte
STA np:_ADDRHx
LDA np:PRMBN GameBlkMove+1 ;
STA np:_ADDRMx
LDA np:PRMBN GameBlkMove
STA np:_ADDRLx
LDA #00100000B
ora _ChanCONx
STA _ChanCONx ;Step 4: write the address from buffers to internal registers
;Calculate the last byte ptr = Dstptr + length
clc
lda np:PRMBN GameBlkMove+4
adc np:PRMBN GameBlkMove+8
sta np:PRMBN GameBlkMove+8
lda np:PRMBN GameBlkMove+5
adc np:PRMBN GameBlkMove+9
sta np:PRMBN GameBlkMove+9
lda np:PRMBN GameBlkMove+6
adc np:PRMBN GameBlkMove+10
sta np:PRMBN GameBlkMove+10
lda np:PRMBN GameBlkMove+7
adc np:PRMBN GameBlkMove+11
sta np:PRMBN GameBlkMove+11
;Set auto-access circuit 3
LDA #00000100B ;Step 1: active bit must be ready first
STA _ChanCONx
LDA np:PRMBN GameBlkMove+11 ;Step 2: select the memory types , SrcAddr no.4 byte
asl np:PRMBN GameBlkMove+11
asl np:PRMBN GameBlkMove+11
asl np:PRMBN GameBlkMove+11
asl np:PRMBN GameBlkMove+11
asl np:PRMBN GameBlkMove+11
asl np:PRMBN GameBlkMove+11
and #11000000b
STA np:_CSx ;CH3CSM1/0
LDA np:PRMBN GameBlkMove+10 ;Step 3: set the memory address , no.3 byte
STA np:_ADDRHx
LDA np:PRMBN GameBlkMove+9 ;
STA np:_ADDRMx
LDA np:PRMBN GameBlkMove+8
STA np:_ADDRLx
LDA #00100000B
ora _ChanCONx
STA _ChanCONx ;Step 4: write the address from buffers to internal registers
LDA #00H
STA np:_MAC_CON ;MACCON Select Block Move mode
;LDA #01H
;STA 23ah ;BKV_MAC Start Block Move
lda np:_BLK_MV
ora #01h
sta np:_BLK_MV
nop ;waiting for blockmove over
nop
BKV_Loop:
LDA np:_ISR1
AND #00001000B ;*ISR1.3=BKMVFlg
BEQ BKV_Loop
LDA #11110111B
STA np:_ISR1
lda np:_INCRx
and #11111100b
sta np:_INCRx ;Disable no.1 and no.2 increse automatic
rts
;*************************************************************************
;*函數(shù)名: Spe691DlgPlay
;*說(shuō)明:
;*輸入?yún)?shù): U16 SLength 播放語(yǔ)音數(shù)據(jù)的長(zhǎng)度
;* U8* SAddress 語(yǔ)音數(shù)據(jù)堆棧地址
;*返回值: void
;*修改歷史:
;* 姓名 日期 說(shuō)明
;* ----- ---- ----
;*************************************************************************
Spe691SendBufData:
;ldy #0
;lda np:PRMBN Spe691DlgPlay,y
;brk
ldy #0
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -