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

📄 main.lst

📁 F020集成以太网接口核心模块以太网通讯与数据采集例程源代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 560   3                              P_LED2 = 0;
 561   3      
 562   3                              strcpy(msg_ans,"LED OFF");
 563   3                      }
 564   2                      else 
 565   2                      {
 566   3                              strcpy(msg_ans,"Error");
 567   3                      }               
 568   2              
 569   2              }
 570   1      
 571   1              // Write the HTML code to a buffer.
 572   1              sprintf( HTML_BUFFER,"<HTML>%s</HTML>",msg_ans);
 573   1      
 574   1              // Fill the socket with data to send.
 575   1              socket_ptr->send_ptr = HTML_BUFFER;
 576   1              socket_ptr->send_len = strlen(HTML_BUFFER);
 577   1              
 578   1              // Return from the CGI script
 579   1      
 580   1              return;
 581   1      }
 582          
 583          
 584          //-----------------------------------------------------------------------------
 585          // Initialization Routines
 586          //-----------------------------------------------------------------------------
 587          
 588          //-----------------------------------------------------------------------------
 589          // PORT_Init
 590          //-----------------------------------------------------------------------------
 591          //
 592          // Configure the Interrupts, Crossbar and GPIO ports
 593          
 594          //
 595          
 596          void PORT_Init()
 597          {
 598   1          // P0.0  -  TX0 (UART0), Open-Drain, Digital
 599   1          // P0.1  -  RX0 (UART0), Open-Drain, Digital
 600   1          // P0.2  -  SCK  (SPI0), Open-Drain, Digital
 601   1          // P0.3  -  MISO (SPI0), Open-Drain, Digital
 602   1          // P0.4  -  MOSI (SPI0), Open-Drain, Digital
 603   1          // P0.5  -  NSS  (SPI0), Open-Drain, Digital
 604   1          // P0.6  -  SDA (SMBus), Open-Drain, Digital
 605   1          // P0.7  -  SCL (SMBus), Open-Drain, Digital
 606   1      
 607   1          // P1.0  -  Skipped,     Open-Drain, Analog
 608   1          // P1.1  -  Skipped,     Open-Drain, Analog
 609   1          // P1.2  -  Skipped,     Open-Drain, Analog
 610   1          // P1.3  -  Skipped,     Open-Drain, Analog
 611   1          // P1.4  -  Skipped,     Open-Drain, Analog
C51 COMPILER V8.02   MAIN                                                                  01/16/2008 21:37:44 PAGE 11  

 612   1          // P1.5  -  Skipped,     Open-Drain, Analog
 613   1          // P1.6  -  Skipped,     Open-Drain, Analog
 614   1          // P1.7  -  Skipped,     Open-Drain, Analog
 615   1      
 616   1          // P2.0  -  TX1 (UART1), Open-Drain, Digital
 617   1          // P2.1  -  RX1 (UART1), Open-Drain, Digital
 618   1          // P2.2  -  INT0 (Tmr0), Open-Drain, Digital
 619   1          // P2.3  -  Unassigned,  Open-Drain, Digital
 620   1          // P2.4  -  Unassigned,  Open-Drain, Digital
 621   1          // P2.5  -  Unassigned,  Open-Drain, Digital
 622   1          // P2.6  -  Unassigned,  Open-Drain, Digital
 623   1          // P2.7  -  Unassigned,  Open-Drain, Digital
 624   1      
 625   1          // P3.0  -  Unassigned,  Open-Drain, Digital
 626   1          // P3.1  -  Unassigned,  Open-Drain, Digital
 627   1          // P3.2  -  Unassigned,  Open-Drain, Digital
 628   1          // P3.3  -  Unassigned,  Open-Drain, Digital
 629   1          // P3.4  -  Unassigned,  Open-Drain, Digital
 630   1          // P3.5  -  Unassigned,  Open-Drain, Digital
 631   1          // P3.6  -  Unassigned,  Push-Pull,  Digital
 632   1          // P3.7  -  Unassigned,  Push-Pull,  Digital
 633   1      
 634   1          P1MDIN    = 0x00;
 635   1          P2MDOUT   = 0x00;
 636   1              P3MDOUT   = 0x02;
 637   1      
 638   1          P74OUT    = 0xFF;
 639   1      
 640   1      
 641   1              P4 = 0xC0;                       // /WR, /RD, are high, RESET is low
 642   1              P5 = 0xFF;
 643   1          P6 = 0x3F;                       // P5, P6 contain the address lines
 644   1          P7 = 0xFF;                       // P7 contains the data lines
 645   1      
 646   1              TCON &= ~0x01;                   // Make /INT0 level triggered
 647   1      
 648   1              // Enable UART0,SPI0,SMBUS0,UART1,P1 as Analog Pin,SO INT0 on P22
 649   1          XBR0      = 0x07;
 650   1          XBR1      = 0x04;
 651   1          XBR2      = 0x44;
 652   1      }
 653          
 654          
 655          
 656          //-----------------------------------------------------------------------------
 657          // EMIF_Init
 658          //-----------------------------------------------------------------------------
 659          //
 660          // Configure the External Memory Interface for both on and off-chip access.
 661          //
 662          void EMIF_Init (void)
 663          {
 664   1      
 665   1         EMI0CF = 0x2B;             // Split-mode, multiplexed on P6 - P7
 666   1      
 667   1         EMI0TC = EMIF_TIMING;      // This constant may be modified
 668   1                                    // according to SYSCLK to meet the
 669   1                                    // timing requirements for the CP2200
 670   1      
 671   1         EMI0CN = BASE_ADDRESS;     // Page of XRAM accessed by EMIF
 672   1      
 673   1      }
