本人只学过c,请用C来修改
1.使用矩阵键盘,除了8个按键之外额外设置一个清零键(与自带复位不同的)
2.抢答器按下一个按键后数值固定,只有按下清零键才能进行下一轮抢答
3.使用数码管或者LCD1602显示八路抢答器的数值
4.使用外部中断
#include
typedefunsignedcharuchar;
typedefunsignedintuint;
#defineGPIO_DIGP0
#defineGPIO_KEYP1
ucharKeyValue;
sbitk1=P3^1;
sbitLSA=P2^2;
sbitLSB=P2^3;
sbitLSC=P2^4;
ucharcodesmgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
voidInt0Init()
{
IT0=1;
EX0=1;
EA=1;
}
voiddelay(uinti)
{
while(i--);
}
voidKeyDown()
{
chara=0;
GPIO_KEY=0x0f;
if(GPIO_KEY!=0x0f)
{
delay(1000);
if(GPIO_KEY!=0x0f)
{
GPIO_KEY=0X0F;
switch(GPIO_KEY)
{
case(0X07):KeyValue=1;break;
case(0X0b):KeyValue=2;break;
case(0X0d):KeyValue=3;break;
case(0X0e):KeyValue=4;break;
}
GPIO_KEY=0XF0;
switch(GPIO_KEY)
{
case(0X70):KeyValue=KeyValue;break;
case(0Xb0):KeyValue=KeyValue+4;break;
case(0Xd0):KeyValue=KeyValue+8;break;
case(0Xe0):KeyValue=KeyValue+12;break;
}
while((a -->
|