i2c.hed
来自「根据I2C协议传输的源代码」· HED 代码 · 共 1,490 行 · 第 1/5 页
HED
1,490 行
MOV A, 98H ; TURN ON TMR0
MOV [0EH], A ; [0EH] : TMR0C
RET
_SAMPLINGRATE0:
MOV A, SAMPLINGRATE0
MOV [10H], A ; [0DH] : TMR0L
MOV A, SAMPLINGRATE1
MOV [0FH], A ; [0CH] : TMR0H
MOV A, 98H ; TURN ON TMR0
MOV [11H], A ; [0EH] : TMR0C
RET
_STANDBY:
_CH0_PLAYING:
CLR ACC
SNZ FSTANDBY
RET
SET ACC.0
; SZ ACC.0
; CLR FSTANDBY
RET
_STANDBY1:
_CH1_PLAYING:
CLR ACC
SNZ FSTANDBY2
RET
SET ACC.0
; SZ ACC.0
; CLR FSTANDBY2
RET
_STOP:
SET FSTOP
RET
;------------------------------------------------------------------------------
; FUNCTION : F_CHECKSUM
; INPUT : NONE
; OUTPUT : NONE
; REMARK :
; DESTROY : ACC, TBLP, INTC, MP0, [0FFH], [0FEH]
;------------------------------------------------------------------------------
FUNCCHECKSUM:
_FUNCCHECKSUM:
_HT86_INITIALZIATION:
CLR WDT
SET VOICEC.2
CLR INTC.0
CLR [0FCH] ; TURN OFF ALL INTS
CLR [0FDH] ; TURN OFF ALL INTS
CLR [0FEH] ; TURN OFF ALL INTS
CLR [0F6H]
MOV A, 10H ;
MOV [0FFH], A ; SET [30H] TO LOOP COUNTER 10H
;----------------------------------------------------------------------
; REMARK : ACCUMULATE VROM DATA FROM 000000H TO 00000FH AND STORE IN [31H]
;----------------------------------------------------------------------
CALL FUNCREADBYTE ; READ ONE VROM BYTE
ADDM A, [0F6H] ; ACCUMULATE VROM BYTE TO [31H]
SDZ [0FFH] ; DECREMENT LOOP COUNTER
JMP $-3
MOV A, [0F6H] ;
;ADDM A,[30H]
XOR A, VOICEHED ; CHECK IF MATCH VOICE_HEAD?
SZ ACC ;
JMP FUNCCHECKSUM ; IF CHECKSUM NOT MATCHED, THEN REPEAT.
CLR [0F6H] ; CLEAR [31H]
SET FSTANDBY
SET FSTANDBY2
RET
;------------------------------------------------------------------------------
; FUNCTION : CLRRAM
; INPUT : NONE
; OUTPUT : NONE
; REMARK :
; DESTROY : ACC, MP0
;------------------------------------------------------------------------------
CLRRAM:
_CLRRAM:
MOV A,30H
MOV MP0,A
CLR WDT
CLR R0
SIZ MP0
JMP $-3
RET
;------------------------------------------------------------------------------
; FUNCTION : VOLUMPUP
; INPUT : NONE
; OUTPUT : NONE
; REMARK :
; DESTROY :
;
;------------------------------------------------------------------------------
VOLUMEUP:
_VOLUMEUP:
MOV A,20H
ADDM A,VOLTMP
MOV A,VOLTMP
SZ CARRY
MOV A,0FFH
MOV VOL,A
MOV VOLTMP,A
RET
;------------------------------------------------------------------------------
; FUNCTION : VOLUMEDOWN
; INPUT : NONE
; OUTPUT : NONE
; REMARK :
; DESTROY :
;
;------------------------------------------------------------------------------
VOLUMEDOWN:
_VOLUMEDOWN:
MOV A,0E0H
ADDM A,VOLTMP
MOV A,VOLTMP
SNZ CARRY
MOV A,020H
MOV VOL,A
MOV VOLTMP,A
RET
;------------------------------------------------------------------------------
; FUNCTION : INITTIMEBASE
; INPUT : NONE
; OUTPUT : NONE
; REMARK : 1MS FLAG SET
; DESTROY : TMR3, TMR3C, ACC , INTCH.1 , INTCH.5
;
;------------------------------------------------------------------------------
INITTIMEBASE:
_INITTIMEBASE:
CLR TMR3C
IFDEF RTC
MOV A,0FEH
MOV TMR3L,A
MOV A,9BH
ELSE
IF( HT86SYSTEMFREQUENCY==04000000)
MOV A,255-125
MOV TMR3L,A
MOV A,9AH
ENDIF
IF( HT86SYSTEMFREQUENCY==06000000)
MOV A,255-188
MOV TMR3L,A
MOV A,9AH
ENDIF
IF( HT86SYSTEMFREQUENCY==08000000)
MOV A,255-125
MOV TMR3L,A
MOV A,9BH
ENDIF
ENDIF
MOV TMR3C,A
SET INTCH.1
; SET EMI
RET
_PLAY_VOICE:
; PLAY_VOICE(INT TRK, BIT CH)
MOV A, PLAY_VOICE0
SZ PLAY_VOICE1
MOV TRACKNUMBER2, A
SNZ PLAY_VOICE1
MOV TRACKNUMBER, A
;MOV A,50H
;ANDM A,VDSSTATUSFLAG
MOV A,51H
ANDM A,VDSSTATUSFLAG
MOV A,03H
ANDM A,TFLAG4
CLR FCHANNELNO
SZ PLAY_VOICE1
SET FCHANNELNO
SET FVOICEDOWN
SNZ DAC
SET FVOICEUP
CALL FUNCSPEECHINITIAL
SZ PLAY_VOICE1
SET TMR1C.4
SNZ PLAY_VOICE1
SET TMR0C.4
RET
_STOP1:
; CLR TMR1C.4
; CLR INTC.3
SZ fstandby
JMP Voicedown
SET FSTOP2
SET fstandby2
RET
_STOP0:
; CLR TMR0C.4
; CLR INTC.2
SZ fstandby2
JMP Voicedown
SET fstandby
SET FSTOP1
RET
IF( HT86SYSTEMFREQUENCY == 08000000)
#DEFINE DELLOOPCNT 5
ENDIF
IF( HT86SYSTEMFREQUENCY == 06000000)
#DEFINE DELLOOPCNT 4
ENDIF
IF( HT86SYSTEMFREQUENCY == 04000000)
#DEFINE DELLOOPCNT 3
ENDIF
; TOTAL 78 INST.
voiceup2:
mov a,80h
xor a,dah
sz zero
jmp VoiceUpRet
snz dah.7
jmp PlusVoiceData
MinusVoiceData:
clr wdt
mov a,DELLOOPCNT ;5
sdz acc
jmp $-1
mov a,0f0h
addm a,dal
mov a,0ffh
adcm a,dah
snz dah.7
jmp VoiceUpRet
jmp MinusVoiceData
Ch1VoiceUp:
_DAC_RAMP_UP:
_VOICEUP:
sz dac
jmp Ch1VoiceUp1
set vol
CLR DAL
CLR DAh
MOV A,07H ;
mov VOICEC, A ;
set vol
CALL HT82V733Enable
Ch1VoiceUp1:
mov a,voltmp
mov DataCode,a
mov a,vol
and a,0e0h
sz acc
jmp voiceup2
set vol
PlusVoiceData:
MOV A,VOL
MOV VOL,A
set dac
voiceup1:
clr wdt
mov a,DELLOOPCNT-1 ;4
sdz acc
jmp $-1
sz dah.7
jmp VoiceUpRet
mov a,10h
addm a,dal
mov a,0
adcm a,dah
jmp VoiceUp1
VoiceUpRet:
; RET
; mov a,80h
; mov da1bufH,a
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?