新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機通用模擬串口C程序

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

        作者: 時間:2013-03-15 來源:網絡 收藏

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

          // 函數名稱: init_uart

          // 功能說明: 初始化異步串口,與硬件無關,通用函數

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

          void init_uart( void )

          {

          flag_tx_ready = FALSE;

          flag_rx_ready = FALSE;

          flag_rx_waiting_for_stop_bit = FALSE;

          flag_rx_off = FALSE;

          rx_num_of_bits = 10;

          tx_num_of_bits = 10;

          set_tx_pin_low();

          timer_set();

          set_timer_interrupt(); // 使能計時器中斷

          }

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

          // 函數名稱: get_char

          // 輸入參數: 無

          // 輸出參數: ch,接收數據

          // 功能說明: 接收一個字節,與硬件無關,通用函數

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

          char get_char( void )

          {

          char ch;

          do

          {

          while ( qout==qin )

          {

          idle();

          }

          ch = inbuf[qout] 0xFF;

          if ( ++qout>=IN_BUF_SIZE )

          {

          qout = 0;

          }

          }

          while ( ch==0x0A || ch==0xC2 );

          return( ch );

          }

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

          // 函數名稱: put_char

          // 功能說明: 接收一個字節,與硬件無關,通用函數

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

          void put_char( char ch )

          {

          while ( flag_tx_ready );

          user_tx_buffer = ch;

          // 喚醒串口

          timer_tx_ctr = 3;

          bits_left_in_tx = tx_num_of_bits;

          internal_tx_buffer = (user_tx_buffer1) | 0x200;

          flag_tx_ready = TRUE;

          }

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

          // 函數名稱: flush_input_buffer

          // 功能說明:初始化緩沖區,與硬件無關,通用函數

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

          void flush_input_buffer( void )

          {

          qin = 0;

          qout = 0;

          }

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

          // 函數名稱: kbhit

          // 功能說明: 判斷接收指針與發送指針是否相等,與硬件無關,通用函數

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

          char kbhit( void )

          {

          return( qin!=qout );

          }

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

          // 函數名稱: turn_rx_on

          // 功能說明: 開始接收,與硬件無關,通用函數

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

          void turn_rx_on( void )

          {

          flag_rx_off = FALSE;

          }

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

          // 函數名稱: turn_rx_off

          // 功能說明: 停止接收,與硬件無關,通用函數

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

          void turn_rx_off( void )

          {

          flag_rx_off = TRUE;

          }

          ;************************************************************


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 左云县| 颍上县| 鹰潭市| 绥棱县| 双辽市| 崇仁县| 龙岩市| 关岭| 米脂县| 石阡县| 利津县| 邛崃市| 曲麻莱县| 乐清市| 乐山市| 南溪县| 贡嘎县| 德令哈市| 房产| 华亭县| 昌宁县| 黑水县| 蓝山县| 镇江市| 沂南县| 常山县| 临汾市| 沙田区| 衡阳县| 达拉特旗| 富川| 开化县| 冕宁县| 佛学| 灌阳县| 景东| 南陵县| 宁津县| 乐业县| 平昌县| 金塔县|