标题:
STC12C5A60S2单片机VS1838B红外遥控接收解码程序
[打印本页]
作者:
13425472500
时间:
2019-4-29 16:05
标题:
STC12C5A60S2单片机VS1838B红外遥控接收解码程序
#include "stc12c5a60s2.h"
#include "intrins.h"
#define IR_CH_ 0x45 //ch-
#define IR_CH 0x46 //ch
#define IR_CH_A 0x47 //ch+
void IR_Receive(unsigned char ir_buf[]);
sbit IRIN=P3^3; //红外接收口
sbit led1=P1^0;//LED指示
unsigned char IRCOM[4];
void Delay140us() //@11.0592MHz
{
unsigned char i, j;
_nop_();
_nop_();
i = 2;
j = 125;
do
{
while (--j);
} while (--i);
}
void main()
{
IRIN=1;
EX1 = 1;
led1 = 1;
TCON=TCON|0x04; //INT1 FALL INT
IPH |= (0X01<<2);
IP |= (0X01<<2);//设置外部中断1为优先级最高
EA = 1;
while(1)
{
led1 ^=1;
if(IRCOM[2]==IR_CH_) led1 = 1;
if(IRCOM[2]==IR_CH_A) led1 = 0;
if(IRCOM[2]==IR_CH) led1 ^= 1;//遥控测试
IRCOM[2] = 0;
}
}
void IR_int(void) interrupt 2
{
EA = 0;
IR_Receive(IRCOM);
EA = 1;
}
void IR_Receive(unsigned char ir_buf[])
{
xdata unsigned char time,i,j;
while(!IRIN)
{
time++;
Delay140us();
}
if(time>63)//64*0.14=9ms
{
time = 0;
while(IRIN)
{
time++;
Delay140us();
}
if(time>31)//32*0.14=4.5ms
{
time = 0;
for(i=0;i<4;i++)
{
ir_buf[i] = 0;
for(j=0;j<8;j++)
{
while(!IRIN)
{
time++;
Delay140us();
}
if(time>=3)
{
time=0;
while(IRIN)//ÅÐ¶Ï¸ßµçÆ½Ê±¼ä
{
time++;
Delay140us();
}
if(time>=11) ir_buf[i] |= (0x01<<j);
}
}
}
}
}
}
复制代码
作者:
admin
时间:
2019-4-29 18:35
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
作者:
122429
时间:
2019-5-15 16:38
谢谢楼主
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1