解释一下主函数P0=0Xfe;

#include<reg51.h>
#define uchar unsigned char
void delay(uchar x)
{
uchar i;
while(x--)
{
for(i=0;i<120;i++);
}
}

void main() //主程序
{
while(1)
{
P0=0Xfe;
P2=0X06;
delay(1);

P0=0Xfd;    
P2=0X5b;
delay(1);

P0=0Xfb;    
P2=0X4f;
delay(1);

P0=0Xf7;    
P2=0X66;
delay(1);

P0=0Xef;    
P2=0X80;
delay(1);

P0=0Xdf;    
P2=0X6d;
delay(1);
}

}

嵌入式的问题需要结合电路图才能看懂程序。以后提与硬件结合紧密问题时要附上电路图。
我猜测,这个代码对应的电路应该是6个数码管,p0接共阴极。p2接数码管的数据线。
代码是通过p0的赋值去顺序选通对应的数码管。p2的赋值是决定数码管显示什么数据。
没猜错的话,数码管应该显示1234.5
p0=0xfe 是选通第一个数码管
p0=0xfd 是选通第二个数码管

转化成2进制有八位数 分别对应P0口的八个接口