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

    EEPW首頁 > 嵌入式系統 > 設計應用 > 89C51單片機I/O 口模擬串行通信的實現方法

    89C51單片機I/O 口模擬串行通信的實現方法

    作者: 時間:2012-11-03 來源:網絡 收藏

    程序清單見下,系統要求單片機晶振為6M。程序清單如下:
    TXD EQU P1.0
    RXD EQU P1.1 ;定義89C51 P1.0 為發送端,P1.1 為接收端
    ORG 0000H
    AJMP MAIN
    ORG 0100H
    MAIN: MOV A, #30H
    MOV R5,#N
    SETB RXD ;P1.0 置高
    TX: LCALL INPUT ;調用發送子程序,將寄存器A 中內容發給PC 機

    SETB TXD ;P1.1 置高
    MOV R0,#40H
    RX: LCALL OUTPUT ;調用接收子程序,將接收的N 個數據存放在以40H開始的地址中
    MOV @R0,A
    INC R0
    DJNZ R5, RX ;N 個數據接收結束,則等待,否則轉RX 繼續接收
    AJMP $
    ;**************延時833μs 子程序*****
    DEL833: MOV R7 ,#205
    MS11: DJNZ R7,MS11
    RET
    ; **********************************
    ;******** 89C51發送數據給PC 機子程序****
    INPUT: CLR C
    MOV TXD,C ;發送起始位
    LCALL DEL833 ;延時
    MOV R3,#8
    REP: RRC A
    MOV TXD ,C
    LCALL DEL833
    DJNZ R3,REP ;發送8 位數據
    SETB C ;發送停止位
    MOV TXD,C
    LCALL DEL833
    RET
    ;********從PC 機接收數據子程序********
    OUTPUT: JB RXD, $ ; 判斷是否有起始位出現
    LCALL DEL833
    MOV R3,#8
    OUT: MOV C ,RXD
    RRC A
    LCALL DEL833
    DJNZ R3,OUT ; 接收8 位數據
    JNB RXD ,$ ; 判斷是否有停止位出現
    RET
    本文介紹的用 89C51 單片機I/O 口模擬實現串行通信的方法,已成功地應用在某電壓數據采集系統中,實踐證明能可靠地傳送和接收數據。


    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 普定县| 安义县| 京山县| 郑州市| 枣庄市| 平阴县| 突泉县| 宜黄县| 宝山区| 平利县| 莒南县| 乌苏市| 正定县| 新津县| 永年县| 汽车| 离岛区| 汝城县| 滦平县| 龙海市| 九江市| 邮箱| 台南市| 贵州省| 达日县| 叶城县| 绵竹市| 佛教| 高州市| 马尔康县| 米脂县| 交城县| 玉环县| 宜宾市| 威海市| 康平县| 九江县| 永寿县| 兴仁县| 镶黄旗| 红原县|