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

📄 rs232.lst

📁 RTL8019以太网开发板资料
💻 LST
字号:
C51 COMPILER V8.18   RS232                                                                 08/02/2010 19:52:46 PAGE 1   


C51 COMPILER V8.18, COMPILATION OF MODULE RS232
OBJECT MODULE PLACED IN RS232.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE RS232.c LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /************************************************************************
   2          FileName:      RS232.c
   3          Description:   RS232 protocol process  
   4          Date:          2007 09 21                                                       
   5          ************************************************************************/
   6          #include "Main.h"
   7          #include "EEPROM.h"
   8          #include "ip.h"
   9          #include "arp.h"
  10          #include "RTL8019.h"
  11          #include "TCP.h"
  12          /************************************************************************/
  13          bit Test_Flag;
  14          bit Rcv_flag;                      //串口接收到正确的标志位
  15          bit Rcv_ok;                                     //串口接收过完成的标志位
  16          bit Key_flag;                                   //按键标志位
  17          WORK16 TestCount;               //按键延时记数器
  18          WORK16 RcvDelayCount;           //按键延时记数器
  19          WORK16 KeyDelayCount;           //按键延时记数器
  20          UWORK16  RcvCount;                                                   // 接收记数器
  21          UWORK16  RcvLen;                                                     // 接收长度 
  22          xdata  UWORK8 Rcv_buf[UART_RCV_NUM];
  23          xdata ST_UART_STATISTICS gstUARTStatistics;                      // 串口通信错误统计 
  24          xdata WORK16   SystemTimer_buf[12];                 // 系统相对定时器
  25          /*********************************************************************/
  26               /* 网口参数 */
  27          xdata UWORK8  gucaNetPara[NET_PARA_LEN];
  28          xdata UWORK8  gucOpenCount;                                      /* 3秒计数 */
  29          xdata UWORK8  gucSecond;                                         /* 系统运行时间,秒 */
  30          xdata UWORK8  gucMinute;                                         /* 系统运行时间,分钟 */
  31          xdata UWORK8  gucHour;                                           /* 系统运行时间,小时 */
  32          xdata UWORK16 gusDate;                                           /* 系统运行时间,天数 */
  33          xdata UWORK16 gusStopRun;
  34          
  35          /*********************************************************************
  36          函数名:       void key_judge(void)
  37          功能:         按键时间判断,如果是3秒中就初始化系统
  38          输入:         None 
  39          输出:         None
  40          返回:         None
  41          日期:         2004/02/09
  42          *********************************************************************/
  43          void key_judge(void)
  44          {
  45   1          if(0 == Key)                           // 使用按钮对设置进行复位
  46   1          {
  47   2              if(++gucOpenCount > 3)                    // 按住3秒进行复位 
  48   2              {
  49   3                  FlashInit();                      // 初始化FLASH 
  50   3                  ResetSystem();
  51   3              }
  52   2          }
  53   1          else
  54   1          {
  55   2              gucOpenCount = 0;
C51 COMPILER V8.18   RS232                                                                 08/02/2010 19:52:46 PAGE 2   

  56   2          } 
  57   1      } 
  58          /*********************************************************************
  59          函数名:       void runTimeStat(void) 
  60          功能:         系统运行总时间统计
  61          输入:         None 
  62          输出:         None
  63          返回:         None
  64          日期:         2004/02/09
  65          *********************************************************************/
  66          void runTimeStat(void) 
  67          {
  68   1          if(++gucSecond >= 60)                         // 是否到了1分钟 
  69   1          {
  70   2              gucSecond = 0;
  71   2              if(++gucMinute >= 60)                     // 是否到了1小时 
  72   2              {
  73   3                  gucMinute = 0;
  74   3                  if(++gucHour >= 24)                   // 是否到了一天 
  75   3                  {
  76   4                      gucHour = 0;
  77   4                      gusDate++;                        // 天数加1 
  78   4                  }
  79   3              }
  80   2          }
  81   1      }
  82          /*********************************************************************
  83          函数名:       void judgeIPState(void)
  84          功能:         判断IP状态,如果有冲突,就快闪
  85          输入:         None 
  86          输出:         None
  87          返回:         None
  88          日期:         2004/02/09
  89          *********************************************************************/
  90          void judgeIPState(void)
  91          {
  92   1              if(IPOrMacConfiltFlag)
  93   1              {                                             // IP或MAC有冲突,运行灯快闪                
  94   2                  if(FALSE == StartConfiltLedFlag)
  95   2                  {
  96   3                      StartConfiltLedFlag = TRUE;
  97   3                  }
  98   2              }
  99   1              else
 100   1              {
 101   2                  if(StartConfiltLedFlag)
 102   2                  {
 103   3                      StartConfiltLedFlag = FALSE;
 104   3                  }
 105   2                  Led = ~Led;                           // 无冲突时1s闪烁 
 106   2              }
 107   1      }
 108          /*********************************************************************
 109          函数名:       void judgeArpState(void)
 110          功能:         判断ARP的状态
 111          输入:         None 
 112          输出:         None
 113          返回:         None
 114          日期:         2004/02/09
 115          *********************************************************************/
 116          /*
 117          void judgeArpState(void)
C51 COMPILER V8.18   RS232                                                                 08/02/2010 19:52:46 PAGE 3   

 118          { 
 119              switch(ArpPhases)
 120              {
 121                  case ARP_FIRST_REQUEST:                   // ARP第一次请求 
 122                      if(ArpCachePoniter < IpModeNum)
 123                      {
 124                          if(ArpCache_Buf[ArpCachePoniter].ucIPValible)    //是否为一个合法IP 
 125                          {
 126                              if('f' == ArpCache_Buf[ArpCachePoniter].ucStatus)
 127                              {
 128                                  StartTimer(4,10);         // 还没有进行过ARP请求,每100ms进行一个IP 
 129                                  ArpCache_Buf[ArpCachePoniter].ucStatus = 'p';
 130                                  ArpStartRequest(&ArpCache_Buf[ArpCachePoniter].ucaArpIp[0]);                   // 
             -ARP请求 
 131                              }
 132                              else
 133                              {
 134                                  ArpCachePoniter++;
 135                                  StartTimer(7,2); // 启动定时器进行下一个远程IP的ARP 
 136                              }
 137                          }
 138                          else
 139                          {
 140                             
 141                              ArpCachePoniter++;          // 非法的IP 
 142                              StartTimer(7,2);      // 启动定时器进行下一个远程IP的ARP 
 143                          }
 144                      }
 145                      else
 146                      {
 147                          StartTimer(7,400);
 148                          ArpCachePoniter = 0;
 149                          ArpPhases = ARP_SECOND_REQUEST; // 没有ARP成功的IP需要再请求一次 
 150                      }
 151                      break;
 152          
 153                  case ARP_SECOND_REQUEST:                  // 没有成功的IP,再次进行ARP 
 154                      if(ArpCachePoniter < IpModeNum)
 155                      {
 156                          if('p' == ArpCache_Buf[ArpCachePoniter].ucStatus)
 157                          {
 158                              StartTimer(4,10);             // 第二次进行过ARP请求,每100ms进行一个IP /
 159                              ArpCache_Buf[ArpCachePoniter].ucStatus = 'f';    // 如果ARP成功,在ARP中将置为"r",否则

⌨️ 快捷键说明

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