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

📄 rs232.lst

📁 RTL8019以太网开发板资料
💻 LST
字号:
C51 COMPILER V8.18   RS232                                                                 04/26/2010 19:37:30 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 Rcv_flag;                      //串口接收到正确的标志位
  14          bit Rcv_ok;                                     //串口接收过完成的标志位
  15          bit Key_flag;                                   //按键标志位
  16          WORK16 RcvDelayCount;           //按键延时记数器
  17          WORK16 KeyDelayCount;           //按键延时记数器
  18          UWORK16  RcvCount;                                                   // 接收记数器
  19          UWORK16  RcvLen;                                                     // 接收长度 
  20          xdata  UWORK8 Rcv_buf[UART_RCV_NUM];
  21          xdata ST_UART_STATISTICS gstUARTStatistics;                      // 串口通信错误统计 
  22          xdata WORK16   SystemTimer_buf[12];                 // 系统相对定时器
  23          /*********************************************************************/
  24               /* 网口参数 */
  25          xdata UWORK8  gucaNetPara[NET_PARA_LEN];
  26          xdata UWORK8  gucOpenCount;                                      /* 3秒计数 */
  27          xdata UWORK8  gucSecond;                                         /* 系统运行时间,秒 */
  28          xdata UWORK8  gucMinute;                                         /* 系统运行时间,分钟 */
  29          xdata UWORK8  gucHour;                                           /* 系统运行时间,小时 */
  30          xdata UWORK16 gusDate;                                           /* 系统运行时间,天数 */
  31          xdata UWORK16 gusStopRun;
  32          
  33          /*********************************************************************
  34          函数名:       void key_judge(void)
  35          功能:         按键时间判断,如果是3秒中就初始化系统
  36          输入:         None 
  37          输出:         None
  38          返回:         None
  39          日期:         2004/02/09
  40          *********************************************************************/
  41          void key_judge(void)
  42          {
  43   1          if(0 == Key)                           // 使用按钮对设置进行复位
  44   1          {
  45   2              if(++gucOpenCount > 3)                    // 按住3秒进行复位 
  46   2              {
  47   3                  FlashInit();                      // 初始化FLASH 
  48   3                  ResetSystem();
  49   3              }
  50   2          }
  51   1          else
  52   1          {
  53   2              gucOpenCount = 0;
  54   2          } 
  55   1      } 
C51 COMPILER V8.18   RS232                                                                 04/26/2010 19:37:30 PAGE 2   

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

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

⌨️ 快捷键说明

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