㈠ MCS-51系列單片機的存儲器可劃分為幾個空間其地址范圍和容量是多少在使用上有什麼不同
1)MCS-51單片機的存儲器從物理結構上分為:片內和片外數據存儲器,片內和片外程序存儲器。
2)從邏輯上分別可劃分為:片內統一定址的64K程序存儲器空間(0000H---FFFFH);64KB的片外數據存儲器空間(0000H---FFFFH);256B的片內數據存儲器空間(00H---FFH)。
㈡ MCS-51 單片機的存儲器地址空間如何劃分各地址空間的地址范圍和容量如何
MCS-51 單片機的存儲器地址空間,講起來,要用幾頁.
簡單介紹如下:
MCS-51的存儲器有片內RAM、片外RAM 和 ROM 三個空間.
片內RAM:
地址范圍是00H到7FH (52系列延伸到FFH).
其中00H到1FH,共32位元組,分成四個工作寄存器區,每區有寄存器 R0~R7.
對此區域,可以使用 R0~R7 來操作,但是,當前只有一個區是可以這樣讀寫的.
對此區域,也可以使用位元組地址,來讀寫.
20H-2FH,共16位元組,是位定址區,共有128個「位」,位地址:00~7FH.
此區域,也可按照位元組定址,來讀寫.
30H-7FH,沒有什麼特色,只進行位元組定址.
80H-FFH,共有128個地址號碼,其中離散的分布著21個特殊功能寄存器,必須直接定址才能讀寫.
(52系列,在此范圍,還有128位元組的 RAM,必須間接定址才能讀寫).
對上述空間讀寫,需用MOV指令.
----
片外RAM:
片外RAM的地址范圍是0000H到FFFFH,容量即為64KB.
對片外RAM讀寫,需用MOVX指令.
----
ROM:
ROM的地址范圍是0000H到FFFFH,容量即為64KB.
其中0000~0FFFH,即4K,在片內,其它在片外.
(對於8031,這64K的ROM,都在片外.)
對ROM讀出,需用MOVC指令.
㈢ 請問我想擴單片機片外存儲器,存一些數據,怎麼計算需要的容量呢和程序的行數有什麼關系啊
片外存儲器至少有兩個概念,
一個是ram,用來存儲數據;
一個是rom,用來存儲代碼。
和程序的行數有關的是rom。
不清楚你具體是要什麼,
ram的話8k的可以用6264,8K-8bit
rom的話8k的就用2764,8K-8bit
以上的這兩個都是並口的。。。
串口的。。。
如果你用來存儲數據的話可以用24c08,
不過這個數據和前面的數據存儲的概念不太一樣。。。
不知道怎麼跟你講。。。
你應該能明白的哈?
--------------------------------------
對問題補充的回答:
很抱歉的告訴你,
24c08不能達到你的要求。。。
建議你再仔細看看單片機的程序運行過程。。。
你的顯示方式是什麼呢?
如果只是用12864這種單色液晶模塊的話,
只要你不是顯示了太多了logo,
89S52的代碼空間應該能滿足你的要求了,
沒有必要再擴展的,
代價太高了,
如果真的是代碼空間不足的話,
建議你更換單片機的選型,
選擇rom空間大的單片機,
如stc的單片機。
㈣ 51單片機的程序大小問題
1、4K容量的程序Flash空間,肯定是無法裝載燒寫5K代碼的。
2、HEX文件在編程器軟體打開後,可以看到實際程序容量(機器碼)大小。文件大小會稍大。
3、模擬可能是沒有代碼限制的。
4、解決方法:去掉STARTUP.A51文件。在編譯選項中,改變優化代碼等級為9。並選擇Favor size。重新編譯程序試試。完成項目要求前提下,節省一些code常量定義。
㈤ 51單片機程序空間大小
AT89C52的程序空間是8KB是確認無疑的,但指的是存放純二進制的機器碼,就是二進制數。而KeilC編譯的HEX代碼文件並不是純二進制數,是以ASCII碼格式存放的文件,而且其中還有一些編譯信息,如地址、校驗和等。所以,不能看HEX文件的大小來確定下載到單片機內的真正的程序空間大小,也就是說HEX文件的大小並不是真正下載的單片機的程序大小。而下載到單片機的代碼空間大小要看Keilc編譯時給出的代碼數的提示,才是真正要下載到單片機內的代碼空間。舉個例子,下圖是一個程序編譯後的提示,真正的二進制代碼是337個位元組,而HEX文件卻是1KB。這里還有一個誤區,你看到的HEX文件的大小是操作系統給出的大小吧,它是取整KB的,就是說HEX文件不足1KB時,也顯示是1KB。
再明確一點說吧,假如編譯後的代碼是750418,用純二進制數(即BIN格式,有些匯編程序的編譯器輸出的就是BIN格式)的代碼保存就是3個位元組,而用HEX格式保存就是6個位元組,因為要用6個ASCII碼來表示。這來算來,HEX文件大小是BIN文件的二倍,加上一些地址信息,是大於二倍的。
好,回到你的問題來,你的HEX文件是19KB,你看一下編譯後的代碼大小提示,肯定是不會超過8KB的,否則編譯時肯定會報錯的。
㈥ 51 單片機可以寫多少代碼,可執行多少條指令
容量越大,可以裝下的代碼更多。有64K的,可以寫很長的代碼了。你寫的代碼都會執行的。也可以將hex文件轉化為bin文件縮小一點體積。
㈦ MCS-51 單片機的存儲器地址空間如何劃分各地址空間的地址范圍和容量如何
MCS-51單片機在物理結構上有四個存儲空間:
1、片內程序存儲器
2、片外程序存儲器
3、片內數據存儲器
4、片外數據存儲器
但在邏輯上,即從用戶的角度上,8051單片機有三個存儲空間:
1、片內外統一編址的64K的程序存儲器地址空間(MOVC)
2、256B的片內數據存儲器的地址空間(MOV)
3、以及64K片外數據存儲器的地址空間(MOVX)
在訪問三個不同的邏輯空間時,應採用不同形式的指令以產生不同的存儲器空間的選通信號。程序ROM
定址范圍:0000H ~ FFFFH 容量64KB
EA = 1,定址內部ROM;EA = 0,定址外部ROM
地址長度:16位
作用: 存放程序及程序運行時所需的常數
數據存儲器片內數據存儲器為8位地址,所以最大可定址的范圍為256個單元地址,對片外數據存儲器採用間接定址方式,R0、R1和DPTR都可以做為間接定址寄存器,R0、R1是8位的寄存器,即R0、R1的定址范圍最大為256個單元,而DPTR是16位地址指針,定址范圍就可達到64KB。
也就是說在定址片外數據存儲器時,定址范圍超過了256B,就不能用R0、R1做為間接定址寄存器,而必須用DPTR寄存器做為間接定址寄存器。其中片內數據存儲器分為兩部分,地址從00H—7FH單元(共128個位元組)為用戶數據RAM,從80H—FFH地址單元(也是128個位元組)為特殊寄存器(SFR)單元。