16进制转换算成10进制程序

unsigned char d[10];    //用于显示的10位显示缓存 
 //========================================================
    //16进制to10进制输出子程序:显示数据 , 起始位 , 结束位 , 有无小数点
 //========================================================
 void output(unsigned long dd,unsigned char s,unsigned char 
 e,unsigned char DIP) {
    unsigned long div;
    unsigned char tm[8],i,j;
    div=10000000;
    for (i=0;i<8;i++) {
        tm[i]=dd/div;
        dd%=div;
        div/=10;
    }
    for (i=0;i<6;i++) {
        if (tm[i]!=0) break;
        tm[i]=nul;
    }
    tm[5]|=dip;            //小数点控制 , 请看“串行LED数码管显示驱动程序”
    j=7;
    for (i=s;i        d[i]=tm[j];
        j--;
    }
 }
 //把显示位5-9位的10进制数转换成为16进制数
 unsigned int input(void) {
    unsigned int dd,dat;
    dd=10000;dat=0;
    for (i=5;i<10;i++) {
        dat+=dd*temp;
        dd/=10;
    }
    return(dat);
 }
 
 #i nclude
 #i nclude
 #i nclude
 #define e 8
 #define p 9
 #define l 10
 sbit led=P3^2;
 sbit p27=P2^7;
 sbit p26=P2^6;
 sbit p36=P3^6;
 sbit p37=P3^7;
 sbit rst=P3^3;
 sbit ale=P3^5;
 sbit vpp=P3^4;
 bit b_break;
 unsigned int adds;
【16进制转换算成10进制程序】
 //    13.8mS
 void int_t0(void) interrupt 1 {
    TH0=-100;
    b_break=1;
 }
 void wait(unsigned char w) {
    unsigned int t=w*184;
    b_break=0;
    TL0=-t%256-1;TH0=-t/256;
    while (b_break==0) {}
 }
 void nop(void) {
    _nop_();_nop_();_nop_();_nop_();
    _nop_();_nop_();_nop_();_nop_();
    _nop_();_nop_();_nop_();_nop_();
    _nop_();_nop_();_nop_();_nop_();
    _nop_();_nop_();_nop_();_nop_();
 }
 unsigned char command(void) {
    TH0=-100;b_break=0;
    while (RI==0) {if (b_break==1) return(0);}
    RI=0;
    return(SBUF);
 }
 void earsure(unsigned char cpu) {
    switch (cpu) {
    case 1:        //89C51
    case 2:rst=p26=1;p27=p36=p37=0;nop();vpp=1;nop();
        ale=0;wait(110);ale=1;nop();
        break;
    case 3:
    case 4:break;
    case 5:
    case 6:break;
    }
 }
 void program(unsigned char cpu) {
    unsigned int bdata adds=0;
    unsigned char d;
    switch (cpu) {
    case 1:    //89C51
    case 2:
        p36=p37=1;rst=1;
        while (1) {
            TH0=-100;b_break=0;
            while (RI==0) {if (b_break==1) return;}
            RI=0;
            d=SBUF;
            //address
            P0=adds%256;
            P2=adds/256;
            p27=1;
            //data
            P1=d;
            nop();    //48clcl
            //vpp
            vpp=1;
            nop();    //48clcl
            //ale
            ale=0;
            wait(1);//100uS
            ale=1;
            nop();    //10uS
            vpp=0;
            nop();    //48clcl
            p27=0;
            nop();    //48clcl
            P1=0