新聞中心

        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等還有按鍵的程序設置外部的擴展實在太多了。以后有時間在編寫發上來。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 嘉禾县| 武隆县| 凤山市| 旬邑县| 汨罗市| 石楼县| 三江| 高碑店市| 大同市| 青阳县| 梁山县| 麻栗坡县| 金塔县| 吉水县| 蒙山县| 中江县| 乐陵市| 岳阳市| 宝清县| 栾城县| 彰化县| 新丰县| 吉木萨尔县| 呼图壁县| 桐梓县| 萍乡市| 寿阳县| 普格县| 铜鼓县| 瓮安县| 买车| 合川市| 蒙自县| 阿图什市| 芜湖市| 剑阁县| 皮山县| 金塔县| 连山| 彰化县| 康乐县|