1. 程式人生 > >嵌入式開發中對暫存器的位操作

嵌入式開發中對暫存器的位操作

在嵌入式開發中常常要對暫存器或者變數的位進行讀和寫,以下有幾個常用的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. 從低到高逐位接收