嵌入式開發中對暫存器的位操作
阿新 • • 發佈:2018-12-12
在嵌入式開發中常常要對暫存器或者變數的位進行讀和寫,以下有幾個常用的tips。 開始之前,先複習一下C語言的位與(&)位或(|)運算。
# 假設 A 為暫存器上的某一位
A | 0 = A
A & 1 = A
A | 1 = 1
A & 0 = 0
有沒有發現,如果我們想要讀出A ,可以使用前兩組運算,想要把A設定(寫)成高電平或低電平,可以使用後兩組運算。
操作1位
假設有一個暫存器或變數a(最低位記為第0位)
Tips1.將第n位設定為高電平1
a |= (1<<n)
Tips2.將第n位設定為低電平0
a &= ~(1<<n)
Tips3.讀出第n位
(a>>n)&1
拓展:操作多位
在序列通訊中資料是按bit接收或傳送的,我們需要將若干個位元組拆成一位一位的傳送到資料線上,或從資料線上一位一位的接收並儲存。有了Tips1~3我們似乎有點思路了,不過還要注意是先發送或接收高位還是低位。
Tips4. 從高到低逐位傳送 Tips5. 從低到高逐位傳送 Tips6. 從高到低逐位接收 Tips7. 從低到高逐位接收