星期四, 9月 29, 2011

8051微處理機筆記 (二) 記憶體配置

8051記憶體配置


8051的記憶體分為程式記憶體(program memory) 和資料記憶體(data memory),程式記憶體是用來儲存程式,8051會從程式記憶體一條一條讀取程式碼來執行;資料記憶體則是用來儲存資料,以及8051內部一些硬體狀態的設定、狀況等等 (如果之後有繼續紀錄應該會寫到XD)。兩者的配置方法有些不同。


Program Memory:
8051有內建4K的程式記憶體,所以0000~0FFF是內建記憶體的位置。
而8051最多可以擴充到64K的程式記憶體,所以剩下的就要用外接記憶體的方式使用。
擴充外接記憶體有兩種方式
  1. 外接60K的記憶體,pin腳 /EA 要在高電位,這樣子0000~0FFF的位置便是從8051內部的記憶體讀寫資料。
  2. 直接衝64K的記憶體,pin腳 /EA 在低電位,這樣子從0000~FFFF都是從外部記憶體讀寫,也就不會用到內部記憶體。
Data Memory:
8051的資料記憶體位置可以重疊,也就是說從0000~00FF的記憶體位置可以是內部也可以是外部,要用不同的組合語言指令來分辨。而讀寫資料記憶體又有不同的方式,有直接定址和間接定址。
  • 直接定址:直接指定記憶體位置,像是 
    • MOV  A,  0010H;就是把0010位置的資料放到暫存器A。
  • 間接定址:利用指標的方式存取記憶體,像是 
    • MOV R1, #0010H ; 把0010H這個數字放到暫存器R1, '#' 表示後面接的是個單純的數字
    • MOV A, @R1; 把R1暫存器中存的記憶體位置的資料放到A暫存器
*上面的例子是用8051的組合語言,分號 ";"後面的東西是注解的意思

內部資料記憶體有分為兩區,分別是位置0000~007F和0080~00FF。前者可以用直接定址和間接定址的方式存取;後者只能由直接定址的方式存取,這一區是SFR (Special Function Register) ,對8051的設定有特別的意義,之後會提到。

存取內部記憶體使用MOV的組語指令,而外部記憶體要使用MOVX,X表示external。外部記憶體位置可以從0000~FFFF。



3 則留言: