#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define time_value() {TH0=0x00; TL0=0x00;}
sbit io=P3^2; //無線接口
sbit P14=P1^4; //開LED燈
sbit P26=P2^6; //關(guān)數(shù)碼管
sbit P27=P2^7;
sbit P24=P2^4; //關(guān)點陣
uchar flag,flag_rev;
uint time0[25];
uint time1[25];
uchar disp_dat[3];
void init(void)
{
IT0=1; //INT0
EX0=1;
EA=1;
TMOD=0x01;
time_value();
TR0=0;
P26=0;
P24=0;
P27=0;
P14=0;
}
void int0_srv() interrupt 0
{
TR0=1;
flag=1;
flag_rev=1;
EA=0;
}
void main()
{
uchar value;
uchar i,j;
init();
loop:
if(flag_rev)
{
flag_rev=0;
time_value();
while(!io); //0
time0[0]=TH0*256+TL0;
time_value();
while(io);//1
time1[0]=TH0*256+TL0;//同步碼
if((time1[0]+time0[0])>10000)
{
for(i=1;i<25;i++)
{
time_value();
while(!io);
time0=TH0*256+TL0;
time_value();
while(io);
time1=TH0*256+TL0;
}
TR0=0;
for(i=0;i<3;i++)
{
value=0;
for(j=1;j<9;j++)
{
value=value<<1;
if(time0[8*i+j]>700)//
//if(time0[8*i+j]>time1[8*i+j])
{
value=value|0x01;
}
}
disp_dat=value;
}
//EA=1;
}
EA=1;
}
while(1)
{
if(flag)
{
flag=0;
goto loop;
}
//P0=disp_dat[2];
switch(~disp_dat[2])
{
case 0x03:P0=0xfe;break;
case 0x0c:P0=0xfd;break;
case 0x30:P0=0xfb;break;
case 0xc0:P0=0xf7;break;
default:break;
}
}
}
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |