生成51单片机c语言六路抢答器的代码
时间: 2023-04-09 19:01:23 浏览: 108
我可以回答这个问题。以下是生成51单片机c语言六路抢答器的代码:
#include <reg51.h>
sbit LED1 = P2^0;
sbit LED2 = P2^1;
sbit LED3 = P2^2;
sbit LED4 = P2^3;
sbit LED5 = P2^4;
sbit LED6 = P2^5;
sbit KEY1 = P3^0;
sbit KEY2 = P3^1;
sbit KEY3 = P3^2;
sbit KEY4 = P3^3;
sbit KEY5 = P3^4;
sbit KEY6 = P3^5;
unsigned char code LED_CODE[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
void delay(unsigned int i)
{
while(i--);
}
void main()
{
unsigned char i = 0;
unsigned char key_value = 0;
unsigned char led_value = 0;
while(1)
{
key_value = 0;
led_value = 0;
if(KEY1 == 0)
{
delay(1000);
if(KEY1 == 0)
{
key_value = 1;
}
}
else if(KEY2 == 0)
{
delay(1000);
if(KEY2 == 0)
{
key_value = 2;
}
}
else if(KEY3 == 0)
{
delay(1000);
if(KEY3 == 0)
{
key_value = 3;
}
}
else if(KEY4 == 0)
{
delay(1000);
if(KEY4 == 0)
{
key_value = 4;
}
}
else if(KEY5 == 0)
{
delay(1000);
if(KEY5 == 0)
{
key_value = 5;
}
}
else if(KEY6 == 0)
{
delay(1000);
if(KEY6 == 0)
{
key_value = 6;
}
}
if(key_value != 0)
{
led_value = key_value;
}
LED1 = LED2 = LED3 = LED4 = LED5 = LED6 = 1;
if(led_value != 0)
{
switch(led_value)
{
case 1:
LED1 = 0;
break;
case 2:
LED2 = 0;
break;
case 3:
LED3 = 0;
break;
case 4:
LED4 = 0;
break;
case 5:
LED5 = 0;
break;
case 6:
LED6 = 0;
break;
}
}
P0 = LED_CODE[i];
i++;
if(i >= 10)
{
i = 0;
}
delay(1000);
}
}