單片機(jī)文檔的時(shí)候一般寄存器是rw類型,還有一些是r或者w。對于一些特殊寄存器的置1是由硬件自動實(shí)現(xiàn)的,比如標(biāo)志位flag、中斷int;但清0還是需要通過軟件進(jìn)行操作。清0方式有兩種,寫1清0、寫0清0。這兩種方式有什么區(qū)別呢?在硬件實(shí)現(xiàn)上有什么不同?
單片機(jī)內(nèi)部有各種功能的寄存器,比如PIC、C51系列8位的單片機(jī),寄存器的寬度就是八個(gè)二進(jìn)制位,一般是高位在前低位在后,例如:11000011,一共是八位,高四位數(shù)據(jù)是1100,低四位數(shù)據(jù)是0011。
單片機(jī)是可以進(jìn)行位操作的,一個(gè)8位的寄存器,我們可以只針對其中一個(gè)位或者某些位進(jìn)行操作,將寄存器相應(yīng)的位賦值1(高電平)為置位,相反賦值0(低電平)為清零。這是一種比較容易理解的方式。
但對于寫1清0有幾種說法:
1)從電路角度去看,對某位寫1,即輸入一個(gè)高電平,使內(nèi)部的一個(gè)三極管導(dǎo)通接地,電容放電進(jìn)行清0。
2)寫1是在硬件上產(chǎn)生一個(gè)復(fù)位脈沖。能寫0清除就很可能也可以寫1進(jìn)去,而這與功能要求不符。如要控制只能寫0而不能寫1,則硬件比較復(fù)雜。
3)從應(yīng)用便捷性角度來說,讀了寄存器數(shù)據(jù)以后,照著寫回去就可以清0,不用再更改一次數(shù)據(jù)。
還有寄存器一般支持的是byte、half word、word操作,對于寄存器上有幾個(gè)標(biāo)志位的情況下,完成對單一標(biāo)志位的清0,又不影響其他標(biāo)志位,但又必須對其他位進(jìn)行寫,因此也就只能是寫1或者寫0清0才有效,只能一種方式。
責(zé)任編輯:haq
-
單片機(jī)
+關(guān)注
關(guān)注
6067文章
44976瀏覽量
650187 -
寄存器
+關(guān)注
關(guān)注
31文章
5433瀏覽量
124375
發(fā)布評論請先 登錄
伺服系統(tǒng)和單片機(jī)有什么區(qū)別
PLC與單片機(jī)有什么區(qū)別
單片機(jī)和伺服有什么區(qū)別
PLC和單片機(jī)到底有什么區(qū)別?

DAC7678輸出清零的時(shí)候偶爾會莫名其妙的冒出瞬間高輸出,再回到0電平,為什么?
用AFE4490的AFE_PDN腳停止工作和用控制寄存器0x23的PDNAFE位置停止工作有區(qū)別嗎
DAC38J84 config30-config32是配置相關(guān)的同步信號,請問這個(gè)同步是指什么?
在上電后,有時(shí)候會出現(xiàn)DAC1220E輸出不清零的情況,怎么解決?
PGA900 TEST_MUX_DAC_EN位清零不會”Connects DAC output to TOP/TON pins“,仍然是是2.5V為什么?
51單片機(jī)中為什么很少出現(xiàn)printf的身影

74ls163是同步清零嗎
單片機(jī)STM32可以用Python寫嗎?可以的開發(fā)板有哪些?

評論