由于采用改進型哈佛架構,51單片機具備獨立的程序存儲器ROM、數據存儲器RAM,兩者地址空間獨立,且獨立編址,如下是單片機的存儲器結構圖。
數據存儲器分為RAM和外部RAM,兩者地址空間獨立,且獨立編址。以子系列52為例,由于具備256B尋址能力,編址空間為0x00~0xFF。RAM除了臨時存儲用戶數據外,還用于CPU通用寄存器,位尋址區,堆棧等??梢允褂肕OV指令對RAM進讀寫訪問。外部RAM具備64kB尋址能力,用于用戶臨時數據存放,但是需要用戶外部擴展??梢允褂肕OVX指令訪問外部RAM,外部RAM訪問由地址總線觸發,數據總線讀寫,P0、P2用于生成16地址,P0還時分復用兼用于數據總線。
程序存儲器ROM,用于存儲用戶代碼,由于程序計數器PC是16位的,因此系統具備64kB尋址能力,地址空間為0x0000 ~ 0xFFFF,廠商在單片機內部實現一部分程序存儲器,例如4kB、8kB,剩余的根據用戶需要可以外部擴展。訪問程序存儲器使用MOVC A, @A + DPTR,MOVC A, @A + PC指令,只能進行讀取訪問,無法寫入。
文章相對比較長,字數比較多,大家可以先打開頭像關注我,之后慢慢看,///插播一條:我自己在今年年初錄制了一套還比較系統的入門單片機教程,想要的同學找我拿就行了免費的,私信我就可以哦~點我頭像左下角黑色字體加我也能領取哦。最近比較閑,帶做畢設,帶學生參加省級或以上比賽///
論電腦中存儲器的速度,最慢的是電腦的硬盤,即使是現在的固態硬盤,速度在電腦的存儲中依然是最慢的,然后是內存,也就是內存條,它屬于動態RAM,再然后是緩存,緩存說的是CPU的L1,L2緩存,它是靜態RAM。
最快的當屬寄存器,和CPU的速度幾乎是同步的,這些都位于CPU內部,它之所以是最快主要有三個原因。
第一個原因是它由CPU直接存取,沒有中間步驟。
第二個原因是它位于CPU內部,走線非常短。
第三個原因是它的結構。
接下來我們就來說一說寄存器的作用,還有就是它的結構,寄存器是CPU用來暫存指令、數據和地址的電腦存儲器,暫存是重點,它是短時間內存儲數據的地方,比如它可以存儲計算產生的中間結果。
而如果沒有寄存器的話,中間數據則需要發給L1緩存,L1緩存再發給L2緩存,最后才能存儲內存條里面,CPU與內存條進行存取數據則要經過好幾個指令,然后還要這樣讀出來,這樣速度上就會慢很多,而對于這樣的中間數據,直接存儲到寄存器是最優選擇,這里寄存器充當的是累加器的作用。
這是一個4位寄存器的邏輯圖,它由4個邊沿觸發器構成,要弄懂這個寄存器,我們只需要了解這個邊沿觸發器就行了,因為寄存器就是幾個觸發器的集合。
這是一個邊緣觸發器的內部邏輯圖,你看它有兩級RS觸發器組成,首先說一下RS觸發器,當我們給S輸入1,R輸入0時,Q才輸出一,Q非輸出零,然后再給它加兩個與門,這樣只有時鐘信號為1時,它才能生效。
然后再來看邊沿觸發器,就簡單很多了,時鐘信號是震蕩器發過來的,它的波形速度很快,一秒鐘變換上億次,當時鐘信號為0時,D點信號也為0,這個RS觸發器處于失效模式,由于這個非門的存在,此時它的輸出是1,第一級觸發器處于工作模式。
我們給數據端輸入1,這是它此時的輸出情況,過一小段時間,時鐘信號就變成了高電平,經過非門之后輸出0,這時候第一級觸發器就會處于失效模式,但是它會保存之前的輸出,因為時鐘信號是高電平,第二級觸發器被激活。
第一級觸發器的輸出信息是第二級的輸入,第二級RS觸發器會立馬輸出相應的值,最后的輸出是1,因為我們最開始的數據寫的就是1,所以最后輸出的也是1,還有就是它的結果在時鐘信號由低變高的一瞬間就會改變,后面我們再給它寫數據,它的結果也不會改變了。
因為第一級RS觸發器此時處于失效模式,要想把下一個數據寫進去,只能等下一個上升沿到來,只需要一個周期,寄存器就能存取一次數據,所以它的速度很快,接近CPU,再來看寄存器是不是簡單多了,無非就是寫的數據更多罷了。
對于學過單片機的小伙伴們來說,和計算機打交道應該是很多的,因為單片機編程都是圍繞著寄存器來的,舉一個簡單的例子,就是對單片機配置引腳的輸入模式,還有這四種輸入模式,但是具體是用哪一種呢?這就需要我們通過編程實現了編程,最終也是對寄存器進行編程。
我們可以把寄存器看作是開關,我們需要用到哪個輸入模式,就閉合哪個開關,也就是對寄存器的某一位協議,比如我們要把單片機設置為模擬輸入模式,就需要把寄存器的這一位協議,其它的寫零,這個開關就閉合了,單片機就能被設置為模擬輸入模式,這就是計算器的一些簡單的應用。
對單片機感興趣的朋友可以找我,我錄制了一些關于單片機的入門教程,有需要的童鞋找我拿就行,免費的,私信我“林老師”就可以拿~點擊打開我的頭像就能領取
好了,文章到這里就結束了,如果這個知識對你有幫助,別忘了幫我一鍵三連哦。
責任編輯:Rex_08