資源簡介
可以接受采用標準脈沖的紅外信息
另外我還上傳了一個我寫的紅外發送的程序,可以配合使用
另外我還上傳了一個我寫的紅外發送的程序,可以配合使用
代碼片段和文件信息
#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
- 上一篇:用LDLT分解求解方程組c
- 下一篇:編譯詞法分析器識別關鍵字常數和符號
評論
共有 條評論