//蜂鸣器发声延时 void DelayMS(uint x) { uchar t; while(x--) for(t=0;t<100;t++); }
//数码管显示驱动函数
void display(uchar number,uchar second) {
uchar second_first,second_second; second_first = second / 10; second_second = second % 10; P0 =0x00; P2 = 0xfe;
P0 = table[number]; delay(2); P0 =0x00; P2 = 0xfd; P0 = 0x40; delay(2); P0 =0x00;
20
P2 = 0xfb;
P0 = table[second_first]; delay(2); P0 =0x00; P2 = 0xf7;
P0 = table[second_second]; delay(2); P0 =0x00; }
//蜂鸣器响应按周期t发音 void Play(uchar t) { uchar i; for(i=0;i<1;i++) {
BEEP=~BEEP; DelayMS(t); } BEEP=0; }
//开始键扫描函数 void start_stop_keyscan()
21
{
if(start_stop == 0) { delay(8);
if((start_stop == 0)&&(!start_stop_flag)) {
start_stop_flag = 1; action = 1; TR0 = 1; state = 0; } } else {
start_stop_flag = 0; } }
//八位抢答键扫描函数 char key_scan8() {
if(key1 == 0) {
22
delay(8);
if((key1 == 0)&&(!key1_flag)) {
key1_flag = 1;
number = 1; number_display = number; } } else {
key1_flag = 0;
number = 0; }
if(key2 == 0) { delay(8);
if((key2 == 0)&&(!key2_flag)) {
key2_flag = 1;
number = 2; number_display = number; }
23
} else {
key2_flag = 0;
number = 0; }
if(key3 == 0) { delay(8); if(key3 == 0) { delay(8);
if((key3 == 0)&&(!key3_flag)) {
key3_flag = 1; number=3;
number_display=number; } else {
key3_flag=0; number=0;
24