• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 20天89C51單片機總結

    20天89C51單片機總結

    作者: 時間:2012-10-17 來源:網絡 收藏

    看了怎么久的單片機做個總結。其實就芯片來說單片機沒想象的那么復雜!就40個引腳。其中P0~P3口占了32個。一個接地一個接電源,兩個振蕩引腳。一個EA引腳ROM的起始地址選擇端。一個ALE/Vpp片外地址鎖存器充許引腳/線編程電源輸入端。PSEN片外ROM充許使能端。當然還有個復位REST引腳。其中P3口全部都有第2功能復用:定時 中斷 串行口中斷。當P0~P3端口寫#FFH時片內鎖存器置1這是單口為雙向輸入 輸出口。這是從芯片外圍看。

    從芯片的內部看的話主要的就兩個獨立的存儲器 ROM,RAM 一個為程序指示,一個為數據處理和存放。編程時通過尋址方式區別ROM,RAM。他們都為64KB的容量。ROM的片內為4KB存儲空間。由EA指示是從片外執行程序還是從片內執行。RAM片內為256字節即FFH分4個部分。00H~1FH為工作寄存器組。20H~2FH為為尋址空間。30H~7FH為用戶RAM區。80H~FFH為特殊寄存器區。有22個SFR(這里就不在介紹了)。

    說說指令系統吧。MOV ,MOVX, MOVC3個傳送指令其中片外存儲器是不能直接傳送的。3個調用指令AJMP,LJMP,SJMP.分別用于不同的調用范圍。邏輯算術指令ANL ,ORL ,XRL.還有加 ADD,減SUBB,乘MUL,除DIV。還有很多的指令如交換,跳轉,循環,位尋址,布爾處理指令等。

    例如下面的循環-跳轉指令

    MOV R0,#00H
    MOV R1,#AAH
    MOV R7#0BH
    loop: MOV A ,@R0
    MOV @R1,A
    INC R0
    INC R1
    DJNZ R7,loop
    END

    這個程序就是執行片內傳送功能的。

    說說程序的一般流程吧。分為順序,分支,循環,還有組合嵌套。上面的例題就是循環的一種。

    寫個分支程序的例題

    MOV A,R1
    RL A
    MOV DPTR,#data
    JMP @A +DPTR
    data: AJMP KK1
    AJMP KK2
    .
    .
    AJMP KKn

    這個指令就是以 data為首地址 R1為偏移量的分支轉移,因為AJMP為雙字節指令所以要執行RL A。

    下面在說下中斷跟定時吧。

    中斷涉及的寄存器由 TCON , IE, IP,SCOM.

    通過對中斷中斷標志位的設置區執行中斷請求。中斷有5個入口地址 03H 0BH 13H 1BH 23H.

    例如外部中斷一的入口在默認模式下設置為最高優先級

    SETB PX1

    STEB EX1

    STEB EA

    非常簡單,有點像闖關游戲每個環節都完成才能執行中斷。

    下面是定時器,定時器在單片機的運用是非常高的。4種工作模式0 , 1 ,2 ,3。

    我就用典型的定時器0模式2在12MHZ的程序編寫一個正弦波輸出XXMS在P1.0。初值就用KKH代替吧。

    MOV P1 ,#FFH
    MAIN: MOV TMOD , #02H
    MOV TH0 ,#KKH
    MOV LHO ,#KKH
    STEB ET0
    STEB TRO
    STEB EA
    AJMP $


    中斷程序 TIME0: CLR TF0
    CPL P1.0
    RETI.

    還有了。有4種模式的傳輸,其中波特率的設置尤為重要。

    涉及寄存器有 TCOM TDOM SCOM SDOM PCON.

    其實還可以用軟件模擬總線接口。如SPI I2C等還有按鍵的程序設置外部的擴展實在太多了。以后有時間在編寫發上來。



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 沙湾县| 大新县| 泗洪县| 米易县| 凤台县| 安图县| 东辽县| 岑溪市| 溧阳市| 中江县| 甘南县| 双牌县| 民丰县| 马尔康县| 榆树市| 吉林省| 长武县| 丹凤县| 同德县| 泗水县| 报价| 尉氏县| 湖州市| 阳山县| 平泉县| 霍林郭勒市| 宜春市| 河池市| 昭通市| 平安县| 黄石市| 潢川县| 秦皇岛市| 顺义区| 洛阳市| 龙井市| 镶黄旗| 日照市| 志丹县| 安国市| 宝清县|