📄 tesk500.asm
字号:
SNC539
SN0#XO.WAV
SN1#XO.WAV
SIL#XO.WAV
A.WAV
A_8k.dat
PROGRAM
includestd MACRO500_4.h
deboc equ #0101b
IR_MODE EQU #0000B
MRX EQU #1111B
MRXB EQU #0000B
KeyP1 EQU #0001B
KeyP2 EQU #0000B
KeyP3 EQU #0000B
KeyP6 EQU #0000B
Rand0Max EQU #0000B
Rand1Max EQU #0000B
Rand2Max EQU #0000B
;#####################################################
; For SNC538/548/558/568/578/588/598
; Instruction Cycle : 4 us
; I/P : P1
; I/O : P2,P3,P6
; O/P : P4,P5
; Channel : 2 ( DAC & PWM )
; IR : P33 , P32
; Core program : SN_2CH24.ASM ( 2-channel , 6 Ports 24 bits)
; ----------------------------------------------------
; Scan Key : P2 --> P1 ( Max 16 keys)
; Direct Key : P1,P2,p3 and P6 ( Max 16 keys)
; Flash with volume : P3 with CH1 or P3 with CH2
; Output Control : P2,P3,P4,P5,P6
; IR transmit only : TX=P33
; IR receive only : RX=P33
; IR bidirection : TX=P33 and RX=P32
;
; Versin 2.0 : Modified IR .... p3s=#0111b
; Versin 2.13: Add O/P.... P4,P5
;
;#####################################################
;/////////////////////////////////////////
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
; bit2 =1 ... 8ms
daa equ m6 ; DA or PWM
; BIT0=0 ..... PWM
; BIT0=1 ..... DAC
DOUBLE_F equ m6
;; BIT1=0 ....... NONE
;; BIT1=1 ....... VoiceName1@1+VoiceName@2
;; bit3=1 ....... VoiceName1@1+VoiceName@2
p3_fva equ m7 ; Flash with CH1
p3_fvb equ m8 ; Flash with CH2
v_state equ m9 ; Speech state
; bit0 ....... CH 1
; bit1 ....... CH 2
; bit2 ....... BACK CH 1
; bit3 ....... BACK CH 2
scanid equ m13 ;scanid
; m14 ;bit3:key press,bit0:head
;temp2 equ m15 ;scan port
;---------------page1--------------
delay8m equ m0
delay01 equ m1
delay1s equ m2
BGround1 equ m3
BGround2 equ m4
s_delay1 equ m7
s_delay2 equ m8
s_delay3 equ m9
TrigState1 equ m10
TrigState2 equ m11
temp3 equ m12
temp4 equ m13
temp5 equ m14
;##############################################################
; PAGE 1
;##############################################################
;;;; IR Tx
TRANS_L EQU M5
TRANS_H EQU M6
TRANS_COUNT EQU M13
;;;; IR Rx
RECEIVE_L EQU M5
RECEIVE_H EQU M6
RECEIVE_COUNT EQU M13
Time_Counter EQU M14
_INV_500us EQU #1
_INV_700us EQU #3
TEMP0 EQU M15
;;;; PAGE2 M15.0 ;;;;;;;;
IRout_ON_OFF EQU M15
;;;; PAGE2 M15.1 ;;;;;;;;
TRIGGER_FLAG EQU M15 ;
;;;; PAGE2 M15.2 ;;;;;;;;;
IRin_ON_OFF EQU M15 ;
; BIT2=0 ........ IR OFF
; BIT2=1 ........ IR ON
;;;; PAGE2 M15.3 ;;;;;;;;
IR_TX_P33_ON_OFF EQU M15 ;
; BIT3=0 ........ P3.3 38.5K Hz OFF
; BIT3=1 ........ P3.3 38.5K Hz ON
;******* page2 ***********
p2_go1 equ m0
p2_go2 equ m1
p3_go1 equ m2
p3_go2 equ m3
loop equ m4
outloop equ m5
p3_fv2 equ m6
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
;;;;DOUBLE_F equ m15
;; BIT0=0 ....... NONE
;; BIT0=1 ....... VoiceName1@1+VoiceName@2
m_stp equ #0011b
m_pause equ #0001b
;---------------page6--------------
skblock equ m1
tr17_20 equ m2
tr21_24 equ m3
tr25_28 equ m4
tr29_32 equ m5
temp1 equ m6
temp2 equ m7
temp6 equ m8
Mtr2 equ m9
Mtr3 equ m10
Mtr6 equ m11
eventmark equ m12 ;event mark
eventflag equ m13 ;bit0 event mark function:enable
;bit1 load next event data
;bit2 load event delay timer
;bit3 skip event mark
e_delay8m equ m14
e_delay01 equ m15
;---------------page7--------------
p3s_state equ m1
ifdef mrx_3
tr33_36 equ m0
tr37_40 equ m3
tr41_44 equ m4
tr45_48 equ m5
else
p2s_state equ m0
p4s_state equ m3
p4_go1 equ m4
p4_go2 equ m5
endif
p4state equ m2
p5state equ m6
p5s_state equ m7
p5_go1 equ m8
p5_go2 equ m9
ifdef mrx_4
tr49_52 equ m10
tr53_56 equ m11
tr57_60 equ m12
tr61_64 equ m13
else
p6state equ m10
p6S_state equ m11
p6_go1 equ m12
p6_go2 equ m13
endif
deboc_count equ m14 ; bit0:4ms to 8ms debounce count,bit1,2,3 debounce count 8~56ms
;**************** power on routine ***************
start: ;power on initial routine
page0
stop1
stop2
mov a #1111b
mov p2s a
mov p3s a
mov p6s a
mov a #0000b
mov p3 a
mov p3state a
mov p2 a
mov p2state a
ifndef mrx_4
page7
mov p6 a
mov p6state a
mov p6_go1 #0000b
mov p6_go2 #1111b
endif
ifdef mrx_2
page6
mov tr17_20 #0000b ;m2:tr17-20 status, m3:tr21-24 status
mov tr21_24 #0000b ;m4:tr25-28 status, m5:tr29-32 status
mov tr25_28 #0000b
mov tr29_32 #0000b
endif
page0
mov tr1_4 #0000b ;m0:tr1-4 status, m1:tr5-8 status
mov tr5_8 #0000b ;m2:tr9-12 status, m3:tr13-16 status
mov tr9_12 #0000b
mov tr13_16 #0000b
mov m6 #0000b ;m6.2:8ms,
mov p3_fva #0000b
mov p3_fvb #0000b
mov v_state #0000b
pwm
mov daa #0000b ;daa.0=1:da daa.0=0:pwm
mov m14 #0000b ;m14:bit3,bit0:head
mov m15 #0000b ;m15:scan of p1 bit
page1
mov delay8m #0000b ;m0:delay
mov s_delay1 #0000b
MOV M12 #0000B
mov bground1 #0000b
mov bground2 #0000b
page2
mov p2_go1 #0000b ;x=1
mov p2_go2 #1111b ;x=0
mov p3_go1 #0000b ;x=1
mov p3_go2 #1111b ;x=0
mov p3_fv1 #0000b
mov p3_fv2 #0000b
mov p_delay1 #0000b
mov Rand0 #0
mov Rand1 #0
mov Rand2 #0
mov enter_b #0000b
MOV TRIGGER_FLAG #0
;;; Set P33 modulated with 38.5 KHz square wave
;;; P32 and P33 work as normal output pin
MOV A IR_MODE
MOV MODE A
CAJE #0000B @F
MOV A #1000B
@@:
PAGE2
OR A,IR_TX_P33_ON_OFF
MOV IR_TX_P33_ON_OFF,A
;;;; For Drive & Sink function ;;;;;;;;;;;
PAGE7
MOV A #1111B
ifndef mrx_3
MOV P2S_STATE A
MOV P4S_STATE A
endif
MOV P3S_STATE A
ifndef mrx_4
MOV P6S_STATE A
endif
MOV P5S_STATE A
MOV P4S A
MOV P5S A
MOV A #0000B
MOV P4 A
MOV P4State A
MOV P5 A
MOV P5State A
ifndef mrx_3
mov p4_go1 #0000b ;x=1
mov p4_go2 #1111b ;x=0
endif
mov p5_go1 #0000b ;x=1
mov p5_go2 #1111b ;x=0
mov deboc_count #0000b ; bit1,2,3 debounce count 8~56ms
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; *********** @@update ************************
@@update:
page0
mov a mrx
caje #1111b @@update_key
mov a #0001b
mov p2 a
mov a mrx
mov p2s a
mov a #1111b
mov p2s a
mov a p1
mov tr1_4 a
mov a #0010b
mov p2 a
mov a mrx
mov p2s a
mov a #1111b
mov p2s a
mov a p1
mov tr5_8 a
mov a mrx
caje #1100b @@update_over
mov a #0100b
mov p2 a
mov a mrx
mov p2s a
mov a #1111b
mov p2s a
mov a p1
mov tr9_12 a
mov a mrx
caje #1000b @@update_over
mov a #1000b
mov p2 a
mov a mrx
mov p2s a
mov a #1111b
mov p2s a
mov a p1
mov tr13_16 a
;;**********************************************************
ifdef mrx_2
page6
mov a #0001b
mov p4 a
mov a mrx_2
mov p4s a
mov a #1111b
mov p4s a
mov a p1
mov tr17_20 a
mov a mrx_2
caje #1110b @@update_over
mov a #0010b
mov p4 a
mov a mrx_2
mov p4s a
mov a #1111b
mov p4s a
mov a p1
mov tr21_24 a
mov a mrx_2
caje #1100b @@update_over
mov a #0100b
mov p4 a
mov a mrx_2
mov p4s a
mov a #1111b
mov p4s a
mov a p1
mov tr25_28 a
mov a mrx_2
caje #1000b @@update_over
mov a #1000b
mov p4 a
mov a mrx_2
mov p4s a
mov a #1111b
mov p4s a
mov a p1
mov tr29_32 a
endif
ifdef mrx_3
page7
mov a #0001b
mov p2 a
mov a mrx_3
mov p2s a
mov a #1111b
mov p2s a
mov a p6
mov tr33_36 a
mov a mrx_3
caje #1110b @@update_over
mov a #0010b
mov p2 a
mov a mrx_3
mov p2s a
mov a #1111b
mov p2s a
mov a p6
mov tr37_40 a
mov a mrx_3
caje #1100b @@update_over
mov a #0100b
mov p2 a
mov a mrx_3
mov p2s a
mov a #1111b
mov p2s a
mov a p6
mov tr41_44 a
mov a mrx_3
caje #1000b @@update_over
mov a #1000b
mov p2 a
mov a mrx_3
mov p2s a
mov a #1111b
mov p2s a
mov a p6
mov tr45_48 a
endif
ifdef mrx_4
page7
mov a #0001b
mov p4 a
mov a mrx_4
mov p4s a
mov a #1111b
mov p4s a
mov a p6
mov tr49_52 a
mov a mrx_4
caje #1110b @@update_over
mov a #0010b
mov p4 a
mov a mrx_4
mov p4s a
mov a #1111b
mov p4s a
mov a p6
mov tr53_56 a
mov a mrx_2
caje #1100b @@update_over
mov a #0100b
mov p4 a
mov a mrx_4
mov p4s a
mov a #1111b
mov p4s a
mov a p6
mov tr57_60 a
mov a mrx_4
caje #1000b @@update_over
mov a #1000b
mov p4 a
mov a mrx_4
mov p4s a
mov a #1111b
mov p4s a
mov a p6
mov tr61_64 a
endif
@@update_over:
mov a #0000b
mov p2 a
ifdef mrx_2
mov p4 a
endif
;******************************************************
jmp @@_init
;******************************************************
@@chk_delay8m_ret1 macro label
page1
mov a delay8m
caje #0000b @f
jmp label
@@:
page3
ret1
endm
@@chk_p_delay1_ret2 macro label
page2
mov a p_delay1
caje #0000b @f
jmp label
@@:
page3
ret2
endm
@@update_key:
mov a p1
mov scanid a
mov a keyp1
and a scanid
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -