新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機 RAM 數據存儲區

        51單片機 RAM 數據存儲區

        作者: 時間:2016-11-20 來源:網絡 收藏
        1.RAM keil C語言編程

        2.片內數據存儲區

        本文引用地址:http://www.104case.com/article/201611/318600.htm

        (1) 工作寄存器區

        工作寄存器區位于片內數據存儲器中的00H~1FH單元,共32字節( 如此說來每個單元是一個字節了 ),分成四組。每組8個字節,分別記為R0~R7.

        編號起終地址寄存器名備注
        1其占據的物理地址為00H~07H對應于指令中的R0~R70區工作寄存器組
        2其占據的物理地址為08H~0FH對應于指令中的R0~R71區工作寄存器組
        3其占據的物理地址為10H~17H對應于指令中的R0~R72區工作寄存器組
        4其占據的物理地址為18H~1FH對應于指令中的R0~R73區工作寄存器組

        程序默認在0區工作寄存器組存放中間運算數據。等待中斷來時,中斷數據工作寄存器組由0區切換到其它區域。

        選擇四組工作寄存器區的哪一組作為R0~R7由位于PSW寄存器的兩位RS1,RS0來確定.

        RS1,RS0稱為區開關或組開關,兩位就可決定四種狀態.

        RS1RS0工作寄存器組
        00工作寄存器0組
        01工作寄存器1組
        1

        0

        工作寄存器2組
        11工作寄存器3組

        (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,@Rii=0-1

        向片外RAM區存數據:MOVX @Ri,A

        借助16位的數據指針DPTR間接尋址,可尋64K字節:

        從片外RAM區取數據:MOVX A,@DPTR

        向片外RAM區存數據:MOVX @DPTR,A

        <此段摘抄,防后會使用>

        區分是訪問內部存儲器還是外部存儲器地址靠指令來區分。

        這里,片內的存儲區即常念叨的“寄存器”,片外的ram存儲區即指“系統內存”。

        Note Over。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 台北市| 海安县| 长寿区| 崇礼县| 额济纳旗| 延边| 镇雄县| 文化| 和龙市| 改则县| 保亭| 南皮县| 永修县| 崇阳县| 丰顺县| 柳州市| 天门市| 德安县| 康平县| 承德市| 无极县| 白水县| 昭平县| 通榆县| 青海省| 宽城| 长沙市| 延津县| 太保市| 凤庆县| 满洲里市| 长治县| 玉溪市| 芷江| 绍兴县| 偃师市| 郴州市| 安塞县| 清涧县| 宝鸡市| 剑河县|