C51 COMPILER V8.02   MAIN                                                                  01/16/2008 21:37:44 PAGE 12  

 674          
 675          //-----------------------------------------------------------------------------
 676          // SYSCLK_Init
 677          //-----------------------------------------------------------------------------
 678          //
 679          // This routine initializes the system clock.
 680          //
 681          void SYSCLK_Init (void)
 682          {
 683   1          int i = 0;
 684   1          OSCXCN = 0x67;
 685   1          for (i=0; i < 3000; i++);         // Wait at least 1ms
 686   1          while(!(OSCXCN & 0x80));         
 687   1          OSCICN = 0x08;
 688   1      }
 689          
 690          //--------------------------------
 691          // AD初始化
 692          //-------------------------------
 693          void ADC_Init()
 694          {
 695   1      
 696   1              AMX0CF    = 0;         // 单端输入
 697   1          AMX0SL    = 0;
 698   1              ADC0CF    = 0xF8;
 699   1      
 700   1          ADC0CN    = 0xC0;
 701   1      }
 702          
 703          void Voltage_Reference_Init()
 704          {
 705   1          REF0CN    = 0x07;
 706   1      }
 707          
 708          //------------------------------
 709          // DA初始化
 710          //------------------------------
 711          void DAC_Init()
 712          {
 713   1              DAC0CN = 0x80;      // 使能DAC0,输出数据右对齐
 714   1      }
 715          
 716          
 717          //-----------------------------------------------
 718          // 定时器初始化
 719          //-----------------------------------------------
 720          
 721          void Timer_Init()
 722          {
 723   1              
 724   1              //.......................................
 725   1              // 设置定时器的时钟信号
 726   1              // - T4M T2M T1M T0M  -  -  -
 727   1          // 0  1   0   1   0   0  0  0
 728   1              // 1:使用SYSCLK;0:使用SYSCLK/12
 729   1              // 定时器0,1,2,4均使用SYSCLK
 730   1              //.......................................
 731   1              CKCON = 0x70;
 732   1              
 733   1              
 734   1              //......................................
 735   1              // 定时0工作在16位定时器模式
C51 COMPILER V8.02   MAIN                                                                  01/16/2008 21:37:44 PAGE 13  

 736   1              // 定时器1工作在8位重载模式
 737   1              //......................................
 738   1      
 739   1              TMOD = 0x21;                                            
 740   1                                              
 741   1              //....................................
 742   1              // T0作为系统节拍时钟
 743   1              // 定时计算方法= 65536-t*SYSCLK
 744   1              //.....................................
 745   1              //TH0 = TMR0H;          
 746   1              //TL0 = TMR0L;          
 747   1              
 748   1              PCON = 0;       
 749   1              //.......................................
 750   1              // T1作为串口0时钟
 751   1              // 串口0波特率=SYSCLK/32*(256-TMR1LOAD)
 752   1              // T1波特率=9600
 753   1              //.......................................
 754   1                      
 755   1              TH1  = 0xB8;    
 756   1              TL1  = 0xB8;    
 757   1              
 758   1              TCON = 0x00;    
 759   1                                              
 760   1              
 761   1              //..................................................
 762   1              // T2 and T3 not used
 763   1              //..................................................
 764   1              RCAP2H = 0x00;  // Timer 2 Capture Register High Byte
 765   1              RCAP2L = 0x00;  // Timer 2 Capture Register Low Byte    
 766   1              TH2    = 0x00;  // Timer 2 High Byte    
 767   1              TL2    = 0x00;  // Timer 2 Low Byte     
 768   1          T2CON  = 0x00;      // Timer 2 Control Register
 769   1                      
 770   1              TMR3RLL = 0x00; // Timer 3 Reload Register Low Byte
 771   1              TMR3RLH = 0x00; // Timer 3 Reload Register High Byte
 772   1              TMR3H   = 0x00; // Timer 3 High Byte
 773   1              TMR3L   = 0x00; // Timer 3 Low Byte
 774   1          TMR3CN  = 0x00;     // Timer 3 Control Register
 775   1      
 776   1          //.....................................................
 777   1              // T4 作为串口1波特率发生器
 778   1              // T4波特率=SYSCLK/32*(65536-RCAP4H:RCAP4L)
 779   1              // T4波特率=9600
 780   1              //.....................................................
 781   1          RCAP4H = 0xFF;  // Timer 4 Capture Register High Byte
 782   1          RCAP4L = 0xB8;  // Timer 4 Capture Register Low Byte
 783   1          TH4    = 0xFF;  // Timer 4 High Byte
 784   1          TL4    = 0xB8;  // Timer 4 Low Byte
 785   1          T4CON  = 0x30;  // Timer 4 Control Register
 786   1          
 787   1      
 788   1      }
 789          
 790          //...........................................................
 791          // 功能:UART0初始化
 792          // 输入参数:无
 793          // 输出参数:无
 794          // 注意:1.应该首先使用交叉开关为UART0分配相应的引脚
 795          //       2.初始化定时器1作为波特率发生器
 796          //..........................................................
 797          void UART0_Init()
