1、同時供8名選手比賽,分別用8個按鈕S0 ~ S7表示。
2、設(shè)置一個系統(tǒng)清除和搶答控制開關(guān)S,該開關(guān)由主持人控制。
3、搶答器具有鎖存與顯示功能。即選手按動按鈕,鎖存相應(yīng)的編號,揚聲器發(fā)出聲響提示,并在一位七段數(shù)碼管上顯示選手號碼。選手搶答實行優(yōu)先鎖存,優(yōu)先搶答選手的編號一直保持到主持人將系統(tǒng)清除為止。
#include "ADC0832.h"
#include "intrins.h"
/*********************************************
讀取ADC
**********************************************/
uchar ADC1(uchar ch)//通道ch 1,2
{
uchar temp0,temp1,i;
CS1=0;
temp0=0;
temp1=0;
_nop_();
_nop_();
DI=1;//開始位
_nop_();
_nop_();
CLK=1;
_nop_();
_nop_();
CLK=0;
_nop_();
_nop_();
DI=0;
_nop_();
_nop_();
//選擇通道0
DI=1;
_nop_();
CLK=1;//上升沿DI=1
_nop_();
CLK=0;//1個下降沿DI=1
_nop_();
if(ch==1)
DI=0;
if(ch==2)
DI=1;
_nop_();
CLK=1;
_nop_();
CLK=0;//第3個上升沿DI=0
_nop_();
DI=1;
//********通道選擇結(jié)束開始讀取轉(zhuǎn)換后的二進制數(shù)****
//下降沿讀數(shù),一下進行判斷和處理,共8次
for(i=0;i<8;i++)
{
temp0=temp0<<1;
CLK=1;
if(DO)
temp0++;
_nop_();
CLK=0;
}
for(i=0;i<8;i++)
{
temp1=temp1>>1;
CLK=1;
if(DO)
temp1=temp1 +0x80;
_nop_();
CLK=0;
}
CS1=1;
return temp0;
}
/*********************************************
讀取ADC
**********************************************/
uchar ADC2(uchar ch)//通道ch 1,2
{
uchar temp0,temp1,i;
CS2=0;
temp0=0;
temp1=0;
_nop_();
_nop_();
DI=1;//開始位
_nop_();
_nop_();
CLK=1;
_nop_();
_nop_();
CLK=0;
_nop_();
_nop_();
DI=0;
_nop_();
_nop_();
//選擇通道0
DI=1;
_nop_();
CLK=1;//上升沿DI=1
_nop_();
CLK=0;//1個下降沿DI=1
_nop_();
if(ch==1)
DI=0;
if(ch==2)
DI=1;
_nop_();
CLK=1;
_nop_();
CLK=0;//第3個上升沿DI=0
_nop_();
DI=1;
//********通道選擇結(jié)束開始讀取轉(zhuǎn)換后的二進制數(shù)****
//下降沿讀數(shù),一下進行判斷和處理,共8次
for(i=0;i<8;i++)
{
temp0=temp0<<1;
CLK=1;
if(DO)
temp0++;
_nop_();
CLK=0;
}
for(i=0;i<8;i++)
{
temp1=temp1>>1;
CLK=1;
if(DO)
temp1=temp1 +0x80;
_nop_();
CLK=0;
}
CS2=1;
return temp0;
}
資料借鑒于此紛傳
閱讀全文