📄 et216rc3_newencode1.asm
字号:
Chip sn8P2602B
//{{SONIX_CODE_OPTION
.Code_Option LVD LVD_H ; 2.4V Reset Enable LVD36 bit of PFLAG for 3.6V Low Voltage Indicator
.Code_Option Reset_Pin Reset
.Code_Option Watch_Dog Disable
.Code_Option High_Clk 4M_X'tal ; Crystal/Resonator: 2Mhz~10Mhz
.Code_Option Fcpu #2 ; Fcpu = Fosc/4
.Code_Option Security Enable
.Code_Option Noise_Filter Disable
//}}SONIX_CODE_OPTION
.DATA
ORG 0H
AccBuf DS 1 ;Accumulator buffer
PflagBuf DS 1 ;PFLAG buffer
Key_press_counter DS 1
Pulse_counter DS 1
Send_off_counter DS 1
Keys DS 1
Key_ok EQU Keys.0
Key_cancel EQU Keys.1
Key_left EQU Keys.2
Key_right EQU Keys.3
Key_up EQU Keys.4
Key_down EQU Keys.5
.CODE
ORG 0H
JMP START
ORG 8H
RETI
ORG 10H
START:
MOV A,#03H ;Initial stack pointer and disable global interrupt
B0MOV STKP,A
call ClrRAM ;Clear RAM
call SysInit ;System initial
MAIN:
Call Judge_Keys
MOV A,#01H
CMPRS A,Key_press_counter
JMP Send_off_or_nothing
B0BTS0 Key_ok
JMP Send_ok
B0BTS0 Key_cancel
JMP Send_cancel
B0BTS0 Key_left
JMP Send_left
B0BTS0 Key_right
JMP Send_right
B0BTS0 Key_up
JMP Send_up
B0BTS0 Key_down
JMP Send_down
Enter_sleep_mode:
B0BSET FCPUM0
JMP MAIN
Judge_keys:
MOV A,#00H
B0MOV Keys,A
B0MOV Key_press_counter,A
MOV A,#01H
B0BTS0 FP00
JMP Is_P10_pressed
B0ADD Key_press_counter,A
B0BSET Key_OK
Is_P10_pressed:
B0BTS0 FP10
JMP Is_P11_pressed
B0ADD Key_press_counter,A
B0BSET Key_cancel
Is_P11_pressed:
B0BTS0 FP11
JMP Is_P13_pressed
B0ADD Key_press_counter,A
B0BSET Key_left
Is_P13_pressed:
B0BTS0 FP13
JMP Is_P12_pressed
B0ADD Key_press_counter,A
B0BSET Key_right
Is_P12_pressed:
B0BTS0 FP12
RET
B0BSET P5.0
B0BTS0 P1.2
JMP Is_up_pressed
B0ADD Key_press_counter,A
B0BSET Key_down
B0BCLR P5.0
RET
Is_up_pressed:
B0BCLR P5.0
B0BSET P5.4
B0BTS0 P1.2
RET
B0ADD Key_press_counter,A
B0BSET Key_up
B0BCLR P5.4
RET
Send_ok: ;0011
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#63
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#63
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
CALL Delay_7ms43
JMP MAIN
Delay_7ms43:
MOV A,#25H ; TC0C and TC0R value is decided by TC0 mode.
B0MOV TC0C,A ; Set TC0C value.
B0BSET FTC0ENB ; Enable TC0 timer.
Here:
B0BTS1 FTC0IRQ
JMP Here
B0BCLR FTC0ENB ; TC0 timer, TC0OUT and PWM stop.
B0BCLR FTC0IRQ
RET
Send_cancel: ;1100
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#63
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#63
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
CALL Delay_7ms43
JMP MAIN
Send_left:
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#63
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#63
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
CALL Delay_7ms43
JMP MAIN
Send_down:
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#63
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#63
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
CALL Delay_7ms43
JMP MAIN
Send_up:
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#63
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#63
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
CALL Delay_7ms43
JMP MAIN
Send_right: ;0101
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#63
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#63
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
CALL Delay_7ms43
JMP MAIN
Send_off:
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#63
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#63
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#63
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
MOV A,#63
B0MOV Pulse_counter,A
Call Sendcarrier_blank
MOV A,#21
B0MOV Pulse_counter,A
Call Sendcarrier_mark
CALL Delay_7ms43
RET
Sendcarrier_mark:
B0BCLR P5.7
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
B0BSET P5.7
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DECMS Pulse_counter
JMP Sendcarrier_mark
RET
Sendcarrier_blank:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DECMS Pulse_counter
JMP Sendcarrier_blank
RET
Send_off_or_nothing:
MOV A,Key_press_counter
CMPRS A,#00H
JMP Enter_sleep_mode
MOV A,#08H
B0MOV Send_off_counter,A
Repeat_sendoff:
CALL Send_off
DECMS Send_off_counter
JMP Repeat_Sendoff
JMP Enter_sleep_mode
ClrRam:
clr Y
B0MOV Z,#2fH
ClrRam1:
clr @YZ
DECMS Z
JMP ClrRam1
clr @YZ
RET
SysInit:
CLR P5M
CLR P1M
CLR P0M
B0BSET P5M.0 ;P5.0 is defined to output mode
B0BSET P5M.4 ;P5.4 is defined to output mode
B0BSET P5M.7 ;P5.7 is defined to output mode
B0BCLR P5.0
B0BCLR P5.4
B0BSET P5.7
MOV A, #0FFH ;ENABLE ALL PULL UP RESISTOR
B0MOV P0UR, A
B0MOV P1UR, A
B0MOV P5UR, A
MOV A,#0FH
B0MOV P1W,A
B0BCLR FTC0ENB ; TC0 timer, TC0OUT and PWM stop.
B0BCLR FTC0IEN ; TC0 interrupt function is disabled.
B0BCLR FTC0IRQ ; TC0 interrupt request flag is cleared.
MOV A,#30H ;Disable TC0 and TC0CLOCK=Fcpu/32(max=9.15ms)
B0MOV TC0M,A
RET
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -