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

📄 remote.asm

📁 很常用的带4路音源输入.高音,低音,音量调节的IC.
💻 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
;----------------
VOL_UP EQU 1FH
VOL_DOWN EQU 1BH
BASS_UP EQU 1EH
BASS_DOWN EQU 0FH
TR_UP EQU 16H
TR_DOWN EQU 07H
BAL_UP EQU 1AH
BAL_DOWN EQU 0BH
MUTE_CON EQU 08H
VCD_CON EQU 40H
DVD_CON EQU 48H
CD_CON EQU 4CH
TAPE_CON EQU 44H
LOUD_CON EQU 04H	
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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,1AH;比较高8位地址码
XRL A,#00000000B ;判断1AH的值是否等于00000000,相等的话A为0
JNZ EXIT;如果不相等说明解码失败退出解码程序
MOV A,1BH;比较低8位地址
XRL A,#11111111B ;再判断高8位地址是否正确
JNZ EXIT;如果不相等说明解码失败退出解码程序
MOV A,1CH;比较数据码和数据反码是否正确?
CPL A
XRL A,1DH ;将1CH的值取反后和1DH比较 不同则无效丢弃,核对数据是否准确
JNZ EXIT;如果不相等说明解码失败退出解码程序
AJMP BIJIAO

;判断在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 A,1CH
CJNE A,#VOL_UP,CON1
LCALL 	SET_M_VOL_DOWN
JMP 	aa;EXIT
;
CON1:
CJNE A,#VOL_DOWN,CON2
LCALL 	SET_M_VOL_UP
JMP 	AA
;
CON2:
CJNE A,#BASS_DOWN,CON3
JNB 	MUTE_BIT,MUTE_IR2
JMP	EXIT
MUTE_IR2:
LCALL 	SET_BASS_VOL_DOWN
JMP 	AA
;
CON3:
CJNE A,#BASS_UP,CON4
JNB 	MUTE_BIT,MUTE_IR3
JMP	EXIT
MUTE_IR3:
LCALL SET_BASS_VOL_UP
JMP 	AA
;
CON4:
CJNE A,#TR_UP,CON5
JNB 	MUTE_BIT,MUTE_IR4
JMP	EXIT
MUTE_IR4:
LCALL 	SET_TR_VOL_UP
JMP 	AA
;
CON5:
CJNE A,#TR_DOWN,CON6
JNB 	MUTE_BIT,MUTE_IR5
JMP	EXIT
MUTE_IR5:
LCALL 	SET_TR_VOL_DOWN
JMP 	AA
;
CON6:
CJNE A,#BAL_DOWN,CON7
JNB 	MUTE_BIT,MUTE_IR6
JMP	EXIT
MUTE_IR6:
LCALL 	BALANCE_L
JMP 	AA
;
CON7:
CJNE A,#BAL_UP,CON8
JNB 	MUTE_BIT,MUTE_IR7
JMP	EXIT
MUTE_IR7:
LCALL 	BALANCE_R
JMP 	AA
;
CON8:
CJNE A,#TAPE_CON,CON9
JNB 	MUTE_BIT,MUTE_IR8
JMP	EXIT
MUTE_IR8:
MOV 	IN_BUFF,#1
LCALL 	INSW
JMP 	EXIT
;
CON9:
CJNE A,#CD_CON,CON10
JNB 	MUTE_BIT,MUTE_IR9
JMP	EXIT
MUTE_IR9:
MOV 	IN_BUFF,#2
LCALL 	INSW
JMP 	EXIT
;
CON10:
CJNE A,#VCD_CON,CON11
JNB 	MUTE_BIT,MUTE_IR10
JMP	EXIT
MUTE_IR10:
MOV 	IN_BUFF,#3
LCALL 	INSW
JMP 	EXIT
;
CON11:
CJNE A,#DVD_CON,CON12
JNB 	MUTE_BIT,MUTE_IR11
JMP	EXIT
MUTE_IR11:
MOV 	IN_BUFF,#4
LCALL 	INSW
JMP 	EXIT
;
CON12:
CJNE A,#MUTE_CON,CON13
CPL 	MUTE_BIT
LCALL 	MUTE_ON_OFF
JMP 	EXIT
;
CON13:
CJNE A,#LOUD_CON,CON14
CPL 	LOUD_BIT
LCALL 	LOUD_ON
JMP 	EXIT
;
CON14:

JMP 	EXIT
;-------------------

⌨️ 快捷键说明

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