⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iofor232.lst

📁 c51bus 51单片机的各种接口总线程序包
💻 LST
📖 第 1 页 / 共 2 页
字号:
 147   1      {
 148   2      if ( flag_rx_waiting_for_stop_bit )
 149   2      {
 150   3      if ( --timer_rx_ctr<=0 )
 151   3      {
 152   4      flag_rx_waiting_for_stop_bit = FALSE;
 153   4      flag_rx_ready = FALSE;
 154   4      internal_rx_buffer &= 0xFF;
 155   4      if ( internal_rx_buffer!=0xC2 )
 156   4      {
 157   5      inbuf[qin] = internal_rx_buffer;
 158   5      if ( ++qin>=IN_BUF_SIZE )
 159   5      {
 160   6      qin = 0;
 161   6      }
 162   5      }
 163   4      }
 164   3      }
 165   2      else                            // rx_test_busy接收忙
 166   2      {
 167   3      if ( flag_rx_ready==FALSE )
 168   3      {
 169   4      start_bit = get_rx_pin_status();
 170   4      // 判断起始位
 171   4      if ( start_bit==0 )
 172   4      {
 173   5      flag_rx_ready = TRUE;
 174   5      internal_rx_buffer = 0;
 175   5      timer_rx_ctr = 4;
 176   5      bits_left_in_rx = 
C51 COMPILER V7.06   IOFOR232                                                              06/08/2005 21:57:39 PAGE 4   

 177   5      rx_num_of_bits;
 178   5      rx_mask = 1;
 179   5      }
 180   4      }
 181   3      else 
 182   3      {
 183   4      if ( --timer_rx_ctr<=0 )
 184   4      { 
 185   5      timer_rx_ctr = 3;
 186   5      flag_in = 
 187   5      get_rx_pin_status();
 188   5      if ( flag_in )
 189   5      {
 190   6      internal_rx_buffer |= rx_mask;
 191   6      }
 192   5      rx_mask <<= 1;
 193   5      if ( --bits_left_in_rx<=0 )
 194   5      {
 195   6      flag_rx_waiting_for_stop_bit = TRUE;
 196   6      }
 197   5      }
 198   4      }
 199   3      }
 200   2      }
 201   1      }
 202          //-------------------------------------------------------------------------------------------------------
 203          //  函数名称: init_uart
 204          //  功能说明: 初始化异步串口,与硬件无关,通用函数
 205          //--------------------------------------------------------------------------------------------------------
 206          void init_uart( void )
 207          {
 208   1      flag_tx_ready = FALSE;
 209   1      flag_rx_ready = FALSE;
 210   1      flag_rx_waiting_for_stop_bit = FALSE;
 211   1      flag_rx_off = FALSE;
 212   1      rx_num_of_bits = 10;
 213   1      tx_num_of_bits = 10;
 214   1      set_tx_pin_low();
 215   1      timer_set();
 216   1      set_timer_interrupt();               // 使能计时器中断
 217   1      }
 218          //-------------------------------------------------------------------------------------------------------
 219          //  函数名称: get_char
 220          //  输入参数: 无
 221          //  输出参数: ch,接收数据
 222          //  功能说明: 接收一个字节,与硬件无关,通用函数
 223          //--------------------------------------------------------------------------------------------------------
 224          char get_char( void )
 225          {
 226   1      char ch;
 227   1      do
 228   1      {
 229   2      while ( qout==qin )
 230   2      {
 231   3      idle();
 232   3      }
 233   2      ch = inbuf[qout] & 0xFF;
 234   2      if ( ++qout>=IN_BUF_SIZE )
 235   2      {
 236   3      qout = 0;
 237   3      }
 238   2      }
C51 COMPILER V7.06   IOFOR232                                                              06/08/2005 21:57:39 PAGE 5   

 239   1      while ( ch==0x0A || ch==0xC2 );
 240   1      return( ch );
 241   1      }
 242          //-------------------------------------------------------------------------------------------------------
 243          //  函数名称: put_char
 244          //  功能说明: 接收一个字节,与硬件无关,通用函数
 245          //--------------------------------------------------------------------------------------------------------
 246          void put_char( char ch )
 247          {
 248   1      while ( flag_tx_ready );
 249   1      user_tx_buffer = ch;
 250   1      // 唤醒串口
 251   1      timer_tx_ctr = 3;
 252   1      bits_left_in_tx = tx_num_of_bits;
 253   1      internal_tx_buffer = (user_tx_buffer<<1) | 0x200;
 254   1      flag_tx_ready = TRUE;
 255   1      }
 256          //-------------------------------------------------------------------------------------------------------
 257          //  函数名称: flush_input_buffer
 258          //  功能说明:初始化缓冲区,与硬件无关,通用函数
 259          //--------------------------------------------------------------------------------------------------------
 260          void flush_input_buffer( void )
 261          {
 262   1      qin = 0;
 263   1      qout = 0;
 264   1      }
 265          //-------------------------------------------------------------------------------------------------------
 266          //  函数名称: kbhit
 267          //  功能说明: 判断接收指针与发送指针是否相等,与硬件无关,通用函数
 268          //--------------------------------------------------------------------------------------------------------
 269          char kbhit( void )
 270          {
 271   1      return( qin!=qout );
 272   1      }
 273          //-------------------------------------------------------------------------------------------------------
 274          //  函数名称: turn_rx_on
 275          //  功能说明: 开始接收,与硬件无关,通用函数
 276          //--------------------------------------------------------------------------------------------------------
 277          void turn_rx_on( void )
 278          {
 279   1      flag_rx_off = FALSE;
 280   1      }
 281          //-------------------------------------------------------------------------------------------------------
 282          //  函数名称: turn_rx_off
 283          //  功能说明: 停止接收,与硬件无关,通用函数
 284          //--------------------------------------------------------------------------------------------------------
 285          void turn_rx_off( void )
 286          {
 287   1      flag_rx_off = TRUE;
 288   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    394    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     26    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -