//8字段定义
//先进行宏定义,然后进行查表,输出就OK了
unsigned int i ;
#define SEGA 0x04
#define SEGB 0x08
#define SEGC 0x10
#define SEGD 0x80
#define SEGE 0x20
#define SEGF 0x02
#define SEGG 0x01//
#define SEGDP 0x40//
#define NSEGG 0x7f//无解
#define NUM_0 SEGA + SEGB + SEGC + SEGD + SEGE + SEGF
#define NUM_1 SEGB + SEGC
#define NUM_2 SEGA + SEGB + SEGG + SEGE + SEGD
#define NUM_3 SEGA + SEGB + SEGC + SEGD + SEGG
#define NUM_4 SEGF + SEGG + SEGB + SEGC
#define NUM_5 SEGF + SEGG + SEGC + SEGD + SEGA
#define NUM_6 SEGA + SEGF + SEGE + SEGD + SEGC + SEGG
#define NUM_7 SEGA + SEGB + SEGC
#define NUM_8 SEGA + SEGB + SEGC + SEGD + SEGE + SEGF + SEGG
#define NUM_9 SEGA + SEGB + SEGC + SEGD + SEGF + SEGG
const unsigned char tNUMBER[] = {NUM_0,NUM_1,NUM_2,NUM_3,NUM_4,NUM_5,NUM_6,NUM_7,NUM_8,NUM_9};
if(i==9)
{P2 = tNUMBER[9];}
else
{P2 = 0x00;}
具体问题你也描述的不详细,所以只能写到这个地方了。