ob体育竞彩 _欧宝体育在线链接 學習網站

單片機操控特殊寄存器為什麼用或、與而不是直接16進製賦值

時間:2019-04-11 08:52 來源:ob体育竞彩

51單片機是8位的,寄存器有8位,每一位都代表不同的含義;STM32單片機是32位的,寄存器也是32位的,每一位也有不同的含義。在配置寄存器時,同一個寄存器會用到多次,如果直接賦值而不用“與”、“或”會發生什麼情況呢?下麵分析一下。

為什麼要用邏輯“與”、邏輯“或”賦值

在操作寄存器時,可能需要對同一個寄存器要配置多次,如果每次都要直接賦值的話,最後的賦值會把前麵的賦值覆蓋掉,這樣程序就無法實現應有的功能了。所以,為了不改變前麵的設置,通常會用邏輯“與”、邏輯“或”來賦值

如何用邏輯“或”給寄存器賦值

邏輯或的特性是,有1輸入即輸出1;全0輸入時才輸出0。所以,可以看出,如果要不改變某一位的值的話,可以用0與其做或運算。

所以,在設置寄存器時,如果要將某一位置1,而將其他位保持不變的話,可以將該位和1作或運算,比如下麵的語句:

GPIOA->CRH|=0X00000003;//低兩位置1

上麵的語句就是將低兩位設置為了11,而其他位保持不變。

如何用邏輯“與”給寄存器賦值

邏輯與的特性是,有0輸入即輸出0;全1輸入時才輸出1。可以看出,如果要不改變某一位的值的話,可以用1與其做與運算。如下圖所示:

所以,在設置寄存器時,如果要將某一位清零,而將其他位保持不變的話,可以將該位和0作與運算,比如下麵的語句:

GPIOA->CRH&=0XFFFFFFF0;//低兩位清零

上麵的語句就是將低兩位設置為了00,而其他位保持不變。

由上可知,合理的運用邏輯與、邏輯或運算可以其到隻改變某幾位,而不影響其他位的目的,並且可以大大提高到編寫代碼的效率。

    看過《單片機操控特殊寄存器為什麼用或、與而不是直接16進製賦值》的人還看了以下文章
    初學單片機從51入門的好處 初學單片機從51入門的好處
    51單片機是一款已經出現很久的單片機,它的出現可以說是劃時代的。同時期出現的其它單片機都已經逐漸退出曆史的舞台,而它卻依舊出現在某些專業的教材上。從這點來看,它依舊有其學習的意義。下麵說說初學單片機從51入門的好處。 51單片機的學習資源非常多...
    單片機為啥叫單片機 單片機為啥叫單片機
    1、MCU 我一般在工作計劃和原理圖的說明上,就直接將STM32或者STC89的單片機,標注為MCU。 無論是理解為Micro CPU,還是Microcontroller Unit,我認為都行,也沒有仔細去區分去過。自從32位單片機出來後,一些單片機設計的係統確實是具備部分電腦的功能。 你...
    16位單片機低端打不過8位高端打不過32位怎麼看 16位單片機低端打不過8位高端打不過32位怎
    有時間去了解一下TI的MPS係列的單片機,它的低功耗和8位的51還有32位的STM32還是有一定的區別度的。 就比如MSP430係列,一些醫療的應用也少不了它,其各種低功耗的應用和例子一抓一大把。 也許從價格上來說,感覺,8位的便宜好買;從性能上來說,感覺,32位的...
    單片機行業可以轉什麼行業 單片機行業可以轉什麼行業
    單片機行業可以轉很多方麵的工作啊,具體看你從事的硬件還是軟件。 對於之前從事單片機硬件的,有了這個硬件基礎,可以去的行業多了,畢竟很少有哪個行業離得開硬件的,像現在火熱的5G通信行業,手機終端行業、IOT行業、乃至AI行業,搞硬件的都有用武之地。...
    我是如何自學單片機編程語言的 我是如何自學單片機編程語言的
    首先肯定一點的是,編程是完全可以自學的,並且隻要掌握了中學水平的知識就可以學會。下麵我來給朋友們分享一下我是如何自學單片機編程語言的。 學習編程需要方法 我記得最初學習單片機編程語言是學的彙編語言,在當時比較流行的單片機是MSC-C51為內核的芯片...
    Baidu
    map