C51 COMPILER V8.02   MAIN                                                                  01/16/2008 21:37:44 PAGE 14  

 798          {
 799   1              
 800   1          SCON0 = 0x50;          // 8位波特率异步通信模式
 801   1      
 802   1          REN0  = 1;             // 使能UART0接收
 803   1          TR1   = 1;             // 启动定时器1
 804   1      }
 805          
 806          
 807          //-----------------------------------------------------
 808          // 函数功能:循环方式发送字符串
 809          // 输出参数:pSendString,char*:欲发送的字符串的缓冲区
 810          // 输出:无
 811          //-----------------------------------------------------
 812          void SendString(char *pSendString)
 813          {
 814   1              
 815   1              // 循环发送,首先关闭中断
 816   1              
 817   1              ES0 =0;
 818   1              
 819   1              while(*pSendString!=0)
 820   1              {
 821   2                      SBUF0 = *pSendString++;
 822   2                      while(TI0==0);
 823   2                      TI0=0;
 824   2              }
 825   1              
 826   1      
 827   1      
 828   1      }
 829          
 830          //-----------------------------
 831          // 初始化变量
 832          //----------------------------
 833          void InitVariable()
 834          {
 835   1         g_Voltage     = 0;
 836   1         g_Temperature = 0;   
 837   1      
 838   1         g_ADChannel   = AD_VOLTAGE;
 839   1      }
 840          
 841          
 842          
 843          //------------------------------
 844          // 以循环的方式进行一次电压采集
 845          // g_Voltage是实际电压的1000倍

⌨️ 快捷键说明

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