#include"NEW_8051.H"#defineucharunsignedchar#defineuintunsignedint//宏定义sbitR1=P6^6;//定义R每个IO控制的LEDsbitR2=P2^7;sbitR3=P4^0;sbitR4=P1^7;sbitR5=P0^0;sbitR6=P0^6;sbitR7=P1^2;sbitR8=P1^5;sbitR9=P1^1;sbitR10=P0^7;sbitR11=P0^5;sbitR12=P0^1;sbitR13=P7^6;sbitR14=P6^5;sbitR15=P3^4;sbitR16=P4^4;sbitG1=P2^1;//定义G每个IO控制的LEsbitG2=P2^3;sbitG3=P6^4;sbitG4=P7^7;sbitG5=P4^6;sbitG6=P0^2;sbitG7=P6^1;sbitG8=P1^4;sbitG9=P1^6;sbitG10=P4^7;sbitG11=P6^0;sbitG12=P5^2;sbitG13=P4^5;sbitG14=P2^6;sbitG15=P6^7;sbitG16=P2^2;sbitB1=P4^3;//定义B每个IO控制的LEDsbitB2=P2^0;sbitB3=P2^5;sbitB4=P7^5;sbitB5=P5^5;sbitB6=P0^4;sbitB7=P5^3;sbitB8=P6^3;sbitB9=P1^3;sbitB10=P1^0;sbitB11=P6^2;sbitB12=P0^3;sbitB13=P5^4;sbitB14=P2^4;sbitB15=P7^4;sbitB16=P5^0;ucharcodezimo[];bitScan_bit=0;bitBIT_timeout=0;uinti=0,j=0;#defineucNumRows100//定义一周显示列数/***************************************/voidShow_R(ucharr1,ucharr2)//数据输出IO口R是红色16灯{R1=(bit)(r1&0x01);R2=(bit)(r1&0x02);R3=(bit)(r1&0x04);R4=(bit)(r1&0x08);R5=(bit)(r1&0x10);R6=(bit)(r1&0x20);R7=(bit)(r1&0x40);R8=(bit)(r1&0x80);R9=(bit)(r2&0x01);R10=(bit)(r2&0x02);R11=(bit)(r2&0x04);R12=(bit)(r2&0x08);R13=(bit)(r2&0x10);R14=(bit)(r2&0x20);R15=(bit)(r2&0x40);R16=(bit)(r2&0x80);}voidShow_G(ucharr1,ucharr2)//数据输出IO口G是绿色16灯{G1=(bit)(r1&0x01);G2=(bit)(r1&0x02);G3=(bit)(r1&0x04);G4=(bit)(r1&0x08);G5=(bit)(r1&0x10);G6=(bit)(r1&0x20);G7=(bit)(r1&0x40);G8=(bit)(r1&0x80);G9=(bit)(r2&0x01);G10=(bit)(r2&0x02);G11=(bit)(r2&0x04);G12=(bit)(r2&0x08);G13=(bit)(r2&0x10);G14=(bit)(r2&0x20);G15=(bit)(r2&0x40);G16=(bit)(r2&0x80);}voidShow_B(ucharr1,ucharr2)//数据输出IO口B是绿色16灯{B1=(bit)(r1&0x01);B2=(bit)(r1&0x02);B3=(bit)(r1&0x04);B4=(bit)(r1&0x08);B5=(bit)(r1&0x10);B6=(bit)(r1&0x20);B7=(bit)(r1&0x40);B8=(bit)(r1&0x80);B9=(bit)(r2&0x01);B10=(bit)(r2&0x02);B11=(bit)(r2&0x04);B12=(bit)(r2&0x08);B13=(bit)(r2&0x10);B14=(bit)(r2&0x20);B15=(bit)(r2&0x40);B16=(bit)(r2&0x80);}voidShow_Color(ucharr1,ucharr2,ucharcolor)//显示7彩色{switch(color){case0://红色Show_R(r1,r2);break;case1://绿色Show_G(r1,r2);break;case2://蓝色Show_B(r1,r2);break;case3://黄色Show_R(r1,r2);Show_G(r1,r2);break;case4://紫色Show_R(r1,r2);Show_B(r1,r2);break;case5://青色Show_G(r1,r2);Show_B(r1,r2);break;case6://白色Show_R(r1,r2);Show_G(r1,r2);Show_B(r1,r2);break;default:P0=0XFF;P1=0XFF;P2=0XFF;P3=0XFF;P4=0XFF;P5=0XFF;P6=0XFF;P7=0XFF;break;}}/*****n(us)延时子程序*****/voidDelay15us()//@18.432MHz{unsignedchara,b;for(b=140;b>0;b--)for(a=5;a>0;a--);}/*********中断子程序**********/voidint0()interrupt0//使用外部中断0{BIT_timeout=1;//起点标志位}/*****主函数*****/voidmain(void){P1M0=0X00;P1M1=0X00;P0M0=0X00;//IO口初始化准双向IOP0M1=0X00;P2M0=0X00;P2M1=0X00;P3M0=0X00;P3M1=0X00;P4M0=0X00;P4M1=0X00;P5M0=0X00;P5M1=0X00;P6M0=0X00;P6M1=0X00;P7M0=0X00;P7M1=0X00;P0=0XFF;P1=0XFF;P2=0XFF;P3=0XFF;P4=0XFF;P5=0XFF;P6=0XFF;P7=0XFF;IT0=1;//初始化外部中断起点检测EX0=1;EA=1;//开中断//主程序中while(1){if(BIT_timeout==1)//起点判断{BIT_timeout=0;//清零//Scan_bit=1;//起点检测到后LED不再流水测试j++;if(j>688)//显示完文字后循环;j=16*需要显示的字数768/16=48宽24X32高大字j=24*显示的字数768/24=32{j=0;}for(i=j;i