新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 串行通信中斷方式子程序

        串行通信中斷方式子程序

        作者: 時間:2016-11-23 來源:網絡 收藏
        /*-----------------------------------------------------*

        *文件描述:本文件包含了串行通信的4子程序,分別為: *
        *(1)SCISend1:串行發送1字節 *
        *(2)SCISendN:串行發送n字節 *
        *(3)SCIRe1:串行接收1字節 *
        *(4)SCIReN:串行接收n字節 *
        //[以下為子程序源代碼]
        //[包含頭文件]
        #include "SCI.h"
        /*SCISend1:串行發送1個字節-----------------------------*
        *功 能:串行發送1個字節 *
        *參 數:要發送的數據 *
        *返 回:無 *
        *-----------------------------------------------------*/
        void SCISend1(unsigned char o)
        {//判斷ReStatusR的第SendTestBit位是否為1,是1可以發送
        while(1)
        if ((ReSendStatusR & (1< { ReSendDataR=o;
        break;}
        }
        /*SCISendN:串行發送N個字節-----------------------------*
        *功 能:發送數組中的N個字節數據 *
        *參 數:待發送的數據字節數及其要存放的數組首地址 *
        *返 回:無 *
        *-----------------------------------------------------*/
        void SCISendN(unsigned char n,unsigned char ch[])
        {int i;
        for(i=0;i
        SCISend1(ch[i]);
        }
        /*SCIRe1:串行收一個字節數據----------------------------*
        *功 能:從串行口接收1個字節的數據 *
        *參 數:標志指針p *
        *返 回:接收到的數據(若接收失敗,返回0xff) *
        *說 明:參數*p帶回接收標志=0收到數據,=1未收到數據 *
        *-----------------------------------------------------*/
        unsigned char SCIRe1(unsigned char *p)
        { unsigned int k;
        unsigned char i;
        //ReStatusR第ReTestBit位為1表示可接收數據
        for(k=0;k<0xfbbb;k++)
        if ((ReSendStatusR & (1< {i=ReSendDataR;
        *p=0x00;
        break;}
        if(k>=0xfbbb)
        {i=0xff;
        *p=0x01;}
        return i; //返回接收到的數據
        }
        /*SCIReN:HC08串行接收N個字節---------------------------*
        *功 能:接收N個字節數據,并存放在ch數組中 *
        *參 數:待接收的數據字節數及其存放的數組首地址 *
        *返 回:接收標志=0收到數據,=1未收到數據 *
        *-----------------------------------------------------*/
        unsigned char SCIReN(unsigned char n,unsigned char ch[])
        {int m;
        unsigned char fp;
        m=0;
        while (m{
        ch[m]=SCIRe1(&fp);
        if (fp==1) return 1;
        m++;
        }
        return 0;
        }

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


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 西和县| 徐汇区| 五大连池市| 石渠县| 紫金县| 达尔| 龙门县| 阿克| 大同市| 略阳县| 朝阳区| 奉贤区| 平潭县| 泗洪县| 左权县| 石景山区| 三河市| 清水县| 景宁| 松阳县| 南陵县| 石景山区| 芷江| 荣成市| 涡阳县| 迁西县| 华容县| 桓仁| 郓城县| 白水县| 海伦市| 台江县| 永吉县| 滕州市| 略阳县| 大埔区| 静安区| 灵璧县| 蚌埠市| 宁国市| 宿迁市|