红外遥控键值解码之液晶、数码管、发光管等显示程序案例分享
大小:0.2 MB 人气: 2017-09-06 需要积分:1
标签:红外遥控(44690)
1、红外遥控键值解码
;******************************************************************************DATA1 EQU 30H ;
DATA2 EQU 31H ;
DATA3 EQU 32H ;
DATA4 EQU 33H ;
RMT EQU P3.2 ;
;-------------------------------------------
ORG 0000H ;程序执行开始地址
LJMP START ;跳至START
ORG 0003H ;外中断0中断程序入口
RETI ;中断返回
ORG 000BH ;定时器T0中断程序入口
RETI ;中断返回
ORG 0013H ;外中断1中断入口
RETI ;跳至INTEX1中断服务程序
ORG 001BH ;定时器T1中断程序入口
RETI ;跳至INTT1中断服务程序
ORG 0023H ;串口中断入口地址
RETI ;中断返回
ORG 002BH ;定时器T2中断入口地址
RETI ;中断返回
;-------------------------------------------
ORG 0030H ;
START:
MOV SP,#60H ;初始化堆栈指针
MOV P0,#0FFH ;初始化I/O口
MOV P1,#0FFH ;
MOV P2,#0FFH ;
MOV P3,#0FFH ;
;*******************************************
MAIN:
JNB RMT,IR_1838 ;
AJMP MAIN ;
;*******************************************
IR_1838:
MOV R5,#10 ;
A1:
ACALL DELAY882 ;调用882微秒延时子程序
JB RMT,MAIN ;延时882微秒后判断P3.2脚是否出现高电平如果有就退出解码程序
DJNZ R5, A1 ;重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序
;以上完成对遥控信号的9000微秒的初始低电平信号的识别。
JNB RMT,$ ;等待高电平避开9毫秒低电平引导脉冲
ACALL DELAY2 ;
JNB RMT,MAIN ;
ACALL DELAY2 ;延时4.74毫秒避开4.5毫秒的结果码
;*******************************************
MOV R1,#1AH ;设定1AH为起始RAM区
MOV R2,#4 ;
A2:
MOV R3,#8 ;
A3:
JNB RMT,$ ;等待地址码第一位的高电平信号
LCALL DELAY882 ;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
MOV C,RMT ;将P3.2引脚此时的电平状态0或1存入C中
JNC A4 ;如果为0就跳转到A4
LCALL DELAY1 ;
A4:
MOV A,@R1 ;将R1中地址的给A
RRC A ;将C中的值0或1移入A中的最低位
MOV @R1,A ;将A中的数暂时存放在R1中
DJNZ R3,A3 ;接收地址码的高8位
INC R1 ;对R1中的值加1,换下一个RAM
DJNZ R2,A2 ;接收完16位地址码和8位数据码和8位数据,存放在1AH/1BH/1CH/1DH的RAM中
;*************** *****************************************
MOV P2,1DH ;将按键的键值通过P2口的8个LED显示出来!
CLR P3.7 ;蜂鸣器鸣响-嘀嘀嘀-的声音,表示解码成功
LCALL DELAY2 ;
LCALL DELAY2 ;
LCALL DELAY2 ;
SETB P3.7 ;蜂鸣器停止
LJMP MAIN ;
;*******************************************
;882US
DELAY882: ;
MOV R6,#200 ;
DEL1:
NOP ;
NOP ;
DJNZ R6,DEL1 ;
RET ;
;*******************************************
;1000US
DELAY1:
MOV R6,#230
DEL2:
NOP
NOP
DJNZ R7,DEL2
RET
;*******************************************
;2300US
DELAY2:
MOV R6,#248
DEL3:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R6,DEL3
RET
END
;*******************************************
非常好我支持^.^
(9) 100%
不好我反对
(0) 0%
