新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 16進制與10進制轉化程序

        16進制與10進制轉化程序

        作者: 時間:2012-08-12 來源:網絡 收藏

        16轉換算成10

        本文引用地址:http://www.104case.com/article/171053.htm


        unsigned char d[10]; //用于顯示的10位顯示緩存

        //========================================================
        //16to10進制輸出子:顯示數據,起始位,結束位,有無小數點
        //========================================================
        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;i8;i++) {
        tm[i]=dd/div;
        dd%=div;
        div/=10;
        }
        for (i=0;i6;i++) {
        if (tm[i]!=0) break;
        tm[i]=nul;
        }
        tm[5]|=dip; //小數點控制,請看“串行LED數碼管顯示驅動
        j=7;
        for (i=s;ie;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;i10;i++) {
        dat+=dd*temp;
        dd/=10;
        }
        return(dat);
        }
        /* 89C51系列CPU編程器接收CPU程序*/

        #i nclude reg51.h>
        #i nclude intrins.h>
        #i nclude absacc.h>

        #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;


        // 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=0xff;
        TH0=-100;b_break=0;
        while (d!=P1) {if (b_break==1) return;} //data
        polling
        SBUF=d;
        adds++;
        }
        break;
        case 3:
        case 4:
        case 5:
        case 6:break;
        }
        }

        void lock(unsigned char cpu) {
        unsigned char i;
        switch (cpu) {
        case 1: //89c51
        case 2:
        //lock 1
        rst=p26=p36=p27=p37=1;nop();
        vpp=1;
        nop();
        ale=0;
        // for (i=0;i6;i++) wait(100);
        wait(1);
        ale=1;
        nop();
        vpp=0;
        nop();

        //lock 2
        rst=p26=p27=1;p36=p37=0;nop();
        vpp=1;
        nop();
        ale=0;
        // for (i=0;i6;i++) wait(100);
        wait(1);
        ale=1;
        nop();
        vpp=0;
        nop();

        //lock 3
        rst=p26=p36=1;p27=p37=0;nop();
        vpp=1;
        nop();
        ale=0;
        // for (i=0;i6;i++) wait(100);
        wait(1);
        ale=1;
        nop();
        vpp=0;
        nop();
        break;
        case 3:
        case 4:
        case 5:
        case 6:break;
        }
        }

        void main(void) {
        unsigned char disp,flash,temp,cpu;
        EA=1;
        SCON=0xd8;PCON=0x80;
        TMOD=0x21;
        TL1=TH1=0xff;TR1=1;
        TH0=-100;ET0=TR0=1;

        flash=0x80;


        上一頁 1 2 3 下一頁

        關鍵詞: 進制 程序 轉化

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 安化县| 六安市| 泰兴市| 永和县| 平顺县| 尼木县| 来凤县| 临城县| 汶上县| 托克逊县| 连江县| 巴里| 海盐县| 招远市| 湛江市| 镇平县| 泸定县| 郁南县| 九龙坡区| 邵阳市| 涟源市| 太仓市| 绥滨县| 西藏| 英吉沙县| 荣昌县| 莱州市| 同德县| 溆浦县| 论坛| 华蓥市| 南京市| 泉州市| 日土县| 阿拉善盟| 邻水| 洛南县| 霍州市| 雅安市| 桑日县| 行唐县|