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

📄 chuankou2.lst

📁 串口通信
💻 LST
字号:
C51 COMPILER V7.50   CHUANKOU2                                                             05/20/2009 22:08:40 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE CHUANKOU2
OBJECT MODULE PLACED IN chuankou2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE chuankou2.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h> 
   2          #include <string.h> 
   3          
   4          #define INBUF_LEN 4 //数据长度 
   5          
   6          unsigned char inbuf1[INBUF_LEN]; 
   7          unsigned char checksum,count3; 
   8          bit read_flag= 0 ; 
   9          
  10          void init_serialcomm( void ) 
  11          { 
  12   1      SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr 
  13   1      TMOD |= 0x20 ; //TMOD: timer 1, mode 2, 8-bit reload 
  14   1      PCON |= 0x80 ; //SMOD=1; 
  15   1      TH1 = 0xF4 ; //Baud:4800 fosc=11.0592MHz 
  16   1      IE |= 0x90 ; //Enable Serial Interrupt 
  17   1      TR1 = 1 ; // timer 1 run 
  18   1      // TI=1; 
  19   1      } 
  20          
  21          //向串口发送一个字符 
  22          void send_char_com( unsigned char ch) 
  23          { 
  24   1      SBUF=ch; 
  25   1      while (TI== 0 ); 
  26   1      TI= 0 ; 
  27   1      } 
  28          
  29          //向串口发送一个字符串,strlen为该字符串长度 
  30          void send_string_com( unsigned char *str, unsigned int strlen) 
  31          { 
  32   1      unsigned int k= 0 ; 
  33   1      do 
  34   1      { 
  35   2      send_char_com(*(str + k)); 
  36   2      k++; 
  37   2      } while (k < strlen); 
  38   1      } 
  39          
  40          
  41          //串口接收中断函数 
  42          void serial () interrupt 4 using 3 
  43          { 
  44   1      if (RI) 
  45   1      { 
  46   2      unsigned char ch; 
  47   2      RI = 0 ; 
  48   2      ch=SBUF; 
  49   2      if (ch> 127 ) 
  50   2      { 
  51   3      count3= 0 ; 
  52   3      inbuf1[count3]=ch; 
  53   3      checksum= ch- 128 ; 
  54   3      } 
  55   2      else 
C51 COMPILER V7.50   CHUANKOU2                                                             05/20/2009 22:08:40 PAGE 2   

  56   2      { 
  57   3      count3++; 
  58   3      inbuf1[count3]=ch; 
  59   3      checksum ^= ch; 
  60   3      if ( (count3==(INBUF_LEN- 1 )) && (!checksum) ) 
  61   3      { 
  62   4      read_flag= 1 ; //如果串口接收的数据达到INBUF_LEN个,且校验没错, 
  63   4      //就置位取数标志 
  64   4      } 
  65   3      } 
  66   2      } 
  67   1      } 
  68          
  69          
  70          main() 
  71          { 
  72   1      init_serialcomm(); //初始化串口 
  73   1      while ( 1 ) 
  74   1      { 
  75   2      if (read_flag) //如果取数标志已置位,就将读到的数从串口发出 
  76   2      { 
  77   3      read_flag= 0 ; //取数标志清0 
  78   3      send_string_com(inbuf1,INBUF_LEN); 
  79   3      } 
  80   2      } 
  81   1      
  82   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    163    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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