AT89S52微控制器之硬體儲存結構

2021-10-23 12:35:52 字數 3057 閱讀 7693

匯流排(bus)

at89s52補充。

總結機器語言是機器指令的集合,機器指令是啥?機器指令展開來講就是一台機器可以正確執行的命令,具體點就是一串二進位制數字,機器(計算機、微控制器)只能看懂這玩意,然後把二進位制數轉化為一串高地電平,機器附帶的器件受到驅動,開始運算。比如下圖,你給in=0,燈就亮了。

就是彙編指令的集合。彙編指令和機器指令的區別:彙編指令是機器指令便於記憶的書寫方式。

例如,機器指令100010011101100表示把暫存器bx的內容送到ax中,彙編指令就是mox ax,bx。

用彙編指令寫程式,還需要編譯器。因為計算機、微控制器只能讀懂、執行機器語言,所以就需要乙個將彙編指令轉換成機器指令的玩意,編譯器。

想讓微控制器的cpu工作,就必須給它提供指令和資料,指令和資料在儲存器中工作,就是記憶體。比如下文說的資料儲存器、程式儲存器,就是用來存資料和指令的。

儲存單元

儲存器被劃分為若干個儲存單元,每個單元是乙個位元組,單位是byte(通常用b表示byte),同時1byte=8bit,通俗來說就是乙個位元組有8個二進位制數,比如說資料儲存器空間就有一部分是位定址區域,單位都是bit,要用位操作。

c51微控制器的內部ram就是128b,儲存單元從0開始編號,所以最大就是127。

at89s52微控制器儲存器採用哈佛結構,將程式儲存器和資料儲存器分開。

片內與片外兩部分。

片內有256b ram。

片內ram 不夠用時,在片外可擴充套件至64kb ram 。

共有219個可定址位,構成了位位址空間。位於片ram區位元組位址20h~2fh(共128位)和特殊功能暫存器區(片內ram區位元組位址80h~ffh區間內,共定義了91個可定址位)。

cpu對儲存器的讀寫

上面講到,儲存器被劃分為很多儲存單元,又把這些單元編號,目的是啥?不就是把他們看成乙個個位址嗎。就像一條街,每個房子都有門牌號。

你派張三去這條街找人,先要知道門牌號。cpu從記憶體中讀資料也是這樣,首先要指定儲存單元的位址。

另外。在微控制器中,不只有儲存器這乙個器件,比如,i/o、序列口、定時器等。因此cpu在讀寫資料的時候還要注意,操作物件,操作行為(讀或寫)。

那麼cpu是通過什麼將位址、資料、控制資訊傳到儲存器晶元裡的呢?計算機能處理、傳輸的資訊都是電訊號,所以是導線傳遞。計算機中專門有連線cpu和其他晶元的導線,稱為匯流排。

at82s52微控制器有三條匯流排,位址匯流排、資料匯流排和控制匯流排。

位址匯流排16位,資料匯流排是8位。

cpu通過位址匯流排來指定儲存器單元,因此位址匯流排上能傳送多少個不同的訊號,cpu就能對多少個儲存單元進行定址。一根導線可以傳送的穩定狀態就是0和1,16根導線可以傳送的16位二進位制資料 2

162^

216下圖展示了乙個具有10根位址線的cpu記憶體發出位址資訊11(0000001011)時10根位址線上傳送的二進位制資訊。

資料匯流排的寬度決定了cpu與外界的資料傳送速度。8根資料匯流排一次可傳送乙個8位二進位制資料(乙個位元組),16根資料匯流排一次可以傳送兩個位元組。at89s52的資料匯流排為8位,因此是8位微控制器,其中,位數指cpu處理的資料的寬度,也就是資料匯流排的根數。

下圖分別展示了8位、16位微控制器資料匯流排上傳送資料的情況(向記憶體中寫入資料89d8h)。

還記得這張圖嗎?位址匯流排是16位,資料匯流排是8位,它們是怎麼來的呢?

首先說位址匯流排,當at89s52訪問外部儲存器及i/o口時,p2口作為高8位位址匯流排使用,輸出高8位位址;當微控制器訪問外部程式儲存器或外部資料儲存器時,ale的負跳變將微控制器p0口先發出的低8位位址鎖存在p0口外接的位址鎖存器。資料匯流排,ale訊號鎖存低8位位址後,p0口再作為8位資料匯流排使用。

片內

at89s52的片內資料儲存器(ram)共有256個單元,位元組位址為00h~ffh。位址為80h~ffh為特殊功能暫存器區,與片內的高128b的ram單元統一編址。

高128b的ram單元位址與特殊功能暫存器區的位元組位址重合,。它們的位址區域是相同的,那麼通過位址匯流排指定位址的時候不會出現重疊嗎?不會的,雖然區域位址一樣,但是這兩個區域的定址方式是不一樣的。

片外

當片內256b的ram不夠用時,需外擴,最多可外擴64kb的ram。

片內為8kb的 flash ,位址為0000h~1fffh。16位位址線,可外擴的程式儲存器空間最大為64kb,位址為0000h~ffffh。

注意:訪問片內的還是片外的程式儲存器,由ea引腳電平確定。

ea=1時,cpu從片內0000h開始取指令,當pc值沒有超出0fffh時,只訪問片內flash 儲存器,當pc值超出1fffh自動轉向讀片外程式儲存器空間2000h~ffffh 內的程式。

ea*=0時,只能執行片外程式儲存器(0000h~ffffh)中的程式。不理會片內4kb flash 儲存器。

89C52微控制器之串列埠

include include define uint unsigned int define uchar unsigned char uchar flag 0 uchar buf 0x55 u void init t1 定時器1 void uart init 串列埠 void uart1 send...

51微控制器(一) 初學STC89C52微控制器

1.cpu運算器和控制器 微控制器的核心構成部分之一 2.內部資料儲存器存放可讀的資料,如程式中的定義。3.程式儲存器8kb,0000h 1fffh 存放程式,原始資料。4.定時 計算器3個定時器 計算器,即可設定成計數方式用於外部事件計數,也可以設定成定時模式,用於對微控制器的計時控制。5.並行埠...

STC89C52微控制器RAM模式

stc89c52 微控制器內變數 函式引數等資料在ram中的儲存模式 small compact large 前邊介紹微控制器資源的時候,我們提到過 stc89c52 共有 512 位元組的 ram,是用來儲存資料的,比如我們定義的變數都是直接存在 ram 裡邊的。但是微控制器的這 512 位元組的...