红外解码程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//51单片机11.0592兆晶振接收到低电平0.56ms 高电平1.69为1
#include<reg51.h>
#include <ctype.h>
#include <stdio.h>
#include "CaoZuo_5110.h"
#include <stdio.h>
#define uint32 unsigned long int
#define uchar unsigned char
#define uint unsigned int
uchar bitnum,startflag , irdate[33];
uchar m=0;
uint ircode[4];//必须为int型因为%x发送的是整数
char a[12]=0;
uchar ok=0,reok=0;
char lian1,lian2;
void irchuli();
void comsend(void )
{ uchar i;
TI=1; //不要放在for里面
for(i=0;i<4;i++)
{
// SBUF=ircode[i];
// while(TI==0);
// TI=0;
printf("%x",ircode[i]);
}
TI=0; //不要放在for里面
}
void main()
{
EA = 1;//总中断允许开
EX0=1;//外中断0允许中断
IT0=1;
TMOD=0x22; //定时器T0工作方式2 TH0=0x9c;
TL0=0x9c;
//自动重载
TH1=0xfd;
TL1=0xfd;
ET0=1;
TR0=1;
// ET1=1;
SCON=0X58;
PCON=0;
TR1=1;
LCD_init(); //初始化液晶
LCD_clear();
LCD_write_english_string(0,0,"THE CODE IS :");
while(1)
{
if(ok==1)
{
irchuli();
sprintf(a,"%x%x%x%x",ircode[0],ircode[1],ircode[2],ircode[ 3]);
LCD_write_english_string(0,3,a);
comsend();
ok=0;
}
}
}
void irchuli()
{
uchar k,i,j;
uchar value=0;
k=1;
for(j=0;j<4;j++)
{for(i=0;i<8;i++)
{
value=value>>1;
if(irdate[k]>18)
{
value|=0x80;
}
k++;
}
ircode[j]=value;
}
reok=1;
}
void Time0() interrupt 1 {
m++;
}
void EX_0() interrupt 0 {
if(startflag)
{
if(m>90)
{
bitnum=0;
}
irdate[bitnum] =m;
m=0;
bitnum++;
if(bitnum==33)
{
bitnum=0;
ok=1;
}
}
else { startflag=1;m=0; } }。

相关文档
最新文档