在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

    <address id="qec3z"><var id="qec3z"><center id="qec3z"></center></var></address>

      <span id="qec3z"><code id="qec3z"></code></span>
    • <dfn id="qec3z"></dfn>
      <ruby id="qec3z"><thead id="qec3z"><noscript id="qec3z"></noscript></thead></ruby>
      <label id="qec3z"></label><dfn id="qec3z"><var id="qec3z"></var></dfn>

        新聞中心

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

        PIC16F877A與PC機串行通信C語言源程序

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


        評論


        技術專區(qū)

        關閉