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

📄 main.lst

📁 本程序使用C8051F040芯片与CP2200实现单片机与以太网互联。
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.50   MAIN                                                                  12/14/2006 13:34:45 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN MAIN.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MAIN.C LARGE OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //---------------------------------------------------------------------------
   2          //       主控程序包括物理层初始化,      CPU初始化,媒体访问控制,以太网传输等几部分
   3          //       其中my_ipaddr = 0xC0A8000AL为本设备的IP地址对应不同的网络要求可对其进行修改
   4          //       MAC地址是CP2200出厂前是设置好的一般不需修改
   5          //   此程序为通用TCP/IP协议对不同的MCU应用CP2200进行以太网通讯只需修改CPU初始化部分
   6          //   及定时器配置部分及ADC部分就可以.
   7          //---------------------------------------------------------------------------
   8          
   9          #include <string.h>
  10          #include "C8051f040.h"
  11          #include "net.h"
  12          #include "cp220x_reg.h"
  13          #include "timer.h"
  14          #include "analog.h"
  15          #include "arp.h"
  16          #include "tcp.h"
  17          #include "http.h"
  18          #include "ip.h"
  19          MACADDRESS xdata MYMAC; 
  20          
  21          
  22          // Global variables
  23          UINT volatile event_word;
  24          char xdata text[20];  
  25          UCHAR idata debug;
  26          UCHAR idata rcve_buf_allocated;
  27          #define LINK_ERROR  0x20
  28          char xdata inbuf1[1500] _at_ 1000;
  29          char xdata outbuf1[1500] _at_ 2500;
  30          
  31          // This sets my hardware address to 00:01:02:03:04:05
  32          UCHAR xdata my_hwaddr[6] _at_ 4001; 
  33          
  34          // Hardware addr to send a broadcast
  35          UCHAR code broadcast_hwaddr[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
  36          
  37          // This sets my IP address to 192.168.0.10
  38          ULONG code  my_ipaddr = 0xC0A8000AL;
  39          
  40          // This sets my subnet mask to 255.255.255.0
  41          ULONG code my_subnet = 0xFFFFFF00L;
  42          
  43          
  44          ULONG code gateway_ipaddr = 0L;
  45          
  46          //--------------------------------------------------------------------------
  47          // Initialize the memory management routines
  48          // Initialize variables declared in main
  49          //--------------------------------------------------------------------------
  50          
  51          unsigned int Count1msInc;
  52          unsigned char Count1ms,Count10ms,Count1s;
  53          unsigned char TimeSecond,TimeMinute;
  54          unsigned char PHY_Init(void);
  55          void MAC_Init(void);
C51 COMPILER V7.50   MAIN                                                                  12/14/2006 13:34:45 PAGE 2   

  56          UCHAR xdata * rcve_frame(void);
  57          void eth_rcve(UCHAR xdata * inbuf);
  58          void MAC_Write(unsigned char mac_reg_offset, unsigned int mac_reg_data);
  59          void MAC_SetAddress(MACADDRESS* pMAC);
  60          void CP220x_Send( UCHAR xdata * outbuf, UINT len);
  61          
  62          /***********************************************************************/
  63          //初始化内存部分
  64          /**********************************************************************/
  65          
  66          void init_main(void)
  67          {
  68   1              // Start the memory pool for incoming and outgoing Ethernet
  69   1              // frames at 1000, with length = 1500 bytes. Memory below 500
  70   1              // is used for program variables
  71   1          //  init_mempool((void xdata *)1000, 1500);
  72   1              memset(text, 0, sizeof(text));
  73   1              event_word = 0;
  74   1              rcve_buf_allocated = FALSE;
  75   1              debug = FALSE;
  76   1      }
  77          /************************************************************************/
  78          //初始化MCU端口部分     采用端口非复用的方式,将地址线与数据线分开
  79          /***********************************************************************/
  80          void PORT_Init (void)
  81          {
  82   1          char SFRPAGE_SAVE = SFRPAGE;        
  83   1          unsigned char i;
  84   1          SFRPAGE = CONFIG_PAGE;
  85   1               P4MDOUT = 0XFF;
  86   1               P5MDOUT = 0XFF;
  87   1               P6MDOUT = 0XFF;
  88   1               P7MDOUT = 0XFF;
  89   1               P3MDOUT |= 0X40;
  90   1           XBR0 = 0x84;
  91   1           XBR1 = 0x04;
  92   1           XBR2 = 0x40;
  93   1      
  94   1           for(i=0;i<200;i++);
  95   1           SFRPAGE = EMI0_PAGE;
  96   1           EMI0CF = 0xFB;              
  97   1           EMI0TC = 0xef;     
  98   1                                    
  99   1                                    
 100   1           EMI0CN = 0x20;     
 101   1        
 102   1           SFRPAGE = SFRPAGE_SAVE;            
 103   1      }
 104          
 105          /***********************************************************************/
 106          //设置定时器0
 107          /**********************************************************************/
 108          void Timer0_Init (void)
 109          {
 110   1              char SFRPAGE_SAVE = SFRPAGE;        
 111   1              SFRPAGE = TIMER01_PAGE;
 112   1              CKCON|=0x8;
 113   1              TMOD|=0x1;      
 114   1              Count10ms=10;
 115   1              Count1s=0;
 116   1              TR0 = 0;                         
 117   1              TH0 = (-SYSCLK/1000) >> 8;              
C51 COMPILER V7.50   MAIN                                                                  12/14/2006 13:34:45 PAGE 3   

 118   1              TL0 = -SYSCLK/1000;
 119   1              TR0 = 1;   
 120   1              IE|= 0x2; 
 121   1          SFRPAGE = SFRPAGE_SAVE;             
 122   1      }
 123          /**********************************************************************/
 124          //选择系统时钟
 125          /**********************************************************************/
 126          void SYSCLK_Init (void)
 127          {
 128   1          int i;                              
 129   1              char SFRPAGE_SAVE = SFRPAGE;       
 130   1      
 131   1          SFRPAGE   = CONFIG_PAGE;
 132   1          OSCXCN    = 0x67;
 133   1          for (i = 0; i < 3000; i++);  
 134   1          while ((OSCXCN & 0x80) == 0);
 135   1          CLKSEL    = 0x01;
 136   1              SFRPAGE = SFRPAGE_SAVE;             
 137   1      
 138   1      }
 139          /********************************************************************/
 140          //定时器0中断  用于定时
 141          /********************************************************************/
 142          void Timer0_ISR (void) interrupt 1  //1ms
 143          {
 144   1              TH0 = (-SYSCLK/1000) >> 8;  
 145   1              TL0 = -SYSCLK/1000;
 146   1              if (Count1ms) Count1ms--;
 147   1              Count1msInc++;
 148   1              if (Count10ms) Count10ms--;
 149   1              else
 150   1              {
 151   2                      Count10ms=10;                           //10ms
 152   2                      if (Count1s) Count1s--;
 153   2                      else
 154   2                      {
 155   3                              Count1s=100;                    //1s
 156   3                              TimeSecond++;
 157   3                              if (TimeSecond>=60)
 158   3                              {
 159   4                                      TimeSecond=0;           //1min
 160   4                                      TimeMinute++;
 161   4                                      if      (TimeMinute==60)        TimeMinute=0;
 162   4                              }
 163   3                      }
 164   2              }
 165   1      }
 166          
 167           /*******************************************************************/
 168           //延时程序
 169           /*******************************************************************/
 170          void Delay1ms(unsigned char T)
 171          {
 172   1              Count1ms=T;
 173   1              while (Count1ms);
 174   1      }
 175          
 176          /********************************************************************/
 177          //上位机与下位进行交互程序
 178          /********************************************************************/
 179          void LightONOFF(bit b)
C51 COMPILER V7.50   MAIN                                                                  12/14/2006 13:34:45 PAGE 4   

 180          {
 181   1      
 182   1      }       
*** WARNING C280 IN LINE 179 OF MAIN.C: 'b': unreferenced local variable
 183          
 184           void CP220x_RST_Low(void);
 185                  //加延时
 186           void   CP220x_RST_High(void);
 187          /*******************************************************************/
 188          
 189          //主程序
 190          
 191          /*******************************************************************/
 192          void main (void)
 193          {
 194   1              UINT  event_word_copy;
 195   1              UCHAR xdata * inbuf;
 196   1              unsigned char error_code;
 197   1      //      unsigned int num_bytes;
 198   1                      
 199   1              WDTCN = 0xDE;                       // 关看门狗定时器
 200   1              WDTCN = 0xAD;
 201   1      
 202   1      
 203   1              SYSCLK_Init ();                     // 初始化系统时钟
 204   1              Timer0_Init();
 205   1              PORT_Init ();                       // 初始化端口
 206   1          
 207   1              init_timer2();
 208   1              init_main();
 209   1              init_tcp();
 210   1              init_http();
 211   1              EA=1;
 212   1              init_adc();
 213   1              init_arp();
 214   1      
 215   1              CP220x_RST_Low();
 216   1              Delay1ms(200); 
 217   1              Delay1ms(200); 
 218   1              Delay1ms(200); 
 219   1              Delay1ms(200);             

⌨️ 快捷键说明

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