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

📄 et216rc3_newencode1.asm

📁 IR decode, 红外线解码程序.IC:SN8P1602B
💻 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 + -