新聞中心

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

        16進制轉換算成10進制程序

        作者: 時間:2011-05-05 來源:網絡 收藏

        16算成10

        本文引用地址:http://www.104case.com/article/172812.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 下一頁

        關鍵詞: 進制 程序 轉換

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 获嘉县| 黔西| 金华市| 静宁县| 双流县| 南澳县| 同江市| 通山县| 鲁甸县| 奎屯市| 都昌县| 金乡县| 波密县| 白银市| 吴忠市| 大姚县| 黄陵县| 广西| 阿勒泰市| 高雄县| 镇沅| 广东省| 广丰县| 平泉县| 井陉县| 田阳县| 缙云县| 甘泉县| 汝南县| 松桃| 连江县| 太白县| 安图县| 金昌市| 农安县| 南漳县| 郴州市| 库车县| 宣化县| 黄骅市| 乌兰察布市|