📄 main.lst
字号:
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 + -