
/*P1口接led数码管 数码管段上接p0口 红外线的接口接p3.2 经测试正确 */
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint t=0,i,cishu=1,weishu=1,shu=0x00,a;
sbit p2_0=P2^0;
bit flag,ok;
int table[]= { 0x3f,0x06,0x5b,0x4f,0x66,0x6d, 0x7d,0x07,0x7f,0x6f };
uchar wrie[34];
void tmie1_init() { TMOD=0x02; TH0=0x00;
TL0=0x00;
EA=1;
ET0=1;
TR0=1;
}
void time0_init()
{
EA=1;
IT0=1;
EX0=1;
}
void show(uint b)
{
P1=~table[b];
}
//数据处理
void deal()
{
if(ok==1)
{
while(weishu)
{
if(wrie[weishu]>7)
wrie[weishu]=1;
else
wrie[weishu]=0;
if(weishu==33)
{ weishu=1;
break;
}
weishu++;
}
shu=0x00;
for(a=17;a<25;a++)
{
shu>>=1;
wrie[a]<<=7;
shu+=wrie[a];
}
switch(shu)
{ case 0x16: show(0);break;
case 0x0c: show(1);break;
case 0x18: show(2);break;
case 0x5e: show(3);break;
case 0x08: show(4);break;
case 0x1c: show(5);break;
case 0x5a: show(6);break;
case 0x42: show(7);break;
case 0x52: show(8);break;
case 0x4a: show(9);break;
}
ok=0;
}
}
void main()
{
tmie1_init();
time0_init();
P0=0X80;
while(1)
deal();
}
void tmer_1() interrupt 1
{
i++;
}
void tmer_0() interrupt 0
{
wrie[cishu]=i;
i=0;
if((wrie[cishu]<63)&&(wrie[cishu]>33))
{
cishu=0;
flag=1;
}
if((flag==1)&&(cishu==33))
{
cishu=0;
ok=1;
}
cishu++;
}
浙公网安备 33010602011771号