• 大小: 19.77 KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-09-20
  • 语言: 其他
  • 标签:

资源简介

可以接受采用标准脉冲的红外信息
另外我还上传了一个我写的红外发送的程序,可以配合使用

资源截图

代码片段和文件信息

#include
#define  uint unsigned int
#define uchar unsigned char
uchar getcode(uchar o);
sbit P32=P3^2;
sbit P20=P2^0;
sbit P21=P2^1;
sbit P22=P2^2;
sbit P23=P2^3;
sbit P24=P2^4;
sbit P25=P2^5;
sbit P26=P2^6;
sbit P27=P2^7;
sbit P10=P1^0;
sbit P11=P1^1;
bit flag_tt0;
bit flag_c;
uchar chuanshu=0x00;
//sbit flag_cs=ACC^7;最好不要用acc来传数,因为中间数据极有可能变化,不是稳定的
/*精确延时,主要是用来产生880ms中断,用来判断*/
/*是高电平,还是低电平                        */
/* 4740ms是用来判断9s过后的4.5ms是否完的
* /用中断来实现精确定时                            */
/**///////////////////////////////////////////////

//uchar code tab1[]={0x100x030x010x060x090x1D0x1F0x0D0x19};
//uchar code tab[]={0x280x7E0xA20x620x740x610x210x7A0x200x600x300x250xA70x260xA10xB1};
uchar a[4];                                             
uchar x=0x00;//用来表示第一位验证码
uchar y=0xff;//第二位
uchar b=0x00;//用来装要显示的数的数码值第三位
uchar z=0xff;//用来保存第四位,也就是第三位的反
//显示发过来的数,数码值放在i里面
void delay(uchar j)
{
while(j--);
}
void   display(void)
{
 uchar efghijkl;
e=x&0xf0;
e=e>>4;
f=x&0x0f;
g=y&0xf0;
g=g>>4;
h=y&0x0f;
i=b&0xf0;
i=i>>4;
j=b&0x0f;
k=z&0xf0;
k=k>>4;
l=z&0x0f;

P2=0x0ff;
 
P0=getcode(e);
P20=0;
delay(152);
P2=0x0ff;//数码管第二位开始显示

P0=getcode(f);
P21=0;
delay(152);
P2=0x0FF;

P0=getcode(g);
P22=0;
delay(152);
P2=0x0ff;

P0=getcode(h);
P23=0;
delay(152);
P2=0x0ff;

P0=getcode(i);
P24=0;
delay(152);
P2 =0x0ff;

P0 = getcode(j);
P25= 0;
delay(152);
P2 =0x0ff;

P0=getcode(k);
P26=0;
delay(152);
P2 =0x0ff;

P0 = getcode(l);
P27=0;
delay(152);
P2 =0x0ff;
}


uchar getcode(uchar o) {
uchar m;
switch(o)
{case 0: m=0x28;break;
case 1: m=0x7E;break;
case 2: m=0x0A2;break;
case 3: m=0x62;break;
case 4: m=0x74;break;
case  5: m=0x61;break;
case 6: m=0x21;break;
case 7: m=0x7A;break;
case 8: m=0x20;break;
case 9: m=0x60;break;
case 10:m=0x30;break;
case 11:m=0x25;break;
case 12:m=0xA7;break;
case 13:m=0x26;break;
case 14:m=0xA1;break;
case 15:m=0xB1;break;
default: break;
}
return(m);
}





void int00(void) interrupt 0
{uchar w=4;
uchar n=8;
uchar p=0;
EX0=0;
flag_tt0=0;
TH0=0xfc;
TL0=0xbd;
TR0=1;
//P10=0;
while(flag_tt0==0);

flag_tt0=0;
if(P32==0)  {
  TH0=0xe0;
   TL0=0xfd;//定时8820减掉上面的882
   TR0=1;
 while(flag_tt0==0);
 flag_tt0=0;
 while(P32==0); 
 TH0=0xed;
 TL0=0x7b;//定时4740
 TR0=1;
 while(flag_tt0==0);
  
 flag_tt0=0;
if(P32==0)      { 
                  while(w--)      {
                  while(n--){
 chuanshu=chuanshu>>1; 
                  while(P32==0);
                  TH0=0xfc;
  TL0=0xb7;
  TR0=1;
  while(flag_tt0==0);
                   flag_tt0=0;
                  flag_c=P32;
  while(P32==1);
  if(flag_c==1)
  chuanshu=chuanshu+0x80;
                 
      //通信的话一般是传送低位数据,再传送高位
                  a[p]=chuanshu;     }
  //P1=ACC;
  chuanshu=0;
  p++;   
  n=8;  
                      }    
   

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5115  2002-04-16 15:32  红外接收\STARTUP.A51

     文件      11679  2007-07-21 11:33  红外接收\STARTUP.LST

     文件        749  2007-07-21 11:33  红外接收\STARTUP.OBJ

     文件       3892  2007-08-10 11:01  红外接收\Text1.c

     文件       8693  2007-07-30 09:39  红外接收\Text1.LST

     文件       9803  2007-07-30 09:39  红外接收\Text1.OBJ

     文件       8539  2007-07-30 09:39  红外接收\红外接收

     文件       2117  2007-07-30 09:39  红外接收\红外接收.hex

     文件         30  2007-07-30 09:39  红外接收\红外接收.lnp

     文件      10866  2007-07-30 09:39  红外接收\红外接收.M51

     文件       1372  2007-08-21 20:12  红外接收\红外接收.Opt

     文件        192  2007-08-21 20:12  红外接收\红外接收.plg

     文件       1999  2007-07-30 14:32  红外接收\红外接收.Uv2

     目录          0  2008-10-12 08:23  红外接收

----------- ---------  ---------- -----  ----

                65046                    14


评论

共有 条评论

相关资源