色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機通用模擬串口C程序

          單片機通用模擬串口C程序

          作者: 時間:2013-03-15 來源:網(wǎng)絡(luò) 收藏

            //-------------------------------------------------------------------------------------------------------

            // 函數(shù)名稱: idle

            // 功能說明: 等待定時器中斷時的執(zhí)行程序,與具體應(yīng)用有關(guān)

            //--------------------------------------------------------------------------------------------------------

            void idle()

            {

            }

            //-------------------------------------------------------------------------------------------------------

            // 函數(shù)名稱: timer_isr

            // 功能說明: 中斷處理函數(shù),與硬件無關(guān),通用函數(shù)

            //--------------------------------------------------------------------------------------------------------

            void timer_isr(void) /*中斷服務(wù)程序*/

            {

            char mask, start_bit, flag_in;

            //發(fā)送程序

            if ( flag_tx_ready )

            {

            if ( --timer_tx_ctr=0 )

            {

            mask = internal_tx_buffer1;

            internal_tx_buffer >>= 1;

            if ( mask )

            {

            set_tx_pin_high();

            }

            else

            {

            set_tx_pin_low();

            }

            timer_tx_ctr = 3;

            if ( --bits_left_in_tx=0 )

            {

            flag_tx_ready = FALSE;

            }

            }

            }

            // 接收程序

            if ( flag_rx_off==FALSE )

            {

            if ( flag_rx_waiting_for_stop_bit )

            {

            if ( --timer_rx_ctr=0 )

            {

            flag_rx_waiting_for_stop_bit = FALSE;

            flag_rx_ready = FALSE;

            internal_rx_buffer = 0xFF;

            if ( internal_rx_buffer!=0xC2 )

            {

            inbuf[qin] = internal_rx_buffer;

            if ( ++qin>=IN_BUF_SIZE )

            {

            qin = 0;

            }

            }

            }

            }

            else // rx_test_busy接收忙

            {

            if ( flag_rx_ready==FALSE )

            {

            start_bit = get_rx_pin_status();

            // 判斷起始位

            if ( start_bit==0 )

            {

            flag_rx_ready = TRUE;

            internal_rx_buffer = 0;

            timer_rx_ctr = 4;

            bits_left_in_rx =

            rx_num_of_bits;

            rx_mask = 1;

            }

            }

            else

            {

            if ( --timer_rx_ctr=0 )

            {

            timer_rx_ctr = 3;

            flag_in =

            get_rx_pin_status();

            if ( flag_in )

            {

            internal_rx_buffer |= rx_mask;

            }

            rx_mask = 1;

            if ( --bits_left_in_rx=0 )

            {

            flag_rx_waiting_for_stop_bit = TRUE;

            }

            }

            }

            }

            }

            }



          關(guān)鍵詞: 單片機 模擬串口 C程序

          評論


          相關(guān)推薦

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

          關(guān)閉