📄 tesk21k.asm
字号:
SNC21085
SN0#XO.WAV
SN1#XO.WAV
SIL#XO.WAV
PROGRAM
deboc equ #0101b
IR_MODE EQU #0000B
MRX EQU #1111B
MRXB EQU #0000B
MRX32 EQU 1111B
MRX48 EQU 1111B
MRX64 EQU 1111B
KeyP1 EQU #1111B
KeyP2 EQU #0000B
KeyP3 EQU #0000B
Rand0Max EQU #0000B
Rand1Max EQU #0000B
Rand2Max EQU #0000B
;#####################################################
; For SNC10000 Series (SNC12007 to SNC12340)
; Instruction Cycle : 4 us
; I/O : P1, P2,P3
; Channel : 1 ( DAC & PWM )
; Core program : SNC10KEZ ( 1-channel , 12 ports)
; ----------------------------------------------------
; Scan Key : P2 --> P1 ( Max 16 keys)
; Direct Key : P1,P2 and P3 ( Max 12 keys)
; Flash with volume : P3 with CH1
; Output Control : P1, P2,P3
;#####################################################
;/////////////////////////////////////////
tr1_4 equ m0
tr5_8 equ m1
tr9_12 equ m2
tr13_16 equ m3
p2state equ m4
p3state equ m5
4mto8m equ m6
; Bit 0 --> 1: Head being played, need play tail before power down
; Bit 1 --> Debonce Counter
; Bit 2 --> =1 ... 8ms
; Bit 3 --> Debonce
p3_fva equ m7 ; Flash with CH1
VolValue_Page0 equ m8 ; Add by Allan for record Volume
v_state equ m9 ; Speech state
; bit0 ....... CH 1
; bit1 ....... CH 2
; bit2 ....... BACK CH 1
; bit3 ....... BACK CH 2
deboc_count equ m10
;bit 0 ..... for debounce counter 4-->8 ms
;bit1~3 ..... debounce counter 8~56ms
;for MIX key trigger.
Mtr2 equ m11
Mtr3 equ m12
temp1 equ m13 ;ScanKey KeyID used.
KeyID equ m13
;Temp RAM.
temp2 equ m14
temp2_0 equ m14
temp3 equ m15
;trigger change condition
;---------------page1--------------
delay8m equ m0
delay01 equ m1
delay1s equ m2
BGround1 equ m3
BGround2 equ m4
P2S_STATE EQU M5
P3S_STATE EQU M6
s_delay1 equ m7
s_delay2 equ m8
s_delay3 equ m9
TrigState1 equ m10
TrigState2 equ m11
Delay_Flag equ m12
; Bit 0 --> Foreground Delay 8ms flag
; Bit 1 --> Background Delay 8ms flag
; Bit 2 --> Output Delay 8ms flag
temp4 equ m13
Time_Counter equ m13
IO_tmp1 equ m13
temp5 equ m14
RECEIVE_COUNT_1 EQU M14
TRANS_COUNT_1 EQU M14
IO_tmp2 equ m14
; Bit 0 --> Inline Assembly Return 1 used flag
; Bit 1 --> Inline Assembly Return 2 used flag
p1state equ m15
;******* page2 ***********
p2_go1 equ m0
p2_go2 equ m1
p3_go1 equ m2
p3_go2 equ m3
loop equ m4
outloop equ m5
p3_fv1 equ m7
Rand0 equ m8
Rand1 equ m9
Rand2 equ m10
enter_b equ m11
p_delay1 equ m12
p_delay2 equ m13
p_delay3 equ m14
m_stp equ #0011b
m_pause equ #0001b
p1_go1 equ m6
p1_go2 equ m15
;---------------page3--------------
EZIO_flag equ m11
EZIO_timerH equ m10
EZIO_timerL equ m9
EZ_Mark equ m8
PWMIOEN1 equ m15
;;;; PAGE2 M12.0 ;;;;;;;;
IRout_ON_OFF_3_0 EQU M14
;;;; PAGE2 M12.1 ;;;;;;;;
TRIGGER_FLAG_3_1 EQU M14 ;
;;;; PAGE2 M12.2 ;;;;;;;;;
IRin_ON_OFF_3_2 EQU M14 ;
; BIT2=0 ........ IR OFF
; BIT2=1 ........ IR ON
;;;; PAGE2 M12.3 ;;;;;;;;
IR_TX_P33_ON_OFF_3_3 EQU M14 ;
; BIT3=0 ........ P3.3 38.5K Hz OFF
; BIT3=1 ........ P3.3 38.5K Hz ON
;;;; IR Tx
TRANS_L EQU M13
TRANS_H EQU M12
;;;; IR Rx
RECEIVE_L EQU M13
RECEIVE_H EQU M12
/*
ifdef @_key_type_@ ;add at 5-26'04 for mix key
;Mtr2 equ m10 ;disable 2005/05/30 , page have define
;Mtr3 equ m11 ;In Mix key mode,memory direct key status
endif
*/
;**************** MACRO **************************
;--------------------------------------------
; CAJNE Macro
;--------------------------------------------
CAJNE Macro Memory,Address
CAJE Memory,@F
JMP Address
@@:
ENDM
;--------------------------------------------
; CallTo Macro Label
;--------------------------------------------
JumpTo Macro label
Jmp label
@@&label&_Bk:
ENDM
includestd macro21K.h
;##########################################################
; ################### Program Start ###################
;##########################################################
start: ;power on initial routine
JumpTo Initial_Chip
JumpTo Update_Key
jmp @@_init
Main_Loop:
;;;;;;;; For IR transmit function ;;;;;;;;;;;;;;;;;;;;;
ifdef IR_TRANSMIT
JMP @IR_TRANSMIT
@IR_TRANSMIT_OK:
endif
ifdef IR_Receive
;;;;;;;; For IR receive function ;;;;;;;;;;;;;;;;;;;;;
JMP @IR_RECEIVE
@IR_RECEIVE_OK:
endif
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
JumpTo ScanKey ; Scankey Function.
JumpTo Update_Output ; I/O output Function.
JumpTo Check_Random ; Random Function.
;JumpTo Check_Speech ; Speech Play Function.
JumpTo Check_Timer ; 4ms Timer.
JumpTo Check_Delay
JumpTo Check_Event ; Event Mark Function.
page1
Jmp @@CHKBGROUND ; Check BackGround.
@@CHKBGROUND_BACK:
JumpTo Check_PowerDown ; Power Down Routine
@@Scankey1:
@@Toggle_2_Back:
JumpTo Check_EnterB ; Check Enter B function.
Jmp Main_Loop
;##########################################################
; ################### Wake Up Routine ###################
;##########################################################
trigger:
rstc
rstcf
@@ini_lp:
cjc @@ready_scan
jmp @@ini_lp
@@ready_scan:
rstcf
;;;; Scankey P2-->P1
page0
mov a mrx
and a p2state
ifdef @_key_type_@
mov p2state a
mov a keyp2
and a p2state
endif
mov p2state a
mov p2 a
;;;;;; For IR receive function ;;;;;;
;;;;;; WAKEUP STATE
ifdef IR_Receive ;2005/10/4 09:55
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -