18luck网站

18luck网站電子設計 | 18luck网站Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 18luck网站 >> 18luck平台 >> 單片機 >> 正文

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

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2011-8-25

匯編編寫(xie) 的模擬串口通信程序

T2作為(wei) 波特率控製
UART_RXD 是硬中斷0或1口,如果能進入中斷,說明該線有一個(ge) 起始位產(chan) 生,進入中斷後調
用下麵的接收程序。退出硬中斷之前還需要將硬中斷標誌重新複位。
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

Tags:51單片機,匯編,串口通信程序  
責任編輯:admin
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網友評論
關於我們 - 聯係我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁麵
下到頁底
晶體管查詢