资源简介
可以接受采用标准脉冲的红外信息
另外我还上传了一个我写的红外发送的程序,可以配合使用
另外我还上传了一个我写的红外发送的程序,可以配合使用
代码片段和文件信息
#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
- 下一篇:编译词法分析器识别关键字常数和符号
评论
共有 条评论