8051學習內容整理

8051是最最基本的微控制器,其基本架構若沒搞懂,相對地FW寫起來會沒有「感覺」。如果搞懂了;則有種醍醐灌頂的領悟,發現各家的微控制器原來都大同小異。有時候不一定要從「高大上」下手學習,從最基本的小控制器開始,反而比較不會搞混。

底下是一些依分類歸納的有用連結,可以當成是網路學習的入口點。
(一)書籍:學習還是要有一本好書當基礎的。
    1.林伸茂先生相關著作。 主要推薦其入門、基礎、實習、經驗等一系列圖書。

(二)開發環境:不管是在PC上用Simulator,或買材料回家進行程式開發實習,都需要相關開發環境。 
    1.Keil C開發環境
    2.EDSim51: 
    3.ATMel Studio
    4.需要HexToBin的操作,才能將code燒錄在MCU上執行。

(三)系統架構:8051是哈佛架構,即程式和資料是分別儲存在不同記憶體。
    1.AT89S51 Spec.
    2.NXP 80C51 Spec.: 
    3.DP8051 Spec.
    4.記憶體架構(1):位址從00H~7FH,這部份變數宣告都是採dataidata的方式,以期能達到最快速與省程式碼的效果。80~FFH則屬於SFR(特殊功能暫存器)部份,在keil c中可以sfr方式宣告其暫存器位置。而外部RAM 0000H~FFFFH的變數宣告則採xdata的方式,以期能定址到最遠的位址。
    
    5.記憶體架構(2):其中data裏的20H~2FH共128bits是可bit(setb)操作的位元,而30H~7FH透過SP這個sfr可規劃為程式stack區域(愈複雜這個區域要愈大)。
    
    6.記憶體位置和compiler宣告變數關係:


(四)指令整理: 
    1.8051指令集(1)
    2.8051指令集(2)
    3.常用指令整理:
        1.MOV
        2.SETB/CLR/CPL:bit操作設1/0/反向。
        3.INC/DEC:加1/減1。
        4.ADD/ADDC:加法不動PSW的補數,另一會動。
        5.SUBB:減法。
        6.ANL/ORL/XRL:XRL代表不同為1,相同為0。
        7.CALL(ACALL/LCALL):2bytes和3bytes的差異。
        8.JUMP(SJMP/AJMP/LJMP):距離128/2K/64K。
        9.DJNZ:減為0則繼續往下執行,$表原地跳躍。
        10.JB(1)/JNB(0):符合位元條件即跳躍。
        11.CJNE/JC:不相符則跳躍,JC是CY=1則跳躍。當搭配來寫for loop程式。

(五)定址方式: 
    1.立即定址:MOV A, #0FBH
    2.直接定址:MOV A, 30H ;30H位址所存數值
    3.間接定址:MOV A, @R0  ;R0所存數值的位址    
    4.暫存器定址:MOV A, R0  ;R0所存數值
    5.索引定址:MOVC A, @A+DPTR(或PC較少用)。

(六)Timer運用:
    1.Timer0及Timer1:Timer1和串列傳輸的用法互斥,Timer1當串列傳輸計時用時,要會算鮑率
    2.相關暫存器:TMOD、TCON、TH(0/1) 、TL(0/1) 。

(七)中斷運用:    
    1.中斷運用:定時、串列。

    2.中斷除錯:可利用P1輸出,顯示中斷執行時間波形。
    3.相關暫存器:IE。
    4.撰寫原則:中斷間隔以2~10ms較佳,中斷執行時間不超過中斷間隔時間的1/3,規劃時;和時間有關的動作都要放到中斷裡執行,因為中斷發生一定會拖慢主程式時間。
    5.IVT:
  

(八)串列通訊:
    1.傳輸位元:起始為0,結束為1,傳1Byte要10bits。
    2.開發原則:常用示波器看,先除錯TX,再查RX。
    3.相關暫存器:SCON、SBUF。
    4.鮑率查表:
 

(九)有用連結:
    1.三天學會8051 MCU
    2.8051單晶片C語言設計實務
    3.8051初學者講座 
    4.周立功單片機 
    5.All Datasheet
    6.8051 code banking
    7.成大Flash Wiki 
    8.數位設計看MCU與記憶體  
    9.Keil C51 Program Tips 
  10.Keil C51中斷程序規則 

 

沒有留言:

張貼留言