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

📄 remote.asm

📁 用c51的遥控音前级
💻 ASM
字号:

REMOTEIN 	BIT  P3.2    ;遥控输入 
ir_code 	data 40H ;操作码
ir_code_R 	data 41h ;操作码反码
ir_ID_code 	data 42h ;用户码
ir_id_code_r 	data 43h ;操作反码
IR_ADDR 	DATA 44H	
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
REMOTE:	
push 	acc		;定时1中断子程序
push 	psw
CLR   	EX0   		;INT0请求中断
SETB 	rs1		;选择寄存器组
clr 	rs0
MOV 	R5,#1
SB:
MOV 	R4,#203;220;转到882微秒延时判断子程序
irD0:
JB 	REMOTEIN,EXIT
DJNZ 	R4,irD0  ;延时882微秒中判断P3.3脚是否出现高电平如果有就退出解码程序
DJNZ 	R5, SB    ;重复'R6次,目的是检测在8820微秒内如果出现高电平就退出解码程序
                 ;以上完成对遥控信号的9000微秒的初始低电平信号的识别。
JNB 	REMOTEIN, $        ;等待高电平避开9毫秒低电平引导脉冲
ACALL  	YS2         ;延时4.74毫秒判断是否连发
;JB  	REMOTEIN,EXIT      ;
MOV 	R1,#1AH        ;设定1AH为起始RAM区
MOV 	R2,#4          ;接收从1AH到1DH的4个内存,用于存放操作码和操作反码
PP:                      ;
MOV 	R3,#8          ;每组数据为8位
JJJJ:                    ;
JNB 	REMOTEIN,$         ;等待地址码第一位的高电平信号
LCALL 	YS1          ;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
MOV 	C,REMOTEIN         ;将P3.2引脚此时的电平状态0或1存入C中
JNC 	UUU            ;如果为0就跳转到UUU
LCALL 	YS3;JB  P3.2,$         ;检测到高电平1的话延时882微秒等待脉冲高电平结束
UUU:                     ;
MOV 	A,@R1          ;将R1中地址的给A
RRC 	A              ;将C中的值0或1移入A中的最低位
MOV 	@R1,A          ;将A中的数暂时存放在R1数值的内存中
DJNZ 	R3,JJJJ       ;接收满8位换一个内存
INC 	R1             ;对R1中的值加1,换下一个RAM
DJNZ 	R2,PP         ;接收完8位数据码和8位数据反码,存放在1AH/1BH/1CH/1DH中

MOV 	A,1DH
CJNE 	A,#0FFH,IR_OK
AJMP 	EXIT          ;如果不相等说明解码失败退出解码程序
IR_OK:
AJMP 	BIJIAO        ;如果相等说明解码正确
AJMP 	EXIT          ;如果不相等说明解码失败退出解码程序

