第2个回答 推荐于2017-10-18
#include<reg51.h>
#define uchar unsigned char
uchar cnt,keyval=0;
uchar led1,led2,led3;
unsigned int dat;
void int00() interrupt 0
{
keyval++;
keyval%=4;
switch(keyval)
{
case 0:led1=0xfe;led2=0xff;led3=0xff;break;
case 1:led1=0x55;led2=0x55;led3=0x55;break;
case 2:led1=0xff;led2=0xff;led3=0x7f;break;
case 3:led1=0xf0;led2=0xf0;led3=0xf0;break;
default:break;
}
dat=0;
dat|=led3;dat<<8;
dat|=led2;dat<<8;
dat|=led1;
}
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
cnt++;
if(cnt>=10)
{
cnt=0;
switch(keyval)
{
case 0:dat<<=1;Cy=(dat>>24 & 0x01);dat|=Cy;
P0=dat;P1=dat>>8;P2=dat>>16;
break;
case 1:dat=~dat;
P0=dat;P1=dat>>8;P2=dat>>16;
break;
case 2:Cy=dat&0x01;dat&=0x7fffff;dat|=(Cy<<23);
P0=dat;P1=dat>>8;P2=dat>>16;
break;
case 3:dat=~dat;
P0=dat;P1=dat>>8;P2=dat>>16;
break;
default:break;
}
}
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EX0=1;
IT0=1;
EA=1;
while(1);
}本回答被网友采纳