新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機匯編模擬串口通信程序

        51單片機匯編模擬串口通信程序

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

        編寫的

        T2作為波特率控制
        UART_RXD 是硬中斷0或1口,如果能進入中斷,說明該線有一個起始位產生,進入中斷后調
        用下面的接收程序。退出硬中斷之前還需要將硬中斷標志重新復位。
        UART_TXD 是任何其它IO即可。

        UART_SEND:
        PUSH IE
        PUSH DPH
        PUSH DPL
        PUSH PSW
        PUSH 00H
        PUSH ACC
        CLR EA
        SETB UART_TXD ;START BIT

        MOV R0,A
        CLR TR2 ;TR2置1,計數器2啟動,時間計數啟動。
        MOV A,RCAP2L;計數器2重新裝載值
        MOV TL2,A ;置計數器2初值 ;T2需要重新裝載
        MOV A,DPH
        MOV A,RCAP2H
        MOV TH2,A
        MOV A,R0

        SETB TR2 ;TR2置1,計數器
        JNB TF2,$
        CLR TF2
        JNB TF2,$
        CLR TF2

        CLR UART_TXD ;START BIT
        JNB TF2,$
        CLR TF2
        JNB TF2,$
        CLR TF2

        MOV R0,#08H
        UART_SEND_LOOP:
        RRC A
        MOV UART_TXD,C ;8 BIT
        JNB TF2,$
        CLR TF2
        JNB TF2,$
        CLR TF2
        DJNZ R0,UART_SEND_LOOP

        SETB UART_TXD ;END BIT
        JNB TF2,$
        CLR TF2
        JNB TF2,$
        CLR TF2

        POP ACC
        POP 00H
        POP PSW
        POP DPL
        POP DPH
        POP IE
        RET

        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        UART_REC:
        PUSH IE
        PUSH DPH
        PUSH DPL
        CLR EA

        CLR TR2 ;TR2置1,計數器2啟動,時間計數啟動。
        MOV A,RCAP2L;計數器2重新裝載值
        MOV TL2,A ;置計數器2初值 ;T2需要重新裝載
        MOV A,DPH
        MOV A,RCAP2H
        MOV TH2,A

        JB UART_RXD,$ ;REC
        SETB TR2 ;TR2置1,計數器2啟動,時間計數啟動。
        JNB TF2,$
        CLR TF2 ;0.5 BIT

        JNB TF2,$
        CLR TF2 ;1 BIT

        JNB TF2,$
        CLR TF2 ;1.5 BIT
        MOV C,UART_RXD
        MOV ACC.0,C

        JNB TF2,$
        CLR TF2

        JNB TF2,$
        CLR TF2 ;2.5
        MOV C,UART_RXD
        MOV ACC.1,C

        JNB TF2,$
        CLR TF2

        JNB TF2,$
        CLR TF2 ;3.5
        MOV C,UART_RXD
        MOV ACC.2,C

        JNB TF2,$
        CLR TF2

        JNB TF2,$
        CLR TF2 ;4.5
        MOV C,UART_RXD
        MOV ACC.3,C

        JNB TF2,$
        CLR TF2

        JNB TF2,$
        CLR TF2 ;5.5
        MOV C,UART_RXD
        MOV ACC.4,C

        JNB TF2,$
        CLR TF2

        JNB TF2,$
        CLR TF2 ;6.5
        MOV C,UART_RXD
        MOV ACC.5,C

        JNB TF2,$
        CLR TF2

        JNB TF2,$
        CLR TF2 ;7.5
        MOV C,UART_RXD
        MOV ACC.6,C

        JNB TF2,$
        CLR TF2

        JNB TF2,$
        CLR TF2 ;8.5
        MOV C,UART_RXD
        MOV ACC.7,C

        JNB TF2,$
        CLR TF2 ;9.5
        JNB UART_RXD,$ ;等待停止位,并重新復位計數器
        SETB UART_RXD

        POP DPL
        POP DPH
        POP IE
        RET

        數字通信相關文章:數字通信原理


        通信相關文章:通信原理


        塵埃粒子計數器相關文章:塵埃粒子計數器原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 佛坪县| 定日县| 长治县| 额尔古纳市| 崇信县| 泰宁县| 台湾省| 沾化县| 永胜县| 丰台区| 互助| 庆城县| 台东市| 乌拉特中旗| 阜南县| 浦城县| 侯马市| 广灵县| 会泽县| 加查县| 黎川县| 新绛县| 澄城县| 临沭县| 绥中县| 阿拉善盟| 罗田县| 桓仁| 长沙市| 秀山| 偃师市| 平武县| 伊吾县| 克什克腾旗| 田林县| 于田县| 博客| 河北区| 长春市| 东阳市| 青田县|