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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機與PC機通信示例

          單片機與PC機通信示例

          作者: 時間:2016-11-18 來源:網(wǎng)絡(luò) 收藏
          #include "STC89C51RC_RD_PLUS.h"

          #define SENDBUFSIZE 0x0f
          #define BR_19K20xfd
          #defineRMAX0x10//必須是2的整數(shù)次冪。21ic上看到的,好像是“劉前輩”的創(chuàng)意
          unsigned char xdata*cpSendBufPtr;
          unsigned charcFront;
          unsigned charcBack;
          unsigned charsendData;
          bitcTranFlag;
          unsigned charcTranData;
          bitcRecFlag;
          unsigned charcRecData;
          bitcJudge;
          unsigned chartemp;

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

          void HardWareInit();
          void Uart_Init(void);
          void Uart_Init(void);
          void COMM_Init(unsigned char cBaudRate, bit bSMOD); //初始化UART

          //sfr AUXR = 0x8E;
          //MODE COM4 19200,0,8,1;ASSIGN COM4 SOUT
          //波特率為19200Hz,將串口接收到的數(shù)據(jù),重新轉(zhuǎn)發(fā)出去?
          //數(shù)據(jù)接收速度可能大于發(fā)送速度,增加緩沖區(qū),優(yōu)先保存接收的數(shù)據(jù)
          main()
          {
          sendData=0;
          cFront=0; //
          cBack=0;//
          cRecFlag=0; //還未接收到數(shù)據(jù)
          cTranFlag=1;//系統(tǒng)復(fù)位后,只要隊列非空,隨時可以發(fā)送數(shù)據(jù)
          RS0 = RS1 = 0;// 使用寄存器組0
          AUXR = 0x01; //禁止ALE信號輸出
          EA = 0;
          P1 = 0xFF;
          P2 = 0xFF;
          P3 = 0xFF;
          P4 = 0xFF;

          ES = 0;
          TR1 = 0;
          TMOD = TMOD & 0x0f | 0x20;
          TH1 = BR_19K2;
          TL1 = BR_19K2;////------------------------------------------------------------------------------------------
          PCON = 0x80; // 若SMOD=1, 波特率倍增

          SCON = 0x50;// 8位
          IP = 0x10;// 串口優(yōu)先中斷
          ES = 1;

          // wifi模塊: 波特率19200/38400/57600/115200bps 數(shù)據(jù)位:8bits 校驗位:無 停止位:1bits 流控 :無
          EA = 1;
          TR1 = 1;
          //SBUF=0x12;
          while(1)
          {
          /*
          */// 14 15 16 17 18 19 20 21
          if(cRecFlag)
          {
          temp=((cFront+1)^cBack)&0x0f;

          if(temp!=0)//循環(huán)鏈表還沒有填滿,可以繼續(xù)添加數(shù)據(jù)
          {
          cFront=cFront+1;
          cFront=cFront&(RMAX-1);
          cpSendBufPtr[cFront]=cRecData;
          cRecFlag=0;
          }
          }
          if(cTranFlag)
          {
          temp=(cBack^cFront)&0x0f;//發(fā)送了一個新的數(shù),這一個地方是cBack而不是cBack+1

          if(temp!=0)//循環(huán)鏈表非空時可以發(fā)送數(shù)據(jù)
          {

          cBack=cBack+1;
          SBUF=cpSendBufPtr[cBack];
          cpSendBufPtr[cBack]=0x00;
          cBack=cBack&(RMAX-1);
          cTranFlag=0;
          }
          }
          }
          }

          /*******************************************************************************
          // 功能: UART完成數(shù)據(jù)收發(fā)產(chǎn)生中斷程序
          // 輸入?yún)?shù): 無
          // 輸出參數(shù): 無
          // 返回值: 無
          *******************************************************************************/
          void COMM_INT() interrupt 4 using 3
          {
          if(RI)//若正在處理接受的數(shù)據(jù),則丟棄SBUF中的數(shù)據(jù)^cRecFlag
          {
          cRecData=SBUF;
          cRecFlag=1;
          RI=0;
          }
          if(TI)
          {
          cTranFlag=1;
          TI=0;
          }//發(fā)送完成,同時cTranData被賦新值*/
          }



          關(guān)鍵詞: 單片機PC機通信示

          評論


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