- #include "reg51.h"
- #define uint unsigned int
- #define uchar unsigned char
- sbit k1=P1^0;
- sbit k2=P1^1;
- sbit k3=P1^2;
- sbit k4=P1^3;
- sbit k5=P1^4;
- sbit k6=P1^5;
- sbit k7=P1^6;
- sbit k8=P1^7;//选手按钮
- sbit k_1=P3^0;//主持人开始/结束按钮
- sbit k_2=P3^1;//按下系统清零
- sbit song=P3^7;//蜂鸣器
- uint biaozhi;
- unsigned char led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//数码管0-9段码
- void delay(uint t)//输入数据延时
- {
- uint i,j;
- for(i=0;i<t;i++)
- for(j=0;j<600;j++);
- }
- void disp(uint a,uint b)//输入数字显示内容(十位,个位) 时间用途
- {
- P2=0xfe;
- P0=led[a];
- p2=0xfd;
- P0=led[b];
- delay(1000);
- }
- void disp2(uint a,uint b,uint c)//输入数字显示内容(十位,个位) 号牌用途
- {
- uint a,b,c;
- P2=0xfc;
- P0=led[a];
- p2=0xfb;
- P0=led[b];
- delay(c*1000);
- }
- void clear()
- {
- p2=0xf0;
- p0=led[0];
- }
- void keys() //抢答程序
- { /*处于允许抢答状态,且有人按下抢答按钮 抢答之后显示数值,改变标志终止抢答*/
- //暂时未接蜂鸣器
- if(k1==0&&k1==0){song=0;delay(1);biaozhi=1;disp2(0,1,1000);}
- if(k2==0&&k1==0){song=0;delay(1);biaozhi=1;disp2(0,2,1000);}
- if(k3==0&&k1==0){song=0;delay(1);biaozhi=1;disp2(0,3,1000);}
- if(k4==0&&k1==0){song=0;delay(1);biaozhi=1;disp2(0,4,1000);}
- if(k5==0&&k1==0){song=0;delay(1);biaozhi=1;disp2(0,5,1000);}
- if(k6==0&&k1==0){song=0;delay(1);biaozhi=1;disp2(0,6,1000);}
- if(k7==0&&k1==0){song=0;delay(1);biaozhi=1;disp2(0,7,1000);}
- if(k8==0&&k1==0){song=0;delay(1);biaozhi=1;disp2(,8,1000);}
- }
- void time60()//60秒倒计时程序
- {
- uint a=5,b=9;
- for(a>=0;a--){
- for(b<0;b--)
- disp(1,a);
- disp(2,b);
- delay(1000);
- }
- }
- void ea()//显示开机界面
- {
- unsigned char ci=0;
- while(ci<200)//循环200次(持续一段时间)
- {
- P2=0xfe; //位选1
- P0=0x77; //显示A
- delay(5);
- P2=0xfd; //位选2
- P0=0x79; //显示E
- delay(5);
- ci++;
- }
- }
- void main(){
- uint d=10;
- ea();
- if(K1==0)//主持人按下开始
- {
- for(d>0;d--)
- {
- disp(1,d);//10秒倒计时
- key();//选手抢答
- if(biaozhi==1)
- {
- if (k2==0)//如果按下清零按钮.系统清零
- {
- clear();
- }
- time60();
- }//如果选手抢答,抢答成功进入60秒倒计时
- else if(biaozhi!=1)
- {
- ea();
- }
- }
- }
复制代码
//请问哪儿出错了啊
|