標(biāo)題:
個(gè)人找的一個(gè)8路搶答器的程序
[打印本頁]
作者:
xg1011
時(shí)間:
2017-11-29 15:44
標(biāo)題:
個(gè)人找的一個(gè)8路搶答器的程序
#include<reg51.H>
sbit Presenter=P2^0;
sbit K=P3^2;
bit Presenter_flag=0,flag;//主持人按鍵標(biāo)志位,僅允許一個(gè)數(shù)據(jù)通過標(biāo)志位
unsigned char Timer=0,i; //時(shí)間標(biāo)志
unsigned char ren=0xff;
bit x=0;
void System_Init();
void System_Rest();
void main()
{
System_Init();
while(1)
{
if(Presenter_flag) //主持人按鍵按下時(shí)開始系統(tǒng)
{
K=1;
if(K==1) //主持人按鍵起開
{break;
Presenter_flag=0;
}
}
else
System_Rest();
}
}
void System_Init()
{
EA=1; //打開中斷
EX0=1;
IT0=1;
TMOD=0x01;
ET0=1;
TH0=(65535-50000)/256; //50ms
TL0=(65535-50000)%256;
Presenter=0;
TR0=0;
}
void System_Rest()
{
P0=0xff; //復(fù)位設(shè)置:在主持人按鍵起開或者,搶答時(shí)間超過10s或者答題時(shí)間超過60s
P1=0xff;
TR0=0;
Presenter=0;
flag=1;
i=0;
Timer=0;
}
void into() interrupt 0
{
Presenter_flag=1;//主持人按鍵按下
TR0=1;
}
void Timer0() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
i++;
if(i==20) //1s鐘
{
i=0;
Timer++;
P1=0xff;
if((Timer<10)&&(P1==0xff)&&(flag==1)) //10s搶答時(shí)間,10s內(nèi)如果無人搶答則復(fù)位
{
Presenter=~Presenter; //搶答指示燈閃爍
}
else if((Timer>=10)&&(P1==0xff)&&(flag==1))
{
Presenter_flag=0;
Timer=0;
i=0;
}
P1=0xff;
if((Timer<=60)&&(P1!=0xff)&&(flag==1)) //答題時(shí)間,60s沒答完則復(fù)位
{
ren=P1;
Presenter=1;
flag=0;
}
if(flag==0)
{
if(x==0)
{x=1;P0=0xff;}
else if(x==1)
{x=0;P0=ren;}
}
if((flag==0)&&(P1==0xff))
{P0=ren;TR0=0;flag=1;}
if((Timer>60)&&(P1!=0xff))
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1