新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC單片機(jī)的數(shù)制轉(zhuǎn)換

        PIC單片機(jī)的數(shù)制轉(zhuǎn)換

        作者: 時間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
        如果使用PICC編譯器對PIC單片機(jī)的數(shù)制進(jìn)行轉(zhuǎn)換,我認(rèn)為嵌套匯編是最好的辦法,這樣可以節(jié)省更多的空間,相對PIC一般的小容量芯片來說是最好的,下面是我做的從BCD轉(zhuǎn)到BIN和從BIN轉(zhuǎn)到BCD的程序。本程序使用時還有個限制,那就是BINTOBCD的二進(jìn)制數(shù)要小于0x64,這樣轉(zhuǎn)換出來的數(shù)據(jù)才能到99以內(nèi),另外一個就BCDTOBIN最好有個數(shù)據(jù)判斷功能。可能寫的不是很標(biāo)準(zhǔn),請高手指正。

        另外一個是數(shù)據(jù)的反轉(zhuǎn),比如高位在前反轉(zhuǎn)到低位在前,我也認(rèn)為這樣的程序最好使用匯編,當(dāng)然我沒有看編譯器編譯出來的效率,估計(jì)會占用更多的FLASH。

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

        下面是數(shù)制轉(zhuǎn)換的程序:

        //在使用前要定義幾個全局變量

        volatile unchar FDATA,ZDATA,COUNT; //call ASM use.

        unchar BinToBcd(unchar data)
        {
        unchar fdata;
        ZDATA=data;
        #asm
        CLRF _FDATA;
        GTENTH
        MOVLW 0AH
        SUBWF _ZDATA,W
        BTFSS _STATUS,0
        GOTO OVER
        MOVWF _ZDATA
        INCF _FDATA
        GOTO GTENTH
        OVER
        SWAPF _FDATA,W
        IORWF _ZDATA
        #endasm
        fdata=ZDATA;
        return (fdata);
        }
        unchar BcdToBin(unchar data)
        {
        unchar fdata;
        ZDATA=data;
        #asm
        CLRF _FDATA
        MOVLW 0FH
        ANDWF _ZDATA,W
        MOVWF _FDATA
        SWAPF _ZDATA
        MOVLW 0FH
        ANDWF _ZDATA
        BCF _STATUS,0
        RLF _ZDATA
        MOVF _ZDATA,W
        MOVWF _COUNT
        BCF _STATUS,0
        RLF _ZDATA
        BCF _STATUS,0
        RLF _ZDATA
        MOVF _COUNT,W
        ADDWF _ZDATA,W
        ADDWF _FDATA
        #endasm
        fdata=FDATA;
        return (fdata);
        }



        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 深州市| 布尔津县| 淮北市| 阿瓦提县| 道孚县| 湖北省| 台北县| 中山市| 晋江市| 永登县| 平凉市| 霍林郭勒市| 宁波市| 新泰市| 福安市| 普陀区| 灵璧县| 松江区| 泗阳县| 偏关县| 吴忠市| 阳山县| 衡东县| 区。| 北碚区| 嘉义市| 治县。| 蕉岭县| 怀宁县| 青海省| 苏州市| 奉新县| 阿鲁科尔沁旗| 谢通门县| 江陵县| 武隆县| 长白| 巴里| 新源县| 盖州市| 阿拉善左旗|