📄 et83x432_codec.inc
字号:
Mov CodecData,A
Call Write_Codec_Data
Mov A,#0x25 ;LPF Parameters Table
Mov CodecAddress,A
Mov A,#0x02
Mov CodecData,A
Call Write_Codec_Data
Mov A,#0x26 ;LPF Parameters Table
Mov CodecAddress,A
Mov A,#0xF9
Mov CodecData,A
Call Write_Codec_Data
Mov A,#0x27 ;LPF Parameters Table
Mov CodecAddress,A
Mov A,#0xF7
Mov CodecData,A
Call Write_Codec_Data
Mov A,#0x28 ;LPF Parameters Table
Mov CodecAddress,A
Mov A,#0x7B
Mov CodecData,A
Call Write_Codec_Data
Mov A,#0x29 ;LPF Parameters Table
Mov CodecAddress,A
Mov A,#0xFB
Mov CodecData,A
Call Write_Codec_Data
Mov A,#0x2A ;LPF Parameters Table
Mov CodecAddress,A
Mov A,#0xA8
Mov CodecData,A
Call Write_Codec_Data
Mov A,#0x2B ;LPF Parameters Table
Mov CodecAddress,A
Mov A,#0x26
Mov CodecData,A
Call Write_Codec_Data
Mov A,#0x2C ;LPF Parameters Table
Mov CodecAddress,A
Mov A,#0xC6
Mov CodecData,A
Call Write_Codec_Data
Mov A,#0x2D ;LPF Parameters Table
Mov CodecAddress,A
Mov A,#0x45
Mov CodecData,A
Call Write_Codec_Data ;these parameter is not changed by user
RET ;ENCODE AND DECODE SET SAME END
;*****************************************************************************************
;*****************************************************************************************
SILENCE_CODE:
MOV A,#0X00 ;FIFO ACCESSING WINDOW 1(FW1)
MOV CodecAddress,A ;SILENT CODE BLOCK FF 93 00 00 01 FF 7F
MOV A,#0XFF ;FF
MOV CodecData,A
CALL Write_Codec_Data
MOV A,#0X93 ;93
MOV CodecData,A
CALL Write_Codec_Data
MOV A,#0X00 ;00
MOV CodecData,A
CALL Write_Codec_Data
MOV A,#0X00 ;00
MOV CodecData,A
CALL Write_Codec_Data
MOV A,#0X01 ;01
MOV CodecData,A
CALL Write_Codec_Data
MOV A,#0XFF ;FF
MOV CodecData,A
CALL Write_Codec_Data
MOV A,#0X7F ;7F
MOV CodecData,A
CALL Write_Codec_Data
RET
;*****************************************************************************************
;*****************************************************************************************
SET_HEADPHONE_GAIN:
Mov A,#0x55 ;HEADPHONE GAIN CONTROL LEFT-CHANNEL
Mov CodecAddress,A
Mov A,#0X74//D_55//#0x00// ;D_55==0XAF
Mov CodecData,A
Call Write_Codec_Data
Mov A,#0x56 ;HPGCR
Mov CodecAddress,A
Mov A,#0X74//D_56//#0x00//79 ;0DB
Mov CodecData,A
Call Write_Codec_Data
RET
;*****************************************************************************************
;*****************************************************************************************
VOL_MUTE: ;SET VOLUME TO MUTE
Mov A,#0x0C ;DIGITAL GAIN CONTROL 1
Mov CodecAddress,A ;XX DGC1
Mov A,#0x00 ;1~63(-47dB~+15dB)
Mov CodecData,A ;0=DIGITAL MUTE
Call Write_Codec_Data ;48=0dB
Mov A,#0x0D ;DIGITAL GAIN CONTROL 2
Mov CodecAddress,A
Mov A,#0x00
Mov CodecData,A
Call Write_Codec_Data
RET
;*****************************************************************************************
;*****************************************************************************************
VOL_SET:
mov A,Volval ;direct address
SUB A,VolNow ;A<---VolNow-A
JBC STATUS,C,VolNowINC ;VolNow<Volval < C=0 > C=1
JBS STATUS,Z,VOL_SET_END ;VolNow=Volval
CALL VolNowDEC ;VolNow>Volval
VOL_SET_END:
RET
;*****************************************************************************************
;*****************************************************************************************
VolNowINC:
INC VolNow
NOP
Call VolChange
JMP VOL_SET_END
;*****************************************************************************************
;*****************************************************************************************
VolNowDEC:
DEC VolNow
NOP
Call VolChange
RET
;*****************************************************************************************
;*****************************************************************************************
VolChange:
Mov A,#0x0C
Mov CodecAddress,A
Mov A,VolNow
Mov CodecData,A
Call Write_Codec_Data
Mov A,#0x0D
Mov CodecAddress,A
Mov A,VolNow
Mov CodecData,A
Call Write_Codec_Data
RET
;*****************************************************************************************
;*****************************************************************************************
StartCodecDecode:
Mov A,#0x06 ;(CC)CODEC CONTROL
Mov CodecAddress,A ;XXCR FR SLEEP PI CA CM 0=no action 1=reset
Mov A,#0x0B//8B ;0000 1011 ;PI=POLARITY OF INTERRUPT 0==reducing 1==rising edge
Mov CodecData,A ;CA=code action 0=stop the codec engine 1=start
Call Write_Codec_Data ;CM=code mode 0=encoder 1=decoder
Ret ;sleep 0=power down 1=normal
;*****************************************************************************************
;*****************************************************************************************
StartCodecEncode:
Mov A,#0x06
Mov CodecAddress,A
Mov A,#0x0A ;0000 1010 SLEEP=1 WORK ,PI=0 HIGH TO LOW
Mov CodecData,A
Call Write_Codec_Data
Ret
;*****************************************************************************************
;*****************************************************************************************
StopCodecDecode:
Mov A,#0X06
Mov CodecAddress,A
Mov A,#0X01 ;0000 0001
Mov CodecData,A
Call Write_Codec_Data
RET
;*****************************************************************************************
;*****************************************************************************************
StopCodecEncode:
Mov A,#0x06
Mov CodecAddress,A
Mov A,#0x00
Mov CodecData,A
Call Write_Codec_Data
RET
;*****************************************************************************************
;*****************************************************************************************
Soft_ResetCodec:
Mov A,#0x06
Mov CodecAddress,A
Mov A,#0x30 ;0011 0000 chip reset FIFO reset
Mov CodecData,A
Call Write_Codec_Data
call delay_30ms
Mov A,#0x00 ;stop both decoder and encoder
Mov CodecData,A
Call Write_Codec_Data
RET
;*****************************************************************************************
;*****************************************************************************************
SLEEP_MODE: ;0000 1111
Mov A,#0x06
Mov CodecAddress,A
Mov A,#0x0F ;SLEEP PI CA CM
Mov CodecData,A
Call Write_Codec_Data
RET
;*****************************************************************************************
;*****************************************************************************************
CLEAR_FIFO:
Mov A,#0x06
Mov CodecAddress,A
Mov A,#0x1F ;FIFO reset
Mov CodecData,A
Call Write_Codec_Data
RET
;*****************************************************************************************
;*****************************************************************************************
CLEAR_FIFO_END: ;stop FIFO reset
Mov A,#0x06
Mov CodecAddress,A ;
Mov A,#0x0F ; normal;rising;ation;decoder
Mov CodecData,A ;
Call Write_Codec_Data
RET
;*****************************************************************************************
Read_Codec_Data: ;
CALL WRITE_ADDRESS
CALL READ_DATA
RET
;*****************************************************************************************
;*****************************************************************************************
Write_Codec_Data:
CALL WRITE_ADDRESS
CALL WRITE_DATA
RET
;*****************************************************************************************
;*****************************************************************************************
WRITE_DATA:
MOV A,CodecData
MOV CodecDataPort,A
BC CodecCSnP,CodecCSn
BC CodecRWnP,CodecRWn
BC CodecADnP,CodecADn
Call DELAY_240nS ;DELAY 240nS
BS CodecADnP,CodecADn
BS CodecRWnP,CodecRWn
BS CodecCSnP,CodecCSn
RET
;*****************************************************************************************
;*****************************************************************************************
READ_DATA: ;data read cycle
MOV A,#0xFF ;MCU input
MOV CodecDataPortIO,A
BC CodecCSnP,CodecCSn
BC CodecADnP,CodecADn ;1=address 0=data
Call DELAY_240nS ;delay 240nS
MOV A,CodecDataPort ;portD
MOV CodecData,A ;CodecData EQU OX32
BS CodecADnP,CodecADn
BS CodecCSnP,CodecCSn
RET
;*****************************************************************************************
;*****************************************************************************************
WRITE_ADDRESS:
Clr CodecDataPortIO ;address write cycle
BS CodecADnP,CodecADn ;I/O control of portD output
MOV A,CodecAddress ;
MOV CodecDataPort,A
BC CodecCSnP,CodecCSn ;chip select port,cs==0
BC CodecRWnP,CodecRWn ;1=read 0=write
Call DELAY_240nS ;delay 240nS
BS CodecRWnP,CodecRWn ;
BS CodecCSnP,CodecCSn
RET
;*****************************************************************************************
;*****************************************************************************************
CodecReadFiFo:
Mov A,#0
Mov CodecAddress,A ;Address = 0
Call Read_Codec_Data
RET
;*****************************************************************************************
CodecWriteFiFo:
Mov A,#0
Mov CodecAddress,A ;Address = 0
Call Write_Codec_Data
RET
;*****************************************************************************************
;*****************************************************************************************
CodecReadFiFoCount:
Mov A,#2
Mov CodecAddress,A ;Address = 2
Call Read_Codec_Data
RET
;*****************************************************************************************
;*****************************************************************************************
CodecBasicWrite:
BC CodecCSnP,CodecCSn
BC CodecRWnP,CodecRWn
Call DELAY_240nS ;240nS
BS CodecRWnP,CodecRWn
BS CodecCSnP,CodecCSn
Ret
DELAY_240nS: ;400 nS
NOP
NOP
NOP
NOP
; NOP
; NOP
; NOP
; NOP
RET
;*****************************************************************************************
;*****************************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -