八路抢答器
#include #define uchar unsigned char #define uint unsigned int uint x,count,m,count1,shi,ge,host,haoma,f1,f3,ready; uchar code TAB[]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90,0xff}; sbit kaishi=P3^0; sbit clean=P3^1; sbit fengmingqi=P3^7; sbit wei1=P2^0; sbit wei3=P2^2; sbit wei4=P2^1; sbit hongLED=P3^5; sbit lvLED=P3^6; void delay(int x) { int i,j; for(i=0;i } void init() { hongLED=0; TMOD=0x11; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1; ET0=1; TR0=0; ET1=1; TR1=0; x=10; count=0; m=30; count1=0; shi=0; ge=0; haoma=0; host=0; f1=0; f3=0; ready=0; fengmingqi=1; } void display(uint shi,uint ge,uint haoma) { wei3=0; P0=TAB[shi]; delay(5); P0=0xff; wei3=1; wei4=0; P0=TAB[ge]; delay(5); P0=0xff; wei4=1; wei1=0; P0=TAB[haoma]; delay(5); P0=0xff; wei1=1; } void keyscan() { if(ready==1) { if(host==0) { switch(P1) { case 0xfe: delay(10); if(P1==0xfe) { TR0=0; host=1; haoma=1; TR1=1; fengmingqi=1; delay(100); fengmingqi=0; delay(100); fengmingqi=1; } break; case 0xfd: delay(10); if(P1==0xfd) { TR0=0; host=1; haoma=2; TR1=1; fengmingqi=1; delay(100); fengmingqi=0; delay(100); fengmingqi=1; } break; case 0xfb: delay(10); if(P1==0xfb) { TR0=0; host=1; haoma=3; TR1=1; fengmingqi=1; delay(100); fengmingqi=0; delay(100); fengmingqi=1; } break; case 0xf7: delay(10); if(P1==0xf7) { TR0=0; host=1; haoma=4; TR1=1; fengmingqi=1; delay(100); fengmingqi=0; delay(100); fengmingqi=1; } break; case 0xef: delay(10); if(P1==0xef) { TR0=0; host=1; haoma=5; TR1=1; fengmingqi=1; delay(100); fengmingqi=0; delay(100); fengmingqi=1; } break; case 0xdf: delay(10); if(P1==0xdf) { TR0=0; host=1; haoma=6; TR1=1; fengmingqi=1; delay(100); fengmingqi=0; delay(100); fengmingqi=1; } break; case 0xbf: delay(10); if(P1==0xbf) { TR0=0; host=1; haoma=7; TR1=1; fengmingqi=1; delay(100); fengmingqi=0; delay(100); fengmingqi=1; } break; case 0x7f: delay(10); if(P1==0x7f) { TR0=0; host=1; haoma=8; TR1=1; fengmingqi=1; delay(100); fengmingqi=0; delay(100); fengmingqi=1; } break; } } } if(kaishi==0) { delay(20); if(kaishi==0) { hongLED=1; lvLED=0; ready=1; TR0=1; fengmingqi=1; delay(100); fengmingqi=0; delay(100); fengmingqi=1; } } if(clean==0) { delay(20); if(clean==0) { init(); fengmingqi=1; delay(100); fengmingqi=0; delay(100); fengmingqi=1; hongLED=0; lvLED=1; } } } void main() { init(); while(1) { keyscan(); display(shi,ge,haoma); } } void T0_time() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; count++; if(count==20) { count=0; shi=x/10; ge=x%10; if(x<=5) { fengmingqi=1; delay(100); fengmingqi=0; delay(100); fengmingqi=1; if(x==0) { fengmingqi=0; ready=0; x=0; TR0=0; hongLED=0; } } x--; } } void T1_time() interrupt 3 { TH1=(65536-50000)/256; TL1=(65536-50000)%256; count1++; if(count1==20) { count1=0; shi=m/10; ge=m%10; if(m<=5) { fengmingqi=1; delay(100); fengmingqi=0; delay(100); fengmingqi=1; if(m==0) { fengmingqi=0; ready=0; m=0; TR1=0; hongLED=0; } } m--; } } 因篇幅问题不能全部显示,请点此查看更多更全内容