新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 通信波特率115.2K的串行通信C語言示例

        通信波特率115.2K的串行通信C語言示例

        作者: 時間:2012-02-19 來源:網絡 收藏

        //115.2k程序,校驗方式為簡單雙向校驗,
        //而且是必要的,因為任何采用中斷、crc等的方法
        //均很難保證速度和避免錯誤.
        //總體速度5KB/秒

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

        //單片機程序
        //使用22.1184晶振
        unsigned char time,b_break,b_break_3;
        //35.555ms
        void int_t0(void) interrupt 1 {
        TH0=0;
        if ((++b_break_3)>2) b_break=1;
        time++;
        }

        //

        unsigned char rec(void) {
        TH0=0;b_break_3=0;b_break=0;
        while (RI==0) {
        if (b_break) return(1); //等待pc發送100ms超時
        }
        RI=0;
        SBUF=SBUF;
        return(SBUF);
        }
        /*返回1表示失敗*/
        bit sen(unsigned char d) {
        SBUF=d;
        TH0=0;b_break_3=0;b_break=0;
        while (RI==0) {
        if (b_break) return(1); //等待pc送回相同字節數據,100ms超時
        }
        RI=0;
        if (SBUF!=d) return(1);
        return(0);
        }

        void main(void) {
        unsigned int i;
        unsigned char d;
        EA=1;
        SCON=0xd8;PCON=0x80;
        TMOD=0x21;
        TL1=TH1=0xff;TR1=1;
        TH0=0;ET0=TR0=1;
        while (1) {
        d=rec();
        if ((!b_break)(d==0x55)) {
        d=rec();
        if (!b_break) {
        if (d==0xaa) {
        //接收到pc送來的要求發送指令0xaa55
        for (i=0;i1000;i++) {
        if (sen(i)) {
        //發送錯誤
        break;
        }
        }
        } else if (dd==0xaa) {
        //接收到pc送來的要求接收指令0xaaaa
        for (i=0;i1000;i++) {
        d=rec();
        if (!b_break) {
        //正確接收處理
        } else {
        //接收錯誤處理
        break;
        }
        }
        }
        }
        }
        }
        }

        //電腦程序tc2.0
        #i nclude stdio.h
        #i nclude dos.h
        #i nclude process.h
        #i nclude string.h
        #i nclude conio.h
        #i nclude dir.h>


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 临沭县| 高州市| 内丘县| 方正县| 营口市| 衡东县| 镇赉县| 广德县| 玉林市| 拉萨市| 奎屯市| 山西省| 和田县| 彰化县| 鸡东县| 昌图县| 和林格尔县| 阳信县| 湖口县| 张家口市| 香河县| 凯里市| 海原县| 冷水江市| 莲花县| 邯郸县| 潮州市| 新营市| 县级市| 汝南县| 西宁市| 泗洪县| 永胜县| 石河子市| 邵阳市| 惠来县| 南川市| 博罗县| 宜宾市| 长武县| 墨玉县|