導航:首頁 > 操作系統 > 單片機c程序存儲器

單片機c程序存儲器

發布時間:2022-07-02 17:25:31

單片機存儲器的程序存儲器

MCS-51中,程序存儲器通過16位程序計數器(PC)定址,具有64KB定址能力,也即可以在64KB的地址空間任意定址。其中,具有4KB片內程序存儲器空間,地址為000H-0FFFH(注:8031無片內程序存儲器);片外程序存儲器空間最大可擴展到64KB,地址為0000H-FFFFH,片內、外統一編址。
1、程序存儲器片內與片外地址
由於片內、外統一編址,所以片內4KB存儲空間地址000H-0FFFH與片外存儲器地址000H-0FFFH發生沖突。但是,CPU是訪問片內存儲器還是訪問片外存儲器,可由引腳上所接的電平來確定。
1)當EA引腳接高電平時,若程序計數器(PC)值超出片內存儲空間,則自動轉向片外程序存儲器空間執行程序;
2)當EA引腳接低電平時,單片機只能執行片外程序存儲器的程序。
另外,因為8031沒有片內程序存儲器,所以就將EA引腳固定接低電平,通過外部擴展程序存儲器來存放程序;而對其它MCS-51,若沒有片外程序存儲器,那應將引腳固定接高電平。通過EA引腳所接電平不同,解決了程序存儲器中片內、片外地址沖突問題。
2、程序存儲器中的特殊單元
MCS-51程序存儲器中,有6個存儲單元具有特殊用途。
0000H單元為系統啟動地址。MCS-51單片機啟動復位後,程序計數器(PC)的內容為0000H,所以系統將從0000H單元取指令,並開始執行程序。程序設計時一般在該地址存放一條絕對跳轉指令,轉入主程序的入口地址。
另外0003H一002AH日被均勻地分成5段,用於5個中斷服務程序的入口。
其中0003H、000BH、0013H、O01BH、0023H為5個中斷源的中斷服務程序的入口地址。
中斷源的中斷服務程序的入口地址,即當中斷產生相應的中斷服務程序的起始地址被裝入程序計數器(PC),系統將從該地址取指令,並執行程序 。 8051有256個單元的內片數據存儲器,其中00H-7FH為片內隨機存儲器RAM,也叫低128B;80H-FFH為特殊功能寄存器,也叫高128B。低128B又分為工作寄存器區、位定址區、用戶RAM區。
1.工作寄存器區(00H-1FH)
在00H-1FH共32個單元,被均勻地分為四組工作寄存器堆:RB0、RB1、RB2、RB3,每組寄存器堆包含8個工作寄存器,均以R0-R7來命名,這些寄存器被稱為通用寄存器。工作寄存器用於臨時存放8位信息。在使用時,由程序狀態字寄存器中的RS0、RS1來選擇工作寄存器堆。
2.位定址區(20H-2FH)
片內數據存儲器的20H-2FH存儲區為位定址區,既可作為一般單元按位元組定址,也可按位進行定址。位定址區有16個位元組,位地址為00H-7FH。
3.用戶RAM區(30H-7FH)
用戶RAM區主要用作數據緩沖區和堆棧。這個存儲區只能按位元組定址,用作存放數據及作為堆棧區。通常堆棧區被設置在這塊存儲區,由堆棧寄存器SP指定,CPU復位時SP=07H,使得堆棧實際上是從08H開始的,但08H-1FH屬於工作寄存器區 。 MCS-51單片機的特殊功能寄存器 符號 地址 功能介紹 B F0H B寄存器 ACC E0H 累加器 PSW D0H 程序狀態字 TH2* CDH 定時器/計數器2(高8位) TL2* CCH 定時器/計數器2(低8位) RLDH* CBH 外部輸入(P1.1)計數器/自動再裝入模式時初值寄存器高八位 RLDL* CAH 外部輸入(P1.1)計數器/自動再裝入模式時初值寄存器低八位 T2CON* C8H T2定時器/計數器控制寄存器 IP B8H 中斷優先順序控制寄存器 P3 B0H P3口鎖存器 IE A8H 中斷允許控制寄存器 P2 A0H P2口鎖存器 SBUF 99H 串列口鎖存器 SCON 98H 串列口控制寄存器 P1 90H P1口鎖存器 TH1 8DH 定時器/計數器1(高8位) TH0 8CH 定時器/計數器0(高8位) TL1 8BH 定時器/計數器1(低8位) TL0 8AH 定時器/計數器0(低8位) TMOD 89H T0、T1定時器/計數器方式控制寄存器 TCON 88H T0、T1定時器/計數器控制寄存器 DPH 83H 數據地址指針(高8位) DPL 82H 數據地址指針(低8位) SP 81H 堆棧指針 P0 80H P0口鎖存器 PCON 87H 電源控制寄存器

