您的位置 首页 系统

红外解码程序换种写法

includereg52h>defineuintunsignedintdefineucharunsignedcharsbitIR=P3^2;红外接口标志sbitRS=P1^0;sbitR

#include

#define uint unsigned int
#define uchar unsigned char
sbit IR=P3^2; //红外接口标志
sbit RS = P1^0;
sbit RW = P1^1;
sbit E = P1^2;
sbit beep = P1^7;
uint hour,minute,second,count;
char code Tab[16]={0,1,2,3,4,5,
6,7,8,9,A,B,C,D,E,F};
//char code Tab[16]=”0123456789abcdef”;//两种界说办法都可以
chardataTimeNum[]=” “;//data:固定指前面0x00-0x7f的
//128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。
char data Test1[]=” “;
void DelayMs(uchar z);
/******************************************************************/
/* 变量声明 */
/******************************************************************/
uchar irtime;//红外用全局变量
bitirpro_ok,irok;
uchar IRcord[4]; //处理后的红外码,分别是 客户码,客户码,数据码,数据码反码
uchar irdata[33]; //33个凹凸电平的时刻数据
/******************************************************************/
/* 函数声明 */
/******************************************************************/
void Ir_work(void);
void Ircordpro(void);
void ShowString (unsigned charline,char *ptr);
/******************************************************************/
/* 定时器0中止服务函数 */
/******************************************************************/

void beep1()
{
uchar i;
for (i=0;i<4;i++)
{beep=0;
DelayMs(400);
beep=1;
DelayMs(400);
}
}
void beep2()
{
uchar i;
for (i=0;i<5;i++)
{beep=0;
DelayMs(300);
beep=1;
DelayMs(300);
}
}
void beep3()
{
uchar i;
for (i=0;i<2;i++)
{beep=0;
DelayMs(500);
beep=1;
DelayMs(500);
}
}
void shan()
{
uchar i;
for (i=0;i<3;i++)
{P0=0x55;
DelayMs(1000);
P0=0xff;
DelayMs(1000);
}
}
void tim0_isr (void) interrupt 1 using 1//定时器0中止服务函数
{
irtime++; //用于计数2个下降沿之间的时刻
}
/******************************************************************/
/* 外部中止0函数 */
/******************************************************************/
void ex0_isr (void) interrupt 0 using 0//外部中止0服务函数
{
uchar i; //接纳红外信号处理
bitstartflag; //是否开端处理标志位
if(startflag)
{

if(irtime<63&&irtime>=33)//引导码 TC9012的头码,9ms+4.5ms
i=0;

irdata[i]=irtime;//存储每个电平的持续时刻,用于今后判别是0仍是1
irtime=0;
i++;
if(i==33)
{
irok=1;
i=0;
}
}

else
{
irtime=0;
startflag=1;
}
}
/******************************************************************/
/* 定时器0初始化 */
/******************************************************************/
void TIM0init(void)//定时器0初始化
{
TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值
TH0=0x00; //重载值
TL0=0x00; //初始化值
ET0=1; //开中止
TR0=1;
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/xitong/254086.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部