;判断在118毫秒内是否有连发码
AA:
LCALL 	DELAY10
MOV 	R3,#25
XX:
ACALL 	YS2
JNB 	REMOTEIN,HH;跳转到判断连发代码是否正确的程序段
DJNZ 	R3,XX
;JNB 	REMOTEIN,HH;跳转到判断连发代码是否正确的程序段
JMP 	EXIT
;连发码判断程序段-----------
HH:	MOV R4,#4
S: 
ACALL 	YS1;调用882微秒延时子程序
JB 	REMOTEIN,EXIT;延时882微秒后判断P3.2脚是否出现高电平如果有就退出解码程序
DJNZ 	R4, S;重复4次,目的是确认连发码的低电平信号波形
JMP 	BIJIAO
JNB 	REMOTEIN, $ ;等待高电平
JMP 	AA
EXIT:
SETB 	EX0            ;INT0请求中断
SETB 	REMOTEIN
pop 	psw
pop 	acc
RETI
;-------------------------------------
YS1:
MOV    	R6,#18	;精确延时882微秒(18:11.059M,20:12M)
D1:
MOV    	R7,#20
DJNZ   	R7,$
DJNZ   	R6,D1
RET
;
YS2:
MOV    	R6,#9	;精确延时4740微秒(9:11.059M,10:12M)
D2:
MOV    	R7,#235
DJNZ   	R7,$
DJNZ   	R6,D2
RET
;
YS3:
MOV 	R6,#2	;延时子程序3,精确延时1000微秒
D3:
MOV 	R7,#248
DJNZ 	R7,$
DJNZ 	R6,D3
RET
;
YS4:
MOV 	R6,#255	;延时子程序3,精确延时4740微秒
D4:
MOV 	R7,#255
DJNZ 	R7,$
DJNZ 	R6,D4
RET
;-----------------------------------------------
BIJIAO:
mov 	ir_code,1Ah           ;操作原码
mov 	ir_code_r,1Bh         ;操作反码
mov 	ir_id_code,1Ch        ;ID原码
mov 	ir_id_code_r,1Dh      ;ID反码
JB 	IR_SET_BIT,IR_WORK0
LCALL 	DIS_IR_OK
;LCALL 	IR_SEL
JMP 	EXIT
IR_WORK0:
JMP 	IR_WORK
;----------------------------
IR_SEL:
MOV 	A,KEYBUFF
CJNE 	A,#0,SEL2
MOV 	IR_ADDR,#20H
LCALL 	IR_WR24
RET
;
SEL2:
CJNE 	A,#1,SEL3
MOV 	IR_ADDR,#24H
LCALL 	IR_WR24
RET
;
SEL3:
CJNE 	A,#2,SEL4
MOV 	IR_ADDR,#28H
LCALL 	IR_WR24
RET
;
SEL4:
CJNE 	A,#3,SEL5
MOV 	IR_ADDR,#2CH
LCALL 	IR_WR24
RET
;
SEL5:
CJNE 	A,#4,SEL6
MOV 	IR_ADDR,#30H
LCALL 	IR_WR24
RET
;
SEL6:
CJNE 	A,#5,SEL7
MOV 	IR_ADDR,#34H
LCALL 	IR_WR24
RET
;
SEL7:
CJNE 	A,#6,SEL8
MOV 	IR_ADDR,#38H
LCALL	IR_WR24
RET
;
SEL8:
CJNE 	A,#7,SEL9
MOV 	IR_ADDR,#3CH
LCALL 	IR_WR24
RET
;
SEL9:
CJNE 	A,#8,SEL10
MOV 	IR_ADDR,#40H
LCALL 	IR_WR24
RET
;
SEL10:
CJNE 	A,#9,SEL11
MOV 	IR_ADDR,#44H
LCALL 	IR_WR24
RET
;
SEL11:
CJNE 	A,#10,SEL12
MOV 	IR_ADDR,#48H
LCALL 	IR_WR24
RET
;
SEL12:
CJNE 	A,#11,SEL13
MOV 	IR_ADDR,#4CH
LCALL 	IR_WR24
RET
;
SEL13:
CJNE 	A,#12,SEL14
MOV 	IR_ADDR,#50H
LCALL 	IR_WR24
RET
;
SEL14:
;CJNE 	A,#13,SEL15
;MOV 	IR_ADDR,#54H
;LCALL 	IR_WR24
RET
;
SEL15:
;CJNE 	A,#14,SEL16
;MOV 	IR_ADDR,#58H
;LCALL 	IR_WR24
RET
;
SEL16:
;CJNE 	A,#15,SEL17
;MOV 	IR_ADDR,#5CH
;LCALL 	IR_WR24
RET
SEL17:
RET
;
IR_WR24:
LCALL 	DELAY10
MOV 	A,IR_ADDR
MOV 	B,ir_code;操作原码
LCALL 	WT24
LCALL 	DELAY10
MOV 	A,IR_ADDR
ADD 	A,#01H 
MOV 	B,ir_code_r;操作反码
LCALL 	WT24
LCALL 	DELAY10
MOV 	A,IR_ADDR
ADD 	A,#02H 
MOV 	B,ir_id_code;ID原码
LCALL 	WT24
LCALL 	DELAY10
MOV 	A,IR_ADDR
ADD 	A,#03H 
MOV 	B,ir_id_code_r;ID反码
LCALL 	WT24
LCALL 	IR_ID_DISP
RET
;
IR_ID_DISP:
LCALL 	DIS_IR_SET_OK
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
IR_WORK:
MOV 	IR_ADDR,#20H
LCALL 	IR_RD24
MOV 	A,ir_code
CJNE 	A,30H,REM_WORK_1
MOV 	A,ir_code_r
CJNE 	A,31H,REM_WORK_1
MOV 	A,ir_id_code
CJNE 	A,32H,REM_WORK_1
MOV 	A,ir_id_code_r
CJNE 	A,33H,REM_WORK_1
;JNB 	MUTE_BIT,MUTE_IR
;JMP	EXIT
;MUTE_IR:
LCALL 	SET_M_VOL_DOWN
JMP 	aa;EXIT
;
REM_WORK_1:
MOV 	IR_ADDR,#24H
LCALL 	IR_RD24
MOV 	A,ir_code
CJNE 	A,30H,REM_WORK_2
MOV 	A,ir_code_r
CJNE 	A,31H,REM_WORK_2
MOV 	A,ir_id_code
CJNE 	A,32H,REM_WORK_2
MOV 	A,ir_id_code_r
CJNE 	A,33H,REM_WORK_2
;JNB 	MUTE_BIT,MUTE_IR1
;JMP	EXIT
;MUTE_IR1:
LCALL 	SET_M_VOL_UP
JMP 	AA
;
REM_WORK_2:
MOV 	IR_ADDR,#28H
LCALL 	IR_RD24
MOV 	A,ir_code
CJNE 	A,30H,REM_WORK_3
MOV 	A,ir_code_r
CJNE 	A,31H,REM_WORK_3
MOV 	A,ir_id_code
CJNE 	A,32H,REM_WORK_3
MOV 	A,ir_id_code_r
CJNE 	A,33H,REM_WORK_3
JNB 	MUTE_BIT,MUTE_IR2
JMP	EXIT
MUTE_IR2:
LCALL 	SET_BASS_VOL_DOWN
JMP 	AA
;
REM_WORK_3:
MOV 	IR_ADDR,#2CH
LCALL 	IR_RD24
MOV 	A,ir_code
CJNE 	A,30H,REM_WORK_4
MOV 	A,ir_code_r
CJNE 	A,31H,REM_WORK_4
MOV 	A,ir_id_code
CJNE 	A,32H,REM_WORK_4
MOV 	A,ir_id_code_r
CJNE 	A,33H,REM_WORK_4
JNB 	MUTE_BIT,MUTE_IR3
JMP	EXIT
MUTE_IR3:
LCALL SET_BASS_VOL_UP
JMP 	AA
;
REM_WORK_4:
MOV 	IR_ADDR,#30H
LCALL 	IR_RD24
MOV 	A,ir_code
CJNE 	A,30H,REM_WORK_5
MOV 	A,ir_code_r
CJNE 	A,31H,REM_WORK_5
MOV 	A,ir_id_code
CJNE 	A,32H,REM_WORK_5
MOV 	A,ir_id_code_r
CJNE 	A,33H,REM_WORK_5
JNB 	MUTE_BIT,MUTE_IR4
JMP	EXIT
MUTE_IR4:
LCALL 	SET_TR_VOL_DOWN
JMP 	AA
;
REM_WORK_5:
MOV 	IR_ADDR,#34H
LCALL 	IR_RD24
MOV 	A,ir_code
CJNE 	A,30H,REM_WORK_6
MOV 	A,ir_code_r
CJNE 	A,31H,REM_WORK_6
MOV 	A,ir_id_code
CJNE 	A,32H,REM_WORK_6
MOV 	A,ir_id_code_r
CJNE 	A,33H,REM_WORK_6
JNB 	MUTE_BIT,MUTE_IR5
JMP	EXIT
MUTE_IR5:
LCALL 	SET_TR_VOL_UP
JMP 	AA
;
REM_WORK_6:
MOV 	IR_ADDR,#38H
LCALL 	IR_RD24
MOV 	A,ir_code
CJNE 	A,30H,REM_WORK_7
MOV 	A,ir_code_r
CJNE 	A,31H,REM_WORK_7
MOV 	A,ir_id_code
CJNE 	A,32H,REM_WORK_7
MOV 	A,ir_id_code_r
CJNE 	A,33H,REM_WORK_7
JNB 	MUTE_BIT,MUTE_IR6
JMP	EXIT
MUTE_IR6:
LCALL 	BALANCE_L
JMP 	AA
;
REM_WORK_7:
MOV 	IR_ADDR,#3CH
LCALL 	IR_RD24
MOV 	A,ir_code
CJNE 	A,30H,REM_WORK_8
MOV 	A,ir_code_r
CJNE 	A,31H,REM_WORK_8
MOV 	A,ir_id_code
CJNE 	A,32H,REM_WORK_8
MOV 	A,ir_id_code_r
CJNE 	A,33H,REM_WORK_8
JNB 	MUTE_BIT,MUTE_IR7
JMP	EXIT
MUTE_IR7:
LCALL 	BALANCE_R
JMP 	AA
;
REM_WORK_8:
MOV 	IR_ADDR,#40H
LCALL 	IR_RD24
MOV 	A,ir_code
CJNE 	A,30H,REM_WORK_9
MOV 	A,ir_code_r
CJNE 	A,31H,REM_WORK_9
MOV 	A,ir_id_code
CJNE 	A,32H,REM_WORK_9
MOV 	A,ir_id_code_r
CJNE 	A,33H,REM_WORK_9
JNB 	MUTE_BIT,MUTE_IR8
JMP	EXIT
MUTE_IR8:
MOV 	IN_BUFF,#1
LCALL 	INSW
JMP 	EXIT
;
REM_WORK_9:
MOV 	IR_ADDR,#44H
LCALL 	IR_RD24
MOV 	A,ir_code
CJNE 	A,30H,REM_WORK_10
MOV 	A,ir_code_r
CJNE 	A,31H,REM_WORK_10
MOV 	A,ir_id_code
CJNE 	A,32H,REM_WORK_10
MOV 	A,ir_id_code_r
CJNE 	A,33H,REM_WORK_10
JNB 	MUTE_BIT,MUTE_IR9
JMP	EXIT
MUTE_IR9:
MOV 	IN_BUFF,#2
LCALL 	INSW
JMP 	EXIT
;
REM_WORK_10:
MOV 	IR_ADDR,#48H
LCALL 	IR_RD24
MOV 	A,ir_code
CJNE 	A,30H,REM_WORK_11
MOV 	A,ir_code_r
CJNE 	A,31H,REM_WORK_11
MOV 	A,ir_id_code
CJNE 	A,32H,REM_WORK_11
MOV 	A,ir_id_code_r
CJNE 	A,33H,REM_WORK_11
JNB 	MUTE_BIT,MUTE_IR10
JMP	EXIT
MUTE_IR10:
MOV 	IN_BUFF,#3
LCALL 	INSW
JMP 	EXIT
;
REM_WORK_11:
MOV 	IR_ADDR,#4CH
LCALL 	IR_RD24
MOV 	A,ir_code
CJNE 	A,30H,REM_WORK_12
MOV 	A,ir_code_r
CJNE 	A,31H,REM_WORK_12
MOV 	A,ir_id_code
CJNE 	A,32H,REM_WORK_12
MOV 	A,ir_id_code_r
CJNE 	A,33H,REM_WORK_12
JNB 	MUTE_BIT,MUTE_IR11
JMP	EXIT
MUTE_IR11:
MOV 	IN_BUFF,#4
LCALL 	INSW
JMP 	EXIT
;
REM_WORK_12:
MOV 	IR_ADDR,#50H
LCALL 	IR_RD24
MOV 	A,ir_code
CJNE 	A,30H,REM_WORK_13
MOV 	A,ir_code_r
CJNE 	A,31H,REM_WORK_13
MOV 	A,ir_id_code
CJNE 	A,32H,REM_WORK_13
MOV 	A,ir_id_code_r
CJNE 	A,33H,REM_WORK_13
CPL 	MUTE_BIT
LCALL 	MUTE_ON_OFF
JMP 	EXIT
;
REM_WORK_13:
;MOV 	IR_ADDR,#54H
;LCALL 	IR_RD24
;MOV 	A,ir_code
;CJNE 	A,30H,REM_WORK_14
;MOV 	A,ir_code_r
;CJNE 	A,31H,REM_WORK_14
;MOV 	A,ir_id_code
;CJNE 	A,32H,REM_WORK_14
;MOV 	A,ir_id_code_r
;CJNE 	A,33H,REM_WORK_14
;CPL 	P1.5
JMP 	EXIT
;
REM_WORK_14:
;MOV 	IR_ADDR,#58H
;LCALL 	IR_RD24
;MOV 	A,ir_code
;CJNE 	A,30H,REM_WORK_15
;MOV 	A,ir_code_r
;CJNE 	A,31H,REM_WORK_15
;MOV 	A,ir_id_code
;CJNE 	A,32H,REM_WORK_15
;MOV 	A,ir_id_code_r
;CJNE 	A,33H,REM_WORK_15
;CPL 	P1.6
JMP 	EXIT
;
REM_WORK_15:
;MOV 	IR_ADDR,#5CH
;LCALL 	IR_RD24
;MOV 	A,ir_code
;CJNE 	A,30H,REM_WORK_16
;MOV 	A,ir_code_r
;CJNE 	A,31H,REM_WORK_16
;MOV 	A,ir_id_code
;CJNE 	A,32H,REM_WORK_16
;MOV 	A,ir_id_code_r
;CJNE 	A,33H,REM_WORK_16
;CPL 	P1.7
JMP 	EXIT
;
REM_WORK_16:
JMP 	EXIT
;-------------------
IR_RD24:
MOV 	A,IR_ADDR
LCALL 	RD24
MOV 	30H,A
LCALL 	DELAY10
MOV 	A,IR_ADDR
ADD 	A,#01H
LCALL 	RD24
MOV 	31H,A
LCALL 	DELAY10
MOV 	A,IR_ADDR
ADD 	A,#02H
LCALL 	RD24
MOV 	32H,A
LCALL 	DELAY10
MOV 	A,IR_ADDR
ADD 	A,#03H
LCALL 	RD24
MOV 	33H,A
RET


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -