程序是这样的:
#include<STC12C5A60S2.h>
#define uchar unsigned char
unsigned char keyval;
void led_delay(void)
{
unsigned char i,j;
for(i=0;i<220;i++)
for(j=0;j<220;j++);
}
void delay10ms(void)
{
unsigned char i,j;
for(i=0;i<100;i++)
for(j=0;j<100;j++);
}
uchar key_scan(void)
{
uchar code_h;
uchar code_l;
P3=0xf0;
if((P3&0xf0)!=0xf0)
{
delay10ms();
if((P3&0xf0)!=0xf0)
code_h=0xfe;
while((code_h&0xf0)!=0xf0);
{
P3=code_h;
if((P3&0xf0)!=0xf0)
{
code_l=(P3&0xf0|0x0f);
return keyval=((~code_h)+(code_l));
}
else
code_h=(code_h<<1)|0x01;
}
}
}
void forward(void)
{
P0=0xfe;
led_delay();
P0=0xfd;
led_delay();
P0=0xfb;
led_delay();
P0=0xf7;
led_delay();
P0=0xef;
led_delay();
P0=0xdf;
led_delay();
P0=0xbf;
led_delay();
P0=0x7f;
led_delay();
}
void backforward(void)
{
P0=0x7f;
led_delay();
P0=0xbf;
led_delay();
P0=0xdf;
led_delay();
P0=0xef;
led_delay();
P0=0xf7;
led_delay();
P0=0xfb;
led_delay();
P0=0xfd;
led_delay();
P0=0xfe;
led_delay();
}
void alter(void)
{
P0=0xf0;
led_delay();
P0=0x0f;
led_delay();
}
void blink(void)
{
P0=0xff;
led_delay();
P0=0x00;
led_delay();
}
void main(void)
{
keyval=0;
while(1)
{
key_scan();
switch(keyval)
{
case 0xe7:forward();
break;
case 0xd7:backforward();
break;
case 0xb7:alter();
break;
case 0x77:blink();
break;
}
}
}
#include<STC12C5A60S2.h>
#define uchar unsigned char
unsigned char keyval;
void led_delay(void)
{
unsigned char i,j;
for(i=0;i<220;i++)
for(j=0;j<220;j++);
}
void delay10ms(void)
{
unsigned char i,j;
for(i=0;i<100;i++)
for(j=0;j<100;j++);
}
uchar key_scan(void)
{
uchar code_h;
uchar code_l;
P3=0xf0;
if((P3&0xf0)!=0xf0)
{
delay10ms();
if((P3&0xf0)!=0xf0)
code_h=0xfe;
while((code_h&0xf0)!=0xf0);
{
P3=code_h;
if((P3&0xf0)!=0xf0)
{
code_l=(P3&0xf0|0x0f);
return keyval=((~code_h)+(code_l));
}
else
code_h=(code_h<<1)|0x01;
}
}
}
void forward(void)
{
P0=0xfe;
led_delay();
P0=0xfd;
led_delay();
P0=0xfb;
led_delay();
P0=0xf7;
led_delay();
P0=0xef;
led_delay();
P0=0xdf;
led_delay();
P0=0xbf;
led_delay();
P0=0x7f;
led_delay();
}
void backforward(void)
{
P0=0x7f;
led_delay();
P0=0xbf;
led_delay();
P0=0xdf;
led_delay();
P0=0xef;
led_delay();
P0=0xf7;
led_delay();
P0=0xfb;
led_delay();
P0=0xfd;
led_delay();
P0=0xfe;
led_delay();
}
void alter(void)
{
P0=0xf0;
led_delay();
P0=0x0f;
led_delay();
}
void blink(void)
{
P0=0xff;
led_delay();
P0=0x00;
led_delay();
}
void main(void)
{
keyval=0;
while(1)
{
key_scan();
switch(keyval)
{
case 0xe7:forward();
break;
case 0xd7:backforward();
break;
case 0xb7:alter();
break;
case 0x77:blink();
break;
}
}
}