回覆列表
  • 1 # 學習vs遊戲

    微控制器中數制與數制的轉換是怎樣實現的? ?

    關於數制之間的轉換,其實在數位電路的書中會講到,也很容易理解。在我們生活中,十進位制經常被我們用到:數字0,1,2,3,4,5,6,7,8,9,逢十進一。那在微控制器運用中,常見數制有:二進位制、八進位制、十進位制、十六進位制。

    在微控制器程式設計中經常應用到二進位制和十六進位制。比如現在有八個LED燈,在某一時刻,前四個燈全亮,後四個燈全滅。LED正極接電源,那麼用51微控制器P1八個口控制LED的亮滅(輸出低電平LED亮,高電平LED滅),前四個LED分別連線P1.0~P1.3,後四個連線P1.4~P1.7。這一段的程式碼用二進位制和十六進位制分別可以這樣編寫:

    二進位制程式碼:P1.0=0;P1.1=0;P1.2=0;P1.3=0;P1.4=1;P1.5=1;P1.6=1;P1.7=1;

    十六進位制程式碼:P1=0xF0;

    由此可見,微控制器中利用到多個串列埠時,程式設計使用十六進位制比較方便,另外如果要迴圈移位常用十六進位制。微控制器中利用到單個串列埠時,程式設計使用二進位制比較方便

    一、進位制簡略介紹;

    1、二進位制:使用數碼只有0和1兩個數字,逢二進一

    一般使用微控制器IO輸出兩種狀態:高電平、低電平。一般用0表示低電平,1表示高電平。程式設計控制就是以這個概念來編寫程式邏輯。如果是3.3V系統,高電平就為3.3V,如果為5V,那高電平就為5V,低電平為0V。如果做輸出口的話,就是微控制器透過軟體置位相關暫存器讓埠置高電平或低電平,達到電平輸出的目的,如果做輸入口,就是微控制器捕捉埠的電平然後置位相關暫存器,然後軟體讀取暫存器中0或1,達到輸入作用。

    2、八進位制:使用數碼有0~7共八個數字,逢八進一

    3、十進位制:使用數碼有0~9共十個數字,逢十進一

    4、十六進位制:數碼有0~9,A~F共十六個數,逢十六進一

    十六進位制在微控制器中經常使用,程式中會用到,通訊會用到,程式生成的HEX檔案也是十六進位制的。而bin檔案是二進位制檔案。

    二、進位制間的轉換

    1、二進位制與十進位制之間的轉換;

    二進位制轉十進位制: 把二進位制數按權展開、相加即得十進位制數

    十進位制轉二進位制:十進位制數除2取餘法,即十進位制數除2,餘數為權位上的數,得到的商值繼續除2,依此步驟繼續向下運算直到商為0為止。

    2、二進位制與八進位制之間的轉換;

    二進位制轉八進位制:3位二進位制數按權展開相加得到1位八進位制數。3位二進位制轉成八進位制是從右到左開始轉換,不足時補0。

    八進位制轉成二進位制:八進位制數透過除2取餘法,得到二進位制數,對每個八進位制為3個二進位制,不足時在最左邊補零。

    3、二進位制與十六進位制之間的轉換;

    二進位制轉十六進位制:與二進位制轉八進位制方法近似,八進位制是取三合一,十六進位制是取四合一。4位二進位制轉成十六進位制是從右到左開始轉換,不足時補0。

    十六進位制轉二進位制:十六進位制數透過除2取餘法,得到二進位制數,對每個十六進位制為4個二進位制,不足時在最左邊補零。

    4、十進位制與八進位制與十六進位制之間的轉換

    十進位制轉八進位制或者十六進位制有兩種方法第一:間接法—把十進位制轉成二進位制,然後再由二進位制轉成八進位制或者十六進位制。直接法—把十進位制轉八進位制或者十六進位制按照除8或者16取餘,直到商為0為止。

  • 中秋節和大豐收的關聯?
  • 衝奶粉時,先放奶粉後放一點水搖,可以嗎?