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

📄 main.lst

📁 RTL8019以太网开发板资料
💻 LST
字号:
C51 COMPILER V8.18   MAIN                                                                  04/20/2010 23:16:14 PAGE 1   


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

line level    source

   1          /************************************************************************   
   2          FileName:      Main.c
   3          Description:   Main protocol process   
   4          Date:          2007 09 21                                                           
   5          ************************************************************************/
   6          #include "Main.h"
   7          #include "rtl8019.h"
   8          #include "ip.h"
   9          #include "TCP.h"
  10          #include "http.h"
  11          #include "lcd.h"
  12          /************************************************************************/
  13          bit  MS10_Flag;                                     // 10MS到时标志位,也就是TIMER0的中断标志位
  14          bit  gbRs232End;                                        /* 打印完毕 */
  15          bit  DelayMSFlag;                                    /* 延时程序开始 */
  16          UWORK8  LinkFlag;                                    // 连接标志位
  17          
  18          data  UWORK16 Ms10FlagCount;                             // 定时器记数器
  19          data  UWORK16 DelayMsCount;                              /* 10ms计数器,软件延时中用 */
  20          xdata UWORK32 gulPassWord;
  21          Setup_Parameter NetParameter;
  22          code UWORK16 BaudRate[12] = {0xfb80, 0xfdc0, 0xfee0, 0xff40, 0xff70, 0xffa0, 0xffb8, 0xffd0, 0xffdc, 0xffe
             -8, 0xffee, 0xfff4};
  23            
  24          code UWORK8 test_buf[12] = {0x55}; 
  25          code UWORK8 StartFlag_buf[FLASH_FLAG_NUM] = {0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa};                //开机初
             -始化
  26          code UWORK8 StartParameter_buf[NET_PARA_LEN] = 
  27                  {
  28                           0x00,
  29                           0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,       //上位机设置进的引导码
             -        默认八组:0x55 0xAA
  30                           0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,       //上位机设置进的标志码
             -        默认十六个:0xff
  31                           0x05,                                   // 转换器名字长度 5 
  32                       0x68,0x6f,0x73,0x74,0x31,'\0','\0','\0','\0','\0','\0','\0','\0','\0','\0',    //转换器名字 host1 
  33                       0x0,                                    // ip模式 */
  34                       0x00,0xab,0xcc,0x65,0xde,0xaa,          // MAC */
  35                       0xc0,0xa8,0x01,0x6f,                     // 本地IP 192.168.0.111 
  36                       0xff,0xff,0xff,0x00,                    // 掩码 255.255.255.0 */
  37                       0xc0,0xa8,0x01,0x01,                    // 默认网关192.168.1.1 
  38                       0xc0,0xa8,0x01,0x64,                     // 远程IP地址192.168.0.95                                  
             -       
  39                       0xc3,0x50,                              // 本地端口地址50000                    
  40                       0xc3,0x50,                              // 远程端口号50000 
  41                                    
  42                       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,     // 保留 
  43                       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  44                       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  45                       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  46                       0x03,                                         // 选择 3 波特率,9600 */        
  47                           0x31,0x30,0x30,0x2e,0x31,0x30,0x30,                      //版本号:100.100
  48                    };
  49          
  50          code UWORK16 BaudRate_buf[8] = {BAUND_RATE_1200, BAUND_RATE_2400,                                         //定时时间
C51 COMPILER V8.18   MAIN                                                                  04/20/2010 23:16:14 PAGE 2   

  51                                           BAUND_RATE_4800, BAUND_RATE_9600,BAUND_RATE_19200,
  52                                           BAUND_RATE_38400,BAUND_RATE_57600,BAUND_RATE_115200};
  53          
  54           
  55          /************************************************************************/
  56          //       主程序
  57          /************************************************************************/
  58          void main(void)
  59          {
  60   1          UWORK8 ucTemp;  
  61   1                                                              /* 上电复位运行灯和告警灯快闪8下 */
  62   1          for(ucTemp = 0; ucTemp < 30; ucTemp++)
  63   1          {
  64   2                      Delay(10);
  65   2              Led = ~Led;
  66   2          }
  67   1      
  68   1              ucTemp = sizeof(Setup_Parameter);
  69   1          Led = OFF;                                                          //关掉LED
  70   1          InitCPU();                                                          //初始化CPU
  71   1              LCD_Init(); //LCM初始化 
  72   1              FlashCheck();                   //检测Flash数据
  73   1          InitSerial();            // 初始化串口 
  74   1          InitPara();              // 初始化网口,串口参数 
  75   1              init_tcp();                             //初始化TCP接收组别
  76   1              init_http();
  77   1              if(ERROR == RTL8019asInit()) 
  78   1              {
  79   2                      LCD_DisplayString(1, 0, "RTL8019Init_ERR");   //在第一行显示"RTL8019Init_ERR" 
  80   2                      DelayMs(1000);  
  81   2              ResetSystem();             
  82   2              }
  83   1              if(ERROR == RTL8019asCheck())                      // 以太网芯片环回自测
  84   1              {
  85   2                      LCD_DisplayString(1, 0, "RTL8019Check_ERR");   //在第一行显示"RTL8019Check_ERR" 
  86   2                      DelayMs(1000); //启动等待,等LCM讲入工作状态 
  87   2              ResetSystem();              // 初始化以太网芯片 
  88   2              }
  89   1          WDTCONTR |= CLR_WDT;   //复位看门狗定时器
  90   1              StopTimer(13); 
  91   1          ucTemp = 0; 
  92   1              LinkFlag = 0;
  93   1              Rs485En = FALSE;                //485通信使能
  94   1      
  95   1          while(1)
  96   1          {
  97   2              // ................. 读网口数据,劈以太网帧 .............................                   
  98   2              RcvEthernetData();   
  99   2      
 100   2             if(OK == If8019SendReady())                   // 以太网发送准备好 
 101   2              { 
 102   3                 if(0 != Rcv_ok)               // 串口接收队列不为空 
 103   3                  {                                           // 将串口接收到的数据发往数据库 
 104   4                              WDTCONTR |= CLR_WDT;   //复位看门狗定时器 
 105   4                 
 106   4                                      switch(LinkFlag)
 107   4                                      {
 108   5                                              case TCPLINK:           //表示是TCP连接
 109   5                                                      TcpFromSeries(&Rcv_buf[0],RcvLen);
 110   5                                                      break;
 111   5                                              case UDPLINK:      //表示UDP连接
 112   5                                                      UdpSend(&Rcv_buf[0],RcvLen); 
C51 COMPILER V8.18   MAIN                                                                  04/20/2010 23:16:14 PAGE 3   

 113   5                                                      break;
 114   5                                              default:                 //默认是UDP连接
 115   5                                                      UdpSend(&Rcv_buf[0],RcvLen); 
 116   5                                                      break;
 117   5                                      }
 118   4                                 Rcv_ok = 0;
 119   4                  } 
 120   3              }
 121   2      
 122   2              // ............................. 软件定时器处理 .............................
 123   2              
 124   2             if(MS10_Flag)                                     //每10MS处理1次 
 125   2              {
 126   3                  SystemTimerProc();                          // 处理相对定时器中的事务            
 127   3              }
 128   2                      LCD_DisplayString(0, 0, "IP:192.168.1.111");   //在第一行显示"RTL8019Check_ERR" 
 129   2                      LCD_DisplayString(0, 1, "ip:192.168.1.100");      //在第二行显示"hxl_raien." 
 130   2          }
 131   1      }
 132          /*********************************************************************
 133          函数名:       void InitCPU(void)
 134          功能:         初始化CPU
 135          输入:         None 
 136          输出:         None
 137          返回:         None
 138          日期:         2004/02/04
 139          *********************************************************************/
 140          void InitCPU(void)
 141          {  
 142   1              // CPU内核设置 
 143   1          AUXR |= 0x02;   //禁止内部XRAM                      // 禁止内部XRAM 
 144   1          AUXR |= 0x01;  //禁止ALE信号                 
 145   1      
 146   1              TMOD=0x11;               //定时器0与1工作模式1
 147   1          TL0 = TIMER0_LOW_BYTE;                   // 定时5ms 
 148   1          TH0 = TIMER0_HIGH_BYTE;
 149   1          TL1 = TIMER1_LOW_BYTE;                              // 定时1ms 
 150   1          TH1 = TIMER1_HIGH_BYTE;
 151   1          TF0 = FALSE;                                                        //清定时器0中断标志 
 152   1              TF1 = FALSE;                                                    //清定时器1中断 
 153   1      
 154   1          // 串口0初始化, 定时器2用作串口0波特率发生器
 155   1          TMOD|=0x20;
 156   1              SCON=0x50;                         // 模式1,8位可变波特率,无奇偶校验
 157   1          PCON |= SMOD;                  //波特率加倍
 158   1              T2CON = 0x34;                   //使用T2作为波特率
 159   1          TL2 = TIMER2_LOW_BYTE;    // 定时器低8位 
 160   1          TH2 = TIMER2_HIGH_BYTE;  // 定时器高8位 
 161   1          RCAP2L = TIMER2_LOW_BYTE;     // 串口0重载计数器低8位 
 162   1          RCAP2H = TIMER2_HIGH_BYTE;    // 串口0重载计数器高8位 
 163   1          TR2 = TRUE;                                         //启动timer2   timer2开始计数 
 164   1          RI = FALSE;                 //清除串口接收中断标志
 165   1          TI = FALSE;                 // 清除串口发送中断标志   
 166   1          REN = TRUE;    // 串口接收使能
 167   1          ES = TRUE;       // 使能串口中断
 168   1              //中断0初始化
 169   1              IT0 = FALSE;       //外部中断0低电平触发
 170   1              EX0=TRUE;
 171   1              //优先级设置
 172   1              IP = 0x11;                      //串口优先级最高,其次是中断0,其次是定时器1,最后是定时器0
 173   1              IPH = 0x18;
 174   1      
C51 COMPILER V8.18   MAIN                                                                  04/20/2010 23:16:14 PAGE 4   

 175   1          TR0 = TRUE;    //启动timer0                                 /* timer0开始计数 */
 176   1          ET0 = TRUE;   // 使能timer0中断
 177   1          ET1 = TRUE;      //使能timer1中断
 178   1          EA = TRUE;      //打开中断总开关                            /* 初始化完数据后才能打开中断,中断里面会对
             -许多全局变量进行操作 */
 179   1      
 180   1          // 看门狗初始化 
 181   1          WDTCONTR |= 0x07;                    // 模式7,看门狗定时1.26S 
 182   1          WDTCONTR |= EN_WDT;    //使能看门狗中断   
 183   1          WDTCONTR |= CLR_WDT;   //复位看门狗定时器                      复位,使能看门狗计数器 
 184   1                         
 185   1      }
 186          
 187          /*********************************************************************
 188          函数名:       void  FlashInit(void)
 189          功能:         初始化Flash数据
 190          输入:         ucType(0:全部初始化,包括标志位  1:全部初始化 2:初始化UART  3:初始化net)
 191          输出:         None
 192          返回:         none
 193          日期:         2004/08/08
 194          *********************************************************************/
 195          void FlashInit(void)
 196          {
 197   1              bit bFlag = FALSE;
 198   1              if(OK != FlashWriteData(FLASH_INIT_FLAG_ADDR,StartFlag_buf,FLASH_FLAG_NUM)) bFlag = TRUE;       //初始化

⌨️ 快捷键说明

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