<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機匯編模擬串口通信程序

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

          作者: 時間:2012-10-16 來源:網(wǎng)絡(luò) 收藏

          編寫的

          T2作為波特率控制
          UART_RXD 是硬中斷0或1口,如果能進入中斷,說明該線有一個起始位產(chǎn)生,進入中斷后調(diào)
          用下面的接收程序。退出硬中斷之前還需要將硬中斷標志重新復位。
          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,計數(shù)器2啟動,時間計數(shù)啟動。
          MOV A,RCAP2L;計數(shù)器2重新裝載值
          MOV TL2,A ;置計數(shù)器2初值 ;T2需要重新裝載
          MOV A,DPH
          MOV A,RCAP2H
          MOV TH2,A
          MOV A,R0

          SETB TR2 ;TR2置1,計數(shù)器
          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,計數(shù)器2啟動,時間計數(shù)啟動。
          MOV A,RCAP2L;計數(shù)器2重新裝載值
          MOV TL2,A ;置計數(shù)器2初值 ;T2需要重新裝載
          MOV A,DPH
          MOV A,RCAP2H
          MOV TH2,A

          JB UART_RXD,$ ;REC
          SETB TR2 ;TR2置1,計數(shù)器2啟動,時間計數(shù)啟動。
          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,$ ;等待停止位,并重新復位計數(shù)器
          SETB UART_RXD

          POP DPL
          POP DPH
          POP IE
          RET

          數(shù)字通信相關(guān)文章:數(shù)字通信原理


          通信相關(guān)文章:通信原理


          塵埃粒子計數(shù)器相關(guān)文章:塵埃粒子計數(shù)器原理


          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();