新聞中心

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

        115.2K串行通信C語言示例

        作者: 時間:2010-09-28 來源:網絡 收藏

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

        本文引用地址:http://www.104case.com/article/173198.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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 施秉县| 永登县| 奉化市| 德江县| 霍邱县| 龙泉市| 开阳县| 平舆县| 上思县| 陇川县| 萨迦县| 民勤县| 建德市| 海伦市| 寿光市| 周口市| 罗山县| 青冈县| 辽宁省| 忻州市| 滦南县| 日喀则市| 洛南县| 商河县| 新宾| 南雄市| 长海县| 措勤县| 鹤岗市| 赫章县| 富阳市| 威信县| 抚远县| 宝丰县| 镇雄县| 霍城县| 孝义市| 扬州市| 兴国县| 鲁山县| 清远市|