?? rf51.c.bak
字號:
#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar a _at_ 0x30;
uchar b _at_ 0x31;
uchar c _at_ 0x32;
uchar d _at_ 0x33;
uchar counth,countl,countt,temp,countfh;
sfr AUXR=0x8e;
sbit rfin=P2^7;
sbit led=P1^0;
bit syncOK,flaghe;
void init();
bit sync();
void getdata();
void main()
{
uchar m,n;
init();
while(1)
{
sync();
if(syncOK)
getdata();
if(a==98|| b==98 || c==98 || d==98 )
{
led=0;
for(m=255;m>0;m--)
for(n=255;m>0;m--);
}
}
}
void init()
{
counth=0;
countl=0;
countfh=0;
flaghe=0;
countt=0;
syncOK=0;
AUXR=0x01;
P1=0xff;
P3=0xff;
TMOD=0x01;
TH0=(65536-100)/256;
TL0=(65536-100)%256;
IE=0x82;
TR0=1;
}
bit sync()
{
while(countt<33)
{
if(counth>=2 && counth<=3)
{
if(!flaghe && countl==0)
{
countfh=counth;
flaghe=1;
}
if(!flaghe && countl!=0)
{
break;
}
if(countfh==counth)
{
if(countl>=29 && countl<=30)
{
syncOK=1;
break;
}
}
else
{
break;
}
}
}
counth=0;
countl=0;
countt=0;
flaghe=0;
countfh=0;
return(syncOK);
}
void getdata()
{
uchar countd;
bit datain;
while(!rfin);
countl=0;
while(countd<33)
{
if(counth>=2 && counth<=3)
{
if(countl>=8 && countl<=9)
{
temp=temp&0xfe;
datain=1;
counth=0;
countl=0;
countfh=0;
flaghe=0;
countd++;
while(!rfin);
}
}
else if(counth>=8 && counth<=9)
{
if(countl>=2 && countl<=3)
{
temp=temp|0x01;
datain=1;
counth=0;
countl=0;
countfh=0;
flaghe=0;
countd++;
while(!rfin);
}
}
if(countd==8)
a=temp;
else if(countd==16)
b=temp;
else if(countd==24)
c=temp;
else if(countd==32)
d=temp;
if(datain)
{
temp<<=1;
datain=0;
}
}
}
void timer0() interrupt 1
{
TH0=(65536-100)/256;
TL0=(65536-100)%256;
countt++;
if(rfin)
counth++;
if(!rfin)
countl++;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -