- #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();
- }
- }
- }
復制代碼
//請問哪兒出錯了啊
|