红外遥控器接收程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//STC89C52RC
//11.0592MHZ
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define TH0_V ALUE 0xc5
#define TL0_V ALUE 0xc5 // 定时器计数值
#define ANT P2^4 //红外IO口,可任意一个IO
//系统变量定义区============================================================
volatile unsigned char irr_b=0,s_s=0;//irr_b接收状态指示,s_s显示许可
volatile signed long da=0; //32位数据码
volatile unsigned char wb=0, a=0; //wb为接收到的位数,a为接收到信号高低电平判断依据volatile unsigned int js=0; //定时器计数
volatile unsigned char a1=1,a2=1; //上升沿处理变量
void timer_init(void)
{
ET0=0;
TMOD=0x02;
TCON=0x10;
TL0=TL0_VALUE;
TH0=TH0_V ALUE;
ET0=1;
}
void timer_start()
{
TR0=1;
EA=1;
}
void timer0_interrupt(void) interrupt 1 //大约63us中断一次
{
js++;
//判断下降
a2=ANT;
if (a1>a2)
{
if(irr_b==0) //第一个中断
{
irr_b=1; //状态为:开始接收
js=0;
}
else if(irr_b==1) //第二个以后的中断
{
a=js; //读取定时器的值
if((170 { wb=0; //数据计数清零 da=0; //数据清零 js=0; //定时器清零 } else //数据 {