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

          新聞中心

          EEPW首頁 > 嵌入式系統 > 設計應用 > MCU串口通訊的嘗試

          MCU串口通訊的嘗試

          作者: 時間:2016-11-25 來源:網絡 收藏
          我嘗試了一下。我使用的14.7456的晶振,想采用9600 8 1 n的方式通訊,其實是與另外的一個板子(s3c6410)那么單片機的串口設置就的有一定的值。計算公式是這樣的:

          F = 14.7456 Baud = 9600(12T模式)

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

          BELOAD = 256 - INT(14745600/9600/32/12 + 0.5)

          = 256 - INT(5.5)

          = 256 -4

          = 251

          Baud = 14745600 /(256 - 254)/ 32 / 12

          = 9600

          沒有任何的誤差

          我試驗過另外的一個,38400,8,N,1的格式此時

          BELOAD = 0xFF,無誤差;具體的使用時這樣:


          voiduart_init(void)
          {
          EA = 0;
          SCON = 0x50;//采用方式1,REN=1,其他位為0 1位,8位,1位,N 38400
          AUXR = 0x17;
          //PCON = 0x7F;//不能有這個否則將會程序啟動不了,
          BRT = 0xff;//RELOD = 256 - 1; 誤差為0,9600是relod = 256 - 4;誤差為0
          ES = 1;
          EA = 1;
          }

          uchar uart_1send(unsigned char c)
          {
          ucharaa=0;

          SBUF = c;
          while(!TI) //若TI=0,在此等待
          {
          aa = 1;
          return a;
          }
          TI = 0;

          return a;
          }

          uchar uart_1read(void)
          {
          ucharaa=0;

          aa = SBUF;
          while(!RI) //若RI=0,在此等待
          {
          aa = 1;
          return a;
          }
          RI = 0;

          return a;
          }

          void uart1(void) interrupt 4
          {
          if(TI == 1)
          {
          uart_1send(send);
          }
          else
          {
          read = uart_1read();
          }
          }

          正確程序應該是這樣的,9600,8位,無奇偶校驗,1位停止


          voiduart_init(void)
          {
          AUXR = 0x11;
          SCON |= 0x50;
          //PCON |= 0x80;
          BRT = 0xfc;
          ES = 1;
          EA = 1;
          }

          void uart_1send(unsigned char c)
          {
          SBUF = c;
          while(TI!=0) //若TI=0,在此等待
          {
          TI = 0;
          }
          }

          uchar uart_1read(void)
          {
          uchar aa;

          aa = SBUF;
          while(RI!=0) //若RI=0,在此等待
          {
          RI = 0;
          }

          return aa;
          }

          int main(void)
          {
          unsigned char i;
          unsigned int n;

          alldata_init();

          //uart_1send(i);
          while(1)
          {
          //n++;
          for(n=0;n<3000;n++)//延時用
          {;}
          uart_1send(i);
          i++;
          }



          關鍵詞: MCU串口通

          評論


          技術專區(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); })();