新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PIC單片機通用同步異步收發器的編程應用

        PIC單片機通用同步異步收發器的編程應用

        作者: 時間:2011-12-28 來源:網絡 收藏

        voidinterrupt low_priorityLOW_ISR()/* 低優先級中斷子程序 */
        {
        if(RCIF==1)/* RS232接收中斷 */
        {
        RCIF=0;/* 清中斷標志 */
        receive232[receive_count]=RCREG;/* 接收數據并存儲 */
        send232[receive_count]=RCREG; /* 接收數據存放到發送緩沖數組 */
        receive_count++;/* 接收計數器加1 */
        if(receive_count>7)/* 如果已經接收到8個數據 */
        {
        receive_count=0;/* 接收計數器清0 */
        SciReceiveFlag=1;/* 置接收到8個數據標志 */
        }
        }
        elseif((0!=Send_Mode)(TXIF==1))/* 中斷發送數據方式且為發送中斷 */
        {
        if(send_count>7)/* 已經發送完8個數 */
        {
        TXEN=0;/* 發送不使能 */
        return;
        }
        else
        {
        send_count++;/* 發送計數器加1 */
        TXREG=*pointer++;/* 發送當前應發送數據,發送指針加1 */
        }
        }
        }

        main() /* 主程序 */
        {
        INTCON=0x00;/* 關總中斷 */
        ADCON1=0X07;/* 設置數字輸入輸出口,不用作模擬口 */
        PIE1=0;/* PIE1 的中斷不使能 */
        PIE2=0;/* PIE2 的中斷不使能 */
        PIE3=0;/* PIE3 的中斷不使能 */
        Send_Mode=1;/* Send_Mode不為0,中斷方式發送數據;
        Send_Mode =0,非中斷方式發送數據 */
        sciinitial();/* 串行通訊初始化子程序 */
        IPEN=1;/* 使能中斷高低優先級 */
        INTCON=INTCON|0xc0;/* 開總中斷、開外圍接口中斷 */
        while(1)
        {
        if(1==SciReceiveFlag)/* 是否接收到8個通信數據 */
        {
        SciReceiveFlag=0;/* 清接收到8個通信數據標志 */
        if(0!=Send_Mode) /* Send_Mode不為0,中斷方式發送 */
        {
        send_count=0;/* 發送數據計數清0 */
        pointer=send232[0];/* 發送指針指向發送數據數組首地址 */
        TXREG=*pointer++;/* 發送第一個數據后,將發送指針加1 */
        TXEN=1;/* 使能發送 */
        }
        else /* Send_Mode =0,非中斷方式發送數據 */
        {
        pointer=send232[0];/* 發送指針指向發送數據數組首地址 */
        for(i=0;i8;i++)
        {
        TXREG=*pointer++;/* 發送數據后,將發送指針加1 */
        while(1)/* 等待發送完成 */
        {
        if(TXIF==1)break;/* 等待發送完成 */
        }
        }
        }
        }
        }
        }


        上一頁 1 2 3 下一頁

        關鍵詞: PIC18FXX8 串行通信

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 中牟县| 大冶市| 建平县| 阿尔山市| 舟山市| 藁城市| 舟曲县| 永和县| 平乐县| 江油市| 泾川县| 福清市| 炎陵县| 博兴县| 东兴市| 永顺县| 都安| 阳泉市| 莆田市| 句容市| 明光市| 鹤岗市| 昌吉市| 错那县| 南雄市| 抚松县| 博乐市| 巴塘县| 彭泽县| 华亭县| 绍兴县| 红河县| 集贤县| 咸丰县| 靖远县| 土默特右旗| 孝昌县| 惠来县| 南华县| 个旧市| 延安市|