您的当前位置:首页正文

八路抢答器程序及原理图

来源:钮旅网


八路抢答器

#include

#define uchar unsigned char

#define uint unsigned int

uint x,count,m,count1,shi,ge,host,haoma,f1,f3,ready;

uchar code TAB[]={0xc0,0xf9,0xa4,0xb0,0x99,

0x92,0x82,0xf8,0x80,0x90,0xff};

sbit kaishi=P3^0;

sbit clean=P3^1;

sbit fengmingqi=P3^7;

sbit wei1=P2^0;

sbit wei3=P2^2;

sbit wei4=P2^1;

sbit hongLED=P3^5;

sbit lvLED=P3^6;

void delay(int x)

{

int i,j;

for(i=0;ifor(j=0;j<120;j++);

}

void init()

{

hongLED=0;

TMOD=0x11;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

EA=1;

ET0=1;

TR0=0;

ET1=1;

TR1=0;

x=10;

count=0;

m=30;

count1=0;

shi=0;

ge=0;

haoma=0;

host=0;

f1=0;

f3=0;

ready=0;

fengmingqi=1;

}

void display(uint shi,uint ge,uint haoma)

{

wei3=0;

P0=TAB[shi];

delay(5);

P0=0xff;

wei3=1;

wei4=0;

P0=TAB[ge];

delay(5);

P0=0xff;

wei4=1;

wei1=0;

P0=TAB[haoma];

delay(5);

P0=0xff;

wei1=1;

}

void keyscan()

{

if(ready==1)

{

if(host==0)

{

switch(P1)

{

case 0xfe:

delay(10);

if(P1==0xfe)

{

TR0=0;

host=1;

haoma=1;

TR1=1;

fengmingqi=1;

delay(100);

fengmingqi=0;

delay(100);

fengmingqi=1;

}

break;

case 0xfd:

delay(10);

if(P1==0xfd)

{

TR0=0;

host=1;

haoma=2;

TR1=1;

fengmingqi=1;

delay(100);

fengmingqi=0;

delay(100);

fengmingqi=1;

}

break;

case 0xfb:

delay(10);

if(P1==0xfb)

{

TR0=0;

host=1;

haoma=3;

TR1=1;

fengmingqi=1;

delay(100);

fengmingqi=0;

delay(100);

fengmingqi=1;

}

break;

case 0xf7:

delay(10);

if(P1==0xf7)

{

TR0=0;

host=1;

haoma=4;

TR1=1;

fengmingqi=1;

delay(100);

fengmingqi=0;

delay(100);

fengmingqi=1;

}

break;

case 0xef:

delay(10);

if(P1==0xef)

{

TR0=0;

host=1;

haoma=5;

TR1=1;

fengmingqi=1;

delay(100);

fengmingqi=0;

delay(100);

fengmingqi=1;

}

break;

case 0xdf:

delay(10);

if(P1==0xdf)

{

TR0=0;

host=1;

haoma=6;

TR1=1;

fengmingqi=1;

delay(100);

fengmingqi=0;

delay(100);

fengmingqi=1;

}

break;

case 0xbf:

delay(10);

if(P1==0xbf)

{

TR0=0;

host=1;

haoma=7;

TR1=1;

fengmingqi=1;

delay(100);

fengmingqi=0;

delay(100);

fengmingqi=1;

}

break;

case 0x7f:

delay(10);

if(P1==0x7f)

{

TR0=0;

host=1;

haoma=8;

TR1=1;

fengmingqi=1;

delay(100);

fengmingqi=0;

delay(100);

fengmingqi=1;

}

break;

}

}

}

if(kaishi==0)

{

delay(20);

if(kaishi==0)

{

hongLED=1;

lvLED=0;

ready=1;

TR0=1;

fengmingqi=1;

delay(100);

fengmingqi=0;

delay(100);

fengmingqi=1;

}

}

if(clean==0)

{

delay(20);

if(clean==0)

{

init();

fengmingqi=1;

delay(100);

fengmingqi=0;

delay(100);

fengmingqi=1;

hongLED=0;

lvLED=1;

}

}

}

void main()

{

init();

while(1)

{

keyscan();

display(shi,ge,haoma);

}

}

void T0_time() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

count++;

if(count==20)

{

count=0;

shi=x/10;

ge=x%10;

if(x<=5)

{

fengmingqi=1;

delay(100);

fengmingqi=0;

delay(100);

fengmingqi=1;

if(x==0)

{

fengmingqi=0;

ready=0;

x=0;

TR0=0;

hongLED=0;

}

}

x--;

}

}

void T1_time() interrupt 3

{

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

count1++;

if(count1==20)

{

count1=0;

shi=m/10;

ge=m%10;

if(m<=5)

{

fengmingqi=1;

delay(100);

fengmingqi=0;

delay(100);

fengmingqi=1;

if(m==0)

{

fengmingqi=0;

ready=0;

m=0;

TR1=0;

hongLED=0;

}

}

m--;

}

}

因篇幅问题不能全部显示,请点此查看更多更全内容