單片機操控特殊寄存器為什麼用或、與而不是直接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單片機的學習資源非常多... |
單片機為啥叫單片機 | |
1、MCU 我一般在工作計劃和原理圖的說明上,就直接將STM32或者STC89的單片機,標注為MCU。 無論是理解為Micro CPU,還是Microcontroller Unit,我認為都行,也沒有仔細去區分去過。自從32位單片機出來後,一些單片機設計的係統確實是具備部分電腦的功能。 你... |
16位單片機低端打不過8位高端打不過32位怎 | |
有時間去了解一下TI的MPS係列的單片機,它的低功耗和8位的51還有32位的STM32還是有一定的區別度的。 就比如MSP430係列,一些醫療的應用也少不了它,其各種低功耗的應用和例子一抓一大把。 也許從價格上來說,感覺,8位的便宜好買;從性能上來說,感覺,32位的... |
單片機行業可以轉什麼行業 | |
單片機行業可以轉很多方麵的工作啊,具體看你從事的硬件還是軟件。 對於之前從事單片機硬件的,有了這個硬件基礎,可以去的行業多了,畢竟很少有哪個行業離得開硬件的,像現在火熱的5G通信行業,手機終端行業、IOT行業、乃至AI行業,搞硬件的都有用武之地。... |
我是如何自學單片機編程語言的 | |
首先肯定一點的是,編程是完全可以自學的,並且隻要掌握了中學水平的知識就可以學會。下麵我來給朋友們分享一下我是如何自學單片機編程語言的。 學習編程需要方法 我記得最初學習單片機編程語言是學的彙編語言,在當時比較流行的單片機是MSC-C51為內核的芯片... |
熱門文章
- 單片機和嵌入式哪個好
- 單片機重要特性含義解讀
- 單片機三總線結構及時序分析
- 單片機沒有PWM外設也可以做可調占空比
- 開源硬件arduino是什麼
- 標誌寄存器中的狀態標誌和控製標誌
- at89c51和stc12c5a60s2的引腳的區別
- 學習51單片機要用到哪些硬件工具
- 單片機定時的時間怎麼改變
- 單片機自動斷電或關機電路圖講解
- 串口的波特率如何計算?串口通信波特率計
- 單片機波特率計算公式和方法
- 51單片機ram區域劃分
- spi時序圖怎麼看?spi時序圖閱讀方法
- 51單片機怎麼顯示出數字的?單片機數碼管
- 51單片機有幾個中斷源_52單片機中斷源
- 嵌入式係統的評價方法
- AT89C51單片機為核心的時鍾電路的程序設
- stm32學到什麼程度叫精通
- 用STM32隻會庫函數不會用寄存器有影響嗎