利用独立按键设计一个抢答器,代码很简单,但是却花了近一个小时,接错线,线8位的顺序出错等,原以为很简单的东西,却花了大量时间在代码之外,或许这就是单片机的特点吧,不光是代码要正确,还要外部连接正确才能最终达到预期的效果。
#include <reg52.h> sbit Key1 = P0^0; //按键1 sbit Key2 = P0^1; //按键2 sbit Key3 = P0^2; //按键3 sbit Key4 = P0^3; //按键4 void main(void) { bit Flag = 0; // bit类型,做布尔变量 标识是否有键按下 P1 = 0xFF; // 先将LED灭 while (!Flag) // 如果没有按键按下 { if (!Key1) // 如果是键1 { P1 = 0xFE; // 第一个灯亮 Flag = 1; // 标识有人抢答 } else if (!Key2) { P1 = 0xFD; Flag = 1; } else if (!Key3) { P1 = 0xFB; Flag = 1; } else if (!Key4) { P1 = 0xF7; Flag = 1; } } while (Flag); // 维持灯的状态 }