新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 89C52串口通信練習(xí)

        89C52串口通信練習(xí)

        作者: 時間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
        題目:以2400bps從計算機發(fā)送任一字節(jié)數(shù)據(jù),當(dāng)單片機收到該數(shù)據(jù)后,在此數(shù)據(jù)前加上一序號然后連同此數(shù)據(jù)一起發(fā)送至計算機,當(dāng)序號超過255時歸零。

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

        程序如下:

        #include
        #define uint unsigned int
        #define uchar unsigned char
        void init();
        uchar flag,aa;
        char ch[3];
        uint i;

        void main()
        {
        init();
        while(1)
        {
        if(flag==1)
        {
        ES=0;//關(guān)閉串行中斷
        i=0;
        ch[0]=i/100+48; //設(shè)百位,轉(zhuǎn)常量為字符常量
        ch[1]=(i/10)%10+48; //設(shè)十位
        ch[2]=i%10+48;//設(shè)個位
        i++;
        if(i==256)
        i=0;
        if(ch[0]!=0)
        {
        SBUF=ch[0];
        while(!TI);
        TI=0;
        }
        if(ch[1]!=0)
        {
        SBUF=ch[1];
        while(!TI);
        TI=0;
        }
        SBUF=ch[2];
        while(!TI);
        TI=0;
        SBUF=aa;
        while(!TI);
        TI=0;
        ES=1;
        }
        }
        }

        void ser() interrupt 4
        {
        RI=0; //軟件清零RI
        aa=SBUF;
        flag=1;
        }

        void init()
        {
        TMOD=0x20; //T1工作在8位重裝定時器狀態(tài)
        TH1=0xf4;
        TL1=0xf4; //設(shè)置波特率為2400bps
        EA=1;
        ES=1;
        TR1=1;
        SM0=0;
        SM1=1;
        REN=1;
        }

        這里有幾點要注意:

        1.設(shè)置波特率用T1定時器來設(shè)置,有固定計算公式,T1設(shè)置在8位重裝定時器狀態(tài)。

        2.由于要輸出0~255字符串,所以要用到程序里面紅色那一段,設(shè)一個3維數(shù)組,把字符串的百位,十位和個位分別記錄下來,然后用SBUF發(fā)送緩沖器輸出。

        3.輸出的時候注意先關(guān)閉串行中斷(ES=0),以免發(fā)送字符串時T1置1引起串行中斷服務(wù)程序



        關(guān)鍵詞: 89C52串口通

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 洛阳市| 左权县| 龙泉市| 谢通门县| 德钦县| 会宁县| 固原市| 澄迈县| 宜君县| 饶河县| 阜宁县| 舞钢市| 修武县| 阳朔县| 湘乡市| 资源县| 绩溪县| 宿松县| 呼玛县| 旅游| 腾冲县| 威信县| 莱阳市| 亳州市| 黔南| 郸城县| 霍州市| 安龙县| 厦门市| 库尔勒市| 方城县| 嘉峪关市| 翁源县| 镇宁| 仙居县| 夏邑县| 博罗县| 屏东县| 万全县| 靖江市| 绍兴县|