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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > PIC16F877A與PC機(jī)串行通信C語言源程序

          PIC16F877A與PC機(jī)串行通信C語言源程序

          作者: 時間:2016-12-02 來源:網(wǎng)絡(luò) 收藏
          //*******串口通信程序*********
          //*******定義變量*************
          #include
          #define unchar unsigned char
          #define uint unsigned int
          unchar RC_label;//標(biāo)志位起始位為1結(jié)束位為0
          unchar caiji_label;//采集幀格式標(biāo)志位正確為1錯誤為0
          unchar data RC[100];//存儲接收到的數(shù)據(jù)
          unchar data TX1[100];//存儲自身參數(shù)
          unchardataTX2[100];//存儲出錯指示ERROR
          int RC_buff;//
          int i=0,j=0,k=0;//
          //*****變量定義完畢************
          //*****子程序區(qū)****************
          //*****串口初始化程序開始**********
          void initRS232()
          {
          //設(shè)置TXSTA
          CSRC=0;//
          TX9=0;//8位數(shù)據(jù)發(fā)送
          TXEN=1;//發(fā)送使能
          SYNC=0;//選擇異步模式
          BRGH=1;//高速
          TRMT=1;//發(fā)送寄存器空
          TX9D=0;//
          //設(shè)置RCSTA
          SPEN=1;//允許串口工作
          RX9=0;//接收8位數(shù)據(jù)
          SREN=1;//
          CREN=1;//使能連續(xù)接收
          ADDEN=0;//
          FERR=0;//
          OERR=0;//無超速錯誤
          RX9D=0;//
          TRISC=0X80;//設(shè)置C口
          SPBRG=0X19;//設(shè)置波特率為9600
          }
          //*******初始化232完畢********
          //*******延時子程序開始*********
          void delay(int i)
          {for(i;--i;) continue;}
          //******延時子程序完畢*******
          //******中斷初始化子程序開始******
          void int_interrupt(void)
          {
          GTE=1;//
          PEIE=1;//
          RCIE=1;//
          }
          //*******中斷初始化子程序完畢********
          //********中斷服務(wù)子程序開始*********
          void interrupt receive(void)
          {
          if(OERR==1)//判斷有無超速錯誤
          {
          CREN=0;
          CREN=1;
          }
          if(RCIF==1)
          {
          RC_buff=RCREG;
          if(RC_buff==0x2a)//判斷是否是起始標(biāo)志*
          {
          RC_label=1;
          }
          if(RC_buff==0x23)//判斷是否是結(jié)束標(biāo)志#
          {
          RC_label=0;
          }
          }

          if(RC_label==1)
          RC[k++]=RC_buff;//將接收到的數(shù)據(jù)存儲在數(shù)組中
          else if(RC_label==0)
          k=0;
          if(RC[1]==0XFE&&RC[2]==0XC0&&RC[3]==0X34&&RC[5]==0X12)//判斷數(shù)據(jù)采集幀格式是否正確
          caiji_label=1;
          else caiji_label=0;
          //********中斷服務(wù)子程序完畢**********
          //********參數(shù)發(fā)送子程序開始**********
          void TX_serve(void)
          {
          TX1[]={0X2A,0XFD,0X26,0X30,0X31,0X32};//自身參數(shù)存儲在TX1中
          TX2[]={0X56,0X52,0X52,0X4F,0X52};//出錯指示存儲在TX2中
          if(caiji_label==1)//如果數(shù)據(jù)采集幀格式正確則發(fā)送自身參數(shù)幀
          {
          for(j=0;j<6;j++)
          {
          TXREG=TX1[j];
          delay(20);
          }
          }
          if(caiji_label==0) //如果數(shù)據(jù)采集幀格式錯誤則發(fā)送出錯指示
          {
          for(j=0;j<5;j++)
          {
          TXREG=TX2[j];
          delay(20);
          }
          }
          }
          //********參數(shù)發(fā)送子程序完畢**********
          //********主程序開始**************
          void main()
          {
          int_interrupt();
          initRS232();
          TX_serve();
          end
          }


          評論


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