單片機文檔的時候一般寄存器是rw類型,還有一些是r或者w。對于一些特殊寄存器的置1是由硬件自動實現(xiàn)的,比如標志位flag、中斷int;但清0還是需要通過軟件進行操作。清0方式有兩種,寫1清0、寫0清0。這兩種方式有什么區(qū)別呢?在硬件實現(xiàn)上有什么不同?
單片機內(nèi)部有各種功能的寄存器,比如PIC、C51系列8位的單片機,寄存器的寬度就是八個二進制位,一般是高位在前低位在后,例如:11000011,一共是八位,高四位數(shù)據(jù)是1100,低四位數(shù)據(jù)是0011。
單片機是可以進行位操作的,一個8位的寄存器,我們可以只針對其中一個位或者某些位進行操作,將寄存器相應的位賦值1(高電平)為置位,相反賦值0(低電平)為清零。這是一種比較容易理解的方式。
但對于寫1清0有幾種說法:
1)從電路角度去看,對某位寫1,即輸入一個高電平,使內(nèi)部的一個三極管導通接地,電容放電進行清0。
2)寫1是在硬件上產(chǎn)生一個復位脈沖。能寫0清除就很可能也可以寫1進去,而這與功能要求不符。如要控制只能寫0而不能寫1,則硬件比較復雜。
3)從應用便捷性角度來說,讀了寄存器數(shù)據(jù)以后,照著寫回去就可以清0,不用再更改一次數(shù)據(jù)。
還有寄存器一般支持的是byte、half word、word操作,對于寄存器上有幾個標志位的情況下,完成對單一標志位的清0,又不影響其他標志位,但又必須對其他位進行寫,因此也就只能是寫1或者寫0清0才有效,只能一種方式。
飛機上一般是什么操作系統(tǒng)?
高速CAN、容錯CAN、LIN總線有什么區(qū)別?
大佬終于把鴻蒙OS講明白了,收藏了!
免責聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!