新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > PTR2000無線收發(fā)C語言程序

        PTR2000無線收發(fā)C語言程序

        作者: 時間:2016-11-27 來源:網(wǎng)絡 收藏
        PTR2000基于SCT89C52單片機的無線收發(fā)程序:

        本文引用地址:http://www.104case.com/article/201611/322549.htm

        #include//引用標準庫的頭文件
        #include
        #defineucharunsignedchar
        #defineuintunsignedint
        #defineREQ_SEND 0x33
        #defineREQ_RESEND 0x66
        #defineSEND_OVER 0x99
        //為簡化起見,假設了7位固定的采集數(shù)據(jù)
        #define DATA0 0x10
        #define DATA1 0x20
        #define DATA2 0x30
        #define DATA3 0x40
        #define DATA4 0x50
        #define DATA5 0x60
        #define DATA6 0x70
        sbitTXEN=P2^0;
        sbitCS=P2^1;
        sbitPWR=P2^2;
        voidClearT_buf();//清除t_buf函數(shù)
        voidClearR_buf();//清除r_buf函數(shù)
        voidDelay();//延時5ms
        voidGetData();//采集數(shù)據(jù)
        voidSend();//采集并發(fā)送函數(shù)
        voidSendOver();//通知PC機發(fā)送結束函數(shù)
        xdataucharFlag_Start=0;//開始接受數(shù)據(jù)標志位
        xdataucharFlag_RSend=0;//請求發(fā)送標志位
        xdataucharFlag_ReSend=0;//請求重發(fā)標志位
        xdataucharFlag_Delay=1;//延時5ms標志
        xdataucharData[7];//采集的7個字節(jié)數(shù)據(jù)
        xdatauchartCount=0;
        xdatauchart_buf[11];//1開始字節(jié)"$",1長度字節(jié)LEN,
        //7字節(jié)數(shù)據(jù),1校驗和字節(jié),
        //1結束字節(jié)"*"
        xdataucharrCount=0;
        xdataucharr_buf[5];//1開始字節(jié)"$",1長度字節(jié)LEN,
        //1字節(jié)指令,1校驗和字節(jié),
        //1結束字節(jié)"*"
        // 定時器0中斷服務子程序
        voidtimer()interrupt 1using2
        {
        Flag_Delay=0;
        TH0=-5000/256;
        TL0=-5000%6;
        }
        //串口中斷服務子程序
        voidserial()interrupt 4using1
        {
        RI=0;
        //判斷是否收到字符$,其數(shù)值為0x24,置開始接收標志位
        if ((!Flag_Start)&&(SBUF==0x24))
        {
        Flag_Start=1;
        }
        if (Flag_Start)
        {
        if (rCount<5)
        {
        r_buf[rCount]=SBUF;
        rCount++;
        }
        //判斷是否收到字符*,其數(shù)值為0x2A,根據(jù)接收的指令設置相應標志位
        if ((r_buf[rCount-1]==0x2A)|| (rCount==5))
        {
        rCount=0;
        Flag_Start=0;
        if (r_buf[2]==REQ_SEND)//收到“請求發(fā)送”指令
        {
        Flag_RSend=1;
        }
        if (r_buf[2]==REQ_RESEND)//收到“請求重發(fā)”指令
        {
        Flag_ReSend=1;
        }
        }
        else
        ClearR_buf();
        }
        }
        //清除t_buf函數(shù)
        voidClearT_buf(void)
        {
        ucharxdatai ;
        for (i=0;i++;i<11)
        {
        t_buf[i]=0;
        }
        }
        //清除r_buf函數(shù)
        voidClearR_buf(void)
        {
        ucharxdatai ;
        for (i=0;i++;i<5)
        {
        r_buf[i]=0;
        }
        }
        //延時函數(shù)
        voidDelay(void)
        {
        TR0=1;
        ET0=1;
        while(Flag_Delay);
        ET0=0;
        TR0=0;
        Flag_Delay=1;
        }
        //采集數(shù)據(jù)函數(shù)經(jīng)過簡化處理,取固定的7個字節(jié)數(shù)據(jù)
        voidGetData(void)
        {
        Data[0]=DATA0;
        Data[1]=DATA1;
        Data[2]=DATA2;
        Data[3]=DATA3;
        Data[4]=DATA4;
        Data[5]=DATA5;
        Data[6]=DATA6;
        }


        上一頁 1 2 下一頁

        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 灵宝市| 青州市| 元氏县| 金平| 南召县| 鹤山市| 辽阳县| 武穴市| 凤山县| 崇礼县| 厦门市| 讷河市| 江阴市| 汪清县| 郓城县| 汝阳县| 永定县| 枞阳县| 天镇县| 凌源市| 永昌县| 西和县| 太保市| 仪陇县| 惠东县| 赤峰市| 新源县| 新昌县| 清水县| 嘉祥县| SHOW| 靖西县| 偏关县| 治县。| 克拉玛依市| 日土县| 阿拉善盟| 澄江县| 洛南县| 青冈县| 姜堰市|