❷ 8051單片機內部程序存儲器和內部數據存儲器的定址范圍是多少

內部程序存儲器的定址范圍是C:0000H~FFFFH
內部數據存儲器的定址范圍是I:00H~FFH
1

❸ 單片機程序存儲器擴展電路問題

答:在設計片外程序存儲器之前,首先要決定EA引腳的電平。
EA=0,單片機只訪問外部程序存儲器,對於8031單片機此引腳必須接地.EA=1,單片機訪問內部程序存儲器,對於內部有程序存儲器的8XX51單片機,此引腳應接高電平,但若地址值超過4KB范圍,單片機將自動訪問外部程序存儲器。
設定好EA後,單片機自動按程序所設定的次序執行。
編程中不需要專門的語句指定調用的是外部程序存儲器。比如設定EA接高電平,則程序在執行完片內的程序存儲器指令後自動轉入片外程序存儲器,而無需特殊命令。這就是所謂的程序存儲器是片內外統一編址,而數據存儲器則用Mov和Movx分別對待的。
但樓主要知道程序在讀取片外指令代碼時的過程:先定址,再取數。單片機會根據PC的值先給P2和p0送一個選通地址(PC的值),接下來從片外程序存儲器讀取代碼。因為PC的值一般是連續的,這就要求片外的程序存儲器空間要連續分布,這和數據存儲器不同。如果不連續分布,就要用特殊的行號改變PC的值,使它和片外程序存儲器分布能夠對應。

❹ 單片機應用程序一般存放在哪一個存儲器中

ROM。只讀存儲器(Read-Only Memory,ROM)以非破壞性讀出方式工作,只能讀出無法寫入信息。信息一旦寫入後就固定下來,即使切斷電源,信息也不會丟失,所以又稱為固定存儲器。

ROM所存數據通常是裝入整機前寫入的,整機工作過程中只能讀出,不像隨機存儲器能快速方便地改寫存儲內容。ROM所存數據穩定 ,斷電後所存數據也不會改變,並且結構較簡單,使用方便,因而常用於存儲各種固定程序和數據。

(4)單片機c程序存儲器擴展閱讀

單片機的數據存儲器由讀寫存儲器RAM組成。其最大容量可擴展到64k,用於存儲實時輸入的數據。8051內部有256個單元的內部數據存儲器,其中00H~7FH為內部隨機存儲器RAM,80H~FFH為專用寄存器區。

實際使用時應首先充分利用內部存儲器,從使用角度講,搞清內部數據存儲器的結構和地址分配是十分重要的。因為將來在學習指令系統和程序設計時會經常用到它們。

8051內部數據存儲器地址由00H至FFH共有256個位元組的地址空間,該空間被分為兩部分,其中內部數據RAM的地址為00H~7FH(即0~127)。

而用做特殊功能寄存器的地址為80H~FFH。在此256個位元組中,還開辟有一個所謂「位地址」區,該區域內不但可按位元組定址,還可按「位(bit)」定址。對於那些需要進行位操作的數據,可以存放到這個區域。從00H到1FH安排了四組工作寄存器,每組佔用8個RAM位元組,記為R0~R7。

❺ 51單片機的存儲器分為哪幾個空間

1)MCS-51單片機的存儲器從物理結構上分為:片內和片外數據存儲器,片內和片外程序存儲器。

2)從邏輯上分別可劃分為:片內統一定址的64K程序存儲器空間(0000H---FFFFH);64KB的片外數據存儲器空間(0000H---FFFFH);256B的片內數據存儲器空間(00H---FFH)。

(5)單片機c程序存儲器擴展閱讀:

使用方法:

1、將模擬器插入需模擬的用戶板的CPU插座中,模擬器由用戶板供電;

2、將模擬器的串列電纜和PC機接好,打開用戶板電源;

3、通過KeilC 的IDE開發模擬環境UV2 下載用戶程序進行模擬、調試。

硬體說明

1、使用用戶板的晶振:模擬器晶振旁有兩組跳線用來切換內部晶振和用戶板晶振,當兩個短路塊位於模擬器晶振一側時,默認使用模擬板上的晶振(11.0592MHz), 當兩個短路塊位於電容一側時,使用用戶板的晶振。

2、為便於調試帶看門狗的用戶板,模擬器的復位端未與用戶板復位端相連;故模擬器的復位按鈕只復位模擬器,不復位用戶板;若要復位用戶板,請使用用戶板復位按鈕。

❻ 分析at89s52單片機的存儲器結構

1.程序存儲器

設計人員編寫的程序存放在微處理器的程序存儲器中。

at89s52具有64kb程序存儲器定址空間,它是用於存放用戶程序、數據和表格等信息,程序存儲器的結構如圖1所示。

圖1 at89s52程序存儲器的結構

at89s52片內片外的程序存儲器在統一邏輯空間中,地址從0000h~ffffh,共有64k位元組范圍。引腳接高電平時,程序從片內程序存儲器0000h開始執行,即訪問片內存儲器。當pc值超出片內rom容量時,會自動轉向片外程序存儲器空間執行。引腳接低電平時,迫使系統全部執行片外程序存儲器0000h開始存放的程序。

2.數據存儲器

at89s52 有256 位元組片內數據存儲器。地址為00h~ffh。這256個單元共分為兩部分。其一是地址從00h~7fh單元(共128個位元組)為用戶數據ram。從80h~ffh地址單元(也是128個位元組)為特殊寄存器(sfr)單元。高128 位元組與特殊功能寄存器重疊,也就是說高128位元組與特殊功能寄存器有相同的地址,而物理上是分開的。

在00h~1fh共32個單元中被均勻地分為四塊,每塊包含八個8位寄存器,均以r0~r7來命名,稱這些寄存器為通用寄存器。這四塊中的寄存器都稱為r0~r7,利用psw的第3和第4位(rs0和rs1),即可選中這四組通用寄存器。

內部數據存儲器的20h—2fh單元為位定址區,可作為一般單元用位元組定址,也可對它們的位進行定址,位定址區地址如表1所示

表1 ram位定址區地址表

3. 中斷服務程序的入口地址

在程序存儲區中,為中斷服務程序保存了一段中斷服務程序的入口地址:其中一組特殊單元是0003h—0032h,各個單元各有用途,它們被分為六段,每個段8個位元組,專門留給中斷服務程序使用,被稱為中斷矢量區。at89s52共有8個中斷源,6個中斷矢量,它們的定義如下表2所,

表2 中斷服務程序的入口地址

4.特殊功能寄存器sfr(special? function register)

特殊功能寄存器是指有特殊用途的寄存器集合,也稱為專用寄存器,本質上是一些具有特殊功能的片內ram單元,反映單片機的運行狀態,很多功能也通過特殊功能寄存器來定義和控製程序的執行。

at89s52單片機內部高128(80~ffh)地址分配給特殊功能寄存器。這個地址空間和晶元內數據存儲器的高128位元組地址完全重疊,但兩者在物理硬體上是完全獨立的,用定址方式來區分這個完全重疊的地址空間。使用直接定址方式訪問這個地址空間時,訪問的是特殊功能寄存器;使用間接定址方式訪問這個地址空間時,訪問的是數據存儲器。

