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

📄 main.lst

📁 c8051f020_uip1.0.rar
💻 LST
📖 第 1 页 / 共 2 页
字号:
 186          
 187          //*****************************************************************************
 188          //
 189          // Callback for when DHCP client has been configured.
 190          //
 191          //*****************************************************************************
 192          void
 193          dhcpc_configured(const struct dhcpc_state *s)
 194          {
 195   1          uip_sethostaddr(&s->ipaddr);
 196   1          uip_setnetmask(&s->netmask);
 197   1          uip_setdraddr(&s->default_router);
 198   1          //DisplayIPAddress((void *)&s->ipaddr, 18, 24);
 199   1      }
 200          
 201          /*------------------------------------------------------------------*/
 202          void PORT_Init (void)
 203          {
 204   1         P0MDOUT |= 0x81;                   /* enable TX0 as a push-pull output*/
 205   1         
 206   1         P1MDOUT |= 0x4f;                   /*Set P1.6(TB_LED) to push-pull*/          
 207   1         P2MDOUT |= 0x28;                   /* Set P2.2(AB4_LED1)*/
 208   1         P74OUT   = 0xFF;                                       /*推挽方式*/  
 209   1         P3MDOUT |= 0Xff;
 210   1        
 211   1         P4 = 0xC0;                         /* /WR, /RD, are high, RESET is low*/                 
 212   1         P5 = 0xFF;
 213   1         P6 = 0xFF;                         /* P5, P6 contain the address lines*/               
 214   1         P7 = 0xFF;                         /* P7 contains the data lines*/            
 215   1      
 216   1         TCON &= ~0x01;                     /*Make /INT0 level triggered*/        
 217   1                                                                            /*定时器控制寄存器*/   
 218   1                                                                                  
 219   1      
 220   1      
 221   1         /*Enable UART0, CP0, and /INT0. This puts /INT0 on P0.3*/              
 222   1         XBR0 = 0x84;                                /*CP0连接到端口引脚    RX0 TX0 连接到2个端口引脚*/  
 223   1         XBR1 = 0x04;                            /*INT0连接到端口引脚*/   
 224   1         XBR2 = 0x40;                            /*交叉开关允许*/    
 225   1       
 226   1       
 227   1         TCON &= ~0x01;               /* Make /INT0 level triggered*/   
 228   1          
 229   1         EMI0CF = 0xFB;               /* Split-mode, non-multiplexed on P0 - P3*/              
 230   1                                                                  /*外部存储器接口配置     P4-P7 非复用*/ 
 231   1                                                                  /*ALE高低电平宽度   =4个sysclk周期*/   
 232   1                                                                  /*带块选择的分片 方式   ,寻址低于 4KB边界的地址时*/ 
 233   1                                                                  /*访问 片内 存储器  ,反之,访问片外存储器。*/ 
 234   1                                                                      /*8位片外MOVX操作使用EMI0CN的内容作为地址的高字节*/  
 235   1      
 236   1         EMI0TC = 0xef;             /* This constant may be modified*/                         
 237   1                                    /* according to SYSCLK to meet the*/          
 238   1                                    /* timing requirements for the CP2200*/              
 239   1                                                                /* 外部 存储器时序控制*/   
 240   1      
C51 COMPILER V9.00   MAIN                                                                  02/08/2010 20:58:31 PAGE 5   

 241   1                                                            /*11 1011 11      =0xEF*/
 242   1                                                                /*地址建立时间 3个SYSCLK周期              11 */
 243   1                                                                /*WR和/RD脉宽=  12个SYSCLK周期         1011*/
 244   1                                                                /* 地址保持时间   =3个SYSCLK周期           11 */
 245   1      
 246   1      
 247   1      
 248   1         EMI0CN = 0x20;     /* Page of XRAM accessed by EMIF*/        
 249   1                            /* XRAM页选择位,当使用8位的MOVX命令时XRAM页选择位提供16位*/
 250   1                                                /*外部数据存储器地址的高字节,实际上是 选择一个256B的RAM页 */ 
 251   1                                /*    0x2000__0x20ff 外部存储器接口控制*/  
 252   1                                                /* EX0 = 1; */
 253   1      
 254   1                                              
 255   1                                                  
 256   1      }
 257          
 258          /********************************************************************************       
 259          //                  初始化定时器0                
 260          ********************************************************************************/                          
 261          void Timer0_Init (void)
 262          {
 263   1              CKCON|=0x8;         /*  时钟控制寄存器    计数器/定时器使用系统时钟*/  
 264   1              TMOD|=0x1;      /*16Bit  方式1 16位计数器/定时器*/  
 265   1              Count10ms=10;
 266   1              Count1s=0;
 267   1              TR0 = 0;                                /* STOP Timer0*/          
 268   1              TH0 = (-SYSCLK/1000) >> 8;              /* set Timer0 to overflow in 1ms*/         
 269   1              TL0 = -SYSCLK/1000;
 270   1              TR0 = 1;                                /* START Timer0*/                
 271   1              IE|= 0x2; 
 272   1      }
 273          
 274          
 275          /********************************************************************************                         
 276          **                    晶振初始化         
 277          ********************************************************************************/                         
 278          
 279          void SYSCLK_Init (void)
 280          {
 281   1          int i;                             /* delay counter*/           
 282   1      
 283   1         OSCXCN = 0x67;                      /* start external oscillator with*/         
 284   1                                             /* 22.1184MHz crystal*/    
 285   1      
 286   1         for (i=0; i < 256; i++) ;           /* wait for oscillator to start*/            
 287   1      
 288   1         while (!(OSCXCN & 0x80)) ;          /* Wait for crystal osc. to settle*/         
 289   1      
 290   1         OSCICN = 0x88;                      /*select external oscillator as SYSCLK*/          
 291   1                                             /* source and enable missing clock*/         
 292   1                                             /* detector*/
 293   1                                                                                 
 294   1                                                                                         
 295   1      }
 296          /********************************************************************************                        
 297          //              定时器0   溢处   中断             
 298          ********************************************************************************/                        
 299          void Timer0_ISR (void) interrupt 1  /*1ms*/
 300          {
 301   1              TH0 = (-SYSCLK/1000) >> 8;  
 302   1              TL0 = -SYSCLK/1000;
C51 COMPILER V9.00   MAIN                                                                  02/08/2010 20:58:31 PAGE 6   

 303   1      
 304   1         
 305   1              tick_cnt++;
 306   1              if (Count1ms) Count1ms--;
 307   1              Count1msInc++;
 308   1              if (Count10ms) Count10ms--;
 309   1              else
 310   1              {
 311   2                      Count10ms=10;                           /*10ms*/
 312   2                      if (Count1s) Count1s--;
 313   2                      
 314   2                      else
 315   2                      {
 316   3      
 317   3                              Count1s=100;                    /*1s*/
 318   3                              TimeSecond++;
 319   3                              if (TimeSecond>=60)
 320   3                              {
 321   4                                      TimeSecond=0;           /*1min*/
 322   4                                      TimeMinute++;
 323   4                                      if      (TimeMinute==60)        TimeMinute=0;
 324   4                              }
 325   3                      }
 326   2              }
 327   1      }
 328          
 329          /***************************************************************************
 330          ** Timer 2 interrupt service routing. Intr vector location is
 331          ** address 0x002B. The timer generates an interrupt every 25 msec
 332          ** It is set to auto reload so do not need to reload it.
 333          ***************************************************************************/
 334          void timer2_interrupt(void) interrupt 5            //对应TIME2中断 
 335          {       
 336   1              TF2 = 0;                // Clear interrupt flag
 337   1      }
 338          
 339          /***************************************************************************
 340          ** Setup Timer2 in mode 1 which is 16 bit auto reload
 341          ** Intr rate = 22.1184 MHz /(12 * (65536 - reload value))
 342          ** For 25 msec reload value = 19456 = 0x4C00
 343          ***************************************************************************/
 344          void Timer2_Init(void)
 345          {
 346   1              T2CON = 0x00;
 347   1              RCAP2H = 0x4C;          // Reload value
 348   1              RCAP2L = 0x00;
 349   1              TH2 = 0x4C;                             // Initial load value
 350   1              TL2 = 0x00;
 351   1              TR2 = 1;                                        // Timer 2 run
 352   1              ET2 = 1;                             /* Enable timer 2 interrupt*/       
 353   1      }
 354          
 355          /********************************************************************************                           
 356          //                    延   时 t ms                 
 357          ********************************************************************************/                                
 358          void Delay1ms(unsigned char T)
 359          {
 360   1              Count1ms=T;
 361   1              while (Count1ms);
 362   1      }
 363          
 364            
C51 COMPILER V9.00   MAIN                                                                  02/08/2010 20:58:31 PAGE 7   



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1005    ----
   CONSTANT SIZE    =     34    ----
   XDATA SIZE       =     15      16
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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