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

📄 netcom.lst

📁 移植到51单片机的UIP代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   NETCOM                                                                05/13/2008 23:42:02 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE NETCOM
OBJECT MODULE PLACED IN netcom.OBJ
COMPILER INVOKED BY: f:\Keil\C51\BIN\C51.EXE netcom.c LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "uip.h"
   2          #include "string.h"
   3          #include "STC89C58RD+ FLASH-ISP-IAP.H"
   4          #include "modbus.h"
   5          #include "uip_arp.h"
   6          #include "stdio.h"
   7          #include "netcom.h"
   8          #include <reg52.h>
   9          
  10          COM_BUF ComBuf;
  11          PARA_SET ParaSet;
  12          u8 MS_TIMER;
  13          u8 Second;
  14          
  15          sfr P4    = 0xe8;
  16          sbit P4_0 = P4^0;
  17          
  18          bit SoftResetFlag=0;
  19          u8 SoftRstSec;
  20          
  21          static u8 TcpStep=0;
  22          static bit ReConnect=0;
  23          
  24          void SoftReset (void)
  25          {
  26   1              ((void (code *) (void)) 0x0000) ();
  27   1      }
  28          
  29          void ParaInit( void )
  30          {
  31   1              u16 crc;
  32   1              P4_0 = 1;
  33   1              sequential_read_flash_in_one_sector(0x8000,sizeof(PARA_SET),(u8*)&ParaSet);
  34   1              crc = CalCRC( (u8*)&ParaSet, sizeof(PARA_SET)-2 );
  35   1              if( crc != ParaSet.CrcVerify || !P4_0 )
  36   1              {
  37   2                      ParaSet.LocalIP[0] = 192;
  38   2                      ParaSet.LocalIP[1] = 168;
  39   2                      ParaSet.LocalIP[2] = 1;
  40   2                      ParaSet.LocalIP[3] = 10;
  41   2      
  42   2                      ParaSet.GateWay[0] = 192;
  43   2                      ParaSet.GateWay[1] = 168;
  44   2                      ParaSet.GateWay[2] = 1;
  45   2                      ParaSet.GateWay[3] = 1;
  46   2      
  47   2                      ParaSet.NetMask[0] = 255;
  48   2                      ParaSet.NetMask[1] = 255;
  49   2                      ParaSet.NetMask[2] = 255;
  50   2                      ParaSet.NetMask[3] = 0;
  51   2      
  52   2                      ParaSet.MacAddr[0] = 0xab;
  53   2                      ParaSet.MacAddr[1] = 0xcd;
  54   2                      ParaSet.MacAddr[2] = 0xef;
  55   2                      ParaSet.MacAddr[3] = 0x12;
C51 COMPILER V8.08   NETCOM                                                                05/13/2008 23:42:02 PAGE 2   

  56   2                      ParaSet.MacAddr[4] = 0x34;
  57   2                      ParaSet.MacAddr[5] = 0x56;
  58   2      
  59   2                      ParaSet.TargetIP[0] = 192;
  60   2                      ParaSet.TargetIP[1] = 168;
  61   2                      ParaSet.TargetIP[2] = 1;
  62   2                      ParaSet.TargetIP[3] = 168;
  63   2      
  64   2                      ParaSet.LocalPort = 1000;
  65   2      
  66   2                      ParaSet.TargetPort = 2000;
  67   2      
  68   2                      ParaSet.BaudRate = 19200;
  69   2                      ParaSet.VerifyBit = 0;
  70   2                      ParaSet.DataBit = 8;
  71   2                      ParaSet.StopBit = 1;
  72   2                      ParaSet.FrameTime = 2;
  73   2      
  74   2                      ParaSet.WorkMode = MODE_TCP_CLIENT;
  75   2      
  76   2                      crc = CalCRC( (u8*)&ParaSet, sizeof(PARA_SET)-2 );
  77   2                      ParaSet.CrcVerify = crc;
  78   2                      sequential_write_flash_in_one_sector(0x8000,sizeof(PARA_SET),(u8*)&ParaSet);
  79   2              }
  80   1      }
  81          
  82          u32 SwapLong( u32 temp )
  83          {
  84   1              u8 ch,cl;
  85   1              u16 ih,il;
  86   1              PC2MCU51 *Pc2Mcu51Ptr;
  87   1              Pc2Mcu51Ptr = (PC2MCU51*)&temp;
  88   1              cl = Pc2Mcu51Ptr->L.L2I.IL.CHAR.CL;
  89   1              ch = Pc2Mcu51Ptr->L.L2I.IL.CHAR.CH;
  90   1      
  91   1              Pc2Mcu51Ptr->L.L2I.IL.CHAR.CL = ch;
  92   1              Pc2Mcu51Ptr->L.L2I.IL.CHAR.CH = cl;
  93   1      
  94   1              cl = Pc2Mcu51Ptr->L.L2I.IH.CHAR.CL;
  95   1              ch = Pc2Mcu51Ptr->L.L2I.IH.CHAR.CH;
  96   1      
  97   1              Pc2Mcu51Ptr->L.L2I.IH.CHAR.CL = ch;
  98   1              Pc2Mcu51Ptr->L.L2I.IH.CHAR.CH = cl;
  99   1      
 100   1              il = Pc2Mcu51Ptr->L.L2I.IL.b;
 101   1              ih = Pc2Mcu51Ptr->L.L2I.IH.c;
 102   1      
 103   1              Pc2Mcu51Ptr->L.L2I.IL.b = ih;
 104   1              Pc2Mcu51Ptr->L.L2I.IH.c = il;
 105   1              
 106   1              return temp;
 107   1      }
 108          
 109          void ComBufInit( void )
 110          {
 111   1              ComBuf.SendPtr = 0;
 112   1              ComBuf.SendLen = 0;
 113   1              ComBuf.SendFlag = 0;
 114   1      
 115   1              ComBuf.RecvPtr = 0;
 116   1              ComBuf.RecvLen = 0;
 117   1              ComBuf.RecvFlag = 0;
C51 COMPILER V8.08   NETCOM                                                                05/13/2008 23:42:02 PAGE 3   

 118   1              ComBuf.Com2NetFlag = 0;
 119   1              ComBuf.RstRecvFlag = 0;
 120   1      }
 121          
 122          void ComInit(void)
 123          {
 124   1              u32 baud;
 125   1              baud = SwapLong( ParaSet.BaudRate );
 126   1              switch( baud )
 127   1              {
 128   2                      case 110:
 129   2                              RCAP2H = 0xe7;
 130   2                              RCAP2L = 0x76;
 131   2                              break;
 132   2                      case 150:
 133   2                              RCAP2H = 0xee;
 134   2                              RCAP2L = 0x01;
 135   2                              break;
 136   2                      case 200:
 137   2                              RCAP2H = 0xf2;
 138   2                              RCAP2L = 0x81;
 139   2                              break;
 140   2                      case 300:
 141   2                              RCAP2H = 0xf7;
 142   2                              RCAP2L = 0x01;
 143   2                              break;
 144   2                      case 600:
 145   2                              RCAP2H = 0xfb;
 146   2                              RCAP2L = 0x81;
 147   2                              break;
 148   2                      case 1200:
 149   2                              RCAP2H = 0xfd;
 150   2                              RCAP2L = 0xc0;
 151   2                              break;
 152   2                      case 2400:
 153   2                              RCAP2H = 0xfe;
 154   2                              RCAP2L = 0xe0;
 155   2                              break;
 156   2                      case 4800:
 157   2                              RCAP2H = 0xff;
 158   2                              RCAP2L = 0x70;
 159   2                              break;
 160   2                      case 7200:
 161   2                              RCAP2H = 0xff;
 162   2                              RCAP2L = 0xa0;
 163   2                              break;
 164   2                      case 9600:
 165   2                              RCAP2H = 0xff;
 166   2                              RCAP2L = 0xb8;
 167   2                              break;
 168   2                      case 14400:
 169   2                              RCAP2H = 0xff;
 170   2                              RCAP2L = 0xd0;
 171   2                              break;
 172   2                      case 19200:
 173   2                              RCAP2H = 0xff;
 174   2                              RCAP2L = 0xdc;
 175   2                              break;
 176   2                      case 28800:
 177   2                              RCAP2H = 0xff;
 178   2                              RCAP2L = 0xe8;
 179   2                              break;
C51 COMPILER V8.08   NETCOM                                                                05/13/2008 23:42:02 PAGE 4   

 180   2                      case 38400:
 181   2                              RCAP2H = 0xff;
 182   2                              RCAP2L = 0xee;
 183   2                              break;
 184   2                      case 57600:
 185   2                              RCAP2H = 0xff;
 186   2                              RCAP2L = 0xf4;
 187   2                              break;
 188   2                      case 76800:
 189   2                              RCAP2H = 0xff;
 190   2                              RCAP2L = 0xf7;
 191   2                              break;
 192   2                      case 115200:
 193   2                              RCAP2H = 0xff;
 194   2                              RCAP2L = 0xfa;
 195   2                              break;
 196   2                      case 230400:
 197   2                              RCAP2H = 0xff;
 198   2                              RCAP2L = 0xfd;
 199   2                              break;
 200   2                      default:
 201   2                              RCAP2H = 0xff;          //9600
 202   2                              RCAP2L = 0xb8;
 203   2                              break;
 204   2              }
 205   1              switch( ParaSet.VerifyBit )
 206   1              {
 207   2                      case VERY_NONE:
 208   2                              SCON = 0x50;
 209   2                              break;
 210   2                      case VERY_EVEN:
 211   2                      case VERY_ODD:
 212   2                      case VERY_LOW:
 213   2                      case VERY_HIGH:
 214   2                              SCON = 0xd0;
 215   2                              break;
 216   2                      default:
 217   2                              SCON = 0x50;
 218   2                              break;
 219   2              }
 220   1              RCLK = 1;
 221   1              TCLK = 1;
 222   1              TR2 = 1;
 223   1              PS = 1;
 224   1              ES = 1;
 225   1      
 226   1              ComBufInit();
 227   1      }
 228          
 229          void Timer1Init( void )
 230          {
 231   1              TH1 = T1_RELOAD >> 8;
 232   1          TL1 = T1_RELOAD;
 233   1              TMOD |= 0x10;
 234   1              ET1 = 1;
 235   1              TR1 = 1;
 236   1      }
 237          
 238          void NetcomInit( void )
 239          {
 240   1          struct uip_udp_conn *udp_conn;
 241   1              struct uip_conn *tcp_conn;
C51 COMPILER V8.08   NETCOM                                                                05/13/2008 23:42:02 PAGE 5   

 242   1              struct uip_eth_addr MacAddr;
 243   1      
 244   1          u16_t ipaddr[2];//定义IP类型变量
 245   1      
 246   1              ParaInit();
 247   1              ComInit();
 248   1              Timer1Init();
 249   1      
 250   1              uip_ipaddr(ipaddr, ParaSet.NetMask[0],ParaSet.NetMask[1],ParaSet.NetMask[2],ParaSet.NetMask[3]);
 251   1              uip_ipaddr(ipaddr, 255,255,255,0);
 252   1      
 253   1              uip_ipaddr(ipaddr, ParaSet.LocalIP[0],ParaSet.LocalIP[1],ParaSet.LocalIP[2],ParaSet.LocalIP[3]);
 254   1              uip_sethostaddr( ipaddr );
 255   1      
 256   1              //参数设置UDP端口
 257   1              uip_ipaddr(ipaddr, ParaSet.TargetIP[0],ParaSet.TargetIP[1],ParaSet.TargetIP[2],ParaSet.TargetIP[3]);
 258   1          udp_conn = uip_udp_new(&ipaddr, HTONS(2010));
 259   1              uip_udp_bind(udp_conn,HTONS(2008));
 260   1      
 261   1              MacAddr.addr[0] = ParaSet.MacAddr[0];
 262   1              MacAddr.addr[1] = ParaSet.MacAddr[1];
 263   1              MacAddr.addr[2] = ParaSet.MacAddr[2];
 264   1              MacAddr.addr[3] = ParaSet.MacAddr[3];
 265   1              MacAddr.addr[4] = ParaSet.MacAddr[4];
 266   1              MacAddr.addr[5] = ParaSet.MacAddr[5];
 267   1              uip_setethaddr(MacAddr);
 268   1      
 269   1              ParaSet.WorkMode = MODE_TCP_CLIENT;
 270   1              switch( ParaSet.WorkMode )
 271   1              {
 272   2                      case MODE_TCP_CLIENT:

⌨️ 快捷键说明

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