四路抢答器的 控制 ,根据电路补充程序 要求:系统设置单片机复位按钮,主持人按复位键后,开始抢答,最先按下的键其对应发光二极管点亮,其他按键无效,等候主持人再次按下单片机复位键后,进行第二次抢答。 #include
sbit ; S2=P3^1; sbit S3=P3^2 sbit S4=P3^3; sbit =P2^0 ; sbit D 2=P 2 ^1; sbit sbit D 4=P 2 ^3; unsigned char k; void delay(unsigned int ) { } void jsm() { if( || || ||S4==0) // 如果 S1 按下,或者 S2 按下,或者 S3 按下,或者 S4 按下 { delay(1000); // 延时去抖 if(S1==0||S2==0||S3==0||S4==0) // 如果确实 S1 按下,或者 S2 按下,或者 S3 按下,或者 S4 按下, { if(S1==0)k=1; // 如果 S1 按下, k 赋值为 1 else if(S2==0) // 如果 S2 按下, k 赋值为 2 else if(S3==0)k=3; // 如果 S3 按下, k 赋值为 3 else if(S4==0)k=4; // 如果 S4 按下, k 赋值为 4 (S1==0||S2==0||S3==0||S4==0) // 查询 S1 是不是按下状态,或者 S2 按下状态,或者 S3 按下状态,或者 S4 按下状态,继续查询 } } } void jcl() // 键处理 { // 键扫描,获取键值 if(k 1){ while(1);} //S1 键按下,点亮 D1 ,结束 if(k==2){ D2 = 0 ; } //S2 键按下,点亮 D2 ,结束 if(k==3){ D3 = 0 ; } //S3 键按下,点亮 D3 ,结束 if(k==4){ while(1);} //S4 键按下,点亮 D4 ,结束 } void // 主函数 { while(1) { }