51之51微控制器ram資料儲存區學習筆記
keilc語言程式設計
ram是程式執行中存放隨機變數的資料空間。在keil中編寫程式,如果當前模式為small模式,如果總的變數大小未超過128b,則未初始化的變數的初值預設為0.如果所有的變數超過微控制器small模式下的128b大小,則必須對變數進行初始化,否則超過ram大小變數的值是不確定的,在small模式下超過128b大小的變數也必須在編譯器中重新設定儲存器的儲存模式。
在keil中,可選擇small,compact,large三種方式儲存資料變數:
在keil中可以用「target options」來配置這一項:
2.片內資料儲存區
(1) 工作暫存器區
工作暫存器區位於片內資料儲存器中的00h~1fh單元,共32位元組( 如此說來每個單元是乙個位元組了 ),分成四組。每組8個位元組,分別記為r0~r7.
程式預設在0區工作暫存器組存放中間運算資料。等待中斷來時,中斷資料工作暫存器組由0區切換到其它區域。
選擇四組工作暫存器區的哪一組作為r0~r7由位於psw暫存器的兩位rs1,rs0來確定.
rs1,rs0稱為區開關或組開關,兩位就可決定四種狀態.
2)位定址區
使用者儲存區位於片內資料儲存器中的020h~02fh單元,共16個位元組,共128位,每個位元組單元的位都有乙個單獨的位址,分別為00h-07h,如020h.1表示020h單元的bit[1]位。020h~02fh單元可作為位定址區。這個範圍內的儲存單元最大的用處就是能進行位操作,在c語言中,只能用位操作運算子(&、|、^、~、<>)來對位元組資料進行位操作運算。如果用彙編指令就可以直接對此片儲存單片進行位操作。
如 setb, 020h.1 就將020h的bit[1]置為了1.
除了ram此片能進行位定址的使用者儲存區以外,還有一些特殊的功能暫存器( sfr )也能進行位定址。
(3)資料緩衝區
51系列資料緩衝區位址為30h-7fh,共80位元組。只能位元組定址,不能位定址。由於工作暫存器和位定址區,資料緩衝區是統一編址的,所以這三者都可以用作資料緩衝區。
(4)堆,棧
棧:由系統自動分配釋放,存區域性值。
堆:一般由程式設計師分配和釋放(在c中用malloc/free操作)。
棧指標sp:8位暫存器,棧最大可達128單元,只可在片內ram中進行棧操作。
棧作用:用來儲存位址、資料資訊、具有先進後出特性,也是一種能存放二進位制數據的空間。
mc51棧採用滿頂法向上生成的軟體堆疊。
軟體棧:借助sp進行控制操作。
棧向上生長:新壓棧的資料成為棧頂。
棧向下生長:新壓入的資料遠離棧頂。
位址大小還得看儲存方式。
(5)專用暫存器區
專用暫存器區,也稱特殊功能暫存器區 sfr
special functionregister
定址位址離散地分布在80h~ffh,共128位元組的空間.而實際有用的只有21個位元組,即在這一空間裡只有18個專用功能暫存器,其中有3個專用功能暫存器占用了兩個位元組.sfr主要用於片內硬體的管理,通常只能以位元組為單位借助於mov指令直接定址,但也有一些專用功能暫存器可以位定址。
包含程式狀態字psw、資料指標暫存器dptr、埠位址p0-p0、其它專用暫存器(累加器a、b)
3.片外資料儲存區
片外ram區:可尋空間為共64k 0000h~ffffh,
總是使用movx類指令定址
借助於工作暫存器r0或r1間接定址時,可尋256位元組
從片外ram區取資料: movx a,@ri i=0-1
向片外ram區存資料: movx @ri,a
借助16位的資料指標dptr間接定址,可尋64k位元組:
從片外ram區取資料: movx a,@dptr
向片外ram區存資料: movx @dptr,a
《此段摘抄,防後會使用》
區分是訪問內部儲存器還是外部儲存器位址靠指令來區分。
這裡,片內的儲存區即常念叨的「暫存器」,片外的ram儲存區即指「系統記憶體」。
51微控制器 RAM 資料儲存區
ram 是程式執行中存放隨機變數的資料空間。在 keil 中編寫程式,如果當前模式為small模式,如果總的變數大小未超過128b 則未初始化的變數的初值預設為 0.如果所有的變數超過微控制器small模式下的128b 大小,則必須對變數進行初始化,否則超過 ram大小變數的值是不確定的,在smal...
51微控制器 儲存
8051是傳統的8位微控制器,一般為256b 資料儲存器ram,4k程式儲存器rom 8052有384bytes的ram,8k的rom 在51系列中可定義的資料型別有data,idata,xdata,pdata,bdata data 指晶元核心中位址0x00 0x7f的128個位元組ram區域和4個...
51微控制器內部ram
51微控制器預設的內部ram只有128位元組,52微控制器增加至256位元組,stc89c54 55 58 516等增加到1280位元組。微控制器內部ram,共256個單元,使用者使用前128個單元,用於存放可讀寫資料,後128個單元被專用暫存器占用。現在新出的51微控制器都在內部擴充套件了外部ra...