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

📄 ht8xxx.he1.ht83_

📁 use Holtek HT83F60 flash voice MCU edit,function:Play PCM12 Voice ,sentence ,VOL control,Stop voice
💻 HT83_
📖 第 1 页 / 共 2 页
字号:


#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 + -