📄 ht8xxx.he1.ht83_
字号:
#define IAR0 [00H]
#define R0 [00H]
#define MP0 [01H]
#define ACC [05H]
#define PCL [06H]
#define TBLP [07H]
#define TBLH [08H]
#define WDTS [09H]
#define STATUS [0AH]
#define INTC [0BH]
#define TMR0 [0DH]
#define TMR0C [0EH]
#define TMR1 [010H]
#define TMR1C [011H]
#define PA [012H]
#define PAC [013H]
#define PB [014H]
#define PBC [015H]
#define LATCH0H [018H]
#define LATCH0M [019H]
#define LATCH0L [01AH]
#define PWMCR [026H]
#define VOICEC [026H]
#define PWML [027H]
#define PWMH [028H]
#define VOL [029H]
#define LATCHD [02AH]
#define CF [0AH].0
#define Carry STATUS.0
#define C STATUS.0
#define AC [0AH].1
#define ZF [0AH].2
#define ZERO [0AH].2
#define Z [0AH].2
#define OV [0AH].3
#define PDF [0AH].4
#define TO [0AH].5
#define EMI [0BH].0
#define ETBI [0BH].1
#define ET0I [0BH].2
#define ET1I [0BH].3
#define TBF [0BH].4
#define T0F [0BH].5
#define T1F [0BH].6
#define PA0 [012H].0
#define PA1 [012H].1
#define PA2 [012H].2
#define PA3 [012H].3
#define PA4 [012H].4
#define PA5 [012H].5
#define PA6 [012H].6
#define PA7 [012H].7
#define PB0 [014H].0
#define PB1 [014H].1
#define PB2 [014H].2
#define PB3 [014H].3
#define PWMC [026H].0
#define VROMC [026H].2
LASTPAGE EQU 0700H
;#define DAC VOICEC.1
#define DAC PWMC
#define LATCHC VOICEC.4
#define FAST VOICEC.7
;IF( HT86SYSTEMFREQUENCY == 08000000)
;#DEFINE DELLOOPCNT 5
;ENDIF
;
;IF( HT86SYSTEMFREQUENCY == 06000000)
;#DEFINE DELLOOPCNT 4
;ENDIF
;
;IF( HT86SYSTEMFREQUENCY == 04000000)
;#DEFINE DELLOOPCNT 3
;ENDIF
IF( HT86SYSTEMFREQUENCY == 08000000)
#DEFINE DELLOOPCNT 5
ELSE
IF( HT86SYSTEMFREQUENCY == 06000000)
#DEFINE DELLOOPCNT 4
ELSE
IF( HT86SYSTEMFREQUENCY == 04000000)
#DEFINE DELLOOPCNT 3
ELSE
#DEFINE DELLOOPCNT 3
ENDIF
ENDIF
ENDIF
#DEFINE HT83SYSTEMFREQUENCY HT86SYSTEMFREQUENCY
EXTERN __F_SENTENCE_PLAYING : BIT
EXTERN _PROCESS0_IDLE : BIT
EXTERN _PROCESS0_CHECK : BIT
EXTERN _PROCESS0_TYPE_L : BIT
EXTERN _PROCESS0_TYPE_H : BIT
EXTERN _PROCESS0_ADD_L :BYTE
EXTERN _PROCESS0_ADD_M :BYTE
EXTERN _PLAY_SENTENCE1 :BYTE
EXTERN _PROCESS0_DATA_H :BYTE
EXTERN _PROCESS0_DATA_L :BYTE
EXTERN _PROCESS0_DELAY_L :BYTE
EXTERN _PROCESS0_DELAY_H :BYTE
EXTERN _PLAY_SENTENCE0 :BYTE
EXTERN CONTROLCODE :BYTE
EXTERN _PLAY_SENTENCET :NEAR
;EXTERN __PLAY_SENTENCE :NEAR
EXTERN BACKintch :BYTE
EXTERN PCM1addrCL :BYTE
EXTERN PCM1addrCM :BYTE
EXTERN PCM1addrCH :BYTE
;EXTERN PCM2addrCL :BYTE
;EXTERN PCM1addrOL :BYTE
;EXTERN PCM1addrOH :BYTE
EXTERN DataCode :BYTE
EXTERN VOLTMP :BYTE
EXTERN TRACKNUMBER01 :BYTE
EXTERN TRACKNUMBER02 :BYTE
EXTERN Ch1Xn :BYTE
EXTERN Ch1SPn :BYTE
EXTERN _FVOICEUP :BIT
EXTERN _FSTOP :BIT
EXTERN _FSTANDBY0 :BIT
EXTERN _FPAUSE :BIT
EXTERN _FVOICEDOWN :BIT
;EXTERN f_pwm_dac :BIT
EXTERN f_c_function :BIT
EXTERN _SPECIAL_JUMP_AT_RAMPUP :BIT
EXTERN _BACK_INTC_0 :BIT
extern _filter_ :bit
EXTERN TimeBaseISR_i :NEAR
EXTERN CM__ReadAbyte_i :NEAR
EXTERN CM__MAD4MP6P8msi_i :NEAR
EXTERN CM__MAD4MP6P8msr1_i :NEAR
EXTERN CM__MAD4MP6P8msr2_i :NEAR
EXTERN CM__MAD4MP6P8mstop1_i :NEAR
;EXTERN __s_sys_Routine_in_Main_Loop:NEAR
PUBLIC Ch1VoiceUp
PUBLIC Pvoicedown
#DEFINE FSTANDBY0 _FSTANDBY0
#DEFINE FSTOP _FSTOP
#DEFINE FPAUSE _FPAUSE
#DEFINE FVOICEUP _FVOICEUP
#DEFINE FVOICEDOWN _FVOICEDOWN
FUNCSPEECHINITIAL equ CM__MAD4MP6P8msi_i
SR0ISR equ CM__MAD4MP6P8msr1_i
SR1ISR equ CM__MAD4MP6P8msr2_i
STOPCH equ CM__MAD4MP6P8mstop1_i
ReadAbyteC EQU CM__ReadAbyte_i
TimeBaseISR EQU TimeBaseISR_i
CUECNT EQU Ch1Xn
CUECNT1 EQU Ch1SPn
;------------------------------------------------------------------------------
; MACRONAME : M_SAMPLINGRATE
; INPUT :
; OUTPUT : NONE
; REMARK :
; DESTROY : ACC
;------------------------------------------------------------------------------
SAMPLINGRATE MACRO CHANNEL, M_SR
IF M_SR!=0
IF channel==0
mov a, 0E0h
andm a, [0EH] ; disable counter of channel 1 of timer controller
if (HT83SYSTEMFREQUENCY/M_SR) <= (256*4) ;
mov a, 1H ; /1
orm a, [0EH]
mov a, (!((HT83SYSTEMFREQUENCY/M_SR)>>2))+1 ; 256 - HT83SYSTEMFREQUENCY/4/M_SR
elseif (HT83SYSTEMFREQUENCY/M_SR) <= (256*4*2) ;
mov a, 2H ; /2
orm a, [0EH]
mov a, (!((HT83SYSTEMFREQUENCY/M_SR)>>3))+1 ; 256 - HT83SYSTEMFREQUENCY/4/2/M_SR
elseif (HT83SYSTEMFREQUENCY/M_SR) <= (256*4*4) ;
mov a, 3H ; /3
orm a, [0EH]
mov a, (!((HT83SYSTEMFREQUENCY/M_SR)>>4))+1 ; 256 - HT83SYSTEMFREQUENCY/4/4/M_SR
elseif (HT83SYSTEMFREQUENCY/M_SR) <= (256*4*8) ;
mov a, 4H ; /4
orm a, [0EH]
mov a, (!((HT83SYSTEMFREQUENCY/M_SR)>>5))+1 ; 256 - HT83SYSTEMFREQUENCY/4/8/M_SR
elseif (HT83SYSTEMFREQUENCY/M_SR) <= (256*4*16) ;
mov a, 5H ; /5
orm a, [0EH]
mov a, (!((HT83SYSTEMFREQUENCY/M_SR)>>6))+1 ; 256 - HT83SYSTEMFREQUENCY/4/16/M_SR
elseif (HT83SYSTEMFREQUENCY/M_SR) <= (256*4*32) ;
mov a, 6H ; /6
orm a, [0EH]
mov a, (!((HT83SYSTEMFREQUENCY/M_SR)>>7))+1 ; 256 - HT83SYSTEMFREQUENCY/4/32/M_SR
elseif (HT83SYSTEMFREQUENCY/M_SR) <= (256*4*64) ;
mov a, 7H ; /7
orm a, [0EH]
mov a, (!((HT83SYSTEMFREQUENCY/M_SR)>>8))+1 ; 256 - HT83SYSTEMFREQUENCY/4/64/M_SR
endif
mov [0DH], a
sz _filter_ ; Sampling Rate 1
dec [0EH]
SET [0EH].4
else
; if frequency out of range
Message 'ERROR in sampling rate macro -- Sampling rate out of range!'
endif
endif
endm
_PLAY_SENTENCE MACRO T2,T1,CH,VOL ,filter
IFNB CH
IF CH==1
NOP
ELSE
IFNB T2
MOV A,T2
MOV _PLAY_SENTENCE1,A
ENDIF
IFNB T1
MOV A,T1
MOV _PLAY_SENTENCE0,A
ENDIF
IFNB vol
IF VOL==0
MOV A,0
ENDIF
IF VOL==1
MOV A,22H
ENDIF
IF VOL==2
MOV A,33H
ENDIF
IF VOL==3
MOV A,44H
ENDIF
IF VOL==4
MOV A,55H
ENDIF
IF VOL==5
MOV A,066H
ENDIF
IF VOL==6
MOV A,077H
ENDIF
IF VOL==7
MOV A,088H
ENDIF
MOV voltmp,A
SNZ PWMC
SZ DAC
MOV [29h],A
ENDIF
IFNB filter
IF filter==1
SET _filter_
ELSE
CLR _filter_
ENDIF
ENDIF
SET _FVOICEDOWN
CALL _PLAY_SENTENCET
SET EMI
ENDIF
ENDIF
ENDM
_PLAY_VOICE macro t2,t1,RAMP_D,vol,filter ;speech1 macro t2,t1,RAMP_D,vol,filter
IFNB RAMP_D
IF RAMP_D==1
NOP
ELSE
IFNB vol
IF VOL==0
MOV A,0
ENDIF
IF VOL==1
MOV A,22H
ENDIF
IF VOL==2
MOV A,33H
ENDIF
IF VOL==3
MOV A,44H
ENDIF
IF VOL==4
MOV A,55H
ENDIF
IF VOL==5
MOV A,066H
ENDIF
IF VOL==6
MOV A,077H
ENDIF
IF VOL==7
MOV A,088H
ENDIF
MOV voltmp,A
SNZ PWMC
SZ DAC
MOV [29h],A
ENDIF
;IFNB RAMP_D
; IF RAMP_D==1
SET _FVOICEDOWN
; ELSE
; CLR _FVOICEDOWN
; ENDIF
;ENDIF
IFNB t1
MOV A,T1
MOV TRACKNUMBER01,A
;ELSE
; CLR TRACKNUMBER01
ENDIF
IFNB t2
MOV A,T2
MOV TRACKNUMBER02,A
;ELSE
; CLR TRACKNUMBER02
ENDIF
IFNB filter
IF filter==1
SET _filter_
ELSE
CLR _filter_
ENDIF
ENDIF
CALL FUNCSPEECHINITIAL
SET EMI
ENDIF
ENDIF
; SET TMR0C.4
ENDM
VOLUME macro VOLUME0
MOV a,VOLUME0
AND A,07H
MOV VOLTMP,A
SZ ACC
INC VOLTMP
SWAPA VOLTMP
ORM A,VOLTMP
MOV A,VOLTMP
SZ DAC
MOV VOL,A
ENDM
IFDEF _HOLTEK_C_
PUBLIC __PLAY_SENTENCE
PUBLIC SAMPLINGRATE0
PUBLIC SAMPLINGRATE1
PUBLIC SAMPLINGRATE2
PUBLIC VOLUME0
PUBLIC _PLAY_VOICE0
PUBLIC _PLAY_VOICE1
PUBLIC _PLAY_VOICE2
PUBLIC _PLAY_VOICE3
public PLAY_VOICE_WITH_UP_DOWN0
public PLAY_VOICE_WITH_UP_DOWN1
public PLAY_VOICE_WITH_UP_DOWN2
public PLAY_VOICE_WITH_UP_DOWN3
PUBLIC PLAY_VOICE_WITH_SR_UP_DOWN0
PUBLIC PLAY_VOICE_WITH_SR_UP_DOWN1
PUBLIC PLAY_VOICE_WITH_SR_UP_DOWN2
PUBLIC PLAY_VOICE_WITH_SR_UP_DOWN3
PUBLIC PLAY_VOICE_WITH_SR_UP_DOWN4
PUBLIC PLAY_VOICE_WITH_SR_UP_DOWN5
;PUBLIC _INT_TIMR0
PUBLIC _FUNCCHECKSUM
PUBLIC _STANDBY
PUBLIC _STOP
PUBLIC _STOP0
PUBLIC _CLRRAM
PUBLIC _VOICEDOWN
PUBLIC _VOICEUP
PUBLIC _VOLUME
PUBLIC _VOLUMEDOWN
PUBLIC _VOLUMEUP
PUBLIC __PLAY_VOICE
PUBLIC _CH0_PLAYING
PUBLIC _CH0_WAITTING_FINISH
PUBLIC _PLAY_VOICE_WITH_UP_DOWN
PUBLIC _PLAY_VOICE_WITH_SR_UP_DOWN
PUBLIC _DAC_RAMP_DOWN
PUBLIC _DAC_RAMP_UP
PUBLIC _HT83_INITIALZIATION
PUBLIC _HT86_INITIALZIATION
PUBLIC _SENTENCE_PLAYING
EXTERN _PLAY_SENTENCE2:BIT
EXTERN _PLAY_SENTENCE3:BIT
RAMBANK 0 RAMDATAT1
RAMDATAT1 .SECTION 'DATA'
_PLAY_VOICE0 DB ?
_PLAY_VOICE1 DB ?
SAMPLINGRATE0 DB ?
SAMPLINGRATE1 DB ?
PLAY_VOICE_WITH_UP_DOWN0 DB ?
PLAY_VOICE_WITH_UP_DOWN1 DB ?
PLAY_VOICE_WITH_SR_UP_DOWN0 DB ?
PLAY_VOICE_WITH_SR_UP_DOWN1 DB ?
PLAY_VOICE_WITH_SR_UP_DOWN2 DB ?
PLAY_VOICE_WITH_SR_UP_DOWN3 DB ?
VOLUME0 DB ?
FUNCSAMPLINGRATE0 DB ?
FUNCSAMPLINGRATE1 DB ?
FUNCSAMPLINGRATE2 DB ?
RAMDATAFLAG1 LABEL BYTE
SAMPLINGRATE2 DBIT
_PLAY_VOICE2 DBIT
_PLAY_VOICE3 DBIT
PLAY_VOICE_WITH_SR_UP_DOWN4 DBIT
PLAY_VOICE_WITH_SR_UP_DOWN5 DBIT
PLAY_VOICE_WITH_UP_DOWN2 DBIT
PLAY_VOICE_WITH_UP_DOWN3 DBIT
PROMDATAT1 .SECTION 'CODE'
EXTERN _HT82V733ENABLE:NEAR
EXTERN _HT82V733DISABLE:NEAR
_SENTENCE_PLAYING:
MOV A,0
SZ __F_SENTENCE_PLAYING
SET ACC
RET
__PLAY_VOICE:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -