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

📄 main.lst

📁 带keil工程。调试成功
💻 LST
📖 第 1 页 / 共 3 页
字号:
 296          uchar i2c_read8bit(void);//I2C
 297          void  sendbyte_24c256(uint data_addr,uchar data_write);//I2C
 298          uchar readbyte_24c256(uint data_addr);//I2C
 299          void  uart0_byte_out(uchar uart0_data_out);//串口发送1字节
 300          void  uart0_char_array_out(char * char_array);//串口发射字符数组
 301          void  uart0_data_bcd_out(uint data_to_out);//串口发射数据的BCD码
 302          void  led_out(void);//LED输出控制
 303          void  jdq_out(void);//继电器输出控制
 304          void  get_data(UCHAR  xdata * how_much_data);//从收到的字符串中取数据
 305          //--------------------------------------------------------------------------
 306          //                     cp2200 全局变量定义
 307          //--------------------------------------------------------------------------
 308          extern char * strstr(char * haystack, char * needle);
 309          extern ULONG idata  initial_sequence_nr;
 310          MACADDRESS xdata MYMAC;
 311          UINT1 temp_int;
 312          UINT  volatile event_word;// Global variables
 313          char  xdata    text[20] _at_ 4003;  
 314          UCHAR idata    debug;
 315          char  xdata not_use      _at_ 0;
 316          char  xdata inbuf1[599]  _at_ 1;
 317          char  xdata outbuf1[300] _at_ 300;
 318          UCHAR xdata my_hwaddr[6] _at_ 3997;// This sets my hardware address
 319          
 320          ulong xdata manual_cut_state  _at_ 3993;// 手动切丝状态变量定义&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
             -&
 321          
 322          UCHAR code  broadcast_hwaddr[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};// Hardware addr to send a broadcas
             -t
 323          ULONG code  my_subnet = 0xFFFFFF00L;// This sets my subnet mask to 255.255.255.0
 324          ULONG code  gateway_ipaddr = 0;     // Set to 0 if no gateway is present on network
 325          //--------------------------------------------------------------------------
 326          //                     cp2200 函数说明
 327          //--------------------------------------------------------------------------
 328          void  Delay20ms(uchar Time_data);
 329          void  CP220x_RST_Low(void);
 330          void  CP220x_RST_High(void);
 331          void  init_cp2200(void);
 332          UCHAR PHY_Init();
 333          void  MAC_Write(unsigned char mac_reg_offset, unsigned int mac_reg_data);
 334          void  MAC_SetAddress(MACADDRESS* pMAC);
 335          void  MAC_Init(void);
 336          void  CP220x_Send( UCHAR xdata * outbuf, UINT len);
 337          UCHAR xdata * rcve_frame(void);//收以太网的一帧
 338          void  eth_rcve(UCHAR xdata * inbuf);
 339          void  eth_send(UCHAR xdata * outbuf, UCHAR * hwaddr, UINT ptype, UINT len);//发送乙太网数据桢
 340          //==========================================================================
 341          //=====================                            =========================
 342          //=====================          主程序            =========================
 343          //=====================                            =========================
 344          //==========================================================================
 345          void main (void)
 346          {  
 347             UCHAR xdata * inbuf;
 348             UCHAR xdata * uart0_receive_data;
 349             UCHAR i,j;
 350             uint  total_force;
 351             ulong total_force_square;
 352          
 353             init_cpu();
C51 COMPILER V7.50   MAIN                                                                  05/30/2007 20:43:12 PAGE 7   

 354             init_system();
 355             init_arp();
 356             init_tcp();
 357             i=1;
 358             while(i!=0)
 359               {init_cp2200();
 360                i = PHY_Init(); 
 361                    if(i==0)//CP2200初始化成功后,快闪20次
 362                  {for(j=0;j<20;j++) {P24=0;Delay20ms(2);P24=1;Delay20ms(2);}} 
 363                    else//如果初始化不成功,慢闪
 364                  {P24=0;Delay20ms(50);P24=1;Delay20ms(50);}
 365                   }
 366             
 367             MAC_Init();  
 368             RXCN = RXCLEAR;//丢弃接收缓冲区中的所有包,并将缓冲区指针和有效位清0
 369          
 370          //---------------------------------------------------------------
 371          ////------------------   调试程序      --------------------------
 372          //---------------------------------------------------------------
 373          /*
 374             while(debug_flag==1)
 375               {
 376                for(i=0;i<24;i++)
 377                  {jdq_state[i]   = 50;
 378                       led_state[i+1] = 50;
 379                      }
 380                    jdq_out();
 381                led_out();
 382                    P24=0;
 383                    Delay20ms(50);
 384                    P24=1;
 385                    Delay20ms(50);
 386                   }
 387          */
 388          //---------------------------------------------------------------
 389          
 390          
 391          wqyloop:
 392          
 393          //---------------------------------------------------------------
 394          //----------------   24路力值采样      --------------------------
 395          //---------------------------------------------------------------
 396            if(ad_start==1)//如果AD采样标志有效,则进行24路力值采样
 397              {ad_start=0;
 398               //24路20毫秒一次的采样
 399                   if(circle_save_pointer>=100) circle_save_pointer=0;
 400               //********************************************************************************************
 401               //********************************************************************************************
 402                   ad_24route_switch(1);//模拟开关状态为24AD的1到8路输入
 403                   for (i=0;i<8;i++)
 404                     {
 405                  force_data[i][circle_save_pointer] = ad_sampling(i,5,1);//第0-7路采样力值
 406                 }
 407               ad_24route_switch(2);//模拟开关状态为24AD的9到16路输入
 408                   for (i=8;i<16;i++)
 409                     {
 410                  force_data[i][circle_save_pointer] = ad_sampling(i-8,5,1);//第8-15路采样力值
 411                 }
 412               ad_24route_switch(3);//模拟开关状态为24AD的17到24路输入
 413                   for (i=16;i<24;i++)
 414                     {
 415                  force_data[i][circle_save_pointer] = ad_sampling(i-16,5,1);//第16-23路采样力值
C51 COMPILER V7.50   MAIN                                                                  05/30/2007 20:43:12 PAGE 8   

 416                 }
 417               //********************************************************************************************
 418               //********************************************************************************************
 419               //判断本次的24路采样值是否在工作区中
 420               for(i=0;i<24;i++)
 421                 {
 422                  if((force_data[i][circle_save_pointer]>=work_sill)&&(in_work_flag[i]==0)&&(in_work_delay_counter[i
             -]==0))//判断第一次进入工作区
 423                    {in_work_delay_counter[i] = work_delay*50;}
 424                  if( force_data[i][circle_save_pointer]<work_sill )//判断是否退出工作区
 425                    {
 426                             if(led_state[i+1] != 0) {led_state[i+1]=0; led_out();}//清除LED故障指示
 427                             for(j=0;j<100;j++) force_data[i][j]=0;//清除该路的100点循环采样存储数据
 428                             in_work_flag[i] = 0;          //清除在工作区里标志
 429                         in_work_delay_counter[i] = 0; //清除进入工作区后的延时计数器
 430                     previous_error_state[i]=0;    //清除上一次故障状态
 431                     current_error_state[i]=0;     //清除这一次故障状态
 432                     one_second_average[i]=0;      //清除每秒平均值
 433                     one_second_cv[i]=0;           //清除每秒CV值
 434                     over_peak_max_counter[i]=0;   //清除峰值上限超限次数
 435                     over_peak_min_counter[i]=0;   //清除峰值下限超限次数
 436                     over_average_max_counter[i]=0;//清除均值上限超限次数
 437                     over_average_min_counter[i]=0;//清除均值下限超限次数
 438                     over_cv_counter[i]=0;         //清除CV值极限超限次数
 439                     over_time_total[i]=0;         //清除超限时间总和
 440                             grade[i]='A';                 //清除等级标志
 441                        }
 442                 }//采样值是否在工作区中判断结束
 443          
 444               //判断本次采样(峰值)故障
 445                   for(i=0;i<24;i++)//累加:峰值超限次数,超限总时间
 446                     {
 447                  if(in_work_flag[i]==1)//本次采样在工作区里,则做以下判断
 448                    {
 449                         current_error_state[i] &= 0xe0;//本次故障状态整体标志中的峰值上限、峰值下限、C等级上上限、B等级上

⌨️ 快捷键说明

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