at89s52有32個特殊功能寄存器,它們被離散地分布在內部ram的80h~ffh地址中,這些寄存的功能已作了專門的規定,用戶不能修改其結構。

5.幾個注意問題

(1)地址的重疊性

單片機中的所有存儲器都必須分配地址,可以定址的地址范圍為64kb,數據存儲器與程序存儲器都佔用相同的地址。

程序存儲器中片內片外0000h~0ffffh低4kb地址完全重疊,但是我們使用引腳進行區分:=0時,選擇片外,=1時,選擇片內,這樣就完全區分開來了。

數據存儲器中片內外0000h~00ffh的256個單元地址完全重疊,片內外數據的訪問採用不同指令來區分:mov指令訪問片內數據存儲器,movx指令訪問片外數據存儲器。

(2)程序存儲器(rom)與數據存儲器(ram)的區分

程序存儲器(rom)與數據存儲器(ram)的區分在使用上是嚴格區分的,程序存儲器只能放置程序指令及常數表格,對程序存儲器中數據的訪問只可以使用movc指令。而數據存儲器則存放數據,片內外的操作指令分別用mov,movx進行操作。

(3)位地址空間的區域劃分

片內ram中的20h~2fh的128位,以及sfr中的位地址,這些位定址單元與位指令集構成了位處理器系統

❼ 單片機應用程序一般存放在

單片機應用程序一般存放在單片機內部的程序存儲器中(可能是FLASH存儲器,也可能是EEPROM,可能是EPROM,也可能是PROM)

❽ 單片機的程序存儲器和數據存儲器共處同一地址空間為什麼不會發生匯流排沖突

單片機的程序存儲器和數據存儲器共處同一地址空間之所以不發生地址沖突,是因為:
1、盡管地址相同,但物理空間不一樣。
2、訪問指令不同,程序存儲器用MOVC指令訪問,數據儲存器用MOVX指令訪問。

❾ 在單片機里程序存儲器和數據存儲器的區別是什麼

程序存儲器顧名思義就是放程序的存儲器。就是把你寫的程序放到裡面去。就算斷電了但是裡面的數據還在,好比手機裡面存的電話薄,你換塊電池這中間有個斷電的過程但是數據還在。數據存儲器顧名思義就是專門放數據的,哪樣才是數據呢,比如說一個測溫度的設備,溫度時時都在變化我們不可能存某一固定的值進去,這個時候時時變化的溫度數據就是放在數據存儲器裡面的。只要一斷電它就不會保留數據

❿ 單片機的程序存儲器有哪些類型

1、按字長分為4位,8位,16位,32位
2、按指令類型分類:精簡指令集,復雜指令集
3、按內核來分:51系列,pic系列,avr系列,430系列……

閱讀全文

與單片機c程序存儲器相關的資料

熱點內容
堵車如何緩解壓力 瀏覽:15
喜鵲快貸app怎麼了 瀏覽:263
海龜編輯器積木編程怎麼安裝 瀏覽:185
程序員理發店生意怎麼樣 瀏覽:603
程序員羅技 瀏覽:180
軟考初級程序員課程2021下載 瀏覽:491
杭州程序員奶奶 瀏覽:880
不聽命令造成錯誤 瀏覽:981
kool系統源碼 瀏覽:610
流氓app在哪裡看 瀏覽:98
域名購買了怎麼指向伺服器 瀏覽:121
安卓手機如何讓照片顏色反轉 瀏覽:859
怎麼下載卓睿安手機版 瀏覽:514
h3crange命令 瀏覽:468
php前景和python 瀏覽:338
php壓縮圖片內存大小 瀏覽:495
在哪裡可以查看雲伺服器的信息 瀏覽:70
python讀取非txt文件 瀏覽:799
艾莫迅用什麼編程軟體好 瀏覽:227
android文件存儲讀取 瀏覽:214