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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 從零開始學單片機(九)串口通信

          從零開始學單片機(九)串口通信

          作者: 時間:2016-11-22 來源:網絡 收藏
          串口通信單片機一個重要的部分,單片機和PC,單片機和單片機之間的通信大都用串口。單片機的串口是全雙工異步串口通信方式。通過TXD(P3.1)發(fā)送,RXD(P3.0)引腳接收輸入。串口傳送數(shù)據(jù)是一幀一幀發(fā)送的,它有四種工作方式,同時也可以做并行I/O的擴展。

          本文引用地址:http://www.ex-cimer.com/article/201611/319880.htm

          圖上是串口的結構圖。

          SBUF是數(shù)據(jù)緩沖寄存器,發(fā)送和接收用的是一個地址,但是不用擔心沖突,讀只能從接收緩沖區(qū),寫只能在發(fā)送緩沖區(qū)里。

          寄存器SCON(SM0 SM1 SM2 REN TB8 RB8 TI RI)

          SM0和SM1: 工作方式選擇(0-3),方式1和方式3使用T1產生波特率,方式0和方式2是固定速率。

          SM2 :在方式2和方式3的多級通信控制位

          REN:允許串行接收控制位,0禁止接收

          TB8:對于方式2和方式3,是發(fā)送的第9位

          RB8:對于方式2和方式3,是接收的第9位;對于方式1,是接收到的停止位

          TI:發(fā)送中斷標志,發(fā)送完一幀后置位,必須由軟件清零

          RI:發(fā)送中斷標志,接收完一幀后置位,必須由軟件清零

          寄存器PCON(最高位SMOD)

          SMOD=1時,波特率加倍

          程序:PC與單片機通信,PC發(fā)送字符,單片機接收后返回給PC

          PC端程序,VB編寫,使用MSCOMM控件

          Private Sub Command1_Click()

          MSComm1.Output = Text1.Text 發(fā)送數(shù)據(jù)

          End Sub

          Private Sub Form_Load()

          MSComm1.CommPort = 4 設置串口的端口號

          MSComm1.Settings = "9600,n,8,1" 設置串口的波特率等參數(shù)

          MSComm1.RThreshold = 1 設置最小接收的字節(jié)數(shù)

          MSComm1.PortOpen = True 打開串口

          End Sub

          Private Sub MSComm1_OnComm()

          Select Case MSComm1.CommEvent

          Case comEvReceive

          Text2.Text = Text2.Text & MSComm1.Input 接收數(shù)據(jù)

          End Select

          End Sub

          單片機程序:

          #include

          void UartInit();

          void UartSendChar(unsigned char ch);

          void main(void)

          {

          UartInit();

          while(1);

          }

          void UartInit()

          {

          SCON = 0x50; // SCON: 模式1

          TMOD = 0x20; // TMOD: 定時器1 模式2

          PCON = 0x00; // SMOD=0;

          TH1 = 0xFD; // Baud:9600 波特率=2SMOD×fosc/(32×12×(256-TH1))

          TL1 = 0xFD;

          IE = 0x90;

          TR1 = 1;

          EA = 1;

          }

          void UartSendChar(unsigned char ch)

          {

          SBUF = ch;

          while(TI==0);

          TI=0;

          }

          void UartRec() interrupt 4

          {

          unsigned char ch;

          ch = SBUF;

          if(RI)

          {

          RI = 0;

          UartSendChar(ch);

          }

          }



          關鍵詞: 單片機串口通

          評論


          技術專區(qū)

          關閉
          看屁屁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); })();