C语言的,也不知道对不对,你试试。
#include
#define uchar unsigned char
#define uint unsigned int
sbit Key_1 = P3^7;
sbit Key_2 = P3^6;
uchar KeyValue_1=0;
uchar KeyValue_2=0;
void delay(uint);
void getkey();
void main()
{
while(1)
{
getkey();
if(KeyValue_1==6)
KeyValue_1=1;
if(KeyValue_2==6)
KeyValue_2=1;
switch(KeyValue_1)
{
case 0: P1=0xff;break;
case 1: P1=0xfe;break;
case 2: P1=0xfd;break;
case 3: P1=0xfb;break;
case 4: P1=0xf7;break;
case 5: P1=0xef;break;
default:break;
}
switch(KeyValue_2)
{
case 0: P0=0xff;break;
case 1: P0=0xfe;break;
case 2: P0=0xfd;break;
case 3: P0=0xfb;break;
case 4: P0=0xf7;break;
case 5: P0=0xef;break;
default:break;
}
}
}
void delay(uint xms)
{
uint i,j;
for(i = xms;i > 0;i--)
for(j = 120;j > 0;j--);
}
void getkey()
{
if(Key_1 == 0)
{
delay(10);
if(Key_1 == 0)
{
KeyValue_1 ++;
while(Key_1 == 0); //等待按键释放
}
}
if(Key_2 == 0)
{
delay(10);
if(!Key_2)
{
KeyValue_2 ++;
while(!Key_2);
}
}
}
LZ 有 太多细节没写明了:
晶振、LED 的驱动方式、每一次按键,是叠加下一颗灯还是换下一颗灯、单排到底是 4灯还是 5灯、“要求是用C语言来写,因为初学不懂汇编” 这句话 到底是 想用C还是 汇编??看LZ 还是留Q 解决吧