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

📄 红外遥控接收.asm

📁 8051单片机,解码红外线遥控器,懂得如何去解码各种遥控器的客户码,键值.
💻 ASM
字号:
;=================================================
; 红外遥控接收     
;=================================================

;=================================================
ORG 0000H 
LJMP START;转入主程序
ORG 0010H 
START:

MAIN:
JNB	P2.2,IR
LJMP	MAIN


			;以下为进入P2.2脚外部中断子程序,也就是解码程序
IR: 
  	MOV 	R6,#9
SB:
	ACALL 	DELAY882	;调用882微秒延时子程序
	JB 	P2.2,EXIT	;延时882微秒后判断P2.2脚是否出现高电平如果有就退出解码程序
 	DJNZ 	R6, SB	;重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序
               		;以上完成对遥控信号的9000微秒的初始低电平信号的识别。
	JNB	P2.2, $ 	;等待高电平避开9毫秒低电平引导脉冲
	ACALL	DELAY2400
	JNB	P2.2,IR_Rp	;
	ACALL	DELAY2400   ;延时4.74毫秒避开4.5毫秒的结果码
	MOV	R1,#1AH 	;设定1AH为起始RAM区
	MOV	R2,#4 
PP: 	
	MOV	R3,#8
JJJJ:	
	JNB	P2.2,$	;等待地址码第一位的高电平信号
	LCALL DELAY882	;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
	MOV	C,P2.2	;将P2.2引脚此时的电平状态0或1存入C中
	JNC	UUU		;如果为0就跳转到UUU
	LCALL DELAY1000
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 	;接收完16位地址码和8位数据码和8位数据,存放在1AH/1BH/1CH/1DH的RAM中

	MOV	P1,1DH	;将按键的键值通过P1口的8个LED显示出来!
	CLR	P2.3	;蜂鸣器鸣响-嘀嘀嘀-的声音,表示解码成功
	LCALL DELAY2400
	LCALL DELAY2400
	LCALL DELAY2400
	SETB P2.3;蜂鸣器停止


	LJMP	MAIN

IR_Rp:
	LJMP	MAIN

EXIT:
	LJMP	MAIN ;退出解码子程序


;=============================882
DELAY882: ;1.085x ((202x4)+5)=882
	MOV	R7,#202
    DELAY882_A:
    	NOP
	NOP
	DJNZ	R7,DELAY882_A
RET
;=============================1000
DELAY1000: ;1.085x ((229x4)+5)=999.285
	MOV	R7,#229
    DELAY1000_A:
    	NOP
	NOP
	DJNZ	R7,DELAY1000_A
RET
;=============================2400
DELAY2400: ;1.085x ((245x9)+5)=2397.85
	MOV	R7,#245
    DELAY2400_A:
    	NOP
	NOP
    	NOP
	NOP
	NOP
   	NOP
	NOP
	DJNZ	R7,DELAY2400_A
RET
END




⌨️ 快捷键说明

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