Pārlūkot izejas kodu

首次代码上库

yidong.fan 1 dienu atpakaļ
vecāks
revīzija
3ba0e21aa7
100 mainītis faili ar 14101 papildinājumiem un 0 dzēšanām
  1. 32 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/ADC.c
  2. 7 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/ADC.h
  3. 45 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/DAC7512.c
  4. 9 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/DAC7512.h
  5. 138 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/DS18B20.c
  6. 18 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/DS18B20.h
  7. 31 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Delay.c
  8. 10 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Delay.h
  9. 421 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/EEPROM.c
  10. 25 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/EEPROM.h
  11. 109 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/IO.c
  12. 21 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/IO.h
  13. 153 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Instrument_EEPROM_Param.c
  14. 60 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Instrument_EEPROM_Param.h
  15. 254 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Interrupt.c
  16. 22 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Interrupt.h
  17. 113 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Makefile
  18. 946 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Motor.c
  19. 164 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Motor.h
  20. 93 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/PMT.c
  21. 8 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/PMT.h
  22. 71 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/PWM.c
  23. 7 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/PWM.h
  24. 84 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Temperature_Control.c
  25. 7 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Temperature_Control.h
  26. 307 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Timer.c
  27. 10 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Timer.h
  28. 323 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Uart.c
  29. 55 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Uart.h
  30. 2290 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/command.c
  31. 53 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/command.h
  32. 0 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/defmplabxtrace.log
  33. BIN
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/defmplabxtrace.log.inx
  34. 674 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/main.c
  35. 5 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/main.h
  36. 309 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/Makefile-default.mk
  37. 13 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/Makefile-genesis.properties
  38. 69 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/Makefile-impl.mk
  39. 36 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/Makefile-local-default.mk
  40. 10 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/Makefile-variables.mk
  41. 73 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/Package-default.bash
  42. 361 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/configurations.xml
  43. 3 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/private/SuppressibleMessageMemo.properties
  44. 25 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/private/configurations.xml
  45. 86 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/private/private.xml
  46. 29 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/project.xml
  47. 2 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/readme.txt
  48. 13 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/system.c
  49. 6 0
      WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/system.h
  50. 113 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/Makefile
  51. 41 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/ABIS_User.c
  52. 27 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/ABIS_User.h
  53. 101 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Ad.c
  54. 14 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Ad.h
  55. 92 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Ad7606.c
  56. 34 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Ad7606.h
  57. 17 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/DA7512.h
  58. 59 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/DMA.c
  59. 77 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/DMA.h
  60. 101 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/DS1802.c
  61. 12 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/DS1802.h
  62. 35 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Da7512.c
  63. 95 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Dac5571.c
  64. 23 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Dac5571.h
  65. 41 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Delay.c
  66. 23 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Delay.h
  67. 538 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/EEPROM.c
  68. 93 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/EEPROM.h
  69. 321 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Interrupt.c
  70. 69 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Interrupt.h
  71. 241 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Motor.c
  72. 125 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Motor.h
  73. 77 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/OC.c
  74. 15 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/OC.h
  75. 152 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/PIN.c
  76. 57 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/PIN.h
  77. 479 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/PWM.c
  78. 123 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/PWM.h
  79. 6 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Timer.c
  80. 16 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Timer.h
  81. 1639 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Uart.c
  82. 187 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Uart.h
  83. 127 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/main.c
  84. 4 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/readme.c
  85. 345 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/Makefile-default.mk
  86. 13 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/Makefile-genesis.properties
  87. 69 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/Makefile-impl.mk
  88. 37 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/Makefile-local-default.mk
  89. 10 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/Makefile-variables.mk
  90. 73 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/Package-default.bash
  91. 433 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/configurations.xml
  92. 3 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/private/SuppressibleMessageMemo.properties
  93. 25 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/private/configurations.xml
  94. 15 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/private/private.xml
  95. 29 0
      WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/project.xml
  96. 42 0
      WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Delay.c
  97. 23 0
      WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Delay.h
  98. 113 0
      WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Makefile
  99. 74 0
      WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Pin.c
  100. 23 0
      WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Pin.h

+ 32 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/ADC.c

@@ -0,0 +1,32 @@
+#include <p33FJ64MC204.h>
+#include <stdlib.h>
+#include <math.h>
+#include "ADC.h"
+
+/*******************************************************************************
+ * 函数名称:InitADC
+ * 功能描述:配置ADC控制寄存器
+ *******************************************************************************/
+void InitADC(void)
+{
+	AD1CON1bits.AD12B=1;    
+	AD1CON2=0;                              
+	AD1CON2bits.VCFG=0;      
+	AD1CON3bits.ADRC=0;      
+	AD1CON3bits.SAMC=20;     
+	AD1CON3bits.ADCS=5;    
+	AD1CHS0=0;                                             
+	AD1CSSL=0;              
+	AD1CON1bits.FORM=0;    
+	AD1CON1bits.SSRC=7;      
+	AD1CON1bits.ASAM=0;      
+}
+
+unsigned int AD_Get(unsigned int num)
+{
+	AD1CHS0bits.CH0SA = num;
+	AD1CON1bits.ADON = 1;	
+	AD1CON1bits.SAMP = 1;	
+	while (!AD1CON1bits.DONE);
+    return (ADC1BUF0);
+}

+ 7 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/ADC.h

@@ -0,0 +1,7 @@
+#ifndef ADC_H
+#define	ADC_H
+
+void         InitADC(void);
+unsigned int AD_Get(unsigned int num);
+
+#endif	

+ 45 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/DAC7512.c

@@ -0,0 +1,45 @@
+#include <p33FJ64MC204.h>
+#include <stdlib.h>
+#include <math.h>
+#include "DAC7512.h"
+
+void OutDAC7512(unsigned int PMTCtrl)
+{
+	unsigned char i;
+	DACSYNC=1;
+	DACCLK=1;
+    asm("nop");//nop();
+    asm("nop");//nop();
+    asm("nop");//nop();
+    asm("nop");//nop();
+	DACSYNC=0;
+    asm("nop");//nop();
+    asm("nop");//nop();
+	for(i=0;i<16;i++)
+    {
+		DACDI=(PMTCtrl & 0x8000) ? 1 : 0;
+		PMTCtrl <<=1;
+
+		asm("nop");//nop();
+		asm("nop");//nop();
+		asm("nop");//nop();
+		DACCLK=1;
+		asm("nop");//nop();
+		asm("nop");//nop();
+		asm("nop");//nop();
+		asm("nop");//nop();
+		asm("nop");//nop();
+		asm("nop");//nop();
+		DACCLK=0;
+		asm("nop");//nop();
+		asm("nop");//nop();
+		asm("nop");//nop();
+		asm("nop");//nop();
+		asm("nop");//nop();
+		asm("nop");//nop();
+	}
+	asm("nop");//nop();
+    asm("nop");//nop();
+    asm("nop");//nop();
+	DACSYNC=1;
+}

+ 9 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/DAC7512.h

@@ -0,0 +1,9 @@
+#ifndef DAC7512_H
+#define DAC7512_H
+
+#define DACSYNC          LATAbits.LATA0
+#define DACCLK           LATAbits.LATA1
+#define DACDI            LATBbits.LATB0
+
+extern void OutDAC7512(unsigned int PMTCtrl);
+#endif	

+ 138 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/DS18B20.c

@@ -0,0 +1,138 @@
+#include <p33FJ64MC204.h>
+#include <stdlib.h>
+#include <math.h>
+#include "DS18B20.h"
+
+float temp;
+//us级别延时函数1~20精度高20us,偏差1us
+//实测为0.9几us 20220704tws
+inline void DelayUs(unsigned int Tmr) 
+{
+    unsigned char i;
+
+    for (i = 0; i < 2; i++) 
+    {
+        Nop();
+        Nop();
+        Nop();
+    }
+
+    if (Tmr > 1) 
+    {
+        Tmr -= 1;
+        for (; Tmr > 0; Tmr--)
+        {
+            for (i = 0; i < 3; i++)
+            {
+                Nop();
+                Nop();
+                Nop();
+            }
+            Nop();
+        }
+    }
+}
+//1ms
+
+//void Delay_ms(unsigned int cter) 
+//{
+//    unsigned int ii;
+//    if (cter == 0)
+//    {
+//        for (ii = 0; ii < 8; ii++);
+//    }
+//    else 
+//    {
+//        for (; cter > 0; cter--)
+//            for (ii = 0; ii < 7000; ii++);
+//    }
+//}
+
+void Ds18WriteChar(unsigned char data) //向Ds18b20写函数
+{
+    unsigned char i, temp;
+    DQ_HIGH();
+    DelayUs(3);
+    for (i = 8; i > 0; i--)
+    {
+        temp = data & 0x01;
+        DQ_LOW();
+        DelayUs(20);
+        if (temp == 1)
+            DQ_HIGH();
+        DelayUs(45);
+        DQ_HIGH();
+        data = data >> 1;
+    }
+}
+
+unsigned char Ds18ReadChar()
+{
+    unsigned char i, data = 0;
+
+    for (i = 8; i > 0; i--) 
+    {
+        data = data >> 1;
+        DQ_HIGH();
+        DelayUs(3);
+        DQ_LOW();
+        DelayUs(6);
+        DQ_HIGH();
+        DelayUs(4);
+        if (DQ)
+            data = data | 0x80;
+        DelayUs(30);
+    }
+    return (data);
+}
+
+void Ds18Start() 
+{
+    unsigned char i = 10;
+    DQ_HIGH();
+    DelayUs(3);
+    while (i) 
+    {
+        DQ_LOW();
+        DelayUs(750); //延时750us
+        DQ_HIGH();
+        DelayUs(70); //延时70us
+        if (DQ == 1)
+            i--;
+        else
+            i = 0;
+        DelayUs(500); //延时500us
+    }
+}
+
+void Ds18Init()
+{
+    Ds18Start();
+    Ds18WriteChar(0xcc);
+    Ds18WriteChar(0x4e);
+    Ds18WriteChar(0x64);
+    Ds18WriteChar(0x8a);
+}
+
+float DS18GetTemp() 
+{
+    unsigned char tl=0, th=0;
+    float temp=0;
+
+    Ds18Start();
+    Ds18WriteChar(0xcc);
+    Ds18WriteChar(0x44);
+    DelayUs(750); //延时750us
+    Ds18Start();
+    Ds18WriteChar(0xcc);
+    Ds18WriteChar(0xbe);
+    tl = Ds18ReadChar();
+    th = Ds18ReadChar();
+    Ds18Start();
+
+    temp = th;
+    temp *= 256;
+    temp += tl;
+    temp *= 0.0625;
+    return (temp);
+}

+ 18 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/DS18B20.h

@@ -0,0 +1,18 @@
+#ifndef DS18B20_H
+#define	DS18B20_H
+
+/************DS18B20******************/
+#define DQ  		_RC3
+#define DQ_HIGH() 	_TRISC3=1          //set input
+#define DQ_LOW() 	_TRISC3=0; DQ=0    //set output
+inline void   DelayUs(unsigned int Tmr);
+//void          Delay_ms(unsigned int cter);
+void          Ds18WriteChar(unsigned char data);
+unsigned char Ds18ReadChar();
+void          Ds18Start();
+void          Ds18Init();
+float         DS18GetTemp();
+//void          Delay_ns(unsigned int Tmr);
+
+#endif	/* XC_HEADER_TEMPLATE_H */
+

+ 31 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Delay.c

@@ -0,0 +1,31 @@
+#include <p33FJ64MC204.h>
+#include <stdlib.h>
+#include <math.h>
+#include "delay.h"
+
+void Delay1ms(unsigned int num)
+{
+    unsigned int s;
+    for (; num > 0; num--)
+           for (s = 0; s < 6650; s++);
+}
+
+void Delay100us(unsigned int num) 
+{
+    unsigned int s;
+    for (; num > 0; num--)
+        for (s = 0; s < 670; s++);
+}
+
+void Delay10us(unsigned int num) 
+{
+    unsigned int s;
+    for (; num > 0; num--)
+        for (s = 0; s < 67; s++);
+}
+
+void Delay_ns(unsigned int Tmr)
+{
+	for(;Tmr>0;Tmr--)	
+	asm("nop");
+}

+ 10 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Delay.h

@@ -0,0 +1,10 @@
+#ifndef DELAY_H
+#define	DELAY_H
+
+void Delay1ms  (unsigned int num);
+void Delay100us(unsigned int num);
+void Delay10us(unsigned int num);
+void Delay_ns(unsigned int Tmr);
+//void Delay     (unsigned int cter);
+
+#endif	

+ 421 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/EEPROM.c

@@ -0,0 +1,421 @@
+#include <p33FJ64MC204.h>
+#include <stdlib.h>
+#include <math.h>
+#include "EEPROM.h"
+#define       SCL1IN                _TRISB7=1
+#define       SCL1OUT               _TRISB7=0
+#define       SDA1IN                _TRISB14=1
+#define       SDA1OUT               _TRISB14=0
+#define       READ_SDA1             PORTBbits.RB14
+unsigned char real_time_status=0;
+
+void EE_delay(unsigned int cter)
+{
+    while(cter--);
+}
+void EE_start()
+{
+    SDA=1;
+    SCL=1;
+    TRISCbits.TRISC1 = 0; //SCL
+    TRISCbits.TRISC0= 0; //SDA
+    EE_delay(50);
+    SDA=0;
+    EE_delay(50);
+    SCL=0;
+    EE_delay(50);
+}
+void EE_stop()
+{
+    TRISCbits.TRISC1 = 0; //SCL
+    TRISCbits.TRISC0 = 0; //SDA
+    SDA=0;
+    EE_delay(50);
+    SCL=1;
+    EE_delay(50);
+    SDA=1;
+    EE_delay(50);
+}
+void EE_sent(unsigned char temp)
+{
+	unsigned char BitCnt; 
+	unsigned int uiEE_overtime_Cnt; 
+	uiEE_overtime_Cnt = 0;
+    TRISCbits.TRISC1 = 0; //SCL
+    TRISCbits.TRISC0 = 0; //SDA
+
+	for(BitCnt=0;BitCnt<8;BitCnt++)
+	{ 
+		if(temp&0x80) 
+			SDA=1; 
+		else 
+			SDA=0; 
+		temp=temp<<1;
+		EE_delay(50);
+		SCL = 1;      
+		EE_delay(50);
+		SCL = 0; 
+	}
+	SDA=1;	
+	TRISCbits.TRISC0 = 1;//SDA
+	EE_delay(50);	
+	SCL=1;
+	while(PORTCbits.RC0);
+	EE_delay(50);
+	SCL=0;
+}
+unsigned char EE_receive(unsigned char data)
+{
+	unsigned int uiEE_receive_i,uiEE_receive_temp;
+		
+	TRISCbits.TRISC0 = 1;//SDA
+	
+	for(uiEE_receive_i=0;uiEE_receive_i<8;uiEE_receive_i++)	
+	{
+		EE_delay(50);		
+		SCL=0;		
+		EE_delay(50);		
+		SCL=1;		
+		uiEE_receive_temp = uiEE_receive_temp<<1;
+		if(PORTCbits.RC0==1)
+			uiEE_receive_temp = uiEE_receive_temp+1;	
+	}	
+	SCL=0;	
+	EE_delay(50);
+	TRISCbits.TRISC0=0;//SDA
+	//0 is acknowledge, 1 is not acknowledge
+    if(data)					
+		SDA=1;
+    else
+		SDA=0;	         			
+	SCL=1;	
+	EE_delay(50);	
+	SCL=0;	
+	return(uiEE_receive_temp);
+}
+void EE_write(unsigned int addr,unsigned char data)
+{
+	unsigned char temp1,temp2;
+	temp1=addr>>8;
+	temp2=addr&0xff;
+	EE_start();
+	EE_sent(0xa0);
+	EE_sent(temp1);
+	EE_sent(temp2);
+	EE_sent(data);
+	EE_stop();
+	EE_delay(15000);
+}
+unsigned char EE_read(unsigned int addr)
+{
+	unsigned char temp1,temp2,temp3;
+	temp1=addr>>8;
+	temp2=addr&0xff;
+	EE_start();
+	EE_sent(0xa0);
+	EE_sent(temp1);
+	EE_sent(temp2);
+	EE_delay(1);
+	EE_start();
+	EE_sent(0xa1);
+	temp3=EE_receive(1);
+          EE_stop();
+	return(temp3);
+}
+void EE_StrWrite(unsigned int addr,unsigned char *data,unsigned int len)
+{
+	unsigned char temp1,temp2;
+	
+	temp1=(addr>>8)&0xff;
+	temp2=addr&0xff;
+	
+	EE_start();
+	EE_sent(0xa0);	
+	EE_sent(temp1);
+	EE_sent(temp2);
+	while(len--)
+	{
+            EE_sent(*data);
+            data++;
+
+            temp2++;
+            if(temp2 == 0)
+            {
+                EE_stop();
+                EE_delay(15000);
+                temp1++;
+                EE_start();
+                EE_sent(0xa0);	
+                EE_sent(temp1);
+                EE_sent(temp2);
+            }
+	}
+    EE_stop();
+//    EE_delay(15000);
+    Delay1ms(10);  
+}
+void EE_StrRead(unsigned int addr,unsigned char *data,unsigned int len)
+{
+	unsigned char temp1,temp2;
+	temp1=(addr>>8)&0xff;
+	temp2=addr&0xff;
+
+	while(len--)
+	{
+		EE_start();
+		EE_sent(0xa0);		
+		EE_sent(temp1);
+		EE_sent(temp2);
+		temp2++;
+		if(temp2 == 0)
+		{
+			temp1++;
+		}
+		EE_delay(1);
+		EE_start();
+		EE_sent(0xa1);	
+		*data=EE_receive(1);
+		data++;
+		EE_stop();
+	}
+     Delay1ms(10);  
+}
+void real_time_write(unsigned char address,unsigned char data)
+{
+    unsigned char i,aa=0xa2;
+    unsigned int    over_time=0;
+    SCL1OUT;
+    SDA1OUT;   
+    SDA1=1;
+    EE_delay(50);
+    SCL1=1;
+    EE_delay(50); 
+    SDA1=0;
+    EE_delay(50); 
+    SCL1=0;
+    EE_delay(50);
+    for(i=0;i<8;i++)
+    {
+            if(aa&0x80) 
+                    SDA1=1;
+            else 
+                    SDA1=0;
+            aa<<=1;
+            SCL1=1;
+            EE_delay(50);
+            SCL1=0;
+            EE_delay(50);
+    }                   
+    SDA1IN;
+    SCL1=1;
+    EE_delay(50);
+    while(READ_SDA1)//? ? ?  
+    {
+        over_time++;
+        if(over_time>5000);
+        {
+            real_time_status=1;
+            break;
+        }
+    }
+    SCL1=0;
+    EE_delay(50);
+    SDA1OUT;               
+    for(i=0;i<8;i++) //§Õ  ?
+    {
+            if(address&0x80) 
+                    SDA1=1;
+            else 
+                    SDA1=0;
+            address<<=1;
+            SCL1=1;
+            EE_delay(50);
+            SCL1=0;
+            EE_delay(50);
+    }
+    SDA1IN;
+    SCL1=1;
+    EE_delay(50);
+    while(READ_SDA1)// ? ? ?  
+    {
+        over_time++;
+        if(over_time>5000);
+        {
+            real_time_status=1;
+            break;
+        }
+    }
+    SCL1=0;
+    EE_delay(50);
+    SDA1OUT;
+    for(i=0;i<8;i++)
+    {
+            if(data&0x80) 
+                    SDA1=1;
+            else 
+                    SDA1=0;
+            data<<=1;
+            SCL1=1;
+            EE_delay(50);
+            SCL1=0;
+            EE_delay(50);
+    }
+    SDA1IN;
+    SCL1=1;
+    EE_delay(50);
+    while(READ_SDA1)//? ? ?  
+    {
+        over_time++;
+        if(over_time>5000);
+        {
+            real_time_status=1;
+            break;
+        }
+    }    
+    SCL1=0;
+    
+    EE_delay(50);//     ? 
+    SCL1OUT;
+    SDA1OUT;    
+    SDA1=0;
+    EE_delay(50);
+    SCL1=0;
+    EE_delay(50);
+    SCL1=1;
+    EE_delay(50);
+    SDA1=1;
+    EE_delay(50);
+}
+unsigned char real_time_read(unsigned char address)
+{
+    unsigned char i,aa=0xa2,dd=0xa3,data;
+    unsigned int over_time=0;
+    SCL1OUT;
+    SDA1OUT;   
+    SDA1=1;
+    EE_delay(50);
+    SCL1=1;
+    EE_delay(50); 
+    SDA1=0;
+    EE_delay(50); 
+    SCL1=0;
+    EE_delay(50);// start ?  
+    for(i=0;i<8;i++)
+    {
+            if(aa&0x80) 
+                    SDA1=1;
+            else 
+                    SDA1=0;
+            aa<<=1;
+            SCL1=1;
+            EE_delay(50);
+            SCL1=0;
+            EE_delay(50);
+    }                   //§Õ?    
+    SDA1IN;
+    SCL1=1;
+    EE_delay(50);
+    while(READ_SDA1)//? ? ?  
+    {
+        over_time++;
+        if(over_time>5000);
+        {
+            real_time_status=1;
+            break;
+        }
+    }
+    SCL1=0;
+    EE_delay(50);
+    SDA1OUT;               
+    for(i=0;i<8;i++) //§Õ  ?
+    {
+            if(address&0x80) 
+                    SDA1=1;
+            else 
+                    SDA1=0;
+            address<<=1;
+            SCL1=1;
+            EE_delay(50);
+            SCL1=0;
+            EE_delay(50);
+    }
+    SDA1IN;
+    SCL1=1;
+    EE_delay(50);
+    while(READ_SDA1)// ? ? ?  
+    {
+        over_time++;
+        if(over_time>5000);
+        {
+            real_time_status=1;
+            break;
+        }
+    }   
+    SCL1=0;
+    EE_delay(50);
+    SCL1OUT;
+    SDA1OUT;   
+    SDA1=1;
+    EE_delay(50);
+    SCL1=1;
+    EE_delay(50); 
+    SDA1=0;
+    EE_delay(50); 
+    SCL1=0;
+    EE_delay(50);// start ?  
+    SDA1OUT;
+    for(i=0;i<8;i++)//  ?  
+    {
+        EE_delay(50);   
+        if(dd&0x80) 
+                    SDA1=1;
+       else 
+                    SDA1=0;
+        dd<<=1;
+        SCL1=1;
+        EE_delay(50);
+        SCL1=0;
+    }            
+    SDA1IN;
+    EE_delay(50);
+    SCL1=1;
+    EE_delay(50);
+    while(READ_SDA1)// ? ? ?  
+    {
+        over_time++;
+        if(over_time>5000);
+        {
+            real_time_status=1;
+            break;
+        }
+    }   
+    SDA1IN;
+    SCL1=0;
+    EE_delay(50);    
+    for(i=0;i<8;i++)//      
+    {
+            SCL1=1; 
+            data<<=1;
+            data|=PORTBbits.RB14;
+            EE_delay(50);
+            SCL1=0;
+            EE_delay(50);
+    }
+    SCL1OUT;
+    SDA1OUT;    
+    SDA1=0;
+    EE_delay(50);
+    SCL1=0;
+    EE_delay(50);
+    SCL1=1;
+    EE_delay(50);
+    SDA1=1;
+    EE_delay(50);//     ? 
+    return data;   
+}
+
+
+
+
+
+

+ 25 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/EEPROM.h

@@ -0,0 +1,25 @@
+ 
+#ifndef EEPROM_H
+#define	EEPROM_H
+
+/*EEPROMÒý½Å¶¨Òå*/
+#define	 SCL 	LATCbits.LATC1 
+#define	 SDA	LATCbits.LATC0 
+#define	 SCL1 	LATBbits.LATB7  
+#define	 SDA1	LATBbits.LATB14 
+
+extern void EE_delay(unsigned int cter);
+extern void EE_start();
+extern void EE_stop();
+extern void EE_sent(unsigned char temp);
+extern unsigned char EE_receive(unsigned char data);
+extern void EE_write(unsigned int addr,unsigned char data);
+extern unsigned char EE_read(unsigned int addr);
+extern void EE_StrWrite(unsigned int addr,unsigned char *data,unsigned int len);
+extern void EE_StrRead(unsigned int addr,unsigned char *data,unsigned int len);
+
+extern void real_time_write(unsigned char address,unsigned char data);
+extern unsigned char real_time_read(unsigned char address);
+
+#endif	/* XC_HEADER_TEMPLATE_H */
+

+ 109 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/IO.c

@@ -0,0 +1,109 @@
+#include <p33FJ64MC204.h>
+#include <stdlib.h>
+#include <math.h>
+#include "IO.h"
+#include "motor.h"
+#include "Instrument_EEPROM_Param.h"
+#include "PWM.h"
+#include "Timer.h"
+
+/*******************************************************************************
+ * 函数名称:InitIO
+ * 功能描述:初始化单片机引脚
+
+ *******************************************************************************/
+  void InitIO(void) 
+  {
+    PMAEN = 0x0000;                
+    AD1PCFGL = 0x1FF;             
+
+    CMCON=0;                  
+    SPI2STAT=0;                   
+    SPI1STAT=0;                   
+    PMCON=0;                      
+    I2C1CON = 0;                 
+    PWM1CON1 = PWM2CON1 = 0;       
+    TRISB=0Xffff;                 
+//    IEC0bits.INT0IE   = 0;
+    
+ /****************************************************************/   
+    AD1PCFGLbits.PCFG0 = 0;    
+    _TRISA0 = 1;             
+    AD1PCFGLbits.PCFG1= 0;    
+    _TRISA1 = 1;             
+     AD1PCFGLbits.PCFG4 = 0;     
+    _TRISB2 = 1;              
+    AD1PCFGLbits.PCFG5 = 0;    
+    _TRISB3 = 1;             
+    
+ /**************************************************************/                        
+
+    _TRISC9  = 0;           
+    _TRISC5  = 0;           
+    _TRISA8  = 0;            
+    _TRISA4  = 0;           
+    _TRISB4  = 0;            
+    _TRISB5  = 0;            
+    _TRISB6  = 0;          
+    _TRISB8  = 0;            
+    _TRISB10  = 0;         
+    _TRISB11  = 0;           
+    _TRISB12  = 0;          
+    _TRISB13  = 0;           
+    _TRISB4  = 0;           
+    _TRISB0  = 0;      
+    _TRISB15  = 0;            
+    _TRISC7  = 0;        
+    
+    _LATB14  = 0;            
+    _LATA8  = 0; 
+
+ /**************************************************************/ 
+    _TRISA7 = 1;             
+    _TRISA10  = 1;          
+    _TRISC2  = 1;             
+    _TRISC4  = 1;         
+    _TRISA9  = 1;             
+    _TRISC3  = 1;            
+
+ /**************************************************************/
+    TRISCbits.TRISC0= 0;   
+    TRISCbits.TRISC1 = 0;  
+
+}
+void SetIO(unsigned char index,unsigned char state)
+{
+    if(state == 1)
+    {
+        switch(index)
+            {
+                case 1 : UV_light=1;             break;  
+                case 2 : FAN=1;             break;        
+           }
+    }
+    else if(state == 0)
+    {
+       switch(index)
+            {
+                case 1 : UV_light=0;             break;   
+                case 2 : FAN=0;             break;   
+            }
+    }   
+}
+
+unsigned int Get_IO(unsigned char uc_CH)
+{
+    unsigned int state;
+    switch(uc_CH)
+        {
+            case 1 : state = MOTOR4_HOME;    break;    
+            case 2 : state = (CITAO_test1&&CITAO_test2);    break;      
+            case 3 : state = CITAO_test1;    break;      
+            case 4 : state = CITAO_test2;    break;         
+            case 5 : state = MOTOR1_HOME;    break;       
+            case 6 : state = MOTOR2_HOME;    break;       
+            case 7 : state = MOTOR3_HOME;    break;                 
+        }
+    return state;
+
+}

+ 21 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/IO.h

@@ -0,0 +1,21 @@
+#ifndef IO_H
+#define IO_H
+
+//OUT
+#define STU1            LATBbits.LATB0   
+#define UV_light            LATAbits.LATA8 
+#define Powerkey          LATBbits.LATB6 
+#define FAN                   LATBbits.LATB12  
+
+#define	MOTOR1_HOME      !PORTAbits.RA10
+#define	MOTOR2_HOME	     !PORTCbits.RC2
+#define	MOTOR3_HOME      !PORTCbits.RC4
+#define	MOTOR4_HOME      !PORTAbits.RA7
+#define	CITAO_test2                 PORTAbits.RA9
+#define	CITAO_test1                 PORTCbits.RC3
+
+void         InitIO(void);
+void         SetIO(unsigned char index,unsigned char state);
+unsigned int Get_IO(unsigned char uc_CH);
+
+#endif	

+ 153 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Instrument_EEPROM_Param.c

@@ -0,0 +1,153 @@
+#include <p33FJ64MC204.h>
+#include <stdlib.h>
+#include <math.h>
+#include "EEPROM.h"
+#include "Instrument_EEPROM_Param.h"
+#include "motor.h"
+#include "DAC7512.h"
+#include "command.h"
+
+unsigned char           Communication_Select;   
+unsigned char           Device_ID;                                    
+unsigned long           SoftVersion =230719,date;     
+unsigned char           SoftWare_Version_char[16]="nnnn.237V2.30";                       
+unsigned char           HardWare_Version_char[16]={110,69,49,54,46,50,51,49,49,53,0,0,0,0,0,0};                          
+
+unsigned char           tempctrl_flag,tempctrl_flag_begin;           
+float                   TEMPK[4],TEMPB[4];                                 
+float                   Actual_TEMPK[4],Actual_TEMPB[4];           
+unsigned int            set_Target_temp[4],TEMP_piancha;        
+float                   pwm_t_k[4],pwm_t_b[4];          
+
+unsigned int              ACC_pulse2;
+unsigned int              well_position1,well_position2,well_position3,well_position4,well_position5,well_position6,Z_limitation1,Z1_limitation1;
+unsigned int              Z_position1,adsorbtion_position,take_on_position1,getting_out_speedX;
+unsigned long             getting_out_position1,X_chucang_jiange;
+unsigned int              take_on_position2,take_off_position1,take_off_position2,take_off_position3;
+unsigned int              adsorbtion_time3,adsorbtion_time1,adsorbtion_time2,adsorbtion_juli;
+unsigned int              Z_chu_ye_mian_spd,Z_ru_ye_mian_spd,cibang_normal_spd,cibang_take_off_spd,Z_normal_speed,Z_take_on_speed;
+unsigned int              above_yemian_pulse;
+unsigned int              Ci_take_off_speed1,Ci_take_off_speed2,Ci_normal_speed,X_normal_speed;
+unsigned int              Z_di_bu_position,X_jian_ge;
+unsigned char             mortor_chushihua_flag,X_move_protection_flag; 
+
+
+void Read_Sys_EE(void)
+{
+    /*******************************电机控制类0x0000-0x0044*************************************/ 
+    //1:底板组件电机  2:升降电机 3:磁棒电机  4:磁铁电机
+    EE_StrRead(0x2000,(unsigned char*)&Motor1.Moving_Speed,2);                       //电机移动速度
+    EE_StrRead(0x2004,(unsigned char*)&Motor1.Reset_Speed,2);                          //电机复位速度
+    EE_StrRead(0x2008,(unsigned char*)&Motor1.Reset_Direction,1);                    //电机方向
+    EE_StrRead(0x200C,(unsigned char*)&Motor1.Overshoot_Pulse,2);                  //电机过冲脉冲
+    EE_StrRead(0x2010,(unsigned char*)&Motor1.Back_Pulse,2);                            //电机回退脉冲
+    EE_StrRead(0x2014,(unsigned char*)&Motor1.Limit_Pulse,4);                           //电机限制脉冲
+    
+    EE_StrRead(0x2018,(unsigned char*)&Motor2.Moving_Speed,2);                        //电机移动速度
+    EE_StrRead(0x201C,(unsigned char*)&Motor2.Reset_Speed,2);                           //电机复位速度
+    EE_StrRead(0x2020,(unsigned char*)&Motor2.Reset_Direction,1);                      //电机方向
+    EE_StrRead(0x2024,(unsigned char*)&Motor2.Overshoot_Pulse,2);                    //电机过冲脉冲
+    EE_StrRead(0x2028,(unsigned char*)&Motor2.Back_Pulse,2);                              //电机回退脉冲
+    EE_StrRead(0x202C,(unsigned char*)&Motor2.Limit_Pulse,4);                             //电机限制脉冲
+    EE_StrRead(0x2048,(unsigned char*)&Motor2.Limit_speed,4);                             //电机限制速度
+    
+    EE_StrRead(0x2030,(unsigned char*)&Motor3.Moving_Speed,2);                      //电机移动速度
+    EE_StrRead(0x2034,(unsigned char*)&Motor3.Reset_Speed,2);                         //电机复位速度
+    EE_StrRead(0x2038,(unsigned char*)&Motor3.Reset_Direction,1);                    //电机方向
+    EE_StrRead(0x203C,(unsigned char*)&Motor3.Overshoot_Pulse,2);                  //电机过冲脉冲
+    EE_StrRead(0x2040,(unsigned char*)&Motor3.Back_Pulse,2);                            //电机回退脉冲
+    EE_StrRead(0x2044,(unsigned char*)&Motor3.Limit_Pulse,4);                           //电机限制脉冲
+
+    EE_StrRead(0x204C,(unsigned char*)&Motor4.Moving_Speed,2);                      //电机移动速度
+    EE_StrRead(0x2050,(unsigned char*)&Motor4.Reset_Speed,2);                         //电机复位速度
+    EE_StrRead(0x2054,(unsigned char*)&Motor4.Reset_Direction,1);                    //电机方向
+    EE_StrRead(0x2058,(unsigned char*)&Motor4.Overshoot_Pulse,2);                  //电机过冲脉冲
+    EE_StrRead(0x205C,(unsigned char*)&Motor4.Back_Pulse,2);                            //电机回退脉冲
+    EE_StrRead(0x2060,(unsigned char*)&Motor4.Limit_Pulse,4);                           //电机限制脉冲    
+    /************************************************************/  
+    EE_StrRead(0x2080,(unsigned char*)&set_Target_temp[0],2);                     
+    EE_StrRead(0x2084,(unsigned char*)&TEMPK[0],4);                                        
+    EE_StrRead(0x2088,(unsigned char*)&TEMPB[0],4);                                 
+    EE_StrRead(0x208C,(unsigned char*)&Actual_TEMPK[0],4);                                  
+    EE_StrRead(0x2090,(unsigned char*)&Actual_TEMPB[0],4);                               
+ 
+    EE_StrRead(0x2094,(unsigned char*)&set_Target_temp[1],2);                        
+    EE_StrRead(0x2098,(unsigned char*)&TEMPK[1],4);                                        
+    EE_StrRead(0x209c,(unsigned char*)&TEMPB[1],4);                                   
+    EE_StrRead(0x20a0,(unsigned char*)&Actual_TEMPK[1],4);                             
+    EE_StrRead(0x20a4,(unsigned char*)&Actual_TEMPB[1],4);                         
+    
+    EE_StrRead(0x20a8,(unsigned char*)&set_Target_temp[2],2);                           
+    EE_StrRead(0x20ac,(unsigned char*)&TEMPK[2],4);                                       
+    EE_StrRead(0x20b0,(unsigned char*)&TEMPB[2],4);                                   
+    EE_StrRead(0x20b4,(unsigned char*)&Actual_TEMPK[2],4);                              
+    EE_StrRead(0x20b8,(unsigned char*)&Actual_TEMPB[2],4);                           
+    
+    EE_StrRead(0x20bc,(unsigned char*)&set_Target_temp[3],2);                      
+    EE_StrRead(0x20c0,(unsigned char*)&TEMPK[3],4);                                    
+    EE_StrRead(0x20c4,(unsigned char*)&TEMPB[3],4);                                    
+    EE_StrRead(0x20c8,(unsigned char*)&Actual_TEMPK[3],4);                         
+    EE_StrRead(0x20CC,(unsigned char*)&Actual_TEMPB[3],4);                            
+    
+    EE_StrRead(0x20d0,(unsigned char*)&pwm_t_k[0],4);                                   
+    EE_StrRead(0x20d4,(unsigned char*)&pwm_t_b[0],4);                                          
+    EE_StrRead(0x20d8,(unsigned char*)&pwm_t_k[1],4);                                
+    EE_StrRead(0x20dc,(unsigned char*)&pwm_t_b[1],4);                                 
+    EE_StrRead(0x20e0,(unsigned char*)&pwm_t_k[2],4);  
+    EE_StrRead(0x20e4,(unsigned char*)&pwm_t_b[2],4);   
+    EE_StrRead(0x20e8,(unsigned char*)&pwm_t_k[3],4);                              
+    EE_StrRead(0x20ec,(unsigned char*)&pwm_t_b[3],4);   
+ 
+    
+    //位置参数0x0100-0x03FC
+    EE_StrRead(0x2100,(unsigned char*)&well_position1,2);                      
+//    EE_StrRead(0x2118,(unsigned char*)&getting_out_position1,2);             
+    EE_StrRead(0x211c,(unsigned char*)&adsorbtion_position,2);            
+    
+//    EE_StrRead(0x2144,(unsigned char*)&take_on_position1,2);                  
+//    EE_StrRead(0x2148,(unsigned char*)&take_on_position2,2);                   
+//    EE_StrRead(0x214c,(unsigned char*)&take_off_position1,2);                
+    
+    EE_StrRead(0x212c,(unsigned char*)&take_off_position2,2);              
+    EE_StrRead(0x2130,(unsigned char*)&Z_position1,2);                     
+    EE_StrRead(0x2134,(unsigned char*)&getting_out_speedX,2);                 
+    EE_StrRead(0x2138,(unsigned char*)&Z_limitation1,2);                      
+    EE_StrRead(0x213C,(unsigned char*)&Z1_limitation1,2);                
+    EE_StrRead(0x2140,(unsigned char*)&take_off_position3,2);                 
+    EE_StrRead(0x2154,(unsigned char*)&adsorbtion_time1,2);                   
+    EE_StrRead(0x2158,(unsigned char*)&adsorbtion_time2,2);                  
+    EE_StrRead(0x215c,(unsigned char*)&adsorbtion_time3,2);               
+    EE_StrRead(0x2160,(unsigned char*)&adsorbtion_juli,2);                   
+    EE_StrRead(0x2164,(unsigned char*)&Z_chu_ye_mian_spd,2);                 
+    EE_StrRead(0x2168,(unsigned char*)&Z_ru_ye_mian_spd,2);                
+    EE_StrRead(0x216c,(unsigned char*)&Z_normal_speed,2);                
+    EE_StrRead(0x2170,(unsigned char*)&Z_take_on_speed,2);                
+    EE_StrRead(0x2174,(unsigned char*)&above_yemian_pulse,2);            
+    EE_StrRead(0x2178,(unsigned char*)&Ci_take_off_speed1,2);                 
+    EE_StrRead(0x217c,(unsigned char*)&Ci_take_off_speed2,2);            
+    EE_StrRead(0x2180,(unsigned char*)&Ci_normal_speed,2);                  
+    EE_StrRead(0x2184,(unsigned char*)&X_normal_speed,2);            
+    EE_StrRead(0x2188,(unsigned char*)&Z_di_bu_position,2);                  
+    EE_StrRead(0x218C,(unsigned char*)&X_jian_ge,2);                       
+    EE_StrRead(0x2190,(unsigned char*)&X_chucang_jiange,4);                
+    EE_StrRead(0x2194,(unsigned char*)&tempctrl_flag_begin,1);            
+    
+
+//    EE_StrWrite(0x2420,SoftWare_Version_char,16);                   
+    //EE_StrWrite(0x2440,HardWare_Version_char,16);                      
+                          
+    EE_StrRead(0x2414,(unsigned char*)&Communication_Select,1);          
+    EE_StrRead(0x2418,(unsigned char*)&Device_ID,1);                              
+
+      EE_StrRead(0x2500,(unsigned char*)&ACC_pulse2,2);                    
+      EE_StrRead(0x2504,(unsigned char*)&mortor_chushihua_flag,1);     
+      EE_StrRead(0x2508,(unsigned char*)&X_move_protection_flag,1);  
+
+      well_position2=well_position1-X_jian_ge;
+      well_position3=well_position1-X_jian_ge*2;
+      well_position4=well_position1-X_jian_ge*3;
+      well_position5=well_position1-X_jian_ge*4;
+      well_position6=well_position1-X_jian_ge*5;
+
+      getting_out_position1=well_position1+X_chucang_jiange;
+}

+ 60 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Instrument_EEPROM_Param.h

@@ -0,0 +1,60 @@
+#ifndef Instrument_EEPROM_Param_H
+#define	Instrument_EEPROM_Param_H
+
+extern unsigned char           Device_ID;
+extern unsigned char           Communication_Select;            
+extern unsigned char           tempctrl_flag,tempctrl_flag_begin;               
+extern unsigned long           SoftVersion;
+extern float                           TEMPK[4],TEMPB[4];       
+extern float                           Actual_TEMPK[4],Actual_TEMPB[4],pwm_t_k[4],pwm_t_b[4]; 
+extern unsigned int             set_Target_temp[4];          
+extern unsigned int             well_position1,well_position2,well_position3,well_position4,well_position5,well_position6;
+extern unsigned long             getting_out_position1;
+extern unsigned int              Z_position1,adsorbtion_position,take_on_position1,take_on_position2,take_off_position1,take_off_position2,take_off_position3;
+extern unsigned int              Z_limitation1,Z1_limitation1;
+extern unsigned char           mortor_chushihua_flag,X_move_protection_flag;    
+extern unsigned int              ACC_pulse2,Z_di_bu_position;
+
+struct PmtFitValue
+{
+
+    unsigned long int uliPmtTransitionLowValue;          
+    unsigned long int uliPmtTransitionHighValue;         
+    float             fPmtPulseADFitK;                 
+    float             fPmtPulseADFitB;                  
+    float             fPmtsFitK;                        
+    float             fPmtsFitB;                       
+    unsigned long int uliPmtsFitRegionValue1;           
+    unsigned int      SetHighVolt;                       
+    float             fPmtsFitLowK;                    
+    float             fPmtsFitLowB;                       
+    unsigned int      PMTtimer;                        
+    unsigned long int AD_Threshold;                     
+    unsigned long int background_fitting,background_pulse,background_AD;
+    
+
+    unsigned long int uliHPmtTransitionLowValue;          
+    unsigned long int uliHPmtTransitionHighValue;        
+    float             fHPmtPulseADFitK;                  
+    float             fHPmtPulseADFitB;                  
+    float             fHPmtsFitK;                         
+    float             fHPmtsFitB;                         
+    unsigned long int uliHPmtsFitRegionValue1;          
+    unsigned int      HSetHighVolt;                       
+    float             fHPmtsFitLowK;                     
+    float             fHPmtsFitLowB;                      
+    unsigned int      HPMTtimer;                        
+    unsigned long int HAD_Threshold;                 
+    unsigned long int Hbackground_fitting,Hbackground_pulse,Hbackground_AD;
+    
+};
+extern struct   PmtFitValue   g_tPmtFitValue;
+extern float                   PMT_POWER_K;               
+extern float                   PMT_POWER_B;              
+extern unsigned int            g_uiPmtWaitTime;            
+extern unsigned long int       AD_Threshold;             
+extern unsigned long int background_fitting,background_pulse,background_AD;
+extern unsigned int uiOpenledtime,uiCloseledtime; 
+void Read_Sys_EE(void);
+
+#endif	

+ 254 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Interrupt.c

@@ -0,0 +1,254 @@
+#include "Interrupt.h"
+#include "Temperature_Control.h"
+unsigned char g_ucMotorZ1FinishFlag;  
+
+void Init_T5()
+{
+	TMR5 = 0;
+	PR5  = 781;
+	T5CON = 0x8010;     			
+   	IFS1bits.T5IF = 0;
+   	IPC7bits.T5IP =5;              
+   	IEC1bits.T5IE = 1;            
+}
+void __attribute__((interrupt,auto_psv)) _T5Interrupt (void)
+{
+    IFS1bits.T5IF = 0;
+    if(Motor1_HOME_Flag == 1)
+    {
+        MOTOR1_PWM = !MOTOR1_PWM;
+        PulseNum++;   
+    }
+    if(Motor2_HOME_Flag == 1)
+    {
+        MOTOR2_PWM = !MOTOR2_PWM;
+        PulseNum++;
+    }
+    if(Motor3_HOME_Flag== 1)
+    {
+        MOTOR3_PWM = !MOTOR3_PWM;
+        PulseNum++;
+    } 
+    if(Motor4_HOME_Flag== 1)
+    {
+        MOTOR4_PWM = !MOTOR4_PWM;
+        PulseNum++;
+    }      
+}
+/********************************************/
+void __attribute__((__interrupt__,auto_psv)) _OC1Interrupt (void)
+{
+    IFS0bits.OC1IF = 0;
+    TMR2 = 0;
+    if(g_tReagentMotorParam.ucXDirection==MOTOR1_FORWARD)
+        g_tReagentMotorParam.ulXiPosition++;
+    else
+        g_tReagentMotorParam.ulXiPosition--;  
+    g_uliRunningPulse++;
+    if(g_tReagentMotorParam.uiXSpeed_switch==0)
+    {
+        PR2 = g_uiReagentMotorPeriod[g_uiAccIndex]; 
+        OC1RS  = g_uiReagentMotorPeriod[g_uiAccIndex];      
+        OC1R  = g_uiReagentMotorPeriod[g_uiAccIndex]/2; 
+        if(g_uliRunningPulse <= g_tReagentMotorParam.ulXiAccPulse)
+        {
+            g_uiAccIndex++;
+        }
+        else if(g_uliRunningPulse < g_tReagentMotorParam.ulXiConstPulse)
+        {
+    //        g_uliRunningPulse--;
+        }
+        else if(g_uliRunningPulse < g_uliPulseCount)
+        {
+            g_uiAccIndex--;
+        }
+        else if(g_uliRunningPulse >= g_uliPulseCount)
+        {
+            TMR2 = 0;
+            T2CONbits.TON=0;
+            IEC0bits.OC1IE = 0;
+            g_ucMotorXFinishFlag=1;
+        }
+    }
+    else
+    {
+        PR2 = g_tReagentMotorParam.uiXprd;
+        OC1RS  = g_tReagentMotorParam.uiXprd;     
+        OC1R  = g_tReagentMotorParam.uiXprd/2; 
+        if(g_uliRunningPulse >= g_uliPulseCount)
+        {
+            TMR2 = 0;
+            T2CONbits.TON=0;
+            IEC0bits.OC1IE = 0;
+            g_ucMotorXFinishFlag=1;
+        }
+    }
+    OC1CONbits.OCM = 4;
+
+}
+/*******************************************/
+void __attribute__((__interrupt__,auto_psv)) _OC2Interrupt (void)
+{   
+    IFS0bits.OC2IF = 0;
+    TMR2 = 0;   
+    if(g_tReagentMotorParam.ucZDirection==MOTOR2_FORWARD)
+    {
+        g_tReagentMotorParam.ulZiPosition++;
+    
+    }
+    else
+    {
+        g_tReagentMotorParam.ulZiPosition--;    
+    }
+    g_uliRunningPulse++;
+    if(g_tReagentMotorParam.uiZSpeed_switch==0)
+    {
+        PR2 = g_uiReagentMotorPeriod2[g_uiAccIndex]; 
+        OC2RS  = g_uiReagentMotorPeriod2[g_uiAccIndex];      
+        OC2R  = g_uiReagentMotorPeriod2[g_uiAccIndex]/2; 
+	if(g_uliRunningPulse <= g_tReagentMotorParam.ulZiAccPulse)
+         {
+		g_uiAccIndex++;
+	}
+	else if(g_uliRunningPulse < g_tReagentMotorParam.ulZiConstPulse)
+         {
+		//g_uliRunningPulse--;
+	}
+	else if(g_uliRunningPulse < g_uliPulseCount)
+         {
+		g_uiAccIndex--;
+	}
+	else if(g_uliRunningPulse >= g_uliPulseCount)
+          {
+ 		TMR2 = 0;
+		T2CONbits.TON=0;
+                   IEC0bits.OC2IE = 0;
+		g_ucMotorZFinishFlag=1;
+	 }        
+    }
+    else
+    {
+        PR2 = g_tReagentMotorParam.uiZprd;
+        OC2RS  = g_tReagentMotorParam.uiZprd;     
+        OC2R  = g_tReagentMotorParam.uiZprd/2; 
+        if(g_uliRunningPulse >= g_uliPulseCount)
+          {
+ 		TMR2 = 0;
+		T2CONbits.TON=0;
+                   IEC0bits.OC2IE = 0;
+		g_ucMotorZFinishFlag=1;
+	 }           
+    }
+    OC2CONbits.OCM = 4;
+
+}
+/*************************************/
+void __attribute__((__interrupt__,auto_psv)) _OC3Interrupt (void)
+{
+	IFS1bits.OC3IF = 0;
+	TMR2 = 0;
+    if(g_tReagentMotorParam.ucZ1Direction==MOTOR3_FORWARD)
+    {
+        g_tReagentMotorParam.ulZ1iPosition++;
+    }
+    else
+    {
+        g_tReagentMotorParam.ulZ1iPosition--;
+    }
+        g_uliRunningPulse++;
+
+    if(g_tReagentMotorParam.uiZ1Speed_switch==0)
+    {
+        PR2 = g_uiReagentMotorPeriod3[g_uiAccIndex]; 
+        OC3RS  = g_uiReagentMotorPeriod3[g_uiAccIndex];      
+        OC3R  = g_uiReagentMotorPeriod3[g_uiAccIndex]/2; 
+	if(g_uliRunningPulse <= g_tReagentMotorParam.ulZ1iAccPulse)
+         {
+		g_uiAccIndex++;
+	}
+	else if(g_uliRunningPulse < g_tReagentMotorParam.ulZ1iConstPulse)
+         {
+		//g_uliRunningPulse--;
+	}
+	else if(g_uliRunningPulse < g_uliPulseCount)
+    {
+		g_uiAccIndex--;
+    } 
+    else if (g_uliRunningPulse >= g_uliPulseCount)
+        {
+            TMR2 = 0;
+            T2CONbits.TON = 0;
+            IEC1bits.OC3IE = 0;
+            g_ucMotorZ1FinishFlag = 1;
+        }
+    }
+    else
+    {
+        PR2 = g_tReagentMotorParam.uiZ1prd;
+        OC3RS  = g_tReagentMotorParam.uiZ1prd;     
+        OC3R  = g_tReagentMotorParam.uiZ1prd/2; 
+          if(g_uliRunningPulse >= g_uliPulseCount)
+         {
+		TMR2 = 0;
+		T2CONbits.TON=0;
+                      IEC1bits.OC3IE = 0;
+		g_ucMotorZ1FinishFlag = 1;
+	}
+    }
+    OC3CONbits.OCM = 4;
+}
+/***************************************/
+void __attribute__((__interrupt__,auto_psv)) _OC4Interrupt (void)
+{
+	IFS1bits.OC4IF = 0;
+	TMR2 = 0;
+    if(g_tReagentMotorParam.uc4Direction==MOTOR4_FORWARD)
+    {
+        g_tReagentMotorParam.ul4iPosition++;
+    }
+    else
+    {
+        g_tReagentMotorParam.ul4iPosition--;
+    }
+        g_uliRunningPulse++;
+
+    if(g_tReagentMotorParam.ui4Speed_switch==0)
+    {
+        PR2 = g_uiReagentMotorPeriod4[g_uiAccIndex]; 
+        OC4RS  = g_uiReagentMotorPeriod4[g_uiAccIndex];      
+        OC4R  = g_uiReagentMotorPeriod4[g_uiAccIndex]/2; 
+	if(g_uliRunningPulse <= g_tReagentMotorParam.ul4iAccPulse)
+         {
+		g_uiAccIndex++;
+	}
+	else if(g_uliRunningPulse < g_tReagentMotorParam.ul4iConstPulse)
+         {
+		//g_uliRunningPulse--;
+	}
+	else if(g_uliRunningPulse < g_uliPulseCount)
+         {
+		g_uiAccIndex--;
+	}
+        	else if(g_uliRunningPulse >= g_uliPulseCount)
+         {
+		TMR2 = 0;
+		T2CONbits.TON=0;
+        IEC1bits.OC4IE = 0;
+		g_ucMotor4FinishFlag=1;
+	}
+    }
+    else
+    {
+        PR2 = g_tReagentMotorParam.ui4prd;
+        OC4RS  = g_tReagentMotorParam.ui4prd;     
+        OC4R  = g_tReagentMotorParam.ui4prd/2; 
+          if(g_uliRunningPulse >= g_uliPulseCount)
+         {
+		TMR2 = 0;
+		T2CONbits.TON=0;
+                      IEC1bits.OC4IE = 0;
+		g_ucMotor4FinishFlag=1;
+	}
+    }
+    OC4CONbits.OCM = 4;
+}

+ 22 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Interrupt.h

@@ -0,0 +1,22 @@
+#ifndef __INTERRUPT_H
+#define	__INTERRUPT_H
+
+#include <p33FJ64MC204.h>
+#include <stdio.h>
+#include "main.h"
+#include "string.h"
+#include "MOTOR.h"
+
+#ifdef  __INTERRUPT_DEF
+#define EXTERN_INTERRUPT
+#else
+#define EXTERN_INTERRUPT extern
+#endif
+
+extern unsigned char ucRevbuff[250],ucRevbak;  
+extern unsigned char ucRevcounter;           
+
+//void Init_T8();
+void Init_T5();
+
+#endif

+ 113 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Makefile

@@ -0,0 +1,113 @@
+#
+#  There exist several targets which are by default empty and which can be 
+#  used for execution of your targets. These targets are usually executed 
+#  before and after some main targets. They are: 
+#
+#     .build-pre:              called before 'build' target
+#     .build-post:             called after 'build' target
+#     .clean-pre:              called before 'clean' target
+#     .clean-post:             called after 'clean' target
+#     .clobber-pre:            called before 'clobber' target
+#     .clobber-post:           called after 'clobber' target
+#     .all-pre:                called before 'all' target
+#     .all-post:               called after 'all' target
+#     .help-pre:               called before 'help' target
+#     .help-post:              called after 'help' target
+#
+#  Targets beginning with '.' are not intended to be called on their own.
+#
+#  Main targets can be executed directly, and they are:
+#  
+#     build                    build a specific configuration
+#     clean                    remove built files from a configuration
+#     clobber                  remove all built files
+#     all                      build all configurations
+#     help                     print help mesage
+#  
+#  Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and
+#  .help-impl are implemented in nbproject/makefile-impl.mk.
+#
+#  Available make variables:
+#
+#     CND_BASEDIR                base directory for relative paths
+#     CND_DISTDIR                default top distribution directory (build artifacts)
+#     CND_BUILDDIR               default top build directory (object files, ...)
+#     CONF                       name of current configuration
+#     CND_ARTIFACT_DIR_${CONF}   directory of build artifact (current configuration)
+#     CND_ARTIFACT_NAME_${CONF}  name of build artifact (current configuration)
+#     CND_ARTIFACT_PATH_${CONF}  path to build artifact (current configuration)
+#     CND_PACKAGE_DIR_${CONF}    directory of package (current configuration)
+#     CND_PACKAGE_NAME_${CONF}   name of package (current configuration)
+#     CND_PACKAGE_PATH_${CONF}   path to package (current configuration)
+#
+# NOCDDL
+
+
+# Environment 
+MKDIR=mkdir
+CP=cp
+CCADMIN=CCadmin
+RANLIB=ranlib
+
+
+# build
+build: .build-post
+
+.build-pre:
+# Add your pre 'build' code here...
+
+.build-post: .build-impl
+# Add your post 'build' code here...
+
+
+# clean
+clean: .clean-post
+
+.clean-pre:
+# Add your pre 'clean' code here...
+# WARNING: the IDE does not call this target since it takes a long time to
+# simply run make. Instead, the IDE removes the configuration directories
+# under build and dist directly without calling make.
+# This target is left here so people can do a clean when running a clean
+# outside the IDE.
+
+.clean-post: .clean-impl
+# Add your post 'clean' code here...
+
+
+# clobber
+clobber: .clobber-post
+
+.clobber-pre:
+# Add your pre 'clobber' code here...
+
+.clobber-post: .clobber-impl
+# Add your post 'clobber' code here...
+
+
+# all
+all: .all-post
+
+.all-pre:
+# Add your pre 'all' code here...
+
+.all-post: .all-impl
+# Add your post 'all' code here...
+
+
+# help
+help: .help-post
+
+.help-pre:
+# Add your pre 'help' code here...
+
+.help-post: .help-impl
+# Add your post 'help' code here...
+
+
+
+# include project implementation makefile
+include nbproject/Makefile-impl.mk
+
+# include project make variables
+include nbproject/Makefile-variables.mk

+ 946 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Motor.c

@@ -0,0 +1,946 @@
+#include "MOTOR.h"
+#include "delay.h"
+#include "DS18B20.h"
+#include "Instrument_EEPROM_Param.h"
+
+extern unsigned char Motor_Status;
+
+unsigned char         g_ucMotorXFinishFlag,g_ucMotorYFinishFlag,g_ucMotorZFinishFlag,g_ucMotor4FinishFlag,g_ucMotorZ2FinishFlag  ;   
+unsigned int          g_uiAccIndex ;             
+unsigned long int     g_uliRunningPulse ;       
+unsigned long int     g_uliPulseCount ;           
+unsigned int          g_uiReagentMotorPeriod[REAGENT_MOTOR_ACC],g_uiReagentMotorPeriod2[REAGENT_MOTOR_ACC2],g_uiReagentMotorPeriod3[REAGENT_MOTOR_ACC3],g_uiReagentMotorPeriod4[REAGENT_MOTOR_ACC4];
+unsigned long         PulseNum;
+unsigned char         Motor1_HOME_Flag,Motor2_HOME_Flag,Motor3_HOME_Flag,Motor4_HOME_Flag,Motor5_HOME_Flag;
+unsigned int          Moving_Speed;   
+unsigned int          Reset_Speed;    
+struct             MotorParam            g_tReagentMotorParam;
+struct             MotorParamEEPROM      Motor1;  
+struct             MotorParamEEPROM      Motor2;
+struct             MotorParamEEPROM      Motor3;
+struct             MotorParamEEPROM      Motor4;
+//struct             MotorParamEEPROM      Moor5;
+void CalculateSModelLine( unsigned int * period, unsigned int len, unsigned int fre_max, unsigned int fre_min, float flexible)
+{
+	int i,ttt;
+	float deno ;
+	float melo ;
+	float fre;
+	float Fdelt = fre_max-fre_min;
+	if(len>ACCLTH) len=ACCLTH;
+	for(i=0; i<len; i++)
+          {
+		melo = flexible * (2.0*i/len-1) ;
+		deno = 1.0 / (1 + expf(-melo));  
+		fre = Fdelt * deno + fre_min;
+		ttt=period[i] = (unsigned short)(625000.0/fre);
+	}
+}
+void InitMotor1PWM(void)     
+{
+    PMCONbits.PTBEEN=0;         
+    _RP25R = 0x12;                        
+    OC1CON = 0;
+    OC1CON = 0;
+    OC1CONbits.OCM = 0;
+    OC1CONbits.OCTSEL = 0x00; 
+
+    OC1R = 312; 
+
+    OC1RS =625;
+    T2CON = 0;
+    T2CONbits.TCKPS = 2;
+    PR2 = 625; 
+    OC1CONbits.OCM = 4;  
+    T2CONbits.TON = 0;
+    IEC0bits.T2IE = 0;           
+    IFS0bits.T2IF = 0;
+    IPC0bits.OC1IP = 6;
+    IEC0bits.OC1IE = 0;
+    IFS0bits.OC1IF = 0;   
+}
+
+void InitMotor2PWM(void)     
+{  
+    PMCONbits.PTBEEN=0;          
+    _RP4R = 0x13;              
+    OC2CON=0;
+    OC2CON = 0; 
+    OC2CONbits.OCM = 0;
+    OC2CONbits.OCTSEL = 0x00  ; 
+    OC2R = 312; 
+    OC2RS = 625;
+    T2CON = 0;
+    T2CONbits.TCKPS = 2;
+    PR2 = 625;
+    OC2CONbits.OCM = 4;
+    T2CONbits.TON = 0; 
+    IEC0bits.T2IE = 0;       
+    IFS0bits.T2IF = 0;   
+    IPC1bits.OC2IP = 6; 
+    IEC0bits.OC2IE = 0;
+    IFS0bits.OC2IF = 0;   
+}
+
+void InitMotor3PWM(void)      
+{
+    PMCONbits.PTBEEN=0;           
+    _RP5R = 0x14;              
+    OC3CON = 0;
+    OC3CON = 0; 
+    OC3CONbits.OCM = 0;
+    OC3CONbits.OCTSEL = 0x00;
+    OC3R = 312; 
+    OC3RS = 625;
+    T2CON = 0;
+    T2CONbits.TCKPS = 2;
+    PR2 = 625; 
+    OC3CONbits.OCM = 4;
+    T2CONbits.TON = 0; 
+    IEC0bits.T2IE = 0;          
+    IFS0bits.T2IF = 0;   
+    IPC6bits.OC3IP = 6;	
+    IEC1bits.OC3IE = 0;
+    IFS1bits.OC3IF = 0;  
+}
+
+void InitMotor4PWM(void)    
+{
+    PMCONbits.PTBEEN=0;           
+    _RP13R = 0x15;                
+    OC4CON = 0;
+    OC4CON = 0; 
+    OC4CONbits.OCM = 0;
+    OC4CONbits.OCTSEL = 0x00; 
+    OC4R = 312; 
+    OC4RS = 625;
+    T2CON = 0;
+    T2CONbits.TCKPS = 2;
+    PR2 = 625; 
+    OC4CONbits.OCM = 4; 
+    T2CONbits.TON = 0;
+    IEC0bits.T2IE = 0;            
+    IFS0bits.T2IF = 0;   
+    IPC6bits.OC4IP = 6;	
+    IEC1bits.OC4IE = 0;
+    IFS1bits.OC4IF = 0;  
+}
+
+void SetMotor1(unsigned long int Pulses,unsigned int spd,unsigned long int *AccPLS,unsigned long int *constVPLS)
+{
+	unsigned int i;
+	unsigned int Prd;
+	Prd=625000/spd;
+            *AccPLS = 0;
+	for(i=0;i<REAGENT_MOTOR_ACC;i++)
+            {
+		if((Prd < g_uiReagentMotorPeriod[i])&&(Prd >= g_uiReagentMotorPeriod[i+1]))
+                        {
+			*AccPLS=i+1;
+			break;
+		}
+		else if(Prd == g_uiReagentMotorPeriod[i])
+                        {
+			*AccPLS=i;
+			break;
+		}
+	}
+	if(Pulses >= *AccPLS + *AccPLS)
+            {
+                         *constVPLS = Pulses- *AccPLS;
+            }
+	else if(Pulses < *AccPLS + *AccPLS) 
+            {
+		*AccPLS = Pulses/2;
+		*constVPLS = *AccPLS;
+	}	
+}
+void SetMotor2(unsigned long int Pulses,unsigned int spd,unsigned long int *AccPLS,unsigned long int *constVPLS)
+{
+	unsigned int i;
+	unsigned int Prd;
+	Prd=625000/spd;
+          *AccPLS = 0;
+	for(i=0;i<ACC_pulse2;i++)
+         {
+		if((Prd < g_uiReagentMotorPeriod2[i])&&(Prd >= g_uiReagentMotorPeriod2[i+1]))
+                   {
+                        *AccPLS=i+1;
+                        break;
+                    }
+		else if(Prd == g_uiReagentMotorPeriod2[i])
+                    {
+                        *AccPLS=i;
+                        break;
+		}
+	}
+	if(Pulses >= (*AccPLS + *AccPLS))
+         {
+        *constVPLS = Pulses- *AccPLS;
+          }
+	else if(Pulses < (*AccPLS + *AccPLS)) 
+          {
+		*AccPLS = Pulses/2;
+		*constVPLS = *AccPLS;
+	}	
+}
+void SetMotor3(unsigned long int Pulses,unsigned int spd,unsigned long int *AccPLS,unsigned long int *constVPLS)
+{
+	unsigned int i;
+	unsigned int Prd;
+	Prd=625000/spd;
+         *AccPLS = 0;
+         if(spd>REAGENT_MOTOR_FREQMAX3||spd<REAGENT_MOTOR_FREQMIN3)
+         {
+                
+         }
+         else
+         {
+            for(i=0;i<REAGENT_MOTOR_ACC3;i++)
+              {
+                if((Prd < g_uiReagentMotorPeriod3[i])&&(Prd >= g_uiReagentMotorPeriod3[i+1]))
+                    {
+                        *AccPLS=i+1;
+                        break;
+                    }
+                    else if(Prd == g_uiReagentMotorPeriod3[i])
+                   {
+                        *AccPLS=i;
+                        break;
+                    }
+             }
+	if(Pulses >= (*AccPLS + *AccPLS))
+            {
+                *constVPLS = Pulses- *AccPLS;
+            }
+	else if(Pulses < (*AccPLS + *AccPLS)) 
+         {
+		*AccPLS = Pulses/2;
+        		*constVPLS = *AccPLS;
+   	}
+         }
+}
+
+void SetMotor4(unsigned long int Pulses,unsigned int spd,unsigned long int *AccPLS,unsigned long int *constVPLS)
+{
+	unsigned int i;
+	unsigned int Prd;
+	Prd=625000/spd;
+         *AccPLS = 0;
+         if(spd>REAGENT_MOTOR_FREQMAX4||spd<REAGENT_MOTOR_FREQMIN4)
+         {
+                
+         }
+         else
+         {
+            for(i=0;i<REAGENT_MOTOR_ACC4;i++)
+              {
+                if((Prd < g_uiReagentMotorPeriod4[i])&&(Prd >= g_uiReagentMotorPeriod4[i+1]))
+                    {
+                        *AccPLS=i+1;
+                        break;
+                    }
+                    else if(Prd == g_uiReagentMotorPeriod4[i])
+                   {
+                        *AccPLS=i;
+                        break;
+                    }
+             }
+	if(Pulses >= (*AccPLS + *AccPLS))
+            {
+                *constVPLS = Pulses- *AccPLS;
+            }
+	else if(Pulses < (*AccPLS + *AccPLS)) 
+         {
+		*AccPLS = Pulses/2;
+        		*constVPLS = *AccPLS;
+   	}
+         }
+}
+
+void Motor1Home(unsigned int pulseoffset,unsigned int MOVEspd,unsigned int LEAVspd )
+{
+    unsigned int Freq;
+    if(g_tReagentMotorParam.ulZiPosition>Z_limitation1||g_tReagentMotorParam.ulZiPosition>Z1_limitation1)
+    {
+        if(X_move_protection_flag==0)
+        {
+            Motor_Status=13;
+            return;
+        }
+    }
+    Motor1_HOME_Flag=1;
+    Motor2_HOME_Flag=0;
+    Motor3_HOME_Flag=0;
+    Motor4_HOME_Flag=0;
+    Motor5_HOME_Flag=0;    
+    OC1CON = 0;
+    g_tReagentMotorParam.ucXDirection = MOTOR1_FORWARD;
+    Delay1ms(2);
+    TMR5=0;
+    PulseNum=0;
+    if(MOTOR1_HOME == 1)            
+    {
+        MOTOR1_DIR = MOTOR1_FORWARD;      
+        Freq=5000000/LEAVspd;            
+        TMR5=0;
+        PR5=Freq;
+        IFS1bits.T5IF = 0;
+        T5CONbits.TON=1;
+        while(MOTOR1_HOME)
+        {
+            if(PulseNum > Motor1.Limit_Pulse*2){ Motor_Status=11;break;}
+        }
+        T5CONbits.TON=0;
+        MOTOR1_PWM=0;
+    }
+    else
+    {
+        MOTOR1_DIR = MOTOR1_REVERSAL;       
+        Freq=5000000/MOVEspd;             
+        TMR5=0;
+        PR5=Freq;
+        IFS1bits.T5IF = 0;
+        T5CONbits.TON=1;
+        while(PulseNum < Motor1.Limit_Pulse*2)
+        { 
+            if(MOTOR1_HOME) 
+                break;
+        }
+        if(PulseNum ==Motor1.Limit_Pulse*2||PulseNum >Motor1.Limit_Pulse*2) { Motor_Status=11;}
+        T5CONbits.TON=0;      
+        Freq=5000000/LEAVspd;   
+        TMR5=0;
+        PR5=Freq;
+        IFS1bits.T5IF = 0;
+        T5CONbits.TON=1;
+        PulseNum=0;       
+        while(PulseNum < Motor1.Overshoot_Pulse*2); 
+        T5CONbits.TON=0;       
+        MOTOR1_DIR = MOTOR1_FORWARD;    
+        Freq=5000000/LEAVspd;          
+        TMR5=0;
+        PR5=Freq;
+        IFS1bits.T5IF = 0;
+        T5CONbits.TON=1;
+        PulseNum=0;
+        while(MOTOR1_HOME)
+        {
+            if(PulseNum >= Motor1.Limit_Pulse*2) { Motor_Status=11;break;}
+        }
+        T5CONbits.TON=0;
+        MOTOR1_PWM=0;
+    }
+    MOTOR1_DIR = MOTOR1_FORWARD; 
+    Freq=5000000/LEAVspd;          
+    TMR5=0;
+    PR5=Freq;
+    IFS1bits.T5IF = 0;
+    T5CONbits.TON=1;
+    PulseNum=0;
+    while(!MOTOR1_HOME)
+    {
+        if(PulseNum >= pulseoffset*2 ) break;
+    }
+    T5CONbits.TON=0;
+    MOTOR1_PWM=0;
+    InitMotor1PWM();
+    g_uliRunningPulse = 0;
+    g_tReagentMotorParam.ulXiPosition =0;  
+}
+void Motor2Home(unsigned int pulseoffset,unsigned int MOVEspd,unsigned int LEAVspd )
+{
+    unsigned int Freq;
+    Motor1_HOME_Flag=0;
+    Motor2_HOME_Flag=1;
+    Motor3_HOME_Flag=0;
+    Motor4_HOME_Flag=0;
+    Motor5_HOME_Flag=0;
+    OC2CON = 0;
+    g_tReagentMotorParam.ucZDirection =  MOTOR2_FORWARD;
+    Delay1ms(2);
+    T5CONbits.TON=0;
+    TMR5=0;
+	PulseNum=0;
+    if(MOTOR2_HOME == 1)
+    {
+        MOTOR2_DIR =MOTOR2_FORWARD ;
+        Freq=5000000/LEAVspd;       
+        TMR5=0;
+        PR5=Freq;
+        IFS1bits.T5IF = 0;
+        T5CONbits.TON=1;
+        while(MOTOR2_HOME)        
+        {
+            if(PulseNum > Motor2.Limit_Pulse*2) {Motor_Status=21;break;}
+        }
+        T5CONbits.TON=0;
+        MOTOR2_PWM=0;
+    }
+    else
+    {
+        MOTOR2_DIR = MOTOR2_REVERSAL; 
+        Freq=5000000/MOVEspd;      
+        TMR5=0;
+        PR5=Freq;
+        IFS1bits.T5IF = 0;
+        T5CONbits.TON=1;
+        while(PulseNum < Motor2.Limit_Pulse*2)
+        { 
+            if(MOTOR2_HOME)   
+                break;
+        }
+        if(PulseNum ==Motor2.Limit_Pulse*2||PulseNum >Motor2.Limit_Pulse*2) { Motor_Status=21;}        
+        T5CONbits.TON=0;        
+        Freq=5000000/LEAVspd;
+        TMR5=0;
+        PR5=Freq;
+        IFS1bits.T5IF = 0;
+        T5CONbits.TON=1;
+        PulseNum=0;        
+        while(PulseNum < Motor2.Overshoot_Pulse*2); 
+        T5CONbits.TON=0;        
+        MOTOR2_DIR = MOTOR2_FORWARD;            
+        Freq=5000000/LEAVspd;
+        TMR5=0;
+        PR5=Freq;
+        IFS1bits.T5IF = 0;
+        T5CONbits.TON=1;
+        PulseNum=0;
+        while(MOTOR2_HOME)
+        {
+            if(PulseNum > Motor2.Limit_Pulse*2)  {Motor_Status=21;break;}
+        }
+        T5CONbits.TON=0;
+        MOTOR2_PWM=0;
+    }
+    MOTOR2_DIR = MOTOR2_FORWARD;              
+    Freq=5000000/LEAVspd;
+    TMR5=0;
+    PR5=Freq;
+    IFS1bits.T5IF = 0;
+    T5CONbits.TON=1;
+    PulseNum=0;
+    while(!MOTOR2_HOME)
+    {
+        if(PulseNum >= pulseoffset*2 ) break;   
+    }
+    T5CONbits.TON=0;
+    MOTOR2_PWM=0;
+    InitMotor2PWM();
+    g_uliRunningPulse = 0;
+    g_tReagentMotorParam.ulZiPosition =0;
+}
+void Motor3Home(unsigned int pulseoffset,unsigned int MOVEspd,unsigned int LEAVspd )
+{
+    unsigned int Freq;
+    Motor1_HOME_Flag=0;
+    Motor2_HOME_Flag=0;
+    Motor3_HOME_Flag=1;
+    Motor4_HOME_Flag=0;
+    Motor5_HOME_Flag=0;
+    OC3CON = 0;
+    g_tReagentMotorParam.ucZ1Direction = MOTOR3_FORWARD;
+    Delay1ms(2);
+    T5CONbits.TON=0;
+    TMR5=0;
+    PulseNum=0;
+    if(MOTOR3_HOME == 1)
+    {
+        MOTOR3_DIR = MOTOR3_FORWARD;  
+        Freq=5000000/LEAVspd;        
+        TMR5=0;
+        PR5=Freq;
+        IFS1bits.T5IF = 0;
+        T5CONbits.TON=1;
+        while(MOTOR3_HOME) 
+        {
+            if(PulseNum > Motor3.Limit_Pulse*2) {Motor_Status=31;break;}
+        }
+        T5CONbits.TON=0;
+        MOTOR3_PWM=0;
+    }
+    else
+    {
+        MOTOR3_DIR = MOTOR3_REVERSAL;
+        Freq=5000000/MOVEspd;
+        TMR5=0;
+        PR5=Freq;
+        IFS1bits.T5IF = 0;
+        T5CONbits.TON=1;
+        while(PulseNum < Motor3.Limit_Pulse*2)
+        { 
+            if(MOTOR3_HOME)  
+                break;
+        }
+        if(PulseNum ==Motor3.Limit_Pulse*2||PulseNum >Motor3.Limit_Pulse*2) { Motor_Status=31;}         
+        T5CONbits.TON=0;      
+        Freq=5000000/LEAVspd;
+        TMR5=0;
+        PR5=Freq;
+        IFS1bits.T5IF = 0;
+        T5CONbits.TON=1;
+        PulseNum=0;        
+        while(PulseNum < Motor3.Overshoot_Pulse*2); 
+        T5CONbits.TON=0;    
+        MOTOR3_DIR = MOTOR3_FORWARD; 
+        Freq=5000000/LEAVspd;
+        TMR5=0;
+        PR5=Freq;
+        IFS1bits.T5IF = 0;
+        T5CONbits.TON=1;
+        PulseNum=0;
+        while(MOTOR3_HOME)
+        {
+            if(PulseNum > Motor3.Limit_Pulse*2)  {Motor_Status=31;break;}
+        }
+        T5CONbits.TON=0;
+        MOTOR3_PWM=0;
+    }
+    MOTOR3_DIR = MOTOR3_FORWARD; 
+    Freq=5000000/LEAVspd;
+    TMR5=0;
+    PR5=Freq;
+    IFS1bits.T5IF = 0;
+    T5CONbits.TON=1;
+    PulseNum=0;
+    while(!MOTOR3_HOME)
+    {
+        if(PulseNum >= pulseoffset*2 ) break;
+    }
+    T5CONbits.TON=0;
+    MOTOR3_PWM=0;
+    InitMotor3PWM();
+    g_uliRunningPulse = 0;
+    g_tReagentMotorParam.ulZ1iPosition =0;
+}
+void Motor4Home(unsigned int pulseoffset,unsigned int MOVEspd,unsigned int LEAVspd )
+{
+    unsigned int Freq;
+    Motor1_HOME_Flag=0;
+    Motor2_HOME_Flag=0;
+    Motor3_HOME_Flag=0;
+    Motor4_HOME_Flag=1;
+    Motor5_HOME_Flag=0;
+    OC4CON = 0;
+    g_tReagentMotorParam.uc4Direction = MOTOR4_FORWARD;
+    Delay1ms(2);
+    T5CONbits.TON=0;
+    TMR5=0;
+    PulseNum=0;
+    if(MOTOR4_HOME == 1)
+    {
+        MOTOR4_DIR = MOTOR4_FORWARD; 
+        Freq=5000000/LEAVspd;       
+        TMR5=0;
+        PR5=Freq;
+        IFS1bits.T5IF = 0;
+        T5CONbits.TON=1;
+        while(MOTOR4_HOME)  
+        {
+            if(PulseNum > Motor4.Limit_Pulse*2) {Motor_Status=41;break;}
+        }
+        T5CONbits.TON=0;
+        MOTOR4_PWM=0;
+    }
+    else
+    {
+        MOTOR4_DIR = MOTOR4_REVERSAL;
+        Freq=5000000/MOVEspd;
+        TMR5=0;
+        PR5=Freq;
+        IFS1bits.T5IF = 0;
+        T5CONbits.TON=1;
+        while(PulseNum < Motor4.Limit_Pulse*2)
+        { 
+            if(MOTOR4_HOME)  
+                break;
+        }
+        if(PulseNum ==Motor4.Limit_Pulse*2||PulseNum >Motor4.Limit_Pulse*2) { Motor_Status=41;}         
+        T5CONbits.TON=0;      
+        Freq=5000000/LEAVspd;
+        TMR5=0;
+        PR5=Freq;
+        IFS1bits.T5IF = 0;
+        T5CONbits.TON=1;
+        PulseNum=0;        
+        while(PulseNum < Motor4.Overshoot_Pulse*2);  
+        T5CONbits.TON=0;    
+        MOTOR4_DIR = MOTOR4_FORWARD; 
+        Freq=5000000/LEAVspd;
+        TMR5=0;
+        PR5=Freq;
+        IFS1bits.T5IF = 0;
+        T5CONbits.TON=1;
+        PulseNum=0;
+        while(MOTOR4_HOME)
+        {
+            if(PulseNum > Motor4.Limit_Pulse*2)  {Motor_Status=41;break;}
+        }
+        T5CONbits.TON=0;
+        MOTOR4_PWM=0;
+    }
+    MOTOR4_DIR = MOTOR4_FORWARD; 
+    Freq=5000000/LEAVspd;
+    TMR5=0;
+    PR5=Freq;
+    IFS1bits.T5IF = 0;
+    T5CONbits.TON=1;
+    PulseNum=0;
+    while(!MOTOR4_HOME)
+    {
+        if(PulseNum >= pulseoffset*2 ) break;
+    }
+    T5CONbits.TON=0;
+    MOTOR4_PWM=0;
+    InitMotor4PWM();
+    g_uliRunningPulse = 0;
+    g_tReagentMotorParam.ul4iPosition =0;
+}
+
+
+void Motor1MoveTo(unsigned long int pulse,unsigned int spd)
+{
+    unsigned long int uliMotorPulse = 0;
+        if(pulse > g_tReagentMotorParam.ulXiPosition)
+        {
+            uliMotorPulse = pulse - g_tReagentMotorParam.ulXiPosition;
+            Motor1Move(uliMotorPulse,!Motor1.Reset_Direction,spd);
+        }
+        else if(pulse < g_tReagentMotorParam.ulXiPosition)
+        {
+            uliMotorPulse = g_tReagentMotorParam.ulXiPosition - pulse;
+            Motor1Move(uliMotorPulse,Motor1.Reset_Direction,spd);
+        }
+        else
+        {
+
+        }
+}
+void Motor2MoveTo_ok(unsigned long int pulse,unsigned int spd)
+{
+    if(Z_di_bu_position>21000)
+    {
+        pulse=pulse+(Z_di_bu_position-21000);
+    }
+    else
+    {
+        pulse=pulse-(21000-Z_di_bu_position);
+    }
+    Motor2MoveTo(pulse,spd);
+}
+
+void Motor2MoveTo(unsigned long int pulse,unsigned int spd)
+{
+    unsigned long int uliMotorPulse = 0;
+    if(pulse > g_tReagentMotorParam.ulZiPosition)
+    {
+        uliMotorPulse = pulse - g_tReagentMotorParam.ulZiPosition;
+        Motor2Move(uliMotorPulse,!Motor2.Reset_Direction,spd);
+    }
+    else if(pulse < g_tReagentMotorParam.ulZiPosition)
+    {
+        uliMotorPulse = g_tReagentMotorParam.ulZiPosition - pulse;
+        Motor2Move(uliMotorPulse,Motor2.Reset_Direction,spd);
+    }
+    else
+    {
+        
+    }
+}
+void Motor3MoveTo(unsigned long int pulse,unsigned int spd)
+{
+    unsigned long int uliMotorPulse = 0;
+    if(pulse > g_tReagentMotorParam.ulZ1iPosition)
+    {
+        uliMotorPulse = pulse - g_tReagentMotorParam.ulZ1iPosition;
+        Motor3Move(uliMotorPulse,!Motor3.Reset_Direction,spd);
+    }
+    else if(pulse < g_tReagentMotorParam.ulZ1iPosition)
+    {
+        uliMotorPulse = g_tReagentMotorParam.ulZ1iPosition - pulse;
+        Motor3Move(uliMotorPulse,Motor3.Reset_Direction,spd);
+    }
+    else
+    {
+        
+    }
+}
+void Motor4MoveTo(unsigned long int pulse,unsigned int spd)
+{
+    unsigned long int uliMotorPulse = 0;
+    if(pulse > g_tReagentMotorParam.ul4iPosition)
+    {
+        uliMotorPulse = pulse - g_tReagentMotorParam.ul4iPosition;
+        Motor4Move(uliMotorPulse,!Motor4.Reset_Direction,spd);
+    }
+    else if(pulse < g_tReagentMotorParam.ul4iPosition)
+    {
+        uliMotorPulse = g_tReagentMotorParam.ul4iPosition - pulse;
+        Motor4Move(uliMotorPulse,Motor4.Reset_Direction,spd);
+    }
+    else
+    {
+        
+    }
+}
+
+
+
+/*******************************************************************/
+void Motor1Move(unsigned long int pulse,unsigned char dir,unsigned int spd)
+{       
+    if(g_tReagentMotorParam.ulZiPosition>Z_limitation1||g_tReagentMotorParam.ulZiPosition>Z1_limitation1)
+    {
+        if(X_move_protection_flag==0)
+        {
+            Motor_Status=13;
+            return;
+        }
+    }
+    InitMotor1PWM();
+    if(pulse ==0) return;  
+    MOTOR1_DIR = dir;
+    if(dir==MOTOR1_FORWARD)
+    {
+         if(( g_tReagentMotorParam.ulXiPosition+pulse)>Motor1.Limit_Pulse)     
+         {
+             Motor_Status=12;
+             return;
+         }
+    }
+    if(dir==MOTOR1_REVERSAL)
+    {
+         if( g_tReagentMotorParam.ulXiPosition<pulse)
+         {
+             Motor_Status=12;
+             return;
+         }
+    }    
+    g_uiAccIndex=0;
+    g_uliRunningPulse=0;
+    g_ucMotorXFinishFlag = 0;
+    g_uliPulseCount = pulse;
+    g_tReagentMotorParam.ucXDirection=dir?1:0;
+    if(spd>REAGENT_MOTOR_FREQMIN) 
+    {
+         if(spd>REAGENT_MOTOR_FREQMAX)
+         {
+             spd=REAGENT_MOTOR_FREQMAX;
+         }           
+        SetMotor1(pulse,spd,&(g_tReagentMotorParam.ulXiAccPulse),&(g_tReagentMotorParam.ulXiConstPulse));
+        g_tReagentMotorParam.uiXSpeed_switch=0;
+        g_tReagentMotorParam.uiXSpeed=spd;
+    }
+    else 
+    {
+         g_tReagentMotorParam.uiXSpeed_switch=1;
+         if(spd<MOTOR_FREQLIMIT_L)
+         {
+             spd=MOTOR_FREQLIMIT_L;
+         }
+         if(spd>MOTOR_FREQLIMIT_H) 
+         {
+             spd=MOTOR_FREQLIMIT_H; 
+         }
+          g_tReagentMotorParam.uiXSpeed=spd;
+          g_tReagentMotorParam.uiXprd=(unsigned short)(625000.0/ g_tReagentMotorParam.uiXSpeed);
+     }
+    IEC0bits.OC1IE = 1;    
+    T2CONbits.TON=1;                     
+    while(!g_ucMotorXFinishFlag); 
+    OC1CON=0;
+}
+
+void Motor2Move(unsigned long int pulse,unsigned char dir,unsigned int spd)
+{   
+    InitMotor2PWM();
+    if(pulse ==0) return;
+    MOTOR2_DIR = dir;//r
+    g_tReagentMotorParam.ucZDirection = dir?1:0;  
+    if(dir==MOTOR2_FORWARD)
+    {
+         if(( g_tReagentMotorParam.ulZiPosition+pulse)>Motor2.Limit_Pulse)
+         if( g_tReagentMotorParam.ulXiPosition<pulse)
+         {
+             Motor_Status=22;
+             return;
+         }
+    }
+    if(dir==MOTOR2_REVERSAL)
+    {
+         if( g_tReagentMotorParam.ulZiPosition<pulse)
+         if( g_tReagentMotorParam.ulXiPosition<pulse)
+         {
+             Motor_Status=22;
+             return;
+         }
+    }
+
+    g_uiAccIndex=0;
+    g_uliRunningPulse=0;
+    g_ucMotorZFinishFlag = 0;
+    g_uliPulseCount = pulse;
+    if(spd>REAGENT_MOTOR_FREQMIN2) 
+    {      
+         if(spd>Motor2.Limit_speed)
+         {
+             spd=Motor2.Limit_speed;
+         }        
+        SetMotor2(pulse,spd,&(g_tReagentMotorParam.ulZiAccPulse),&(g_tReagentMotorParam.ulZiConstPulse));
+        g_tReagentMotorParam.uiZSpeed_switch=0;
+        g_tReagentMotorParam.uiZSpeed=spd;
+    }
+    else 
+    {
+         g_tReagentMotorParam.uiZSpeed_switch=1;
+         if(spd<MOTOR_FREQLIMIT_L)
+         {
+             spd=MOTOR_FREQLIMIT_L;
+         }
+         if(spd>MOTOR_FREQLIMIT_H) 
+         {
+             spd=MOTOR_FREQLIMIT_H; 
+         }
+          g_tReagentMotorParam.uiZSpeed=spd;
+          g_tReagentMotorParam.uiZprd=(unsigned short)(625000.0/ g_tReagentMotorParam.uiZSpeed);
+     }  
+    IEC0bits.OC2IE = 1;
+    T2CONbits.TON=1;            
+    while(!g_ucMotorZFinishFlag); 
+    OC2CON=0;
+}
+
+void Motor3Move(unsigned long int pulse,unsigned char dir,unsigned int spd)//spd --HZ
+{   
+    InitMotor3PWM();
+    if(pulse ==0) return;
+    MOTOR3_DIR = dir;
+   if(dir==MOTOR3_FORWARD)
+    {
+         if(( g_tReagentMotorParam.ulZ1iPosition+pulse)>Motor3.Limit_Pulse)
+         {
+             Motor_Status=32;
+             return;
+         }
+    }
+    if(dir==MOTOR3_REVERSAL)
+    {
+         if( g_tReagentMotorParam.ulZ1iPosition<pulse)
+         {
+             Motor_Status=32;
+             return;
+         }
+    }
+    g_tReagentMotorParam.ucZ1Direction = dir?1:0;
+    g_uiAccIndex=0;
+    g_uliRunningPulse=0;
+    g_ucMotorZ1FinishFlag = 0;
+    g_uliPulseCount = pulse;
+ if(spd>REAGENT_MOTOR_FREQMIN3) 
+    {
+         if(spd>REAGENT_MOTOR_FREQMAX3)
+         {
+             spd=REAGENT_MOTOR_FREQMAX3;
+         }               
+        SetMotor3(pulse,spd,&(g_tReagentMotorParam.ulZ1iAccPulse),&(g_tReagentMotorParam.ulZ1iConstPulse));
+        g_tReagentMotorParam.uiZ1Speed_switch=0;
+        g_tReagentMotorParam.uiZ1Speed=spd;
+    }
+    else 
+    {
+         g_tReagentMotorParam.uiZ1Speed_switch=1;
+         if(spd<MOTOR_FREQLIMIT_L)
+         {
+             spd=MOTOR_FREQLIMIT_L;
+         }
+         if(spd>MOTOR_FREQLIMIT_H) 
+         {
+             spd=MOTOR_FREQLIMIT_H; 
+         }
+          g_tReagentMotorParam.uiZ1Speed=spd;
+          g_tReagentMotorParam.uiZ1prd=(unsigned short)(625000.0/ g_tReagentMotorParam.uiZ1Speed);
+     }  
+    IEC1bits.OC3IE = 1;    
+    T2CONbits.TON=1;              //
+    while(!g_ucMotorZ1FinishFlag); 
+     OC3CON=0;
+}
+
+void Motor4Move(unsigned long int pulse,unsigned char dir,unsigned int spd)//spd --HZ
+{   
+    InitMotor4PWM();
+    if(pulse ==0) return;
+    MOTOR4_DIR = dir;
+   if(dir==MOTOR4_FORWARD)
+    {
+         if(( g_tReagentMotorParam.ul4iPosition+pulse)>Motor4.Limit_Pulse)
+         {
+             Motor_Status=42;
+             return;
+         }
+    }
+    if(dir==MOTOR4_REVERSAL)
+    {
+         if( g_tReagentMotorParam.ul4iPosition<pulse)
+         {
+             Motor_Status=42;
+             return;
+         }
+    }
+    g_tReagentMotorParam.uc4Direction = dir?1:0;
+    g_uiAccIndex=0;
+    g_uliRunningPulse=0;
+    g_ucMotor4FinishFlag = 0;
+    g_uliPulseCount = pulse;
+ if(spd>REAGENT_MOTOR_FREQMIN4) 
+    {
+         if(spd>REAGENT_MOTOR_FREQMAX4)
+         {
+             spd=REAGENT_MOTOR_FREQMAX4;
+         }               
+        SetMotor4(pulse,spd,&(g_tReagentMotorParam.ul4iAccPulse),&(g_tReagentMotorParam.ul4iConstPulse));
+        g_tReagentMotorParam.ui4Speed_switch=0;
+        g_tReagentMotorParam.ui4Speed=spd;
+    }
+    else 
+    {
+         g_tReagentMotorParam.ui4Speed_switch=1;
+         if(spd<MOTOR_FREQLIMIT_L)
+         {
+             spd=MOTOR_FREQLIMIT_L;
+         }
+         if(spd>MOTOR_FREQLIMIT_H) 
+         {
+             spd=MOTOR_FREQLIMIT_H; 
+         }
+          g_tReagentMotorParam.ui4Speed=spd;
+          g_tReagentMotorParam.ui4prd=(unsigned short)(625000.0/ g_tReagentMotorParam.ui4Speed);
+     }  
+    IEC1bits.OC4IE = 1;    
+    T2CONbits.TON=1;              //
+    while(!g_ucMotor4FinishFlag); 
+     OC4CON=0;
+}
+
+void Move_to_by_volume(unsigned  int volume,unsigned int spd)//spd --HZ
+{
+    unsigned int pulse;
+    if(volume<40)
+    {
+        pulse=(unsigned int)(Z_di_bu_position-(volume*12.5+0));
+    }
+    else if(volume<400)
+    {
+         pulse=(unsigned int)(Z_di_bu_position-(volume*10.05139057+103.5066505));
+    }
+    else if(volume<1100)
+    {
+         pulse=(unsigned int)(Z_di_bu_position-(volume*6.833333333+1366.666667));
+    }
+    else
+    {
+        return;
+    }
+    Motor2MoveTo( pulse, spd);
+}

+ 164 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Motor.h

@@ -0,0 +1,164 @@
+#ifndef MOTOR_H
+#define	MOTOR_H
+
+#include <p33FJ64MC204.h>
+#include <stdio.h>
+#include "math.h"
+#include "string.h"
+
+#define		MOTOR1_FORWARD		(!(Motor1.Reset_Direction&0X0001))
+#define		MOTOR1_REVERSAL        	(Motor1.Reset_Direction&0X0001)
+
+#define		MOTOR2_FORWARD         (!(Motor2.Reset_Direction&0X0001))
+#define		MOTOR2_REVERSAL          (Motor2.Reset_Direction&0X0001)
+
+#define		MOTOR3_FORWARD         (!(Motor3.Reset_Direction&0X0001))
+#define		MOTOR3_REVERSAL          (Motor3.Reset_Direction&0X0001)
+
+#define		MOTOR4_FORWARD         (!(Motor4.Reset_Direction&0X0001))
+#define		MOTOR4_REVERSAL          (Motor4.Reset_Direction&0X0001)
+
+#define     UNKNOWN          0x03
+#define     SUCCESS              0x00
+#define	MOTOR1_HOME      !PORTAbits.RA10//1电机复位光电
+#define	MOTOR2_HOME	      !PORTCbits.RC2//2电机复位光电
+#define	MOTOR3_HOME      !PORTCbits.RC4//3电机复位光电
+#define	MOTOR4_HOME      !PORTAbits.RA7//磁铁电机复位光电
+#define	MOTOR1_PWM		 LATCbits.LATC9                  //1电机       
+#define      MOTOR1_DIR                LATBbits.LATB10                //1电机
+
+#define	MOTOR2_PWM	          LATBbits.LATB4                //2电机          
+#define      MOTOR2_DIR                LATAbits.LATA4               //2电机
+
+#define	MOTOR3_PWM		 LATBbits.LATB5                   //3电机 
+#define      MOTOR3_DIR                LATCbits.LATC5                  //3电机
+
+#define	MOTOR4_PWM		 LATBbits.LATB13                   //4电机 
+#define      MOTOR4_DIR                LATBbits.LATB15                 //4电机
+/*电机复位指令定义*/
+
+#define	ACCLTH		              (unsigned int)2000    //加速度脉冲数限值
+//#define     ACCLENGTH                 (unsigned int)1000      //实际加速度脉冲数
+
+#define     REAGENT_MOTOR_ACC         (unsigned int)500      //加速脉冲数
+#define     REAGENT_MOTOR_FREQMAX     (unsigned int)50000     //电机运行的最大速度
+#define     REAGENT_MOTOR_FREQMIN     (unsigned int)3000      //电机运行的起跳速度
+#define     REAGENT_MOTOR_XFLEXIBLE   (float)5                //x轴的压缩系数
+
+#define     MOTOR_FREQLIMIT_H     (unsigned int)300000     //电机运行的最大速度
+#define     MOTOR_FREQLIMIT_L      (unsigned int)10             //电机运行的起跳速度
+
+#define     REAGENT_MOTOR_ACC2               (unsigned int)1000 //加速脉冲数
+#define     REAGENT_MOTOR_FREQMAX2     (unsigned int)60000   //(unsigned int)2000  //电机运行的最大速度
+#define     REAGENT_MOTOR_FREQMIN2      (unsigned int)1000//电机运行的起跳速度
+#define     REAGENT_MOTOR_XFLEXIBLE2     (float)3               //x轴的压缩系数
+
+#define     REAGENT_MOTOR_ACC3               (unsigned int)1000     //加速脉冲数
+#define     REAGENT_MOTOR_FREQMAX3     (unsigned int)65000     //(unsigned int)2000  //电机运行的最大速度
+#define     REAGENT_MOTOR_FREQMIN3     (unsigned int)4000     //电机运行的起跳速度
+#define     REAGENT_MOTOR_XFLEXIBLE3   (float)2                //x轴的压缩系数
+
+#define     REAGENT_MOTOR_ACC4               (unsigned int)800    //加速脉冲数
+#define     REAGENT_MOTOR_FREQMAX4     (unsigned int)50000     //(unsigned int)2000  //电机运行的最大速度
+#define     REAGENT_MOTOR_FREQMIN4     (unsigned int)4000     //电机运行的起跳速度
+#define     REAGENT_MOTOR_XFLEXIBLE4   (float)2                //x轴的压缩系数
+/*电机运行参数定义*/
+extern  unsigned char      g_ucMotorXFinishFlag,g_ucMotorYFinishFlag,g_ucMotorZFinishFlag,g_ucMotorZ1FinishFlag,g_ucMotorZ2FinishFlag,g_ucMotor4FinishFlag;   //电机运行完成标志位
+extern  unsigned int       g_uiAccIndex ;                    
+extern  unsigned long int  g_uliRunningPulse ;                
+extern  unsigned long int  g_uliPulseCount ;                  
+extern  unsigned int       g_uiReagentMotorPeriod[REAGENT_MOTOR_ACC];
+extern  unsigned int       g_uiReagentMotorPeriod2[REAGENT_MOTOR_ACC2];
+extern  unsigned int       g_uiReagentMotorPeriod3[REAGENT_MOTOR_ACC3];
+extern  unsigned int       g_uiReagentMotorPeriod4[REAGENT_MOTOR_ACC4];
+extern  unsigned long      PulseNum;
+extern  unsigned char      Motor1_HOME_Flag,Motor2_HOME_Flag,Motor3_HOME_Flag,Motor4_HOME_Flag,Motor5_HOME_Flag;
+extern  unsigned int       Moving_Speed;  
+extern  unsigned int       Reset_Speed;   
+struct MotorParam
+{
+    unsigned char       ucXDirection;      
+    unsigned char       uiXSpeed_switch; 
+    unsigned int          uiXSpeed;          
+    unsigned int          uiXprd;           
+    unsigned long int ulXiPosition;      
+    unsigned long int ulXiAccPulse;       
+    unsigned long int ulXiConstPulse;   
+    
+    unsigned char       ucZDirection;     
+    unsigned char       uiZSpeed_switch; 
+    unsigned int          uiZSpeed;         
+    unsigned int          uiZprd;        
+    unsigned long int ulZiPosition;      
+    unsigned long int ulZiAccPulse;     
+    unsigned long int ulZiConstPulse;    
+    
+    unsigned char       ucZ1Direction;     
+    unsigned char       uiZ1Speed_switch; 
+    unsigned int          uiZ1Speed;         
+    unsigned int          uiZ1prd;          
+    unsigned long int ulZ1iPosition;     
+    unsigned long int ulZ1iAccPulse;    
+    unsigned long int ulZ1iConstPulse;    
+    
+    unsigned char       uc4Direction;     
+    unsigned char       ui4Speed_switch; 
+    unsigned int          ui4Speed;          
+    unsigned int          ui4prd;           
+    unsigned long int ul4iPosition;       
+    unsigned long int ul4iAccPulse;     
+    unsigned long int ul4iConstPulse;     
+};
+extern  struct             MotorParam      g_tReagentMotorParam;
+struct MotorParamEEPROM
+{
+
+    unsigned int      Moving_Speed;
+    unsigned int      Reset_Speed;
+    unsigned int      Reset_Direction;
+    unsigned int      Overshoot_Pulse;
+    unsigned int      Back_Pulse;    
+    unsigned long int Limit_Pulse;    
+    unsigned long int Limit_speed; 
+};
+extern  struct             MotorParamEEPROM      Motor1; 
+extern  struct             MotorParamEEPROM      Motor2; 
+extern  struct             MotorParamEEPROM      Motor3;
+extern  struct             MotorParamEEPROM      Motor4;  
+//extern  struct             MotorParamEEPROM      Motor5;  
+
+extern void CalculateSModelLine( unsigned int * period, unsigned int len, unsigned int fre_max, unsigned int fre_min, float flexible);
+
+extern void InitMotor1PWM(void); 
+extern void InitMotor2PWM(void);
+extern void InitMotor3PWM(void);
+extern void InitMotor4PWM(void);
+//extern void InitMotor5PWM(void);
+
+extern void SetMotor1(unsigned long int Pulses,unsigned int spd,unsigned long int *AccPLS,unsigned long int *constVPLS);
+extern void SetMotor2(unsigned long int Pulses,unsigned int spd,unsigned long int *AccPLS,unsigned long int *constVPLS);
+extern void SetMotor3(unsigned long int Pulses,unsigned int spd,unsigned long int *AccPLS,unsigned long int *constVPLS);
+extern void SetMotor4(unsigned long int Pulses,unsigned int spd,unsigned long int *AccPLS,unsigned long int *constVPLS);
+//extern void SetMotor5(unsigned long int Pulses,unsigned int spd,unsigned long int *AccPLS,unsigned long int *constVPLS);
+ 
+extern void Motor1Home(unsigned int pulseoffset,unsigned int MOVEspd,unsigned int LEAVspd );
+extern void Motor2Home(unsigned int pulseoffset,unsigned int MOVEspd,unsigned int LEAVspd );
+extern void Motor3Home(unsigned int pulseoffset,unsigned int MOVEspd,unsigned int LEAVspd );
+extern void Motor4Home(unsigned int pulseoffset,unsigned int MOVEspd,unsigned int LEAVspd );
+//extern void Motor5Home(unsigned int pulseoffset,unsigned int MOVEspd,unsigned int LEAVspd );
+
+extern void Motor1Move(unsigned long int pulse,unsigned char dir,unsigned int spd);
+extern void Motor2Move(unsigned long int pulse,unsigned char dir,unsigned int spd);
+extern void Motor3Move(unsigned long int pulse,unsigned char dir,unsigned int spd);
+extern void Motor4Move(unsigned long int pulse,unsigned char dir,unsigned int spd);
+//extern void Motor5Move(unsigned long int pulse,unsigned char dir,unsigned int spd);
+
+extern void Motor1MoveTo(unsigned long int pulse,unsigned int spd);
+extern void Motor2MoveTo(unsigned long int pulse,unsigned int spd);
+extern void Motor3MoveTo(unsigned long int pulse,unsigned int spd);
+extern void Motor4MoveTo(unsigned long int pulse,unsigned int spd);
+//extern void Motor5MoveTo(unsigned long int pulse,unsigned int spd);
+extern void Motor2MoveTo_ok(unsigned long int pulse,unsigned int spd);
+extern void Move_to_by_volume(unsigned  int volume,unsigned int spd);
+
+#endif	/* MOTOR_H */

+ 93 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/PMT.c

@@ -0,0 +1,93 @@
+#include <p33FJ64MC204.h>
+#include <stdlib.h>
+#include <math.h>
+#include "PMT.h"
+#include "Instrument_EEPROM_Param.h"
+#include "ADC.h"
+#include "DS18B20.h"
+#include "command.h"
+#include "delay.h"
+
+void GetPmtData(unsigned int PMTtimer)
+{
+    unsigned int m=0,k=0,i=0;
+    g_uliPulseValue = 0;
+    g_uliADValue    = 0;
+    TMR1=0;
+//    T7CONbits.TON=0;
+    T1CONbits.TON=1;  
+    for(k=0;k<PMTtimer;k++)         //for(k=0;k<500;k++)  //PMTtimer=400时采集1s
+    {
+        for(m=0;m<16;m++)           //2*4模拟16位AD,要乘以16次
+        {
+            g_uliADValue += AD_Get(4);
+            Delay_ns(1);
+        }
+       for(i=0;i<3250;i++);        //示波器实测1ms
+    }
+    g_uliPulseValue = g_uliPulseValue * 65536 + TMR1;
+    T1CONbits.TON=0;
+//    T7CONbits.TON=1;
+}
+/************************************************
+*名称:GetTrfData()
+*功能:循环AD采样16次,将16次转换的结果进行累加,耗时约100us。
+*输入:无
+*输出:16次AD转化结果的累加,为无符号长整型变量
+*************************************************/
+unsigned int GetTrfData()
+{
+	int i;
+	g_uliADValue=0;
+	for(i=0;i<16;i++)
+	{
+		g_uliADValue+=AD_Get(4);
+	}
+	return g_uliADValue;
+}
+/*******************************************************************************
+ * 函数名称:PmtFittingValue
+ * 功能描述:将pmt的脉冲值和电压值拟合为信号值
+ * 输入参数:Pulse 脉冲值  ADValue 电压值
+ * 输出参数:无
+ * 返回值  :拟合后的值
+ * 修改日期            版本号            修改人            修改内容
+ * -----------------------------------------------------------------------------
+ * 2017/09/12          V1.0             LCHY               创建
+ *******************************************************************************/
+unsigned long int PmtFittingValue(unsigned long int Pulse,unsigned long int ADValue)
+{
+    
+    unsigned long int uliValue = 0;
+    unsigned long int uliFitValue = 0;
+    float fValue=0,fRatio = 0;
+    
+    if(Pulse<=g_tPmtFitValue.uliPmtTransitionLowValue && ADValue<=1000000)
+    {
+        uliFitValue=Pulse;
+    }
+    else if(Pulse>g_tPmtFitValue.uliPmtTransitionLowValue && Pulse<=g_tPmtFitValue.uliPmtTransitionHighValue && ADValue<=AD_Threshold)
+    {
+         uliValue = (unsigned long int)(g_tPmtFitValue.fPmtPulseADFitK * ADValue + g_tPmtFitValue.fPmtPulseADFitB + 0.5);
+         fRatio = ((float)(Pulse-g_tPmtFitValue.uliPmtTransitionLowValue))/(g_tPmtFitValue.uliPmtTransitionHighValue-g_tPmtFitValue.uliPmtTransitionLowValue);
+         fValue = (1-fRatio) * Pulse + fRatio * uliValue;
+         uliFitValue = (unsigned long int)(fValue + 0.5);
+    }
+    else 
+    {
+        uliValue = (unsigned long int)(g_tPmtFitValue.fPmtPulseADFitK * ADValue + g_tPmtFitValue.fPmtPulseADFitB + 0.5);
+        uliFitValue=uliValue;
+    }     
+    uliPmtFitValue = uliFitValue;
+    //进行台间拟合
+    if(uliFitValue >= g_tPmtFitValue.uliPmtsFitRegionValue1)
+        uliFitValue = g_tPmtFitValue.fPmtsFitK * uliFitValue + g_tPmtFitValue.fPmtsFitB;
+    else if(uliFitValue < 500)
+        uliFitValue = g_tPmtFitValue.fPmtsFitLowK * uliFitValue;
+    else
+        uliFitValue = g_tPmtFitValue.fPmtsFitLowK * uliFitValue + g_tPmtFitValue.fPmtsFitLowB;
+    uliPmtFitValue = uliFitValue;
+    return uliFitValue;
+
+}
+

+ 8 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/PMT.h

@@ -0,0 +1,8 @@
+#ifndef PMT_H
+#define	PMT_H
+
+void GetPmtData(unsigned int PMTtimer);
+unsigned long int PmtFittingValue(unsigned long int Pulse,unsigned long int ADValue);
+unsigned int GetTrfData();
+
+#endif	

+ 71 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/PWM.c

@@ -0,0 +1,71 @@
+#include <p33FJ64MC204.h>
+#include <stdlib.h>
+#include <math.h>
+#include "PWM.h"
+/*******************************************************************************
+
+// *******************************************************************************/
+
+
+void InitPWM(void)
+{
+
+    PWM1CON1bits.PEN3L=1;    
+    PWM2CON1bits.PEN1L=1;    
+    
+    PWM1CON1bits.PEN1H=0;    
+    PWM1CON1bits.PEN2H=0;    
+    PWM1CON1bits.PEN3H=0;   
+    PWM2CON1bits.PEN1H=0;    
+    
+
+    PWM1CON1bits.PMOD3=1;    
+    PWM2CON1bits.PMOD1=1;   
+
+    P1TPER=10000;
+    P2TPER=10000;
+    P1SECMPbits.SEVTCMP = 10000;  
+    P2SECMPbits.SEVTCMP = 10000; 
+
+    P1DC3=P2DC1=20000;
+
+
+    P1DTCON1 =P1DTCON2 = 0;
+    P2DTCON1 =P2DTCON2 = 0; 
+
+     P1FLTACON = P2FLTACON = 0;
+
+    P1TCON = 0Xfc; 
+    P2TCON = 0Xfc;
+    P1TCONbits.PTSIDL=0;
+    P2TCONbits.PTSIDL=0;
+
+     P1TCONbits.PTEN = 1;  
+     P2TCONbits.PTEN = 1;
+}
+
+
+
+void SetPWM(unsigned char ucChannel , unsigned int uiDuty)
+{
+    if(uiDuty>=20000)
+        uiDuty=20000;
+
+    if     (ucChannel == 1)
+    {
+
+    }
+    else if(ucChannel == 2)
+    {
+
+    }
+    else 
+    if(ucChannel == 3)
+    {
+        P1DC3 = 20000-uiDuty;       //
+    }
+    else if(ucChannel == 4)
+    {
+        P2DC1 = 20000-uiDuty;  
+    }
+}

+ 7 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/PWM.h

@@ -0,0 +1,7 @@
+#ifndef PWM_H
+#define	PWM_H
+
+void InitPWM(void);
+void SetPWM(unsigned char ucChannel , unsigned int uiDuty);
+
+#endif	

+ 84 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Temperature_Control.c

@@ -0,0 +1,84 @@
+#include <p33FJ64MC204.h>
+#include <stdlib.h>
+#include <math.h>
+#include "Temperature_Control.h"
+#include "ADC.h"
+#include "PWM.h"
+#include "command.h"
+#include "Instrument_EEPROM_Param.h"
+#include "delay.h"
+unsigned int j,pwm_buff;
+/*******************************************************************************
+
+ *******************************************************************************/
+void Temperature_Control(void)
+{   
+    if(tempctrl_flag_begin>0)
+    {
+        SetPWM(1,0);
+        SetPWM(2,0);
+        SetPWM(3,0);
+        SetPWM(4,0);
+    }    
+    else if(tempctrl_flag==1)
+    {
+         tempctrl_flag=0; 
+        //TEMP1 CTRLOL;
+         g_ulAD_Tempbuff[0] = AD_Get(5);
+         Actual_temp[0] = (unsigned int)(g_ulAD_Tempbuff[0]*TEMPK[0]+TEMPB[0]);
+         Actual_temp[0] = (unsigned int)(Actual_temp[0]*Actual_TEMPK[0]+Actual_TEMPB[0]);
+         pwm_buff=set_Target_temp[0]*pwm_t_k[0]+pwm_t_b[0];    
+         if(g_ulAD_Tempbuff[0] <100)  {SetPWM(1,0);}
+         else if(g_ulAD_Tempbuff[0] >3450){SetPWM(1,0);}
+         else if(set_Target_temp[0] >= Actual_temp[0])
+            {  
+                        if((set_Target_temp[0] - Actual_temp[0]) > 200)      SetPWM(1,20000);
+                else if((set_Target_temp[0] - Actual_temp[0]) > 150)     SetPWM(1,15000);
+                else  SetPWM(1,0);  
+             }
+         else SetPWM(1,0);
+
+         g_ulAD_Tempbuff[1] = AD_Get(4);
+         Actual_temp[1] = (unsigned int)(g_ulAD_Tempbuff[1]*TEMPK[1]+TEMPB[1]);
+         Actual_temp[1] = (unsigned int)(Actual_temp[1]*Actual_TEMPK[1]+Actual_TEMPB[1]);    
+         pwm_buff=set_Target_temp[1]*pwm_t_k[1]+pwm_t_b[1];
+         if(g_ulAD_Tempbuff[1]<100) {SetPWM(2,0);}
+         if(g_ulAD_Tempbuff[1]>3450) {SetPWM(2,0);}         
+         else if(set_Target_temp[1] >= Actual_temp[1])
+            {  
+                        if((set_Target_temp[1] - Actual_temp[1]) > 200)    SetPWM(2,20000);
+                else if((set_Target_temp[1] - Actual_temp[1]) > 150)   SetPWM(2,15000);
+                else  SetPWM(2,0);  
+             }
+         else SetPWM(2,0);    
+
+         g_ulAD_Tempbuff[2] = AD_Get(1);
+         Actual_temp[2] = (unsigned int)(g_ulAD_Tempbuff[2]*TEMPK[2]+TEMPB[2]);
+         Actual_temp[2] = (unsigned int)(Actual_temp[2]*Actual_TEMPK[2]+Actual_TEMPB[2]);     
+         pwm_buff=set_Target_temp[2]*pwm_t_k[2]+pwm_t_b[2];    
+         if(g_ulAD_Tempbuff[2]<700) {SetPWM(3,0);}
+         if(g_ulAD_Tempbuff[2]>3450) {SetPWM(3,0);}  
+         else if(set_Target_temp[2] >= Actual_temp[2])
+            {  
+                       if((set_Target_temp[2] - Actual_temp[2]) > 200)     SetPWM(3,20000);
+                else if((set_Target_temp[2] - Actual_temp[2]) > 150)   SetPWM(3,15000);
+                else  SetPWM(3,0);  
+             }
+         else SetPWM(3,0); 
+
+         g_ulAD_Tempbuff[3] = AD_Get(0);
+         Actual_temp[3] = (unsigned int)(g_ulAD_Tempbuff[3]*TEMPK[3]+TEMPB[3]);
+         Actual_temp[3] = (unsigned int)(Actual_temp[3]*Actual_TEMPK[3]+Actual_TEMPB[3]); 
+         pwm_buff=set_Target_temp[3]*pwm_t_k[3]+pwm_t_b[3];          
+         if(g_ulAD_Tempbuff[3]<100) {SetPWM(4,0);}
+         if(g_ulAD_Tempbuff[3]>3450) {SetPWM(4,0);}  
+         else if(set_Target_temp[3] >= Actual_temp[3])
+            {  
+                        if((set_Target_temp[3] - Actual_temp[3]) > 200)   SetPWM(4,20000);
+                else if((set_Target_temp[3] - Actual_temp[3]) > 150)   SetPWM(4,15000);
+                else  SetPWM(4,0);  
+             }
+         else SetPWM(4,0);          
+    }
+         
+}

+ 7 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Temperature_Control.h

@@ -0,0 +1,7 @@
+#ifndef Temperature_Control_H
+#define	Temperature_Control_H
+
+void    Temperature_Control(void);
+
+#endif	
+

+ 307 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Timer.c

@@ -0,0 +1,307 @@
+#include <p33FJ64MC204.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include "Timer.h"
+#include "command.h"
+#include "IO.h"
+#include "UART.h"
+#include "Instrument_EEPROM_Param.h"
+#include "Temperature_Control.h"
+unsigned char ucT5_num = 0;
+unsigned char  Trouble_light=2;
+unsigned char g_uc_flag1=0;
+extern unsigned char tempctrl_flag,step,Comamd_Status;
+extern unsigned int    time[10],cleanning_times,adsorption_step,liang_gan_step,count_1,count_S,hunyun_time,xi_ci_time;
+/*******************************************************************************
+ * 函数名称:InitTimer5
+ *******************************************************************************/
+void Init_T1()
+{
+// RPINR3bits.T2CKR = 0x2E;   
+    T1CONbits.TON   = 0;    
+    T1CONbits.TCS     = 0;    
+    T1CONbits.TGATE   = 0 ;   
+    T1CONbits.TSYNC  = 0 ;  
+    T1CONbits.TCKPS = 0b11; 
+    TMR1         = 0;
+    PR1             =15625;
+    IPC0bits.T1IP   = 0x01;
+    IFS0bits.T1IF   = 0;
+    IEC0bits.T1IE   = 1;
+    T1CONbits.TON   = 1; 
+}
+/*******************************************************************************
+ * 函数名称:_TI1Interrupt
+ *******************************************************************************/
+void __attribute__((__interrupt__,auto_psv)) _T1Interrupt (void)
+{
+    IFS0bits.T1IF = 0;
+    PR1  = 15625;
+    tempctrl_flag=1;
+    Temperature_Control(); 
+    if(g_BUSY3==1)
+    {
+        if(g_uc_flag1==1)
+        {       
+            if(g_ucUart1_Receive_Data[2]==Device_ID)
+                {
+                        if(g_ucCMD==Command_Execution_Status)
+                        {
+                            g_uiFrmLth = 8	;
+                            g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                            g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                            g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                            g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                            g_ucUart1_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth ;
+                            g_ucUart1_Send_Data[6] = 0;
+                            if( Command_Status==0)
+                            {
+                                g_ucUart1_Send_Data[5] = 1;                  
+                            }
+                            else
+                            {
+                                g_ucUart1_Send_Data[5] = 0;                       
+                            }
+                            g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                            RS1_Ack(g_uiFrmLth);           
+                            g_BUSY3=0;
+                            g_BUSY=0;
+                            }
+                        else if(g_ucCMD==stop)
+                        {
+                            Command_Status=0;   
+                            g_uiFrmLth = SETIO_ASK_LTH_EEPROM	;
+                            g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                            g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                            g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                            g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                            g_ucUart1_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth ;
+                            g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] =0;
+                            g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                            RS1_Ack(g_uiFrmLth);           
+                            g_BUSY3=0;   
+                            g_BUSY=0;  
+                        }
+                }
+               memset(g_ucUart1_Receive_Data,0,g_uiLth*sizeof(unsigned char));
+               g_BUSY3=0;   
+               g_BUSY=0;  
+               g_uc_flag1=0;
+          }
+        else
+        {  
+             g_uc_flag1++;
+        }
+
+    }
+}
+/*******************************************************************************
+ * 函数名称:Init_T4
+ *******************************************************************************/
+void Init_T4()
+{
+// RPINR3bits.T2CKR = 0x2E;
+    T4CONbits.TON   = 0;    
+    T4CONbits.TCS   = 0;    
+    T4CONbits.TGATE = 0 ;   
+    T4CONbits.TCKPS = 0b11; 
+    TMR4          = 0;
+    PR4             =31250;
+    IPC6bits.T4IP   = 0x04;
+    IFS1bits.T4IF   = 0;
+    IEC1bits.T4IE   = 1;
+    T4CONbits.TON   = 1; 
+}
+void __attribute__((__interrupt__,auto_psv)) _T4Interrupt (void)
+{
+    TMR4=0;                              
+    PR4  = 31250;
+    STU1=~STU1;
+    IFS1bits.T4IF = 0;
+    if(Command_Status>0)
+    {
+        switch(Command_Status)
+        {
+            case magnetic_adsorption:
+                if(step==4)
+                {
+                    count_1++;
+                    if(count_1>4)
+                    {
+                        count_S++;
+                        count_1=0; 
+                    }
+                    if(count_S<time[0])
+                    {
+                        adsorption_step=1;
+                    }
+                    else if(count_S<time[1])
+                    {
+                        adsorption_step=2;
+                    }    
+                    else if(count_S<time[2])
+                    {
+                        adsorption_step=3;
+                    } 
+                    else if(count_S<time[3])
+                    {
+                        adsorption_step=4;
+                    } 
+                    else if(count_S<time[4])
+                    {
+                        adsorption_step=5;
+                    } 
+                    else if(count_S<time[5])
+                    {
+                        adsorption_step=6;
+                    } 
+                    else if(count_S<time[6])
+                    {
+                        adsorption_step=7;
+                    } 
+                    else if(count_S<time[7])
+                    {
+                        adsorption_step=8;
+                    } 
+                    else if(count_S<time[8])
+                    {
+                        adsorption_step=9;
+                    } 
+                    else if(count_S<time[9])
+                    {
+                        adsorption_step=10;
+                    }                     
+                    else 
+                    {
+                        adsorption_step=0;
+                        step=5;
+                        count_S=0;
+                        count_1=0;
+                    } 
+                }
+                break;
+            case liang_gan:
+                    count_1++;
+                    if(count_1>4)
+                    {
+                        count_S++;
+                        count_1=0; 
+                    }
+                    if(count_S>time[0])
+                    {
+                        Command_Status=0;
+                        count_S=0;
+                        count_1=0;
+                    }
+                break;
+            case qu_ci_zhu:
+                if(step==4)
+                {
+                    count_1++;
+                    if(count_1>4)
+                    {
+                        count_S++;
+                        count_1=0; 
+                    }
+                    if(count_S>xi_ci_time)
+                    {
+                        step=5;
+                        count_S=0;
+                    }
+                }
+                break;
+            case jie_he_qing_xi:
+                if(step==4)
+                {
+                    count_1++;
+                    if(count_1>4)
+                    {
+                        count_S++;
+                        count_1=0; 
+                    }
+                    if(count_S>hunyun_time)
+                    {
+                        step=5;
+                        count_S=0;
+                        count_1=0;
+                    }
+                }
+                if(step==6)
+                {
+                     count_1++;
+                    if(count_1>4)
+                    {
+                        count_S++;
+                        count_1=0; 
+                    }
+                    if(count_S>xi_ci_time)
+                    {
+                        step=7;
+                        count_S=0;
+                        count_1=0;
+                    }
+                }
+                break;
+             case xi_tuo:
+                if(step==4)
+                {
+                    count_1++;
+                    if(count_1>4)
+                    {
+                        count_S++;
+                        count_1=0; 
+                    }
+                    if(count_S>hunyun_time)
+                    {
+                        step=5;
+                        count_S=0;
+                        count_1=0;
+                    }
+                }  
+                if(step==6)
+                {
+                     count_1++;
+                    if(count_1>4)
+                    {
+                        count_S++;
+                        count_1=0; 
+                    }
+                    if(count_S>xi_ci_time)
+                    {
+                        step=7;
+                        count_S=0;
+                        count_1=0;
+                    }
+                }
+        }
+    }
+    if(g_BUSY4==1)
+    {
+        if(g_ucCMD==Command_Execution_Status)
+        {
+            g_uiFrmLth = 8	;
+            g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+            g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+            g_ucUart2_Send_Data[FRAME_NO_INDEX] =  0;
+            g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+            g_ucUart2_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth ;
+            g_ucUart2_Send_Data[6] = 0;
+            if( Command_Status==0)
+            {
+                g_ucUart2_Send_Data[5] = 1;                  
+            }
+            else
+            {
+                g_ucUart2_Send_Data[5] = 0;                       
+            }
+            g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+            RS2_Ack(g_uiFrmLth);           
+            }
+        g_uiUart2_No = 0;
+        g_ucHeaderFlag2 = 0;
+        memset(g_ucUart2_Receive_Data,0,g_uiLth2*sizeof(unsigned char));
+       g_BUSY4=0;   
+       g_BUSY2=0;                      
+  }    
+}

+ 10 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Timer.h

@@ -0,0 +1,10 @@
+#ifndef TIMER_H
+#define	TIMER_H
+
+void Init_T1();
+void Init_T4();
+
+extern unsigned char ucT5_num;
+extern unsigned char  Trouble_light;//仪器状态标志位(0 = 无故障 ;1 = 出现故障;上位机控制)
+
+#endif	

+ 323 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Uart.c

@@ -0,0 +1,323 @@
+#include <p33FJ64MC204.h>
+#include <stdlib.h>
+#include <math.h>
+#include "UART.h"
+#include "string.h"
+#include "Instrument_EEPROM_Param.h"
+#include "IO.h"
+#include "command.h"
+/**********************************************/
+unsigned char g_ucCMD,g_ucUART1_flag,g_ucUART2_flag=0;    
+unsigned int  g_uiUart1_No=0;          
+unsigned char g_ucUart1_Send_Data[SEND_NUM],g_ucUart1_Receive_Data[RECEIVE_NUM];
+unsigned char g_ucUart2_Send_Data[SEND_NUM],g_ucUart2_Receive_Data[RECEIVE_NUM];
+unsigned char g_ucHeaderFlag1 = 0;      
+unsigned char g_ucHeaderFlag2 = 0;
+
+unsigned int  g_uiUart2_No=0;
+unsigned int uiReceive1_Counter;
+
+unsigned int  g_uiLth = 0,g_uiLth2 = 0;           
+unsigned char g_ucCRC,g_ucCRC2;                 
+unsigned long g_ulRSUM,g_ulRSUM2;              
+unsigned int  g_uiFrmLth;                
+unsigned char g_BUSY = 0,g_BUSY2 = 0,g_BUSY3=0,g_BUSY4=0;            
+
+
+
+/*******************************************************************************
+ * 函数名称:InitUart1
+ *******************************************************************************/
+void InitUart1(void)
+{
+     /****************************************************/       
+    _TRISC6 = 0;  
+    _TRISC8 = 1;   
+    _RP22R = 0x03;  
+    _U1RXR = 0x18;  
+    U1MODEbits.STSEL = 0; 
+    U1MODEbits.PDSEL = 0; 
+    U1MODEbits.BRGH = 0; 
+    U1MODEbits.ABAUD = 0; 
+    U1MODEbits.LPBACK = 0; 
+     U1BRG=259;  
+    U1STAbits.UTXISEL0 = 1;
+    U1STAbits.UTXISEL1 = 0;
+    U1STAbits.URXISEL = 0;
+    IEC0bits.U1TXIE = 0;
+    IEC0bits.U1RXIE = 1;
+    U1MODEbits.UARTEN = 1;
+    U1STAbits.UTXEN = 1;
+    IPC2bits.U1RXIP = 6;
+}
+/*******************************************************************************
+ * 函数名称:InitUart2
+ *******************************************************************************/
+void InitUart2(void)
+{
+    _TRISB8 = 0;  
+    _TRISB9 = 1;  
+    _RP8R = 0x05;  
+    _U2RXR = 0x09;  
+    U2MODEbits.STSEL=0;       
+    U2MODEbits.PDSEL=0;       
+    U2MODEbits.BRGH=0;        
+    U2MODEbits.ABAUD=0;       
+    U2MODEbits.LPBACK=0;       
+    U2BRG=259;			
+    U2STAbits.UTXISEL0=1;	
+    U2STAbits.UTXISEL1=0;
+    U2STAbits.URXISEL=0;
+    IEC1bits.U2TXIE=0;
+    IEC1bits.U2RXIE=1;
+    U2MODEbits.UARTEN=1;
+    U2STAbits.UTXEN=1;
+    IPC7bits.U2RXIP=7;
+    IPC7bits.U2TXIP=7;
+}
+/*******************************************************************************
+ * 函数名称:Uart1Send
+ *******************************************************************************/
+void UART1SEND(char data)             
+{
+     U1TXREG = data;   
+     while(!IFS0bits.U1TXIF);
+     IFS0bits.U1TXIF=0;       		
+}
+void UART2SEND(char data)          
+{
+     U2TXREG = data;     
+     while(!IFS1bits.U2TXIF);
+     IFS1bits.U2TXIF=0;       		
+}
+void RS1_Ack(unsigned int sendnum)          
+{
+    unsigned int i;
+    for(i=0;i<sendnum;i++)
+    {
+        UART1SEND(g_ucUart1_Send_Data[i]);
+    }
+    memset(g_ucUart1_Send_Data,0,sendnum*sizeof(unsigned char));   
+
+}
+void RS2_Ack(unsigned int sendnum)        
+{
+    unsigned int i;
+    for(i=0;i<sendnum;i++)
+    {
+        UART2SEND(g_ucUart2_Send_Data[i]);
+    }
+    memset(g_ucUart2_Send_Data,0,sendnum*sizeof(unsigned char));
+}
+/*******************************************************************************
+ * 函数名称:CalculateSum
+ *******************************************************************************/
+unsigned long int CalculateSum(unsigned char *p,unsigned int num)
+{
+    unsigned int i=0;
+    unsigned long int uiCheckSum=0;
+    for(i = 0;i < num;i++)
+    {
+        uiCheckSum += *p;
+        p++;
+    }
+    return uiCheckSum;
+}
+/*******************************************************************************
+ * 函数名称:CalculateSum
+ *******************************************************************************/
+unsigned  int CalculateCharSum(unsigned char *p,unsigned char num)
+{
+    unsigned char i=0;
+    unsigned  int uiCheckSum=0;
+    for(i = 0;i < num;i ++)
+    {
+        uiCheckSum += *p;
+        p++;
+    }
+    return uiCheckSum;
+}
+/*******************************************************************************
+ * 函数名称:_U1RXInterrupt
+ *******************************************************************************/
+void  __attribute__((__interrupt__,no_auto_psv)) _U1RXInterrupt(void)
+{ 
+    IFS0bits.U1RXIF = 0;                                                        
+    g_ucUart1_Receive_Data[g_uiUart1_No] = U1RXREG;                               
+    if(g_BUSY == 1) return;
+    if(g_ucHeaderFlag1 == 0)                                                      
+    {
+            if(g_ucUart1_Receive_Data[g_uiUart1_No] == FRAME_HEAD)               
+            {
+                g_ucHeaderFlag1 = 1;                                            
+                g_ucUart1_Receive_Data[0] = FRAME_HEAD;                          
+                g_uiUart1_No = 1;                                             
+            }
+            else                                                                     
+            {
+                g_BUSY = 0;                                                  
+            }
+    }
+    else if(g_ucHeaderFlag1 == 1)                                         
+    {
+            g_uiUart1_No++;
+    } 
+
+    if(g_uiUart1_No >4)//(FRAME_LTHL_INDEX+1))                                                         
+    {
+            g_uiLth = g_ucUart1_Receive_Data[FRAME_LTHH_INDEX] ; 
+            g_uiLth = (g_uiLth<<8) + g_ucUart1_Receive_Data[FRAME_LTHL_INDEX];   
+            
+            if(g_uiUart1_No == g_uiLth)                                            
+            { 
+                g_ulRSUM = CalculateCharSum(g_ucUart1_Receive_Data,g_uiLth-1);    
+                g_ucCRC = (unsigned char)g_ulRSUM;//
+                if(g_ucCRC == g_ucUart1_Receive_Data[g_uiLth-1])                  
+                {
+                    g_ucCMD = g_ucUart1_Receive_Data[FRAME_CMD_INDEX];             
+
+                    g_ulRSUM = 0;                                                 
+                    g_uiUart1_No = 0;                                              
+                    g_ucHeaderFlag1 = 0;                                         
+                    if(g_ucCMD==Command_Execution_Status||g_ucCMD==stop)
+                    {
+                       g_BUSY3 = 1;
+                       g_BUSY = 1;                       
+                    }
+                    else
+                    {
+                    g_ucUART1_flag = 1;                                    
+                    g_BUSY = 1; 
+                    }
+                }
+                else
+                {
+                    memset(g_ucUart1_Receive_Data,0,g_uiLth*sizeof(unsigned char));
+                    g_BUSY = 0;                                                    
+                }              
+            }
+            else if(g_uiUart1_No >  g_uiLth)                                       
+             {
+                g_uiUart1_No = 0;                                               
+                g_ucHeaderFlag1 = 0;                                           
+                g_BUSY = 0;                                                    
+             }
+    }
+}
+
+
+/*******************************************************************************
+ * 函数名称:_U2RXInterrupt
+ *******************************************************************************/
+
+
+void  __attribute__((__interrupt__,no_auto_psv)) _U2RXInterrupt(void)
+{
+    IFS1bits.U2RXIF = 0;                                                   
+    g_ucUart2_Receive_Data[g_uiUart2_No] = U2RXREG;                         
+    if(g_BUSY2 == 1) return;
+    if(g_ucHeaderFlag2 == 0)                                               
+    {
+        if(g_ucUart2_Receive_Data[g_uiUart2_No] == FRAME_HEAD)          
+        {
+            g_ucHeaderFlag2 = 1;                                        
+            g_ucUart2_Receive_Data[0] = FRAME_HEAD;                      
+            g_uiUart2_No = 1;                                              
+        }
+        else                                                                     
+        {
+            g_BUSY2 = 0;                                                    
+        }
+    }
+    else if(g_ucHeaderFlag2 == 1)                                          
+    {
+        g_uiUart2_No++;
+    } 
+    if(g_uiUart2_No >4)                                                          
+        {
+            g_uiLth2 = g_ucUart2_Receive_Data[FRAME_LTHH_INDEX] ; 
+            g_uiLth2 = (g_uiLth2<<8) + g_ucUart2_Receive_Data[FRAME_LTHL_INDEX];    
+            if(g_uiUart2_No == g_uiLth2)                                           
+            { 
+                g_ulRSUM2 = CalculateCharSum(g_ucUart2_Receive_Data,g_uiLth2-1);    
+                g_ucCRC2 = (unsigned char)g_ulRSUM2;//
+                if(g_ucCRC2 == g_ucUart2_Receive_Data[g_uiLth2-1])                 
+                {
+                    g_ucCMD = g_ucUart2_Receive_Data[FRAME_CMD_INDEX];            
+                    g_ulRSUM2 = 0;                                                 
+                    g_uiUart2_No = 0;                                            
+                    g_ucHeaderFlag2 = 0;                                        
+                    if(g_ucCMD==Command_Execution_Status)
+                    {
+                        g_BUSY4=1;
+                        g_BUSY2 = 1;
+                    }
+                    else
+                    {
+                        g_ucUART2_flag = 1;                                      
+                        g_BUSY2 = 1;
+                    }
+                    //处理代码中...暂不接受指令;
+                }
+                else
+                {
+                    memset(g_ucUart2_Receive_Data,0,g_uiLth2*sizeof(unsigned char)); 
+                    g_BUSY2 = 0;                                                    
+                }              
+              }
+                else if(g_uiUart2_No >  g_uiLth2)                                   
+                {
+                    g_uiUart2_No = 0;                                              
+                    g_ucHeaderFlag2 = 0;                                          
+                    g_BUSY2 = 0;                                             
+                }
+        }
+}
+
+
+
+
+static const unsigned short crc16tab[256]= 
+{
+     0x0000,0x1021,0x2042,0x3063,0x4084,0x50a5,0x60c6,0x70e7,
+     0x8108,0x9129,0xa14a,0xb16b,0xc18c,0xd1ad,0xe1ce,0xf1ef,
+     0x1231,0x0210,0x3273,0x2252,0x52b5,0x4294,0x72f7,0x62d6,
+     0x9339,0x8318,0xb37b,0xa35a,0xd3bd,0xc39c,0xf3ff,0xe3de,
+     0x2462,0x3443,0x0420,0x1401,0x64e6,0x74c7,0x44a4,0x5485,
+     0xa56a,0xb54b,0x8528,0x9509,0xe5ee,0xf5cf,0xc5ac,0xd58d,
+     0x3653,0x2672,0x1611,0x0630,0x76d7,0x66f6,0x5695,0x46b4,
+     0xb75b,0xa77a,0x9719,0x8738,0xf7df,0xe7fe,0xd79d,0xc7bc,
+     0x48c4,0x58e5,0x6886,0x78a7,0x0840,0x1861,0x2802,0x3823,
+     0xc9cc,0xd9ed,0xe98e,0xf9af,0x8948,0x9969,0xa90a,0xb92b,
+     0x5af5,0x4ad4,0x7ab7,0x6a96,0x1a71,0x0a50,0x3a33,0x2a12,
+     0xdbfd,0xcbdc,0xfbbf,0xeb9e,0x9b79,0x8b58,0xbb3b,0xab1a,
+     0x6ca6,0x7c87,0x4ce4,0x5cc5,0x2c22,0x3c03,0x0c60,0x1c41,
+     0xedae,0xfd8f,0xcdec,0xddcd,0xad2a,0xbd0b,0x8d68,0x9d49,
+     0x7e97,0x6eb6,0x5ed5,0x4ef4,0x3e13,0x2e32,0x1e51,0x0e70,
+     0xff9f,0xefbe,0xdfdd,0xcffc,0xbf1b,0xaf3a,0x9f59,0x8f78,
+     0x9188,0x81a9,0xb1ca,0xa1eb,0xd10c,0xc12d,0xf14e,0xe16f,
+     0x1080,0x00a1,0x30c2,0x20e3,0x5004,0x4025,0x7046,0x6067,
+     0x83b9,0x9398,0xa3fb,0xb3da,0xc33d,0xd31c,0xe37f,0xf35e,
+     0x02b1,0x1290,0x22f3,0x32d2,0x4235,0x5214,0x6277,0x7256,
+     0xb5ea,0xa5cb,0x95a8,0x8589,0xf56e,0xe54f,0xd52c,0xc50d,
+     0x34e2,0x24c3,0x14a0,0x0481,0x7466,0x6447,0x5424,0x4405,
+     0xa7db,0xb7fa,0x8799,0x97b8,0xe75f,0xf77e,0xc71d,0xd73c,
+     0x26d3,0x36f2,0x0691,0x16b0,0x6657,0x7676,0x4615,0x5634,
+     0xd94c,0xc96d,0xf90e,0xe92f,0x99c8,0x89e9,0xb98a,0xa9ab,
+     0x5844,0x4865,0x7806,0x6827,0x18c0,0x08e1,0x3882,0x28a3,
+     0xcb7d,0xdb5c,0xeb3f,0xfb1e,0x8bf9,0x9bd8,0xabbb,0xbb9a,
+     0x4a75,0x5a54,0x6a37,0x7a16,0x0af1,0x1ad0,0x2ab3,0x3a92,
+     0xfd2e,0xed0f,0xdd6c,0xcd4d,0xbdaa,0xad8b,0x9de8,0x8dc9,
+     0x7c26,0x6c07,0x5c64,0x4c45,0x3ca2,0x2c83,0x1ce0,0x0cc1,
+     0xef1f,0xff3e,0xcf5d,0xdf7c,0xaf9b,0xbfba,0x8fd9,0x9ff8,
+     0x6e17,0x7e36,0x4e55,0x5e74,0x2e93,0x3eb2,0x0ed1,0x1ef0
+};
+ 
+unsigned short crc16_ccitt(unsigned char *buf, int len)
+{
+    register int counter;
+    register unsigned short crc = 0;
+    for( counter = 0; counter < len; counter++)
+    crc = (crc<<8) ^ crc16tab[((crc>>8) ^ *(char *)buf++)&0x00FF];
+    return crc;
+}

+ 55 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/Uart.h

@@ -0,0 +1,55 @@
+#ifndef UART_H
+#define	UART_H
+
+#define     FRAME_HEAD		 0xaa
+#define     SEND_NUM 	          80
+#define     RECEIVE_NUM 	          80
+#define     DATA_NUM 	          SEND_NUM /2
+#define     HELLO_ASK_LTH	          10
+#define     PWM_ASK_LTH	           8
+#define     SETIO_ASK_LTH	           8
+#define     SETIO_ASK_LTH_EEPROM   7
+
+#define     FRAME_HEAD_INDEX	      0
+#define     FRAME_CMD_INDEX	      1
+#define     FRAME_NO_INDEX              2
+#define     FRAME_LTHH_INDEX	      3
+#define     FRAME_LTHL_INDEX	      4
+#define     FRAME_EEPROM_INDEX     6
+#define     FRAME_STATE_INDEX	      1   
+#define     FRAME_CRC_INDEX	      0   
+#define     PERDATALTH	                2   
+
+
+#define Fcy  	          	 40000000 
+#define BAUDRATE		     9600         
+#define BRGVAL             ((Fcy/BAUDRATE)/16)-1
+
+
+
+/*******************************´®¿Ú1Ïà¹Ø±äÁ¿¶¨Òå***********************/
+extern unsigned char g_ucCMD,g_ucUART1_flag,g_ucUART2_flag;    
+extern unsigned int  g_uiUart1_No;             
+extern unsigned char g_ucUart1_Send_Data[SEND_NUM],g_ucUart1_Receive_Data[RECEIVE_NUM];
+extern unsigned char g_ucUart2_Send_Data[SEND_NUM],g_ucUart2_Receive_Data[RECEIVE_NUM];
+extern unsigned char g_ucHeaderFlag1,g_ucHeaderFlag2;          
+extern unsigned int  g_uiLth ,g_uiLth2;                 
+extern unsigned char g_ucCRC,g_ucCRC2;                  
+extern unsigned long g_ulRSUM,g_ulRSUM2;                 
+extern unsigned int  g_uiFrmLth;               
+extern unsigned char g_BUSY,g_BUSY2,g_BUSY3,g_BUSY4;                   
+
+extern unsigned int  g_uiUart2_No;
+extern unsigned int uiReceive1_Counter;
+
+void              InitUart1(void);
+void              InitUart2(void);
+void              UART1SEND(char data);
+void              UART2SEND(char data);
+void              RS1_Ack  (unsigned int sendnum);
+void              RS2_Ack  (unsigned int sendnum);
+unsigned long int CalculateSum(unsigned char *p,unsigned int num);
+unsigned  int     CalculateCharSum(unsigned char *p,unsigned char num);
+unsigned short    crc16_ccitt(unsigned char *buf, int len);
+
+#endif	

+ 2290 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/command.c

@@ -0,0 +1,2290 @@
+#include <p33FJ64MC204.h>
+#include <stdio.h>
+#include "main.h"
+#include "string.h"
+#include "EEPROM.h"
+#include "motor.h"
+#include "UART.h"
+#include "ADC.h"
+#include "PWM.h"
+#include "IO.h"
+#include "system.h"
+#include "Delay.h"
+#include "Timer.h"
+#include "Instrument_EEPROM_Param.h"
+#include "command.h"
+#include "PMT.h"
+#include "Temperature_Control.h"
+#define     HELLO	                               0x01
+#define     Reset_ID	                           0x02
+#define     Command_Execution_Status               0x03
+#define     MCU_RESET                              0xAB
+#define     SET_IO	                               0xAC
+#define     GET_IO	                               0x06
+#define     SET_Temperature                        0x04  
+#define     READ_SET_Temperature                   0x22
+#define     GET_Actual_Temperature                 0x05  
+#define     GET_TemperatureAD                      0x21
+#define     GET_MOTOR_POSITION                     0x07
+#define     GET_MOTOR_SPEED                        0x08
+#define     ENTERING_THE_WAREHOUSE                 0x10
+#define     OUT_THE_WAREHOUSE                      0xc0
+#define     move_to_well                           0xd0
+#define     magnetic_sleeve_on                     0x13
+#define     magnetic_sleeve_off                    0x14
+#define     magnetic_adsorption                    0x15
+#define     cleaning                               0x16
+#define     liang_gan                              0x17
+#define     qu_ci_zhu                              0x30
+#define     jie_he_qing_xi                         0x31
+#define     xi_tuo                                 0x32
+#define     pause                                  0x3A
+#define     run_after_pause                        0x3B
+#define     set_time                               0x3C
+#define     real_time                              0x3D
+#define     MT_RESET	                           0x09 
+#define     MT_FORWARD                             0x0A 
+#define     MT_REVERSAL	                           0x0B 
+#define     MT_MOVE_TO                             0x0C 
+#define     READ_EEPROM                            0x11
+#define     WRITE_EEPROM                           0x12
+#define     stop                                   0x18
+
+
+#define     CI_xici                                0x3E
+#define     Z_dibu                                 0x3F
+#define     Z_volume                               0x40   
+extern unsigned char Device_ID, Communication_Select;
+unsigned char  EE_STATUS,Command_Status;
+unsigned int    uiEE_address,Eeprom_Len,count_1=0,count_S=0,step=0,cleanning_times,adsorption_step,liang_gan_step,hunyun_times;
+unsigned long yemian_position,dibu_position,hunyun_position_start,hunyun_position_H,hunyun_position_L;
+
+unsigned int    time[10],position[10];
+unsigned char ucEE_buffer[256];
+unsigned char Reset_flag;                                                       
+unsigned int  i,c;
+unsigned char ucIOindex=0,ucIOstate=0,Get_IOstate;            
+unsigned char ucDIR;                                                                 
+unsigned char ucMOTOR_move_select,Motor_Status,kongwei;
+unsigned long ulPulse,ulPulse1;
+unsigned int     u16_data1,u16_data2,ulspeed,ulspeed_cleaning;
+unsigned char  u8_data1,u8_data2,u8_data3;
+unsigned int     liquid_volume,xi_ci_time,xi_ci_spd,xi_ci_pulse,hunyun_time,hunyun_spd;
+unsigned char  number_well;
+unsigned int    pause_flag=0,m_Command_Status,m_step,m_position_X,m_position_Z,m_position_Z1;
+unsigned int    m_count_S,m_liquid_volume,m_xi_ci_spd,m_hunyun_spd,m_hunyun_time,m_xi_ci_time;;
+unsigned int   g_ulAD_Tempbuff[4],Actual_temp[4],Actual_temp_LAST;
+unsigned int   Target_temp[4];   
+extern unsigned int     Z_chu_ye_mian_spd,Z_ru_ye_mian_spd,Z_normal_speed,Z_take_on_speed;
+extern unsigned int     above_yemian_pulse;
+extern unsigned int     Ci_take_off_speed1,Ci_take_off_speed2,Ci_normal_speed,X_normal_speed;
+/*************************position****************/
+extern unsigned int     well_position1,well_position2,well_position3,well_position4,well_position5,well_position6;
+extern unsigned int     Z_position1,adsorbtion_position,take_on_position1,getting_out_speedX,take_on_position2,take_off_position1,take_off_position2,take_off_position3;
+extern unsigned int     adsorbtion_times,adsorbtion_time1,adsorbtion_time2,adsorbtion_time3,adsorbtion_juli;
+extern unsigned long    getting_out_position1;
+void UART_Command(void)
+{  
+    /******************************通信代码********************************/
+    
+    if(g_ucUART1_flag == 1)
+    {  
+        Delay1ms(50);
+        u16_data1=0;
+        Motor_Status = 0x00;
+        EE_STATUS=0;
+        if(g_ucCMD==Reset_ID)
+        {
+            ucEE_buffer[0]=g_ucUart1_Receive_Data[2];
+            ucEE_buffer[1]=0;
+            ucEE_buffer[2]=0;
+            ucEE_buffer[3]=0;
+            EE_StrWrite(0x0418,ucEE_buffer,4);
+            EE_StrRead(0x0418,(unsigned char*)&Device_ID,1);           //设备ID
+            g_uiFrmLth  = HELLO_ASK_LTH-3;
+            g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+            g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+            g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
+            g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+            g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;        
+            g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+            g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+            RS1_Ack(g_uiFrmLth); 
+        }
+
+        if(Communication_Select>0)
+        {                
+                switch(g_ucCMD)
+                {
+                    case HELLO:          
+                        g_uiFrmLth  = HELLO_ASK_LTH;
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX]   = (g_uiFrmLth & 0xff00)>>8;//帧长高8位
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX]   = g_uiFrmLth & 0xff;       //帧长低8位
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = (SoftVersion & 0xff0000)>>16;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] = (SoftVersion & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX+3] = SoftVersion & 0xff;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                        RS1_Ack(g_uiFrmLth);
+                    break;
+                    /************************0x02*******/
+                    case Reset_ID:
+                        u8_data1=g_ucUart1_Receive_Data[5];
+                        ucEE_buffer[0]=g_ucUart1_Receive_Data[2];
+                        ucEE_buffer[1]=0;
+                        ucEE_buffer[2]=0;
+                        ucEE_buffer[3]=0;
+                        EE_StrWrite(0x00F4,ucEE_buffer,4);
+                        EE_StrRead(0x00F4,(unsigned char*)&Device_ID,1);           //设备ID
+                        g_uiFrmLth  = HELLO_ASK_LTH-3;
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;        
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                        RS1_Ack(g_uiFrmLth);
+                    break;
+                    /*******************************************************/   
+                    case MCU_RESET: 
+                        Reset_flag=1;
+                        g_uiFrmLth  = HELLO_ASK_LTH-3;
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;    
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                        RS1_Ack(g_uiFrmLth);    
+                        Delay1ms(5);
+                        asm("Reset");
+                    break;
+                    /********************************************************/                    
+                    case SET_IO:                    
+                        ucIOindex=g_ucUart1_Receive_Data[FRAME_LTHL_INDEX+1];
+                        ucIOstate =g_ucUart1_Receive_Data[FRAME_LTHL_INDEX+2]; 
+                        SetIO(ucIOindex,ucIOstate);
+                        g_uiFrmLth = SETIO_ASK_LTH;
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth & 0xff;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = ucIOstate;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                        RS1_Ack(g_uiFrmLth);                         
+                    break;
+                    /***********************************************0x06**********/                    
+                    case GET_IO:                    
+                        ucIOindex = g_ucUart1_Receive_Data[5];
+                        Get_IOstate = Get_IO(ucIOindex);
+                        g_uiFrmLth = SETIO_ASK_LTH;
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;//
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth & 0xff;//
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = Get_IOstate;//获取的IO状态
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;//状态位
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                        RS1_Ack(g_uiFrmLth);        
+                    break;
+                    /**********************************************/ 
+                    case SET_Temperature:
+                        u8_data1=g_ucUart1_Receive_Data[7];
+                        u16_data1 = g_ucUart1_Receive_Data[5];
+                        u16_data1 = (u16_data1<<8) + g_ucUart1_Receive_Data[6]; 
+                        if(u8_data1<5)
+                        {
+                            set_Target_temp[u8_data1-1]=u16_data1;
+                        }                                                
+                        g_uiFrmLth = PWM_ASK_LTH;
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = u8_data1;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                        RS1_Ack(g_uiFrmLth);                          
+                    break;
+                    /*****************************************0x08***************/      
+                    case READ_SET_Temperature:
+                        u8_data1=g_ucUart1_Receive_Data[5];
+                        if(u8_data1<5)
+                        {
+                            u16_data1=set_Target_temp[u8_data1-1];
+                        }      
+                        g_uiFrmLth = (SETIO_ASK_LTH + 1);
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth & 0xff;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = ( u16_data1 & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] =   u16_data1 & 0xff;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                        RS1_Ack(g_uiFrmLth);                         
+                    break;    
+                    /****************************0X09******************/      
+                    case GET_Actual_Temperature:   
+                        u8_data1=g_ucUart1_Receive_Data[5];
+                        if(u8_data1<5)
+                        {
+                            u16_data1=Actual_temp[u8_data1-1];
+                        }                                            
+                        g_uiFrmLth = (SETIO_ASK_LTH + 1)	;
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth & 0xff;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1 & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] =  u16_data1 & 0xff;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                        RS1_Ack(g_uiFrmLth);        
+                    break;
+                    /***************************************0x10**************/      
+                    case GET_TemperatureAD:                                            
+                        u8_data1=g_ucUart1_Receive_Data[5];
+                        if(u8_data1<5)
+                        {
+                            u16_data1=g_ulAD_Tempbuff[u8_data1-1];
+                        }                                     
+                        g_uiFrmLth = (SETIO_ASK_LTH + 1)	;
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;//帧长
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth & 0xff;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1  & 0xff00)>>8;//温度
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] =  u16_data1  & 0xff;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;//状态位
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                        RS1_Ack(g_uiFrmLth);     
+                    break;
+                    /*******************************************0xc0**************/  
+                    case READ_EEPROM:
+                        uiEE_address = g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX];//7
+                        uiEE_address = ((uiEE_address << 8) + g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX+1]);//8
+                        Eeprom_Len = g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX+2];//9
+                        Eeprom_Len = ((Eeprom_Len << 8) + g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX+3]);//10
+                        if(Eeprom_Len>=50)
+                        {  Eeprom_Len=50;}   
+                        if((uiEE_address >= 0x00 )&&(uiEE_address <= 1048576))
+                        {
+                            EE_StrRead(uiEE_address,ucEE_buffer,Eeprom_Len);
+                            EE_STATUS = 0x00;		
+                            for( i=0;i<Eeprom_Len;i++)
+                            {   
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1+i] = ucEE_buffer[i];
+                            }
+                        }
+                        g_uiFrmLth = (SETIO_ASK_LTH_EEPROM + Eeprom_Len);
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth & 0xff;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = EE_STATUS;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                        RS1_Ack(g_uiFrmLth);                        
+                    break;
+                    /*******************************************0xd0**************/  
+                    case WRITE_EEPROM:                   
+                        Eeprom_Len=g_ucUart1_Receive_Data[FRAME_LTHH_INDEX];
+                        Eeprom_Len=(Eeprom_Len<<8)+g_ucUart1_Receive_Data[FRAME_LTHL_INDEX];//接收到的帧长度-固有长度9得出需要写入的数据个数(字节)
+                        Eeprom_Len=Eeprom_Len-9;
+                        uiEE_address =  g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX];//7    
+                        uiEE_address = ((uiEE_address << 8) + g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX+1]);//8
+                        if(Eeprom_Len>=50)
+                        {  Eeprom_Len=50;}    
+                        if((uiEE_address >= 0x00 )&&(uiEE_address <= 0x1048576))
+                        {
+                            for(i=0;i<Eeprom_Len;i++)
+                            {
+                                ucEE_buffer[i]=g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX+2+i];
+                            }
+                            if(uiEE_address <= 1048576)
+                            {
+                                EE_StrWrite(uiEE_address,ucEE_buffer,Eeprom_Len);
+                                EE_STATUS = 0x00;
+                            }
+                            Read_Sys_EE();
+                            if(uiEE_address == 0X0500)
+                            {
+                                CalculateSModelLine(g_uiReagentMotorPeriod2, ACC_pulse2, REAGENT_MOTOR_FREQMAX2, REAGENT_MOTOR_FREQMIN2, REAGENT_MOTOR_XFLEXIBLE2);//计算加减速曲线
+                            }                            
+                        }
+                        g_uiFrmLth = SETIO_ASK_LTH_EEPROM	;
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth ;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = EE_STATUS;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                        RS1_Ack(g_uiFrmLth);                                        
+                    break;
+                    /********************************************0x30**************/                    
+                    case  MT_RESET:
+                        g_uiFrmLth  = HELLO_ASK_LTH-3;
+                        ucMOTOR_move_select =  g_ucUart1_Receive_Data[5]; //电机号(1: 底板移动电机 2:升降电机3:磁棒电机  4:磁铁电机) 
+                        if(ucMOTOR_move_select == 1)               Motor1Home(Motor1.Back_Pulse,Motor1.Reset_Speed,Motor1.Reset_Speed);
+                        else if(ucMOTOR_move_select == 2)       Motor2Home(Motor2.Back_Pulse,Motor2.Reset_Speed,Motor2.Reset_Speed);
+                        else if(ucMOTOR_move_select == 3)       Motor3Home(Motor3.Back_Pulse,Motor3.Reset_Speed,Motor3.Reset_Speed);
+                        else if(ucMOTOR_move_select == 4)       Motor4Home(Motor4.Back_Pulse,Motor4.Reset_Speed,Motor4.Reset_Speed);                        
+                        else   Motor_Status = 0x03;
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = Motor_Status;                
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
+                        RS1_Ack(g_uiFrmLth);                                       
+                    break;
+                    /************************************0x31**************/           
+                    case  MT_FORWARD:
+                        g_uiFrmLth= HELLO_ASK_LTH-3;
+                        ucMOTOR_move_select =  g_ucUart1_Receive_Data[10]; //电机号(1: 底板移动电机 2:升降电机3:磁棒电机)
+                        ulPulse = g_ucUart1_Receive_Data[5];
+                        ulPulse = (ulPulse<<8) + g_ucUart1_Receive_Data[6];
+                        ulPulse = (ulPulse<<8) + g_ucUart1_Receive_Data[7]; 
+                        u16_data1=g_ucUart1_Receive_Data[8];
+                        u16_data1=(u16_data1<<8)+g_ucUart1_Receive_Data[9];
+                        if  (ucMOTOR_move_select == 1)       
+                        { 
+                            if  ((ulPulse+g_tReagentMotorParam.ulXiPosition)<=Motor1.Limit_Pulse)
+                            {
+                                Motor1.Moving_Speed=u16_data1;
+                                Motor1Move(ulPulse,!Motor1.Reset_Direction,Motor1.Moving_Speed);
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
+                            }
+                            else 
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x01; 
+                         }
+                        else if(ucMOTOR_move_select == 2) 
+                        {    
+                            if ( (ulPulse+g_tReagentMotorParam.ulZiPosition)<=Motor2.Limit_Pulse )
+                            {
+                                Motor2.Moving_Speed=u16_data1;
+                                Motor2Move(ulPulse,!Motor2.Reset_Direction,Motor2.Moving_Speed);
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
+                            }
+                            else 
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x01;
+                        }
+                        else if(ucMOTOR_move_select == 3)
+                        {
+                            if ( (ulPulse+g_tReagentMotorParam.ulZ1iPosition)<=Motor3.Limit_Pulse )
+                            {
+                                Motor3.Moving_Speed=u16_data1;
+                                Motor3Move(ulPulse,!Motor3.Reset_Direction,Motor3.Moving_Speed);
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
+                            }
+                            else 
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x01;
+                        }       
+                        else if(ucMOTOR_move_select == 4)
+                        {
+                            if ( (ulPulse+g_tReagentMotorParam.ul4iPosition)<=Motor4.Limit_Pulse )
+                            {
+                                Motor4.Moving_Speed=u16_data1;
+                                Motor4Move(ulPulse,!Motor4.Reset_Direction,Motor4.Moving_Speed);
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
+                            }
+                            else 
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x01;
+                        }                          
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = Motor_Status;               
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
+                        RS1_Ack(g_uiFrmLth);                                    
+                    break;        
+                    /*************************************0x32**************/          
+                    case  MT_REVERSAL:
+                        g_uiFrmLth= HELLO_ASK_LTH-3;
+                        ucMOTOR_move_select =  g_ucUart1_Receive_Data[10]; //电机号(1: 底板移动电机 2:升降电机3:磁棒电机) 
+                        ulPulse = g_ucUart1_Receive_Data[5];
+                        ulPulse = (ulPulse<<8) + g_ucUart1_Receive_Data[6];
+                        ulPulse = (ulPulse<<8) + g_ucUart1_Receive_Data[7]; 
+                        u16_data1=g_ucUart1_Receive_Data[8];
+                        u16_data1=(u16_data1<<8)+g_ucUart1_Receive_Data[9];                    
+                        if  (ucMOTOR_move_select == 1)       
+                        { 
+                            if  (ulPulse<=g_tReagentMotorParam.ulXiPosition)
+                            {
+                                Motor1.Moving_Speed=u16_data1;
+                                Motor1Move(ulPulse,Motor1.Reset_Direction,Motor1.Moving_Speed);
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
+                            }
+                            else 
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x01; 
+                        }
+                        else if(ucMOTOR_move_select == 2) 
+                        {    
+                            if ( ulPulse<=g_tReagentMotorParam.ulZiPosition )
+                            {
+                                Motor2.Moving_Speed=u16_data1;
+                                Motor2Move(ulPulse,Motor2.Reset_Direction,Motor2.Moving_Speed);
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
+                            }
+                            else 
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x01;
+                            }
+                        else if(ucMOTOR_move_select == 3)
+                        {
+                            if ( ulPulse<=g_tReagentMotorParam.ulZ1iPosition )
+                            {
+                                Motor3.Moving_Speed=u16_data1;
+                                Motor3Move(ulPulse,Motor3.Reset_Direction,Motor3.Moving_Speed);
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
+                            }
+                            else 
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x01;
+                        }
+                        else if(ucMOTOR_move_select == 4)
+                        {
+                            if ( ulPulse<=g_tReagentMotorParam.ul4iPosition )
+                            {
+                                Motor4.Moving_Speed=u16_data1;
+                                Motor4Move(ulPulse,Motor4.Reset_Direction,Motor4.Moving_Speed);
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
+                            }
+                            else 
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x01;
+                        }                        
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;        
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
+                        RS1_Ack(g_uiFrmLth);                                    
+                    break;        
+                    /******************************************0x33**************/              
+                    case  MT_MOVE_TO:
+                        g_uiFrmLth= HELLO_ASK_LTH-3;
+                        ucMOTOR_move_select =  g_ucUart1_Receive_Data[10];   //电机号(1: 底板移动电机 2:升降电机3:磁棒电机)
+                        ulPulse = g_ucUart1_Receive_Data[5];                
+                        ulPulse = (ulPulse<<8) + g_ucUart1_Receive_Data[6]; 
+                        ulPulse  = (ulPulse<<8) + g_ucUart1_Receive_Data[7]; 
+                        u16_data1=g_ucUart1_Receive_Data[8];
+                        u16_data1=(u16_data1<<8)+g_ucUart1_Receive_Data[9];                                                                                    
+                                                    
+                        if     (ucMOTOR_move_select == 1) 
+                        {
+                            if(ulPulse<=Motor1.Limit_Pulse)
+                            {
+                                Motor1.Moving_Speed=u16_data1;
+//                                ulPulse=ulPulse*3.84;    
+                                Motor1MoveTo(ulPulse,Motor1.Moving_Speed);
+                            }
+                            else
+                            {
+                                Motor_Status = 0x01; 
+                            }
+                        }
+                        else if(ucMOTOR_move_select == 2)
+                        {
+                            if(ulPulse<=Motor2.Limit_Pulse)
+                            {
+                                Motor2.Moving_Speed=u16_data1;
+//                                ulPulse=ulPulse*4;    
+                                Motor2MoveTo(ulPulse,Motor2.Moving_Speed);
+                            }
+                            else
+                            {
+                                Motor_Status = 0x01; 
+                            }
+                        }
+                        else if(ucMOTOR_move_select == 3)      
+                        {
+                            if(ulPulse<=Motor3.Limit_Pulse)//最大行程处
+                            {
+                                Motor3.Moving_Speed=u16_data1;
+//                                ulPulse=ulPulse*0.64;  
+                                Motor3MoveTo(ulPulse,Motor3.Moving_Speed);
+                            }
+                            else
+                            {
+                                Motor_Status = 0x01; 
+                            }
+                        }
+                        else if(ucMOTOR_move_select == 4)      
+                        {
+                            if(ulPulse<=Motor4.Limit_Pulse)//最大行程处
+                            {
+                                Motor4.Moving_Speed=u16_data1;
+//                                ulPulse=ulPulse*0.64;  
+                                Motor4MoveTo(ulPulse,Motor4.Moving_Speed);
+                            }
+                            else
+                            {
+                                Motor_Status = 0x01; 
+                            }
+                        }                        
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = Motor_Status;                
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
+                        RS1_Ack(g_uiFrmLth);                                     
+                    break;                         
+                    case GET_MOTOR_POSITION :
+                        u8_data1=g_ucUart1_Receive_Data[5];
+                        if(u8_data1<4)
+                        {
+                            switch(u8_data1)
+                            {
+                                case 1 : u16_data1=  g_tReagentMotorParam.ulXiPosition;         break;   
+                                case 2 : u16_data1= g_tReagentMotorParam.ulZiPosition;                    break; 
+                                case 3 : u16_data1=g_tReagentMotorParam.ulZ1iPosition;               break;      
+                                case 4 : u16_data1=g_tReagentMotorParam.ul4iPosition;               break;                                    
+                            }
+                        }                                     
+                        g_uiFrmLth = (SETIO_ASK_LTH + 1);
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth & 0xff;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1  & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] =  u16_data1  & 0xff;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                        RS1_Ack(g_uiFrmLth);     
+                    break;  
+                    case GET_MOTOR_SPEED :
+                        u8_data1=g_ucUart1_Receive_Data[5];
+                        switch(u8_data1)
+                        {
+                            case 1 : u16_data1=g_tReagentMotorParam.uiXSpeed;              break;   
+                            case 2 : u16_data1=g_tReagentMotorParam.uiZSpeed;            break; 
+                            case 3 : u16_data1=g_tReagentMotorParam.uiZ1Speed;            break;  
+                            case 4 : u16_data1=g_tReagentMotorParam.ui4Speed;            break;                               
+                        }
+                        g_uiFrmLth = (SETIO_ASK_LTH + 1);
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;   
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1  & 0xff00)>>8;//温度
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] =  u16_data1  & 0xff;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;//状态位
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
+                        RS1_Ack(g_uiFrmLth);                                    
+                    break;    
+                    case  ENTERING_THE_WAREHOUSE :
+                        g_uiFrmLth= HELLO_ASK_LTH-3;
+                        Motor4Home(Motor4.Back_Pulse,Motor4.Reset_Speed,Motor4.Reset_Speed);                     
+                        Motor2Home(Motor2.Back_Pulse,Motor2.Reset_Speed,Motor2.Reset_Speed);
+                        Motor3Home(Motor3.Back_Pulse,Motor3.Reset_Speed,Motor3.Reset_Speed);                     
+                        Motor1Home(Motor1.Back_Pulse,Motor1.Reset_Speed,Motor1.Reset_Speed);                           
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;    
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00; 
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
+                        RS1_Ack(g_uiFrmLth);                                    
+                    break;    
+                    case OUT_THE_WAREHOUSE :                     
+                        g_uiFrmLth= HELLO_ASK_LTH-3;
+                        Motor4Home(Motor4.Back_Pulse,Motor4.Reset_Speed,Motor4.Reset_Speed);//磁铁电机复位                        
+                        Motor3Home(Motor3.Back_Pulse,Motor3.Reset_Speed,Motor3.Reset_Speed);//磁棒电机复位
+                        Motor2Home(Motor2.Back_Pulse,Motor2.Reset_Speed,Motor2.Reset_Speed);//升降电机复位
+                        Motor1Home(Motor1.Back_Pulse,Motor1.Reset_Speed,Motor1.Reset_Speed);//底板组件复位
+//                        Motor1MoveTo(X_chucang_jiange,getting_out_speedX);
+                        
+                        if(getting_out_position1<=Motor1.Limit_Pulse)
+                        {
+                            Motor1MoveTo(getting_out_position1,getting_out_speedX);
+                        }
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] = ucMOTOR_move_select;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff; 
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
+                        RS1_Ack(g_uiFrmLth);                                    
+                    break;   
+                    case move_to_well :                                
+                    break;                         
+                    case magnetic_sleeve_on :      
+                                
+                    break;    
+                    case magnetic_sleeve_off  :
+                                 
+                    break;    
+                    case magnetic_adsorption  :
+                                  
+                    break;                                
+                    case cleaning  :
+                                
+                    break;        
+                    case set_time:
+                        u8_data1=g_ucUart1_Receive_Data[5];
+                        if(u8_data1<60)
+                        {
+                            u8_data2=u8_data1%10;
+                            u8_data3=(unsigned char)(u8_data1/10);
+                            u8_data1= (u8_data3<<4)+u8_data2;
+                            real_time_write(0x02,u8_data1);//秒                     
+                        }
+                        u8_data1=g_ucUart1_Receive_Data[6];
+                        if(u8_data1<60)
+                        {
+                            u8_data2=u8_data1%10;
+                            u8_data3=(unsigned char)(u8_data1/10);
+                            u8_data1= (u8_data3<<4)+u8_data2;
+                            real_time_write(0x03,u8_data1);//分                     
+                        } 
+                        u8_data1=g_ucUart1_Receive_Data[7];
+                        if(u8_data1<24)
+                        {
+                            u8_data2=u8_data1%10;
+                            u8_data3=(unsigned char)(u8_data1/10);
+                            u8_data1= (u8_data3<<4)+u8_data2;
+                            real_time_write(0x04,u8_data1);//时                 
+                        }
+                        u8_data1=g_ucUart1_Receive_Data[8];
+                        if(u8_data1<32&&u8_data1>0)
+                        {
+                            u8_data2=u8_data1%10;
+                            u8_data3=(unsigned char)(u8_data1/10);
+                            u8_data1= (u8_data3<<4)+u8_data2;
+                            real_time_write(0x05,u8_data1);//日                 
+                        } 
+                        u8_data1=g_ucUart1_Receive_Data[9];
+                        if(u8_data1<7)
+                        {                     
+                            real_time_write(0x06,u8_data1);//星期               
+                        }
+                        else if(u8_data1==7)
+                        {
+                            u8_data1= 0;                           
+                            real_time_write(0x06,u8_data1);//星期                        
+                        }
+                        u8_data1=g_ucUart1_Receive_Data[10];
+                        if(u8_data1<13&&u8_data1>0)
+                        {
+                            u8_data2=u8_data1%10;
+                            u8_data3=(unsigned char)(u8_data1/10);
+                            u8_data1= (u8_data3<<4)+u8_data2;                        
+                            real_time_write(0x07,u8_data1);//月               
+                        } 
+                        u8_data1=g_ucUart1_Receive_Data[11]; 
+                        if(u8_data1<100&&u8_data1>0)
+                        {
+                            u8_data2=u8_data1%10;
+                            u8_data3= (unsigned char)(u8_data1/10);
+                            u8_data1= (u8_data3<<4)+u8_data2;     
+                            real_time_write(0x08,u8_data1);//年             
+                        }                                       
+                        g_uiFrmLth= HELLO_ASK_LTH-3;
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] = 0;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;   
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;                        
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
+                        RS1_Ack(g_uiFrmLth);       
+                     break;  
+                    case real_time:
+                        u8_data1=real_time_read(0x02);
+                        u8_data2=u8_data1>>7;  
+                        if(u8_data2==1)
+                        {
+                            u8_data3=((u8_data1-128)>>4)*10+(u8_data1& 0x0f);  
+                        }
+                        else if(u8_data2==0)
+                        {
+                             u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);  
+                        }
+                        g_ucUart1_Send_Data[6]=u8_data3;//sec
+                        g_ucUart1_Send_Data[5]=u8_data2;
+
+                        u8_data1=real_time_read(0x03);
+                        u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);  
+                        g_ucUart1_Send_Data[7]=u8_data3;//min
+
+                        u8_data1=real_time_read(0x04);
+                        u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);  
+                        g_ucUart1_Send_Data[8]=u8_data3;//hour                    
+
+                        u8_data1=real_time_read(0x05);
+                        u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);  
+                        g_ucUart1_Send_Data[9]=u8_data3;//date  
+
+                        u8_data1=real_time_read(0x06);
+                        if(u8_data1==0)
+                        {
+                            u8_data3=7;
+                        }
+                        else
+                        {
+                            u8_data3=u8_data1;  
+                        }
+                        g_ucUart1_Send_Data[10]=u8_data3;//week?                     
+
+                        u8_data1=real_time_read(0x07);
+                        u8_data2=u8_data1>>7;  
+                        if(u8_data2==1)
+                        {
+                            u8_data3=((u8_data1-128)>>4)*10+(u8_data1& 0x0f);  
+                        }
+                        else if(u8_data2==0)
+                        {
+                             u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);  
+                        }
+                        g_ucUart1_Send_Data[11]=u8_data3;//月
+
+                        u8_data1=real_time_read(0x08);
+                        if(u8_data2==1)
+                        {
+                            u16_data1=1900+(u8_data1>>4)*10+(u8_data1& 0x0f);  
+                        }
+                        else if(u8_data2==0)
+                        {
+                             u16_data1=2000+(u8_data1>>4)*10+(u8_data1& 0x0f);  
+                        } 
+                        g_ucUart1_Send_Data[12] = (u16_data1  & 0xff00)>>8;//速度  0.01mm/s
+                        g_ucUart1_Send_Data[13] =  u16_data1  & 0xff;
+                        g_uiFrmLth=16;
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] = 0;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;   
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;                        
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
+                        RS1_Ack(g_uiFrmLth);       
+                     break;                         
+                    case CI_xici:                                            
+                        Motor3MoveTo(adsorbtion_position,Ci_normal_speed);                                  
+                        g_uiFrmLth  = 7;
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth & 0xff;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                        RS1_Ack(g_uiFrmLth);     
+                    break; 
+                    case Z_dibu:                                            
+                        Motor2MoveTo(Z_di_bu_position,10000);                                
+                        g_uiFrmLth  = 7;
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth & 0xff;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                        RS1_Ack(g_uiFrmLth);     
+                    break;                     
+                    case Z_volume:                                                                              
+                        u16_data1 = g_ucUart1_Receive_Data[5];
+                        u16_data1 = (u16_data1<<8) + g_ucUart1_Receive_Data[6]; 
+                        Move_to_by_volume(u16_data1,10000);                     
+                        g_uiFrmLth = 8;
+                        g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                        g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                        g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                        g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
+                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = 0x00;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                        g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                        RS1_Ack(g_uiFrmLth);                          
+                    break;                    
+                }
+            
+        }
+      else
+       {
+                if(g_ucUart1_Receive_Data[2]==Device_ID)
+                {
+                    switch(g_ucCMD)
+                        {
+                            case HELLO:       
+                                g_uiFrmLth  = HELLO_ASK_LTH;  
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX]   = (g_uiFrmLth & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX]   = g_uiFrmLth & 0xff;     
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = (SoftVersion & 0xff0000)>>16;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] = (SoftVersion & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX+3] = SoftVersion & 0xff;
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                                RS1_Ack(g_uiFrmLth);
+                            break;
+                            /*************************************************/   
+                            case MCU_RESET: 
+                                Reset_flag=1;
+                                g_uiFrmLth  = HELLO_ASK_LTH-3;
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;    
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                                RS1_Ack(g_uiFrmLth);    
+                                Delay1ms(5);
+                                asm("Reset");
+                            break;
+                            /**********************************************************/                    
+                            case SET_IO:                    
+                                ucIOindex=g_ucUart1_Receive_Data[FRAME_LTHL_INDEX+1];
+                                ucIOstate=g_ucUart1_Receive_Data[FRAME_LTHL_INDEX+2]; 
+                                SetIO(ucIOindex,ucIOstate);
+                                g_uiFrmLth = SETIO_ASK_LTH;
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth & 0xff;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = ucIOstate;
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                                RS1_Ack(g_uiFrmLth);                         
+                            break;
+                            /*******************************************************/                    
+                            case GET_IO:                    
+                                ucIOindex = g_ucUart1_Receive_Data[5];
+                                Get_IOstate = Get_IO(ucIOindex);
+                                g_uiFrmLth = SETIO_ASK_LTH;
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;//
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth & 0xff;//
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = Get_IOstate;
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                                RS1_Ack(g_uiFrmLth);        
+                            break;
+                            /********************************************/ 
+                            case SET_Temperature:
+                                u8_data1=g_ucUart1_Receive_Data[7];
+                                u16_data1 = g_ucUart1_Receive_Data[5];
+                                u16_data1 = (u16_data1<<8) + g_ucUart1_Receive_Data[6]; 
+                                if(u8_data1<5)
+                                {
+                                    set_Target_temp[u8_data1-1]=u16_data1;
+                                }                                                
+                                g_uiFrmLth = PWM_ASK_LTH;
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = u8_data1;
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                                RS1_Ack(g_uiFrmLth);                          
+                            break;
+                            /************************************0x08***************/      
+                            case READ_SET_Temperature:
+                                u8_data1=g_ucUart1_Receive_Data[5];
+                                if(u8_data1<5)
+                                {
+                                    u16_data1=set_Target_temp[u8_data1-1];
+                                }      
+                                g_uiFrmLth = (SETIO_ASK_LTH + 1);
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth & 0xff;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = ( u16_data1 & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] =   u16_data1 & 0xff;
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                                RS1_Ack(g_uiFrmLth);                         
+                            break;    
+                            /*******************************0X09******************/      
+                            case GET_Actual_Temperature:   
+                                u8_data1=g_ucUart1_Receive_Data[5];
+                                if(u8_data1<5)
+                                {
+                                    u16_data1=Actual_temp[u8_data1-1];
+                                }                                            
+                                g_uiFrmLth = (SETIO_ASK_LTH + 1)	;
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth & 0xff;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1 & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] =  u16_data1 & 0xff;
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                                RS1_Ack(g_uiFrmLth);        
+                            break;
+                            /***********************************0x10**************/      
+                            case GET_TemperatureAD:                                            
+                                u8_data1=g_ucUart1_Receive_Data[5];
+                                if(u8_data1<5)
+                                {
+                                    u16_data1=g_ulAD_Tempbuff[u8_data1-1];
+                                }                                     
+                                g_uiFrmLth = (SETIO_ASK_LTH + 1)	;
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth & 0xff;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1  & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] =  u16_data1  & 0xff;
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                                RS1_Ack(g_uiFrmLth);     
+                            break;
+                            /******************************************0xc0**************/  
+                            case READ_EEPROM:
+                                uiEE_address = g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX];
+                                uiEE_address = ((uiEE_address << 8) + g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX+1]);
+                                Eeprom_Len = g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX+2];
+                                Eeprom_Len = ((Eeprom_Len << 8) + g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX+3]);
+                                if(Eeprom_Len>=50)
+                                {  Eeprom_Len=50;}   
+                                if((uiEE_address >= 0x00 )&&(uiEE_address <= 1048576))
+                                {
+                                    EE_StrRead(uiEE_address,ucEE_buffer,Eeprom_Len);
+                                    EE_STATUS = 0x00;		
+                                    for( i=0;i<Eeprom_Len;i++)
+                                    {   
+                                        g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1+i] = ucEE_buffer[i];
+                                    }
+                                }
+                                g_uiFrmLth = (SETIO_ASK_LTH_EEPROM + Eeprom_Len);
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth & 0xff;
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = EE_STATUS;
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                                RS1_Ack(g_uiFrmLth);                        
+                            break;
+                            /*******************************************0xd0**************/  
+                            case WRITE_EEPROM:                   
+                                Eeprom_Len=g_ucUart1_Receive_Data[FRAME_LTHH_INDEX];
+                                Eeprom_Len=(Eeprom_Len<<8)+g_ucUart1_Receive_Data[FRAME_LTHL_INDEX];
+                                Eeprom_Len=Eeprom_Len-9;
+                                uiEE_address =  g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX]; 
+                                uiEE_address = ((uiEE_address << 8) + g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX+1]);
+                                if(Eeprom_Len>=50)
+                                {  Eeprom_Len=50;}   
+                                if((uiEE_address >= 0x00 )&&(uiEE_address <= 0x1048576))
+                                {
+                                    for(i=0;i<Eeprom_Len;i++)
+                                    {
+                                        ucEE_buffer[i]=g_ucUart1_Receive_Data[FRAME_EEPROM_INDEX+2+i];
+                                    }
+                                    if(uiEE_address <= 1048576)
+                                    {
+                                        EE_StrWrite(uiEE_address,ucEE_buffer,Eeprom_Len);
+                                        EE_STATUS = 0x00;
+                                    }
+                                    Read_Sys_EE();
+                                    if(uiEE_address == 0X0500)
+                                    {
+                                        CalculateSModelLine(g_uiReagentMotorPeriod2, ACC_pulse2, REAGENT_MOTOR_FREQMAX2, REAGENT_MOTOR_FREQMIN2, REAGENT_MOTOR_XFLEXIBLE2);//计算加减速曲线
+                                    }
+                                }
+                                g_uiFrmLth = SETIO_ASK_LTH_EEPROM	;
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth ;
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = EE_STATUS;
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                                RS1_Ack(g_uiFrmLth);                                        
+                            break;
+                            /****************************************0x30**************/                    
+                            case  MT_RESET:
+                                ucMOTOR_move_select =  g_ucUart1_Receive_Data[5]; 
+                                if(Command_Status >0)
+                                {
+                                    Motor_Status=3;
+                                    g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 1;                                        
+                                }
+                                else
+                                {
+                                    Command_Status=MT_RESET;
+                                    g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;                                        
+                                }
+                                g_uiFrmLth  = HELLO_ASK_LTH-3;
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;            
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
+                                RS1_Ack(g_uiFrmLth);    
+                            break;
+                            /****************************************************/           
+                            case  MT_FORWARD:
+                                g_uiFrmLth= HELLO_ASK_LTH-3;
+                                if(Command_Status >0)   
+                                {
+                                    Motor_Status=3;
+                                    g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 1;                                         
+                                }
+                                else
+                                {
+                                    ucMOTOR_move_select =  g_ucUart1_Receive_Data[10]; 
+                                    ulPulse = g_ucUart1_Receive_Data[5];
+                                    ulPulse = (ulPulse<<8) + g_ucUart1_Receive_Data[6];
+                                    ulPulse = (ulPulse<<8) + g_ucUart1_Receive_Data[7]; 
+                                    ulspeed=g_ucUart1_Receive_Data[8];
+                                    ulspeed=(ulspeed<<8)+g_ucUart1_Receive_Data[9] ; 
+                                    Command_Status=MT_FORWARD;
+                                    g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;                                       
+                                }
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;            
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
+                                RS1_Ack(g_uiFrmLth);     
+                            break;        
+                            /*******************************************0x32**************/          
+                            case  MT_REVERSAL:
+                                g_uiFrmLth= HELLO_ASK_LTH-3;
+                                if(Command_Status >0)   
+                                {
+                                    Motor_Status=3;
+                                    g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 1;           
+                                } 
+                              else
+                               {
+                                    ucMOTOR_move_select =  g_ucUart1_Receive_Data[10]; 
+                                    ulPulse = g_ucUart1_Receive_Data[5];
+                                    ulPulse = (ulPulse<<8) + g_ucUart1_Receive_Data[6];
+                                    ulPulse = (ulPulse<<8) + g_ucUart1_Receive_Data[7]; 
+                                    ulspeed=g_ucUart1_Receive_Data[8];
+                                    ulspeed=(ulspeed<<8)+g_ucUart1_Receive_Data[9] ; 
+                                   Command_Status=MT_REVERSAL;     
+                                    g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;    
+                              }     
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;          
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
+                                RS1_Ack(g_uiFrmLth);                             
+                            break;        
+                            /***********************************0x33**************/              
+                            case  MT_MOVE_TO:
+                                g_uiFrmLth= HELLO_ASK_LTH-3;
+                                if(Command_Status >0)
+                                {
+                                    Motor_Status=3;
+                                    g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 1;          
+                                }
+                                else
+                                {
+                                    Command_Status=MT_MOVE_TO;
+                                    ucMOTOR_move_select =  g_ucUart1_Receive_Data[10];  
+                                    ulPulse = g_ucUart1_Receive_Data[5];                
+                                    ulPulse = (ulPulse<<8) + g_ucUart1_Receive_Data[6]; 
+                                    ulPulse = (ulPulse<<8) + g_ucUart1_Receive_Data[7]; 
+                                    ulspeed=g_ucUart1_Receive_Data[8];
+                                    ulspeed=(ulspeed<<8)+g_ucUart1_Receive_Data[9];  
+                                    g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;           
+                                }                            
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;            
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
+                                RS1_Ack(g_uiFrmLth);                       
+                            break;                         
+                            case GET_MOTOR_POSITION :
+                                u8_data1=g_ucUart1_Receive_Data[5];
+                                if(u8_data1<4)
+                                {
+                                    switch(u8_data1)
+                                    {
+                                        case 1 : u16_data1=  g_tReagentMotorParam.ulXiPosition;            break;   
+                                        case 2 : u16_data1= g_tReagentMotorParam.ulZiPosition;                    break; 
+                                        case 3 : u16_data1=g_tReagentMotorParam.ulZ1iPosition;                     break;     
+                                        case 4 : u16_data1=g_tReagentMotorParam.ul4iPosition;                     break;                                               
+                                    }
+                                }                                     
+                                g_uiFrmLth = (SETIO_ASK_LTH + 1);
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;//桢长
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth & 0xff;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1  & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] =  u16_data1  & 0xff;
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart1_Send_Data,g_uiFrmLth-1);
+                                RS1_Ack(g_uiFrmLth); 
+                                break;
+                            case GET_MOTOR_SPEED : 
+                                u8_data1=g_ucUart1_Receive_Data[5];
+                                switch(u8_data1)
+                                {
+   
+                                    case 1 : u16_data1=g_tReagentMotorParam.uiXSpeed;              break;   
+                                    case 2 : u16_data1=g_tReagentMotorParam.uiZSpeed;              break; 
+                                    case 3 : u16_data1=g_tReagentMotorParam.uiZ1Speed;            break;        
+                                    case 4 : u16_data1=g_tReagentMotorParam.ui4Speed;            break;                                     
+                                }
+                                g_uiFrmLth = (SETIO_ASK_LTH + 1);
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff; 
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1  & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX+2] =  u16_data1  & 0xff;                             
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
+                                RS1_Ack(g_uiFrmLth);                                    
+                            break;    
+                            case  ENTERING_THE_WAREHOUSE :
+                                g_uiFrmLth= HELLO_ASK_LTH-3;
+                                if(Command_Status >0)
+                                {
+                                    Motor_Status=3;
+                                    g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 1;          
+                                }
+                                else
+                                {
+                                    Command_Status=ENTERING_THE_WAREHOUSE; 
+                                    g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;          
+                                }                                                     
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;                               
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
+                                RS1_Ack(g_uiFrmLth);                                    
+                            break;    
+                            case OUT_THE_WAREHOUSE :                         
+                                g_uiFrmLth= HELLO_ASK_LTH-3;
+                                if(Command_Status >0)
+                                {
+                                    Motor_Status=3;
+                                    g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 1; 
+                                }
+                                else
+                                {
+                                    Command_Status= OUT_THE_WAREHOUSE; 
+                                    g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;                                     
+                                }                              
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;                               
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
+                                RS1_Ack(g_uiFrmLth);                                    
+                            break;   
+                            case move_to_well ://移动到深孔板对应位置
+                                g_uiFrmLth= HELLO_ASK_LTH-3;
+                                kongwei=g_ucUart1_Receive_Data[5];
+                                if(Command_Status >0)
+                                {
+                                    Motor_Status=3;
+                                    g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 1; 
+                                }
+                                else
+                                {
+                                    Command_Status= move_to_well;  
+                                    g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0; 
+                                }       
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;                         
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
+                                RS1_Ack(g_uiFrmLth);                                    
+                            break;                         
+                            case magnetic_sleeve_on :
+                                g_uiFrmLth= HELLO_ASK_LTH-3;
+                                if(Command_Status >0)
+                                {
+                                    Motor_Status=3;
+                                    g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 1; 
+                                }
+                                else
+                                {
+                                    Command_Status= magnetic_sleeve_on;   
+                                    step=1;
+                                    g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0; 
+                                }                             
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;    
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
+                                RS1_Ack(g_uiFrmLth);                                    
+                            break;    
+                            case magnetic_sleeve_off  :
+                                g_uiFrmLth= HELLO_ASK_LTH-3;
+                                if(Command_Status >0)
+                                {
+                                    Motor_Status=3;
+                                    g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 1; 
+                                }
+                                else
+                                {
+                                    Command_Status=magnetic_sleeve_off;   
+                                    step=1;
+                                    g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0; 
+                                }          
+                                g_uiFrmLth= HELLO_ASK_LTH-3;
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;     
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
+                                RS1_Ack(g_uiFrmLth);                                    
+                            break;    
+                            case magnetic_adsorption  :
+                                g_uiFrmLth= HELLO_ASK_LTH-3;                                                      
+                                if(Command_Status >0)
+                                {
+                                    Motor_Status=3;
+                                    g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 1; 
+                                }
+                                else
+                                {
+                                    yemian_position = g_ucUart1_Receive_Data[5];
+                                    yemian_position = (yemian_position <<8) + g_ucUart1_Receive_Data[6];
+                                    yemian_position = (yemian_position <<8) + g_ucUart1_Receive_Data[7];                                    
+                                    dibu_position  = g_ucUart1_Receive_Data[8];
+                                    dibu_position  = (dibu_position <<8) + g_ucUart1_Receive_Data[9];   
+                                    dibu_position  = (dibu_position <<8) + g_ucUart1_Receive_Data[10];                                       
+                                    ulspeed= g_ucUart1_Receive_Data[11];
+                                    ulspeed= (ulspeed<<8) + g_ucUart1_Receive_Data[12];
+                                    memset(time,0,10*sizeof(unsigned char));
+                                    memset(position,0,10*sizeof(unsigned int));
+                                    if(g_uiLth==55)
+                                    {
+                                        for(i=0;i<10;i++)
+                                        {
+                                            if(i==0)
+                                            {
+                                                 time[i]= g_ucUart1_Receive_Data[4*i+13];
+                                                 time[i]=(time[i]<<8)+ g_ucUart1_Receive_Data[4*i+14];
+                                                position[i]=g_ucUart1_Receive_Data[4*i+11];
+                                                position[i]=(position[i]<<8)+g_ucUart1_Receive_Data[4*i+12];
+                                            }
+                                            else
+                                            {
+                                                time[i]=g_ucUart1_Receive_Data[4*i+13];
+                                                time[i]=(time[i]<<8)+ g_ucUart1_Receive_Data[4*i+14];
+                                                time[i]=time[i]+time[i-1];
+                                                position[i]=g_ucUart1_Receive_Data[4*i+11];
+                                                position[i]=(position[i]<<8)+g_ucUart1_Receive_Data[4*i+12];
+                                            }
+                                        }
+                                    }
+                                    else if(g_uiLth==14)
+                                    {
+                                        if((dibu_position-yemian_position)>adsorbtion_juli)
+                                        {
+                                            for(i=0;i<10;i++)
+                                            {
+                                                position[i]=yemian_position+(dibu_position-yemian_position)/9*i;
+                                                if(i==0)
+                                                {
+                                                    time[i]=adsorbtion_time1+2;
+                                                }
+                                                else if(i<4)
+                                                {    
+                                                    time[i]=time[i-1]+adsorbtion_time1+2;
+                                                }
+                                                else
+                                                {
+                                                    time[i]=time[i-1]+adsorbtion_time1;
+                                                }
+                                            }
+                                        }
+                                        else if((dibu_position-yemian_position)>100)
+                                        {
+                                            for(i=0;i<10;i++)
+                                            {
+                                                if(i<2)
+                                                {
+                                                    position[i]=yemian_position+(dibu_position-yemian_position)*i;
+                                                }
+                                                else
+                                                {
+                                                    position[i]=position[1];
+                                                }
+                                                if(i==0)
+                                                {
+                                                    time[i]=adsorbtion_time2+1;
+                                                }
+                                                else if(i<2)
+                                                {        
+                                                    time[i]=time[i-1]+adsorbtion_time2;
+                                                }
+                                                else
+                                                {
+                                                     time[i]=time[1];
+                                                }
+                                            }                                            
+                                        }
+                                        else
+                                        {
+                                            for(i=0;i<10;i++)
+                                            {
+                                                    position[i]=(dibu_position+yemian_position)/2;
+                                                    time[i]=adsorbtion_time3;                                                    
+                                            }
+                                        }
+                                    }   
+                                    Command_Status=  magnetic_adsorption;
+                                    step=1;     
+                                    g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;  
+                                }          
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;        
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
+                                RS1_Ack(g_uiFrmLth);                                    
+                            break;                                
+                            case cleaning  :
+                                if(Command_Status >0)
+                                {
+                                    Motor_Status=3;
+                                    g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] =1; 
+                                }
+                                else
+                                {
+                                    hunyun_position_start= g_ucUart1_Receive_Data[5];
+                                    hunyun_position_start = (hunyun_position_start<<8) + g_ucUart1_Receive_Data[6];
+                                    hunyun_position_start = (hunyun_position_start<<8) + g_ucUart1_Receive_Data[7];
+                                    hunyun_position_H  = g_ucUart1_Receive_Data[8];
+                                    hunyun_position_H = (hunyun_position_H<<8) + g_ucUart1_Receive_Data[9];   
+                                    hunyun_position_H = (hunyun_position_H<<8) + g_ucUart1_Receive_Data[10];                                      
+                                    hunyun_position_L= g_ucUart1_Receive_Data[11];
+                                    hunyun_position_L= (hunyun_position_L<<8) + g_ucUart1_Receive_Data[12];
+                                    hunyun_position_L= (hunyun_position_L<<8) + g_ucUart1_Receive_Data[13];                                    
+                                    hunyun_times=g_ucUart1_Receive_Data[16];
+                                    hunyun_times=(hunyun_times<<8) + g_ucUart1_Receive_Data[17];  
+                                    ulspeed=g_ucUart1_Receive_Data[14];
+                                    ulspeed=( ulspeed<<8) + g_ucUart1_Receive_Data[15];
+                                    Command_Status=  cleaning;
+                                    step=1; 
+                                    g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;   
+                                }
+                                g_uiFrmLth= HELLO_ASK_LTH-3;
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;                                        
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
+                                RS1_Ack(g_uiFrmLth);                                    
+                            break; 
+                            case set_time:
+                                u8_data1=g_ucUart1_Receive_Data[5];
+                                if(u8_data1<60)
+                                {
+                                    u8_data2=u8_data1%10;
+                                    u8_data3=(unsigned char)(u8_data1/10);
+                                    u8_data1= (u8_data3<<4)+u8_data2;
+                                    real_time_write(0x02,u8_data1);                    
+                                }
+                                u8_data1=g_ucUart1_Receive_Data[6];
+                                if(u8_data1<60)
+                                {
+                                    u8_data2=u8_data1%10;
+                                    u8_data3=(unsigned char)(u8_data1/10);
+                                    u8_data1= (u8_data3<<4)+u8_data2;
+                                    real_time_write(0x03,u8_data1);                  
+                                } 
+                                u8_data1=g_ucUart1_Receive_Data[7];
+                                if(u8_data1<24)
+                                {
+                                    u8_data2=u8_data1%10;
+                                    u8_data3=(unsigned char)(u8_data1/10);
+                                    u8_data1= (u8_data3<<4)+u8_data2;
+                                    real_time_write(0x04,u8_data1);                
+                                }
+                                u8_data1=g_ucUart1_Receive_Data[8];
+                                if(u8_data1<32&&u8_data1>0)
+                                {
+                                    u8_data2=u8_data1%10;
+                                    u8_data3=(unsigned char)(u8_data1/10);
+                                    u8_data1= (u8_data3<<4)+u8_data2;
+                                    real_time_write(0x05,u8_data1);               
+                                } 
+                                u8_data1=g_ucUart1_Receive_Data[9];
+                                if(u8_data1<7)
+                                {          
+                                    real_time_write(0x06,u8_data1);             
+                                }
+                                else if(u8_data1==7)
+                                {
+                                    u8_data1= 0;                           
+                                    real_time_write(0x06,u8_data1);                     
+                                }
+                                u8_data1=g_ucUart1_Receive_Data[10];
+                                if(u8_data1<13&&u8_data1>0)
+                                {
+                                    u8_data2=u8_data1%10;
+                                    u8_data3=(unsigned char)(u8_data1/10);
+                                    u8_data1= (u8_data3<<4)+u8_data2;                        
+                                    real_time_write(0x07,u8_data1);             
+                                } 
+                                u8_data1=g_ucUart1_Receive_Data[11]; 
+                                if(u8_data1<100&&u8_data1>0)
+                                {
+                                    u8_data2=u8_data1%10;
+                                    u8_data3= (unsigned char)(u8_data1/10);
+                                    u8_data1= (u8_data3<<4)+u8_data2;     
+                                    real_time_write(0x08,u8_data1);           
+                                }                                       
+                                g_uiFrmLth= HELLO_ASK_LTH-3;
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] = 0;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;   
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;                        
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
+                                RS1_Ack(g_uiFrmLth);       
+                             break;  
+                            case real_time:
+                                u8_data1=real_time_read(0x02);
+                                u8_data2=u8_data1>>7;  
+                                if(u8_data2==1)
+                                {
+                                    u8_data3=((u8_data1-128)>>4)*10+(u8_data1& 0x0f);  
+                                }
+                                else if(u8_data2==0)
+                                {
+                                     u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);  
+                                }
+                                g_ucUart1_Send_Data[6]=u8_data3;//sec
+                                g_ucUart1_Send_Data[5]=u8_data2;
+
+                                u8_data1=real_time_read(0x03);
+                                u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);  
+                                g_ucUart1_Send_Data[7]=u8_data3;//min
+
+                                u8_data1=real_time_read(0x04);
+                                u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);  
+                                g_ucUart1_Send_Data[8]=u8_data3;//hour                    
+
+                                u8_data1=real_time_read(0x05);
+                                u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);  
+                                g_ucUart1_Send_Data[9]=u8_data3;//date  
+
+                                u8_data1=real_time_read(0x06);
+                                if(u8_data1==0)
+                                {
+                                    u8_data3=7;
+                                }
+                                else
+                                {
+                                    u8_data3=u8_data1;  
+                                }
+                                g_ucUart1_Send_Data[10]=u8_data3;                  
+
+                                u8_data1=real_time_read(0x07);
+                                u8_data2=u8_data1>>7;  
+                                if(u8_data2==1)
+                                {
+                                    u8_data3=((u8_data1-128)>>4)*10+(u8_data1& 0x0f);  
+                                }
+                                else if(u8_data2==0)
+                                {
+                                     u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);  
+                                }
+                                g_ucUart1_Send_Data[11]=u8_data3;
+
+                                u8_data1=real_time_read(0x08);
+                                if(u8_data2==1)
+                                {
+                                    u16_data1=1900+(u8_data1>>4)*10+(u8_data1& 0x0f);  
+                                }
+                                else if(u8_data2==0)
+                                {
+                                     u16_data1=2000+(u8_data1>>4)*10+(u8_data1& 0x0f);  
+                                } 
+                                g_ucUart1_Send_Data[12] = (u16_data1  & 0xff00)>>8;
+                                g_ucUart1_Send_Data[13] =  u16_data1  & 0xff;
+                                g_uiFrmLth=16;
+                                g_ucUart1_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                                g_ucUart1_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                                g_ucUart1_Send_Data[FRAME_NO_INDEX] = 0;
+                                g_ucUart1_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                                g_ucUart1_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;   
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;                        
+                                g_ucUart1_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart1_Send_Data,g_uiFrmLth-1)&0xff;
+                                RS1_Ack(g_uiFrmLth);       
+                             break;   
+                             
+                             
+                            }
+             }
+            else
+            {
+
+            }        
+         }        
+    g_ucUART1_flag = 0;
+    g_uiUart1_No = 0;
+    g_ucHeaderFlag1 = 0;
+    memset(g_ucUart1_Receive_Data,0,g_uiLth*sizeof(unsigned char));
+    g_BUSY = 0;      
+    }
+    if(g_ucUART2_flag == 1)
+    {  
+        u16_data1=0;
+        Motor_Status = 0x00;
+        EE_STATUS=0;
+        if(1)
+        {                    
+            switch(g_ucCMD)
+            {
+                case HELLO:       
+                    g_uiFrmLth  = HELLO_ASK_LTH;
+                    CalculateSModelLine(g_uiReagentMotorPeriod2, ACC_pulse2, REAGENT_MOTOR_FREQMAX2, REAGENT_MOTOR_FREQMIN2, REAGENT_MOTOR_XFLEXIBLE2);//计算加减速曲线 
+                    g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                    g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                    g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                    g_ucUart2_Send_Data[FRAME_LTHH_INDEX]   = (g_uiFrmLth & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX]   = g_uiFrmLth & 0xff;      
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX+1] = (SoftVersion & 0xff0000)>>16;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX+2] = (SoftVersion & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX+3] = SoftVersion & 0xff;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart2_Send_Data,g_uiFrmLth-1);
+                    RS2_Ack(g_uiFrmLth);
+                break;
+                /*******************************/
+
+                /****************************************************/   
+                case MCU_RESET: 
+                    Reset_flag=1;
+                    g_uiFrmLth  = HELLO_ASK_LTH-3;
+                    g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                    g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                    g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                    g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;    
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart2_Send_Data,g_uiFrmLth-1);
+                    RS2_Ack(g_uiFrmLth);    
+                    Delay1ms(5);
+                    asm("Reset");
+                break;
+                /***************************************************/                    
+                case SET_IO:                    
+                    ucIOindex = g_ucUart2_Receive_Data[FRAME_LTHL_INDEX+1];
+                    ucIOstate =g_ucUart2_Receive_Data[FRAME_LTHL_INDEX+2]; 
+                    SetIO(ucIOindex,ucIOstate);
+                    g_uiFrmLth = SETIO_ASK_LTH;
+                    g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                    g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                    g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                    g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth & 0xff;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX+1] = ucIOstate;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart2_Send_Data,g_uiFrmLth-1);
+                    RS2_Ack(g_uiFrmLth);                         
+                break;
+                /********************************************0x05**********/                    
+                case GET_IO:                    
+                    ucIOindex = g_ucUart2_Receive_Data[5];
+                    Get_IOstate = Get_IO(ucIOindex);
+                    g_uiFrmLth = SETIO_ASK_LTH;
+                    g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                    g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                    g_ucUart2_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                    g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;//
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth & 0xff;//
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX+1] = Get_IOstate;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart2_Send_Data,g_uiFrmLth-1);
+                    RS2_Ack(g_uiFrmLth);        
+                break;
+                /***************************************/ 
+                case SET_Temperature:
+                    u8_data1=g_ucUart2_Receive_Data[7];
+                    u16_data1 = g_ucUart2_Receive_Data[5];
+                    u16_data1 = (u16_data1<<8) + g_ucUart2_Receive_Data[6]; 
+                    if(u8_data1<5)
+                    {
+                    set_Target_temp[u8_data1-1]=u16_data1;
+                    }                                                
+                    g_uiFrmLth = PWM_ASK_LTH;
+                    g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                    g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                    g_ucUart2_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                    g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX+1] = u8_data1;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart2_Send_Data,g_uiFrmLth-1);
+                    RS2_Ack(g_uiFrmLth);                          
+                break;
+                /************************************0x08***************/      
+                case READ_SET_Temperature:
+                    u8_data1=g_ucUart2_Receive_Data[5];
+                    if(u8_data1<5)
+                    {
+                        u16_data1=set_Target_temp[u8_data1-1];
+                    }      
+                    g_uiFrmLth = (SETIO_ASK_LTH + 1);
+                    g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                    g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                    g_ucUart2_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                    g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth & 0xff;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX+1] = ( u16_data1 & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX+2] =   u16_data1 & 0xff;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart2_Send_Data,g_uiFrmLth-1);
+                    RS2_Ack(g_uiFrmLth);                         
+                break;    
+                /*****************************0X09******************/      
+                case GET_Actual_Temperature:   
+                    u8_data1=g_ucUart2_Receive_Data[5];
+                    if(u8_data1<5)
+                    {
+                        u16_data1=Actual_temp[u8_data1-1];
+                    }                                            
+                    g_uiFrmLth = 9	;
+                    g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                    g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                    g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                    g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth & 0xff;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1 & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX+2] =  u16_data1 & 0xff;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart2_Send_Data,g_uiFrmLth-1);
+                    RS2_Ack(g_uiFrmLth);        
+                break;
+                /********************************0x10**************/      
+                case GET_TemperatureAD:                                            
+                    u8_data1=g_ucUart2_Receive_Data[5];
+                    if(u8_data1<5)
+                    {
+                        u16_data1=g_ulAD_Tempbuff[u8_data1-1];
+                    }                                     
+                    g_uiFrmLth = (SETIO_ASK_LTH + 1)	;
+                    g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                    g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                    g_ucUart2_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                    g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth & 0xff;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1  & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX+2] =  u16_data1  & 0xff;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart2_Send_Data,g_uiFrmLth-1);
+                    RS2_Ack(g_uiFrmLth);     
+                break;
+                /*********************************0xc0**************/  
+                case READ_EEPROM:
+                    uiEE_address = g_ucUart2_Receive_Data[FRAME_EEPROM_INDEX];//7
+                    uiEE_address = ((uiEE_address << 8) + g_ucUart2_Receive_Data[FRAME_EEPROM_INDEX+1]);//8
+                    Eeprom_Len = g_ucUart2_Receive_Data[FRAME_EEPROM_INDEX+2];//9
+                    Eeprom_Len = ((Eeprom_Len << 8) + g_ucUart2_Receive_Data[FRAME_EEPROM_INDEX+3]);//10
+                    if(Eeprom_Len>=50)
+                    {  Eeprom_Len=50;}      
+                    if((uiEE_address >= 0x00 )&&(uiEE_address <= 1048576))
+                    {
+                        EE_StrRead(uiEE_address,ucEE_buffer,Eeprom_Len);
+                        EE_STATUS = 0x00;		
+                        for( i=0;i<Eeprom_Len;i++)
+                        {   
+                            g_ucUart2_Send_Data[FRAME_LTHL_INDEX+1+i] = ucEE_buffer[i];
+                        }
+                    }
+                    g_uiFrmLth = (SETIO_ASK_LTH_EEPROM + Eeprom_Len);
+                    g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                    g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                    g_ucUart2_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                    g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth & 0xff;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = EE_STATUS;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1);
+                    RS2_Ack(g_uiFrmLth);                        
+                break;
+                /***************************写入EEPROM**********************0xd0**************/  
+                case WRITE_EEPROM:                   
+                    Eeprom_Len=g_ucUart2_Receive_Data[FRAME_LTHH_INDEX];
+                    Eeprom_Len=(Eeprom_Len<<8)+g_ucUart2_Receive_Data[FRAME_LTHL_INDEX];
+                    Eeprom_Len=Eeprom_Len-9;
+                    uiEE_address =  g_ucUart2_Receive_Data[FRAME_EEPROM_INDEX]; 
+                    uiEE_address = ((uiEE_address << 8) + g_ucUart2_Receive_Data[FRAME_EEPROM_INDEX+1]);
+                    if(Eeprom_Len>=50)
+                    {  Eeprom_Len=50;}   
+                    if((uiEE_address >= 0x00 )&&(uiEE_address <= 0x1048576))
+                    {
+                        for(i=0;i<Eeprom_Len;i++)
+                        {
+                            ucEE_buffer[i]=g_ucUart2_Receive_Data[FRAME_EEPROM_INDEX+2+i];
+                        }
+                        if(uiEE_address <= 1048576)
+                        {
+                            EE_StrWrite(uiEE_address,ucEE_buffer,Eeprom_Len);
+                            EE_STATUS = 0x00;
+                        }
+                        Read_Sys_EE();
+                        if(uiEE_address == 0X0500)
+                        {
+                            CalculateSModelLine(g_uiReagentMotorPeriod2, ACC_pulse2, REAGENT_MOTOR_FREQMAX2, REAGENT_MOTOR_FREQMIN2, REAGENT_MOTOR_XFLEXIBLE2);//计算加减速曲线
+                        }
+                    }
+                    g_uiFrmLth = SETIO_ASK_LTH_EEPROM	;
+                    g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                    g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                    g_ucUart2_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                    g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth ;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = EE_STATUS;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1);
+                    RS2_Ack(g_uiFrmLth);                                        
+                break;
+                /**************************************0x30**************/                    
+                case  MT_RESET:
+                    g_uiFrmLth  = HELLO_ASK_LTH-3;
+                    ucMOTOR_move_select =  g_ucUart2_Receive_Data[5];
+                    if(ucMOTOR_move_select == 1)               Motor1Home(Motor1.Back_Pulse,Motor1.Reset_Speed,Motor1.Reset_Speed);
+                    else if(ucMOTOR_move_select == 2)       Motor2Home(Motor2.Back_Pulse,Motor2.Reset_Speed,Motor2.Reset_Speed);
+                    else if(ucMOTOR_move_select == 3)       Motor3Home(Motor3.Back_Pulse,Motor3.Reset_Speed,Motor3.Reset_Speed);
+                    else if(ucMOTOR_move_select == 4)       Motor4Home(Motor4.Back_Pulse,Motor4.Reset_Speed,Motor4.Reset_Speed);                    
+//                    else   Motor_Status = 0x03;
+                    g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                    g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                    g_ucUart2_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                    g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = Motor_Status;                
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
+                    RS2_Ack(g_uiFrmLth);                                       
+                break;
+                /*************************************0x31**************/           
+                case  MT_FORWARD:
+                    g_uiFrmLth= HELLO_ASK_LTH-3;
+                    ucMOTOR_move_select =  g_ucUart2_Receive_Data[10]; 
+                    ulPulse = g_ucUart2_Receive_Data[5];
+                    ulPulse = (ulPulse<<8) + g_ucUart2_Receive_Data[6];
+                    ulPulse = (ulPulse<<8) + g_ucUart2_Receive_Data[7]; 
+                    u16_data1=g_ucUart2_Receive_Data[8];
+                    u16_data1=(u16_data1<<8)+g_ucUart2_Receive_Data[9];
+                    if  (ucMOTOR_move_select == 1)       
+                    { 
+
+                            Motor1.Moving_Speed=u16_data1;
+                            Motor1Move(ulPulse,!Motor1.Reset_Direction,Motor1.Moving_Speed);
+                            g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
+                     }
+                    else if(ucMOTOR_move_select == 2) 
+                    {    
+
+                            Motor2.Moving_Speed=u16_data1;
+                            Motor2Move(ulPulse,!Motor2.Reset_Direction,Motor2.Moving_Speed);
+                            g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
+                    }
+                    else if(ucMOTOR_move_select == 3)
+                    {
+
+                            Motor3.Moving_Speed=u16_data1;
+                            Motor3Move(ulPulse,!Motor3.Reset_Direction,Motor3.Moving_Speed);;
+                    }
+                    else if(ucMOTOR_move_select == 4)
+                    {
+
+                            Motor4.Moving_Speed=u16_data1;
+                            Motor4Move(ulPulse,!Motor4.Reset_Direction,Motor4.Moving_Speed);;
+                    }                    
+                    g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                    g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                    g_ucUart2_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                    g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = Motor_Status;               
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
+                    RS2_Ack(g_uiFrmLth);                                    
+                break;        
+                /*****************************************0x32**************/          
+                case  MT_REVERSAL:
+                    g_uiFrmLth= HELLO_ASK_LTH-3;
+                    ucMOTOR_move_select =  g_ucUart2_Receive_Data[10]; 
+                    ulPulse = g_ucUart2_Receive_Data[5];
+                    ulPulse = (ulPulse<<8) + g_ucUart2_Receive_Data[6];
+                    ulPulse = (ulPulse<<8) + g_ucUart2_Receive_Data[7]; 
+                    u16_data1=g_ucUart2_Receive_Data[8];
+                    u16_data1=(u16_data1<<8)+g_ucUart2_Receive_Data[9];                    
+                    if  (ucMOTOR_move_select == 1)       
+                    { 
+                            Motor1.Moving_Speed=u16_data1;
+                            Motor1Move(ulPulse,Motor1.Reset_Direction,Motor1.Moving_Speed);
+                            g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
+                    }
+                    else if(ucMOTOR_move_select == 2) 
+                    {    
+
+                            Motor2.Moving_Speed=u16_data1;
+                            Motor2Move(ulPulse,Motor2.Reset_Direction,Motor2.Moving_Speed);
+                            g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
+                    }
+                    else if(ucMOTOR_move_select == 3)
+                    {
+
+                            Motor3.Moving_Speed=u16_data1;
+                            Motor3Move(ulPulse,Motor3.Reset_Direction,Motor3.Moving_Speed);
+                            g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
+                    }
+                    else if(ucMOTOR_move_select == 4)
+                    {
+
+                            Motor4.Moving_Speed=u16_data1;
+                            Motor4Move(ulPulse,Motor4.Reset_Direction,Motor4.Moving_Speed);
+                            g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;
+                    }                    
+                    g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                    g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                    g_ucUart2_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                    g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;  
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = Motor_Status;  
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
+                    RS2_Ack(g_uiFrmLth);                                    
+                break;        
+                /************************************0x33**************/              
+                case  MT_MOVE_TO:
+                    g_uiFrmLth= HELLO_ASK_LTH-3;
+                    ucMOTOR_move_select =  g_ucUart2_Receive_Data[10]; 
+                    ulPulse = g_ucUart2_Receive_Data[5];                
+                    ulPulse = (ulPulse<<8) + g_ucUart2_Receive_Data[6]; 
+                    ulPulse  = (ulPulse<<8) + g_ucUart2_Receive_Data[7];
+                    u16_data1=g_ucUart2_Receive_Data[8];
+                    u16_data1=(u16_data1<<8)+g_ucUart2_Receive_Data[9];                        
+                    if     (ucMOTOR_move_select == 1) 
+                    {
+                            Motor1.Moving_Speed=u16_data1;
+                            Motor1MoveTo(ulPulse,Motor1.Moving_Speed);
+                    }
+                    else if(ucMOTOR_move_select == 2)
+                    {
+                            Motor2.Moving_Speed=u16_data1;
+                            Motor2MoveTo(ulPulse,Motor2.Moving_Speed);
+                    }
+                    else if(ucMOTOR_move_select == 3)      
+                    {
+                            Motor3.Moving_Speed=u16_data1;
+                            Motor3MoveTo(ulPulse,Motor3.Moving_Speed);
+                    }
+                    else if(ucMOTOR_move_select == 4)      
+                    {
+                            Motor4.Moving_Speed=u16_data1;
+                            Motor4MoveTo(ulPulse,Motor4.Moving_Speed);
+                    }                  
+                    g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                    g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                    g_ucUart2_Send_Data[FRAME_NO_INDEX] =  Device_ID;
+                    g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = Motor_Status;                
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
+                    RS2_Ack(g_uiFrmLth);                                     
+                break;                         
+                case GET_MOTOR_POSITION :
+                    u8_data1=g_ucUart2_Receive_Data[5];
+                    if(u8_data1<4)
+                    {
+                        switch(u8_data1)
+                        {
+                            case 1 : u16_data1=  g_tReagentMotorParam.ulXiPosition;            break;   
+                            case 2 : u16_data1= g_tReagentMotorParam.ulZiPosition;                    break; 
+                            case 3 : u16_data1=g_tReagentMotorParam.ulZ1iPosition;                     break;        
+                            case 4 : u16_data1=g_tReagentMotorParam.ul4iPosition;                     break;                                  
+                        }
+                    }                                     
+                    g_uiFrmLth = (SETIO_ASK_LTH + 1);
+                    g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                    g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                    g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                    g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX] =  g_uiFrmLth & 0xff;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1  & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX+2] =  u16_data1  & 0xff;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)CalculateCharSum(g_ucUart2_Send_Data,g_uiFrmLth-1);
+                    RS2_Ack(g_uiFrmLth);     
+                break;  
+                case GET_MOTOR_SPEED :
+                    u8_data1=g_ucUart2_Receive_Data[5];
+                    switch(u8_data1)
+                    {
+                        case 1 : u16_data1=g_tReagentMotorParam.uiXSpeed;            break;   
+                        case 2 : u16_data1=g_tReagentMotorParam.uiZSpeed;            break; 
+                        case 3 : u16_data1=g_tReagentMotorParam.uiZ1Speed;            break;  
+                        case 4 : u16_data1=g_tReagentMotorParam.ui4Speed;            break;                          
+                    }
+                    g_uiFrmLth = (SETIO_ASK_LTH + 1);
+                    g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                    g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                    g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                    g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;  
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX+1] = (u16_data1  & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX+2] =  u16_data1  & 0xff;
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0x00;                  
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
+                    RS2_Ack(g_uiFrmLth);                                    
+                break;    
+                case  ENTERING_THE_WAREHOUSE :
+                    g_uiFrmLth= HELLO_ASK_LTH-3; 
+                    Motor4Home(Motor4.Back_Pulse,Motor4.Reset_Speed,Motor4.Reset_Speed);                
+                    Motor2Home(Motor2.Back_Pulse,Motor2.Reset_Speed,Motor2.Reset_Speed);
+                    Motor3Home(Motor3.Back_Pulse,Motor3.Reset_Speed,Motor3.Reset_Speed);                 
+                    Motor1Home(Motor1.Back_Pulse,Motor1.Reset_Speed,Motor1.Reset_Speed);                  
+                    g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                    g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                    g_ucUart2_Send_Data[FRAME_NO_INDEX] = Device_ID;
+                    g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff; 
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = Motor_Status;     
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
+                    RS2_Ack(g_uiFrmLth);                                    
+                break;    
+                case OUT_THE_WAREHOUSE :                          
+                    g_uiFrmLth= HELLO_ASK_LTH-3;
+                    Motor4MoveTo(0,Ci_normal_speed);                    
+                    Motor3MoveTo(0,Ci_normal_speed);
+                    Motor2MoveTo(0,Z_normal_speed); 
+                    Motor1MoveTo(getting_out_position1,getting_out_speedX);
+                    g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                    g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                    g_ucUart2_Send_Data[FRAME_NO_INDEX] = ucMOTOR_move_select;
+                    g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;  
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = Motor_Status;                       
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
+                    RS2_Ack(g_uiFrmLth);                                    
+                break;   
+                case move_to_well :
+                    g_uiFrmLth= HELLO_ASK_LTH-3;
+                    u8_data1=g_ucUart2_Receive_Data[5];
+                    Motor2MoveTo(0,Z_normal_speed);    
+                    if(Motor_Status==0)
+                    {
+                        switch(u8_data1)
+                        {
+                            case 1 :                            
+                                    Motor1MoveTo(well_position1,X_normal_speed);     
+                            break;   
+                            case 2 : 
+                                    Motor1MoveTo(well_position2,X_normal_speed);        
+                            break;  
+                            case 3 : 
+                                    Motor1MoveTo(well_position3,X_normal_speed);       
+                            break;  
+                            case 4 : 
+                                    Motor1MoveTo(well_position4,X_normal_speed);       
+                            break;
+                            case 5 : 
+                                    Motor1MoveTo(well_position5,X_normal_speed);      
+                            break;
+                            case 6 : 
+                                    Motor1MoveTo(well_position6,X_normal_speed);        
+                            break;
+                           }
+                    }
+                    g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                    g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                    g_ucUart2_Send_Data[FRAME_NO_INDEX] = ucMOTOR_move_select;
+                    g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;   
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = Motor_Status;                        
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
+                    RS2_Ack(g_uiFrmLth);                                    
+                break;                         
+                case magnetic_sleeve_on :
+                                 
+                break;    
+                case magnetic_sleeve_off  :
+                                 
+                break;    
+                case magnetic_adsorption  :
+                                 
+                break;                                         
+                case qu_ci_zhu : 
+                                              
+                break;
+               case jie_he_qing_xi:
+                                                     
+                break;
+               case xi_tuo:
+                                                
+                break;                
+               case pause:
+                   if(Command_Status>0)
+                   {
+                       pause_flag=1;
+                       m_Command_Status=Command_Status;
+                       m_step=step;
+                       m_position_X=g_tReagentMotorParam.ulXiPosition;
+                       m_position_Z= g_tReagentMotorParam.ulZiPosition;
+                       m_position_Z1= g_tReagentMotorParam.ulZ1iPosition;
+                       m_count_S=count_S;
+                       m_liquid_volume=liquid_volume;
+                       m_xi_ci_spd=xi_ci_spd,
+                       m_hunyun_spd=hunyun_spd;
+                       m_hunyun_time=hunyun_time;
+                       m_xi_ci_time=xi_ci_time;
+                       Command_Status=0;
+                       step=0;
+                   }
+                   else
+                   {
+                       
+                   }   
+                     g_uiFrmLth= HELLO_ASK_LTH-3;
+                    g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                    g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                    g_ucUart2_Send_Data[FRAME_NO_INDEX] = 0;
+                    g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;   
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;                        
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
+                    RS2_Ack(g_uiFrmLth);       
+                 break;
+                case run_after_pause:
+                   if(Command_Status>0)
+                   {
+                       
+                   }
+                   else
+                   {
+                       if(pause_flag==1)
+                       {
+                           if(m_position_X==g_tReagentMotorParam.ulXiPosition)
+                           {
+                               
+                           }
+                           else
+                           {
+                               Motor2Home(Motor2.Back_Pulse,Motor2.Reset_Speed,Motor2.Reset_Speed);
+                               Motor1MoveTo(m_position_X,X_normal_speed);  
+                           }
+                           Motor2MoveTo(m_position_Z,Z_normal_speed);  
+                           Motor3MoveTo(m_position_Z1,Ci_normal_speed);  
+                           Command_Status=m_Command_Status;
+                           step=m_step;
+                           count_S=m_count_S;
+                           liquid_volume=m_liquid_volume;
+                           xi_ci_spd=m_xi_ci_spd,
+                           hunyun_spd=m_hunyun_spd;
+                           hunyun_time=m_hunyun_time;
+                           xi_ci_time=m_xi_ci_time;        
+                           pause_flag=0;
+                       }             
+                   }
+                     g_uiFrmLth= HELLO_ASK_LTH-3;
+                    g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                    g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                    g_ucUart2_Send_Data[FRAME_NO_INDEX] = 0;
+                    g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;   
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;                        
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
+                    RS2_Ack(g_uiFrmLth);       
+                 break; 
+                case set_time:
+                    u8_data1=g_ucUart2_Receive_Data[5];
+                    if(u8_data1<60)
+                    {
+                        u8_data2=u8_data1%10;
+                        u8_data3=(unsigned char)(u8_data1/10);
+                        u8_data1= (u8_data3<<4)+u8_data2;
+                        real_time_write(0x02,u8_data1);                   
+                    }
+                    u8_data1=g_ucUart2_Receive_Data[6];
+                    if(u8_data1<60)
+                    {
+                        u8_data2=u8_data1%10;
+                        u8_data3=(unsigned char)(u8_data1/10);
+                        u8_data1= (u8_data3<<4)+u8_data2;
+                        real_time_write(0x03,u8_data1);                   
+                    } 
+                    u8_data1=g_ucUart2_Receive_Data[7];
+                    if(u8_data1<24)
+                    {
+                        u8_data2=u8_data1%10;
+                        u8_data3=(unsigned char)(u8_data1/10);
+                        u8_data1= (u8_data3<<4)+u8_data2;
+                        real_time_write(0x04,u8_data1);               
+                    }
+                    u8_data1=g_ucUart2_Receive_Data[8];
+                    if(u8_data1<32&&u8_data1>0)
+                    {
+                        u8_data2=u8_data1%10;
+                        u8_data3=(unsigned char)(u8_data1/10);
+                        u8_data1= (u8_data3<<4)+u8_data2;
+                        real_time_write(0x05,u8_data1);               
+                    } 
+                    u8_data1=g_ucUart2_Receive_Data[9];
+                    if(u8_data1<7)
+                    {  
+                        real_time_write(0x06,u8_data1);            
+                    }
+                    else if(u8_data1==7)
+                    {
+                        u8_data1= 0;                         
+                        real_time_write(0x06,u8_data1);                      
+                    }
+                    u8_data1=g_ucUart2_Receive_Data[10];
+                    if(u8_data1<13&&u8_data1>0)
+                    {
+                        u8_data2=u8_data1%10;
+                        u8_data3=(unsigned char)(u8_data1/10);
+                        u8_data1= (u8_data3<<4)+u8_data2;                        
+                        real_time_write(0x07,u8_data1);             
+                    } 
+                    u8_data1=g_ucUart2_Receive_Data[11]; 
+                    if(u8_data1<100&&u8_data1>0)
+                    {
+                        u8_data2=u8_data1%10;
+                        u8_data3= (unsigned char)(u8_data1/10);
+                        u8_data1= (u8_data3<<4)+u8_data2;     
+                        real_time_write(0x08,u8_data1);            
+                    }                                       
+                    g_uiFrmLth= HELLO_ASK_LTH-3;
+                    g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                    g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                    g_ucUart2_Send_Data[FRAME_NO_INDEX] = 0;
+                    g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;   
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;                        
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
+                    RS2_Ack(g_uiFrmLth);       
+                 break;  
+                case real_time:
+                    u8_data1=real_time_read(0x02);
+                    u8_data2=u8_data1>>7;  
+                    if(u8_data2==1)
+                    {
+                        u8_data3=((u8_data1-128)>>4)*10+(u8_data1& 0x0f);  
+                    }
+                    else if(u8_data2==0)
+                    {
+                         u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);  
+                    }
+                    g_ucUart2_Send_Data[6]=u8_data3;
+                    g_ucUart2_Send_Data[5]=u8_data2;
+                    
+                    u8_data1=real_time_read(0x03);
+                    u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);  
+                    g_ucUart2_Send_Data[7]=u8_data3;
+                    
+                    u8_data1=real_time_read(0x04);
+                    u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);  
+                    g_ucUart2_Send_Data[8]=u8_data3;                 
+                    
+                    u8_data1=real_time_read(0x05);
+                    u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);  
+                    g_ucUart2_Send_Data[9]=u8_data3; 
+                    
+                    u8_data1=real_time_read(0x06);
+                    if(u8_data1==0)
+                    {
+                        u8_data3=7;
+                    }
+                    else
+                    {
+                        u8_data3=u8_data1;  
+                    }
+                    g_ucUart2_Send_Data[10]=u8_data3;                   
+                   
+                    u8_data1=real_time_read(0x07);
+                    u8_data2=u8_data1>>7;  
+                    if(u8_data2==1)
+                    {
+                        u8_data3=((u8_data1-128)>>4)*10+(u8_data1& 0x0f);  
+                    }
+                    else if(u8_data2==0)
+                    {
+                         u8_data3=(u8_data1>>4)*10+(u8_data1& 0x0f);  
+                    }
+                    g_ucUart2_Send_Data[11]=u8_data3;
+                    
+                    u8_data1=real_time_read(0x08);
+                    if(u8_data2==1)
+                    {
+                        u16_data1=1900+(u8_data1>>4)*10+(u8_data1& 0x0f);  
+                    }
+                    else if(u8_data2==0)
+                    {
+                         u16_data1=2000+(u8_data1>>4)*10+(u8_data1& 0x0f);  
+                    } 
+                    g_ucUart2_Send_Data[12] = (u16_data1  & 0xff00)>>8;
+                    g_ucUart2_Send_Data[13] =  u16_data1  & 0xff;
+                    g_uiFrmLth=16;
+                    g_ucUart2_Send_Data[FRAME_HEAD_INDEX] = FRAME_HEAD;
+                    g_ucUart2_Send_Data[FRAME_CMD_INDEX] = g_ucCMD|0X80;
+                    g_ucUart2_Send_Data[FRAME_NO_INDEX] = 0;
+                    g_ucUart2_Send_Data[FRAME_LTHH_INDEX] = (g_uiFrmLth & 0xff00)>>8;
+                    g_ucUart2_Send_Data[FRAME_LTHL_INDEX] = g_uiFrmLth & 0xff;   
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = 0;                        
+                    g_ucUart2_Send_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = CalculateSum(g_ucUart2_Send_Data,g_uiFrmLth-1)&0xff;
+                    RS2_Ack(g_uiFrmLth);       
+                 break;                  
+                }
+            }
+            else
+            {
+
+            }
+        g_ucUART2_flag=0;
+        g_uiUart2_No = 0;
+        g_ucHeaderFlag2 = 0;
+        memset(g_ucUart2_Receive_Data,0,g_uiLth2*sizeof(unsigned char));
+        g_BUSY2 = 0;
+        }
+}

+ 53 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/command.h

@@ -0,0 +1,53 @@
+#ifndef      command_H
+#define     command_H
+/*****************Ö¸ÁîÂë*******************/
+#define     HELLO	                             0x01
+#define     Reset_ID	                             0x02
+#define     Command_Execution_Status 0x03
+#define     MCU_RESET                             0xAB
+#define     SET_IO	                             0xAC
+#define     GET_IO	                             0x06
+#define     SET_Temperature                    0x04    
+#define     READ_SET_Temperature         0x22
+#define     GET_Actual_Temperature       0x05   
+#define     GET_TemperatureAD              0x21
+#define     GET_MOTOR_POSITION         0x07
+#define     GET_MOTOR_SPEED                   0x08
+#define     ENTERING_THE_WAREHOUSE   0x10
+#define     OUT_THE_WAREHOUSE             0xc0
+#define     move_to_well                           0xd0
+#define     magnetic_sleeve_on                0x13
+#define     magnetic_sleeve_off                0x14
+#define     magnetic_adsorption              0x15
+#define     cleaning                                    0x16
+#define     liang_gan                                  0x17
+#define     qu_ci_zhu                                  0x30
+#define     jie_he_qing_xi                           0x31
+#define     xi_tuo                                        0x32
+#define     pause                                        0x3A
+#define     run_after_pause                       0x3B
+#define     set_time                                    0x3C
+#define     real_time                                  0x3D
+#define     MT_RESET	                             0x09
+#define     MT_FORWARD                        0x0A
+#define     MT_REVERSAL	                   0x0B
+#define     MT_MOVE_TO                         0x0C
+#define     READ_EEPROM                       0x11
+#define     WRITE_EEPROM                     0x12
+#define     stop                                         0x18
+
+
+#define     CI_xici                                               0x3E
+#define     Z_dibu                                              0x3F
+#define     Z_volume                                         0x40
+
+
+extern unsigned long int  g_uliPulseValue,g_uliADValue,uliPmtFitValue,ulPulse;
+extern unsigned int          g_ulAD_Tempbuff[4],Actual_temp[4],ulspeed;
+extern unsigned int          Target_temp[4];
+extern unsigned char       cycle_index,Motor_Status,kongwei;
+extern unsigned int          DPMT;
+extern unsigned char       Command_Status;
+void UART_Command(void);
+
+#endif	

+ 0 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/defmplabxtrace.log


BIN
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/defmplabxtrace.log.inx


+ 674 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/main.c

@@ -0,0 +1,674 @@
+#include <p33FJ64MC204.h>
+#include <stdio.h>
+#include "main.h"
+#include "string.h"
+#include "EEPROM.h"
+#include "MOTOR.h"
+#include "UART.h"
+#include "Interrupt.h"
+#include "system.h"
+#include "PWM.h"
+#include "ADC.h"
+#include "IO.h"
+#include "delay.h"
+#include "Timer.h"
+#include "Instrument_EEPROM_Param.h"
+#include "command.h"
+#include "Temperature_Control.h"
+// DSPIC33FJ64MC204 Configuration Bit Settings
+
+// 'C' source line config statements
+
+// FBS
+#pragma config BWRP = WRPROTECT_OFF     // Boot Segment Write Protect (Boot Segment may be written)
+#pragma config BSS = NO_FLASH           // Boot Segment Program Flash Code Protection (No Boot program Flash segment)
+#pragma config RBS = NO_RAM             // Boot Segment RAM Protection (No Boot RAM)
+
+// FSS
+#pragma config SWRP = WRPROTECT_OFF     // Secure Segment Program Write Protect (Secure segment may be written)
+#pragma config SSS = NO_FLASH           // Secure Segment Program Flash Code Protection (No Secure Segment)
+#pragma config RSS = NO_RAM             // Secure Segment Data RAM Protection (No Secure RAM)
+
+// FGS
+#pragma config GWRP = OFF               // General Code Segment Write Protect (User program memory is not write-protected)
+#pragma config GSS = OFF                // General Segment Code Protection (User program memory is not code-protected)
+
+// FOSCSEL
+#pragma config FNOSC = FRC              // Oscillator Mode (Internal Fast RC (FRC))
+#pragma config IESO = ON                // Internal External Switch Over Mode (Start-up device with FRC, then automatically switch to user-selected oscillator source when ready)
+
+// FOSC
+#pragma config POSCMD = XT              // Primary Oscillator Source (XT Oscillator Mode)
+#pragma config OSCIOFNC = OFF           // OSC2 Pin Function (OSC2 pin has clock out function)
+#pragma config IOL1WAY = ON             // Peripheral Pin Select Configuration (Allow Only One Re-configuration)
+#pragma config FCKSM = CSECMD                 // Clock Switching and Monitor (Both Clock Switching and Fail-Safe Clock Monitor are disabled)
+
+// FWDT
+#pragma config WDTPOST = PS32768        // Watchdog Timer Postscaler (1:32,768)
+#pragma config WDTPRE = PR128           // WDT Prescaler (1:128)
+#pragma config WINDIS = OFF             // Watchdog Timer Window (Watchdog Timer in Non-Window mode)
+#pragma config FWDTEN = OFF             // Watchdog Timer Enable (Watchdog timer enabled/disabled by user software)
+
+// FPOR
+#pragma config FPWRT = PWR128           // POR Timer Value (128ms)
+#pragma config ALTI2C = OFF             // Alternate I2C  pins (I2C mapped to SDA1/SCL1 pins)
+#pragma config LPOL = OFF               // Motor Control PWM Low Side Polarity bit (PWM module low side output pins have active-low output polarity)
+#pragma config HPOL = OFF               // Motor Control PWM High Side Polarity bit (PWM module high side output pins have active-low output polarity)
+#pragma config PWMPIN = ON              // Motor Control PWM Module Pin Mode bit (PWM module pins controlled by PORT register at device Reset)
+
+// FICD
+#pragma config ICS = PGD1              // Comm Channel Select (Communicate on PGC3/EMUC3 and PGD3/EMUD3)
+#pragma config JTAGEN = OFF             // JTAG Port Enable (JTAG is Disabled)
+
+// #pragma config statements should precede project file includes.
+// Use project enums instead of #define for ON and OFF.
+#include <xc.h>
+extern unsigned char    Device_ID,Communication_Select,ucMOTOR_move_select;
+extern unsigned long             getting_out_position1;
+extern unsigned long    yemian_position,dibu_position,hunyun_position_start,hunyun_position_H,hunyun_position_L;
+extern unsigned int     well_position1,well_position2,well_position3,well_position4,well_position5,well_position6,step,ulspeed_cleaning,cleanning_times,adsorption_step,liang_gan_step;
+extern unsigned int     Z_position1,adsorbtion_position,take_on_position1,getting_out_speedX,take_on_position2,take_off_position1,take_off_position2,take_off_position3;
+extern unsigned int     hunyun_times,position[10];
+extern unsigned int     adsorbtion_times,adsorbtion_time1,adsorbtion_time2,adsorbtion_juli;
+extern unsigned int     Z_chu_ye_mian_spd,Z_ru_ye_mian_spd,Z_normal_speed,Z_take_on_speed;
+extern unsigned int     above_yemian_pulse;
+extern unsigned int     Ci_take_off_speed1,Ci_take_off_speed2,Ci_normal_speed,X_normal_speed;
+extern unsigned int     liquid_volume,xi_ci_time,xi_ci_spd,xi_ci_pulse,hunyun_time,hunyun_spd;
+extern unsigned char    number_well;
+unsigned int            hunyun_times1;
+extern unsigned int     ACC_pulse2;
+unsigned char           r_sec,r_min,r_hour,r_date,r_week_cen,r_month,r_year;
+unsigned char           sec,min,hour,date_real,week,cen,month,year;
+unsigned char           a1,a2,a3,a4,a5,a6,a7,a8;
+int main(void) 
+{   
+    InitOsc();
+    InitIO();
+    Read_Sys_EE();
+    InitPWM();   
+    InitUart1();
+    InitUart2();
+    InitADC();
+    Init_T1();
+    Init_T5();
+    Init_T4();
+    Powerkey=0;
+    CalculateSModelLine(g_uiReagentMotorPeriod, REAGENT_MOTOR_ACC, REAGENT_MOTOR_FREQMAX, REAGENT_MOTOR_FREQMIN, REAGENT_MOTOR_XFLEXIBLE);
+    CalculateSModelLine(g_uiReagentMotorPeriod2, ACC_pulse2, REAGENT_MOTOR_FREQMAX2, REAGENT_MOTOR_FREQMIN2, REAGENT_MOTOR_XFLEXIBLE2);
+    CalculateSModelLine(g_uiReagentMotorPeriod3, REAGENT_MOTOR_ACC3, REAGENT_MOTOR_FREQMAX3, REAGENT_MOTOR_FREQMIN3, REAGENT_MOTOR_XFLEXIBLE3);
+    CalculateSModelLine(g_uiReagentMotorPeriod4, REAGENT_MOTOR_ACC4, REAGENT_MOTOR_FREQMAX4, REAGENT_MOTOR_FREQMIN4, REAGENT_MOTOR_XFLEXIBLE4);    
+    if(Motor1.Limit_Pulse>200000)
+    {
+         Motor1.Limit_Pulse=200000;
+    }
+        if(Motor2.Limit_Pulse>100000)
+    {
+         Motor2.Limit_Pulse=100000;
+    }
+        if(Motor3.Limit_Pulse>260000)
+    {
+         Motor3.Limit_Pulse=260000;
+    }
+        if(Motor4.Limit_Pulse>260000)
+    {
+         Motor4.Limit_Pulse=260000;
+    }    
+        if(Motor1.Overshoot_Pulse>1000)
+    {
+         Motor1.Overshoot_Pulse=1000;
+    }
+        if(Motor2.Overshoot_Pulse>1000)
+    {
+         Motor2.Overshoot_Pulse=1000;
+    }
+        if(Motor3.Overshoot_Pulse>1000)
+    {
+         Motor3.Overshoot_Pulse=1000;
+    }
+        if(Motor4.Overshoot_Pulse>1000)
+    {
+         Motor4.Overshoot_Pulse=1000;
+    }    
+            if(Motor1.Back_Pulse>5000)
+    {
+         Motor1.Back_Pulse=5000;
+    }
+            if(Motor2.Back_Pulse>5000)
+    {
+         Motor2.Back_Pulse=5000;
+    }
+            if(Motor3.Back_Pulse>8000)
+    {
+         Motor3.Back_Pulse=8000;
+    }
+            if(Motor4.Back_Pulse>8000)
+    {
+         Motor4.Back_Pulse=8000;
+    }    
+    if(mortor_chushihua_flag==0)
+    {
+        Motor4Home(Motor4.Back_Pulse,Motor4.Reset_Speed,Motor4.Reset_Speed);    
+        Motor3Home(Motor3.Back_Pulse,Motor3.Reset_Speed,Motor3.Reset_Speed);
+        Motor2Home(Motor2.Back_Pulse,Motor2.Reset_Speed,Motor2.Reset_Speed);
+        Motor1Home(Motor1.Back_Pulse,Motor1.Reset_Speed,Motor1.Reset_Speed);
+    }
+    Powerkey=0;
+    Delay1ms(3000);
+    Powerkey=1;
+    FAN=1; 
+    while(1)
+    {            
+        if(Command_Status==0)
+        {
+            
+        }
+        else
+        { 
+            switch(Command_Status)
+            {
+                case MT_RESET:
+                        if(ucMOTOR_move_select == 1)            Motor1Home(Motor1.Back_Pulse,Motor1.Reset_Speed,Motor1.Reset_Speed);
+                        else if(ucMOTOR_move_select == 2)       Motor2Home(Motor2.Back_Pulse,Motor2.Reset_Speed,Motor2.Reset_Speed);
+                        else if(ucMOTOR_move_select == 3)       Motor3Home(Motor3.Back_Pulse,Motor3.Reset_Speed,Motor3.Reset_Speed);  
+                        else if(ucMOTOR_move_select == 4)       Motor4Home(Motor4.Back_Pulse,Motor4.Reset_Speed,Motor4.Reset_Speed);                          
+                        Command_Status=0;
+                    break;
+                case MT_FORWARD:
+                        if  (ucMOTOR_move_select == 1)       
+                        { 
+                                Motor1Move(ulPulse,!Motor1.Reset_Direction,ulspeed);
+                        }
+                        else if(ucMOTOR_move_select == 2) 
+                        {    
+                                Motor2Move(ulPulse,!Motor2.Reset_Direction,ulspeed); 
+                        }
+                        else if(ucMOTOR_move_select == 3)
+                        {
+                                Motor3Move(ulPulse,!Motor3.Reset_Direction,ulspeed);
+                        }
+                        else if(ucMOTOR_move_select == 4)
+                        {
+                                Motor4Move(ulPulse,!Motor4.Reset_Direction,ulspeed);
+                        }                        
+                          Command_Status=0;
+                    break;            
+                case MT_REVERSAL:
+                        if  (ucMOTOR_move_select == 1)       
+                        { 
+                                Motor1Move(ulPulse,Motor1.Reset_Direction,ulspeed);
+                        }
+                        else if(ucMOTOR_move_select == 2) 
+                        {    
+                                Motor2Move(ulPulse,Motor2.Reset_Direction,ulspeed); 
+                        }
+                        else if(ucMOTOR_move_select == 3)
+                        {
+                                Motor3Move(ulPulse,Motor3.Reset_Direction,ulspeed);
+                        }   
+                        else if(ucMOTOR_move_select == 4)
+                        {
+                                Motor4Move(ulPulse,Motor4.Reset_Direction,ulspeed);
+                        }                           
+                        Command_Status=0;
+                    break;            
+                case MT_MOVE_TO:
+                        if(ucMOTOR_move_select == 1) 
+                        {
+                            if(ulPulse<=Motor1.Limit_Pulse)
+                            {
+                                Motor1MoveTo(ulPulse,ulspeed);
+                            }
+                        }
+                        else if(ucMOTOR_move_select == 2)
+                        {
+                            if(ulPulse<=Motor2.Limit_Pulse)
+                            {
+                                Motor2MoveTo(ulPulse,ulspeed);
+                            }
+                        }
+                        else if(ucMOTOR_move_select == 3)      
+                        {
+                            if(ulPulse<=Motor3.Limit_Pulse)
+                            {
+                                Motor3MoveTo(ulPulse,ulspeed);
+                            }
+                        }   
+                        else if(ucMOTOR_move_select == 4)      
+                        {
+                            if(ulPulse<=Motor4.Limit_Pulse)
+                            {
+                                Motor4MoveTo(ulPulse,ulspeed);
+                            }
+                        }                           
+                        Command_Status=0;
+                    break;            
+                case ENTERING_THE_WAREHOUSE:
+                    Motor4MoveTo(0,Z_normal_speed);                          
+                    Motor2MoveTo(0,Z_normal_speed);      
+                    Motor3MoveTo(0,Ci_normal_speed);    
+                    Motor1MoveTo(0,getting_out_speedX);
+                    Command_Status=0;
+                    break;            
+                case OUT_THE_WAREHOUSE :
+                    Motor4MoveTo(0,Z_normal_speed);                          
+                    Motor2MoveTo(0,Z_normal_speed);      
+                    Motor3MoveTo(0,Ci_normal_speed);      
+                    if(getting_out_position1<=Motor1.Limit_Pulse)
+                    {
+                        Motor1MoveTo(getting_out_position1,getting_out_speedX);
+                    }  
+                    Command_Status=0;
+                    break; 
+                case move_to_well:
+                    Motor2MoveTo(0,Z_normal_speed);            
+                    if(g_tReagentMotorParam.ulZiPosition<Z_limitation1&&g_tReagentMotorParam.ulZ1iPosition<Z1_limitation1)
+                    {
+                        switch(kongwei)
+                        {
+                            case 1 :                            
+                                if(well_position1<=Motor1.Limit_Pulse)
+                                {
+                                    Motor1MoveTo(well_position1,X_normal_speed);
+                                }          
+                            break;   
+                            case 2 : 
+                                if(well_position2<=Motor1.Limit_Pulse)
+                                {
+                                    Motor1MoveTo(well_position2,X_normal_speed);
+                                }          
+                            break;  
+                            case 3 : 
+                                if(well_position3<=Motor1.Limit_Pulse)
+                                {
+                                    Motor1MoveTo(well_position3,X_normal_speed);
+                                }          
+                            break;  
+                            case 4 : 
+                                if(well_position4<=Motor1.Limit_Pulse)
+                                {
+                                    Motor1MoveTo(well_position4,X_normal_speed);
+                                }          
+                            break;
+                            case 5 : 
+                                if(well_position5<=Motor1.Limit_Pulse)
+                                {
+                                    Motor1MoveTo(well_position5,X_normal_speed);
+                                }          
+                            break;
+                            case 6 : 
+                                if(well_position6<=Motor1.Limit_Pulse)
+                                {
+                                    Motor1MoveTo(well_position6,X_normal_speed);
+                                }          
+                            break;
+                            }
+                    } 
+                    Command_Status=0;                    
+                    break;                
+                case magnetic_sleeve_on:  
+                    switch(step)
+                    {
+                        case 1:
+                            Motor3MoveTo(0,Ci_normal_speed);
+                            step++;
+                            break;
+                        case 2:
+                            Motor2MoveTo(take_on_position1,Z_normal_speed);
+                            Motor3MoveTo(adsorbtion_position/2,Ci_normal_speed);
+                            step++;
+                            break;
+                        case 3:
+                            Motor2MoveTo(take_on_position2,Z_take_on_speed);
+                            Motor3MoveTo(0,Ci_normal_speed);
+                            step++;
+                            break;
+                        case 4:
+                            Motor2MoveTo(0,Z_normal_speed);
+                            step++;
+                            break;
+                        case 5:
+                            Motor2Home(Motor2.Back_Pulse,Motor2.Reset_Speed,Motor2.Reset_Speed); 
+                            Command_Status=0;  
+                            step=0;
+                            break;                            
+                    }
+                    break;   
+                case magnetic_sleeve_off  :
+                   switch(step)
+                    {
+                        case 1:
+                            Motor3Home(Motor3.Back_Pulse,Motor3.Reset_Speed,Motor3.Reset_Speed);
+                            step++;
+                            break;
+                        case 2:
+                            Motor2MoveTo(take_off_position1,Z_normal_speed);
+                            step++;
+                            break;
+                        case 3:
+                            Motor3MoveTo(take_off_position2,Ci_take_off_speed1);
+                            step++;
+                            break;
+                        case 4:
+                            Motor3MoveTo(take_off_position3,Ci_take_off_speed2);
+                            step++;
+                            break;
+                        case 5:
+                            Motor3MoveTo(3000,Ci_normal_speed);
+                            step++;
+                            break; 
+                        case 6:
+                            Motor3Home(Motor3.Back_Pulse,Motor3.Reset_Speed,Motor3.Reset_Speed);
+                            step++;
+                            break;
+                        case 7:
+                            Motor3MoveTo(take_off_position2,Ci_take_off_speed1);
+                            step++;
+                            break;
+                        case 8:
+                            Motor3MoveTo(take_off_position3,Ci_take_off_speed2);
+                            step++;
+                            break;
+                        case 9:
+                            Motor3MoveTo(3000,Ci_normal_speed);
+                            Motor3Home(Motor3.Back_Pulse,Motor3.Reset_Speed,Motor3.Reset_Speed);                            
+                            step++;
+                            break;    
+                       case 10:
+                            Motor2MoveTo(0,Z_normal_speed);   
+                            step++;
+                            break; 
+                       case 11:
+                            Motor2Home(Motor2.Back_Pulse,Motor2.Reset_Speed,Motor2.Reset_Speed);                 
+                            Command_Status=0;  
+                            step=0;
+                            break;                               
+                    }                   
+                    break;                 
+                case magnetic_adsorption  :
+                   switch(step)
+                    {
+                        case 1:
+                            Motor3Home(Motor3.Back_Pulse,Motor3.Reset_Speed,Motor3.Reset_Speed);
+                            Motor3MoveTo(adsorbtion_position,Ci_normal_speed);
+                            step++;
+                            break;
+                        case 2:
+                            Motor2MoveTo(yemian_position-above_yemian_pulse,Z_normal_speed);
+                            step++;
+                            break;
+                         case 3:
+                            Motor2MoveTo(yemian_position,Z_ru_ye_mian_spd);
+                            adsorption_step=0;                           
+                            step++;
+                            break;                                     
+                        case 4:
+                            switch (adsorption_step)
+                            {
+                                case 1:
+                                    Motor2MoveTo(position[0],ulspeed);
+                                    break;
+                                case 2:
+                                    Motor2MoveTo(position[1],ulspeed);
+                                    break;
+                                case 3:
+                                    Motor2MoveTo(position[2],ulspeed);
+                                    break;
+                                case 4:
+                                    Motor2MoveTo(position[3],ulspeed);
+                                    break;
+                                case 5:
+                                    Motor2MoveTo(position[4],ulspeed);
+                                    break;
+                                case 6:
+                                    Motor2MoveTo(position[5],ulspeed);
+                                    break;
+                               case 7:
+                                    Motor2MoveTo(position[6],ulspeed);
+                                    break;
+                                case 8:
+                                    Motor2MoveTo(position[7],ulspeed);
+                                    break;
+                                case 9:
+                                    Motor2MoveTo(position[8],ulspeed);
+                                    break;
+                                case 10:
+                                    Motor2MoveTo(position[9],ulspeed);
+                                    break;                           
+                            }
+                            break;
+                       case 5:
+                            Motor2MoveTo(dibu_position,ulspeed);
+                            step++;
+                            break;
+                       case 6:
+                            Motor2MoveTo(yemian_position-above_yemian_pulse,Z_chu_ye_mian_spd);
+                            step++;
+                            break;
+                        case 7:
+                            Motor2MoveTo(0,Z_normal_speed);   
+                            step++;
+                            break; 
+                        case 8:
+                            Command_Status=0;  
+                            step=0;
+                            break;                                   
+                    }                     
+                    break;                                
+                case cleaning:
+                   switch(step)
+                    {
+                        case 1:
+                            Motor2MoveTo(hunyun_position_start-above_yemian_pulse,Z_normal_speed);
+                            step++;
+                            break;
+                        case 2:
+//                         Motor2MoveTo(hunyun_position_start,Z_ru_ye_mian_spd);
+                            step++;
+                            break;
+                         case 3:
+                            Motor3MoveTo(0,Ci_normal_speed);
+                            Motor3Home(Motor3.Back_Pulse,Motor3.Reset_Speed,Motor3.Reset_Speed);
+                            step++;
+                            hunyun_times1=0;
+                            break;                                     
+                        case 4:
+                            if(hunyun_times1<hunyun_times)
+                            {
+                                 Motor2MoveTo(hunyun_position_H,ulspeed);
+                                 Motor2MoveTo(hunyun_position_L,ulspeed);
+                                 hunyun_times1++;
+                            }
+                            else
+                            {
+                                hunyun_times1=0;
+                                step++;  
+                            }
+                            break;
+                       case 5:
+                            Motor2MoveTo(hunyun_position_start-above_yemian_pulse,Z_chu_ye_mian_spd);
+                            step++;
+                            break;
+                        case 6:
+                            Command_Status=0;  
+                            step=0;
+                            break;                                   
+                    }                      
+                    break;   
+               case qu_ci_zhu:
+                   switch(step)
+                   {
+                       case 1:
+                           Motor2Home(Motor2.Back_Pulse,Motor2.Reset_Speed,Motor2.Reset_Speed); 
+                           switch(number_well)
+                           {
+                               case 1:
+                                   Motor1MoveTo(well_position1,X_normal_speed);
+                                   break;
+                               case 2:
+                                   Motor1MoveTo(well_position2,X_normal_speed); 
+                                   break;
+                               case 3:
+                                   Motor1MoveTo(well_position3,X_normal_speed);
+                                   break;
+                               case 4:
+                                   Motor1MoveTo(well_position4,X_normal_speed);
+                                   break;
+                               case 5:
+                                   Motor1MoveTo(well_position5,X_normal_speed);
+                                   break;
+                               case 6:
+                                   Motor1MoveTo(well_position6,X_normal_speed);
+                                   break;
+                           }
+                          step++;
+                         break;
+                   case 2:
+                       Move_to_by_volume(liquid_volume+100,Z_normal_speed);
+                      Motor3Home(Motor3.Back_Pulse,Motor3.Reset_Speed,Motor3.Reset_Speed);
+                      Motor3MoveTo(adsorbtion_position,Ci_normal_speed);
+                       step++;
+                       break;
+                   case 3:
+                       Move_to_by_volume(liquid_volume,Z_ru_ye_mian_spd);
+                       step++;
+                       break;
+                   case 4:
+                       Move_to_by_volume(10,xi_ci_spd);
+                       break;   
+                   case 5:
+                       Move_to_by_volume(liquid_volume+125,Z_chu_ye_mian_spd);
+                       step++;
+                       break;
+                   case 6:
+                        Motor2MoveTo(0,Z_normal_speed);
+                        Command_Status=0;  
+                        step=0;
+                        break;
+                   }
+                   break;
+               case jie_he_qing_xi:
+                   switch(step)
+                   {
+                       case 1:
+                       Motor2Home(Motor2.Back_Pulse,Motor2.Reset_Speed,Motor2.Reset_Speed); 
+                       switch(number_well)
+                       {
+                           case 1:
+                               Motor1MoveTo(well_position1,X_normal_speed);
+                               break;
+                           case 2:
+                               Motor1MoveTo(well_position2,X_normal_speed); 
+                               break;
+                           case 3:
+                               Motor1MoveTo(well_position3,X_normal_speed);
+                               break;
+                           case 4:
+                               Motor1MoveTo(well_position4,X_normal_speed);
+                               break;
+                           case 5:
+                               Motor1MoveTo(well_position5,X_normal_speed);
+                               break;
+                           case 6:
+                               Motor1MoveTo(well_position6,X_normal_speed);
+                               break;
+                       }
+                      step++;                           
+                       break;
+                       case 2:
+                        Move_to_by_volume(liquid_volume+200,Z_normal_speed);         
+                        Motor3MoveTo(0,Ci_normal_speed);
+                        Motor3Home(Motor3.Back_Pulse,Motor3.Reset_Speed,Motor3.Reset_Speed);
+                        step++;
+                        break;
+                      case 3:
+                          Move_to_by_volume(20,hunyun_spd);
+                           step++;
+                           break;
+                       case 4:
+                          Move_to_by_volume(liquid_volume+200,hunyun_spd);
+                          Move_to_by_volume(20,hunyun_spd);
+                          break;
+                       case 5:
+                          Move_to_by_volume(liquid_volume,Z_chu_ye_mian_spd);
+                          Motor3Home(Motor3.Back_Pulse,Motor3.Reset_Speed,Motor3.Reset_Speed);
+                          Motor3MoveTo(adsorbtion_position,Ci_normal_speed);
+                           step++;
+                          break;
+                       case 6:
+
+                          Move_to_by_volume(10,xi_ci_spd);
+                          break;
+                       case 7:
+                          Move_to_by_volume(liquid_volume+200,Z_chu_ye_mian_spd);
+                          Motor2MoveTo(0,Z_normal_speed);
+                          Command_Status=0;  
+                          step=0; 
+                          break;
+                   } 
+                   break;
+                case xi_tuo:
+                   switch(step)
+                   {
+                       case 1:
+                       Motor2Home(Motor2.Back_Pulse,Motor2.Reset_Speed,Motor2.Reset_Speed); 
+                       switch(number_well)
+                       {
+                           case 1:
+                               Motor1MoveTo(well_position1,X_normal_speed);
+                               break;
+                           case 2:
+                               Motor1MoveTo(well_position2,X_normal_speed); 
+                               break;
+                           case 3:
+                               Motor1MoveTo(well_position3,X_normal_speed);
+                               break;
+                           case 4:
+                               Motor1MoveTo(well_position4,X_normal_speed);
+                               break;
+                           case 5:
+                               Motor1MoveTo(well_position5,X_normal_speed);
+                               break;
+                           case 6:
+                               Motor1MoveTo(well_position6,X_normal_speed);
+                               break;
+                       }
+                      step++;                           
+                       break;
+                       case 2:
+                        Move_to_by_volume(liquid_volume+250,Z_normal_speed);         
+                        Motor3MoveTo(0,Ci_normal_speed);
+                        Motor3Home(Motor3.Back_Pulse,Motor3.Reset_Speed,Motor3.Reset_Speed);
+                        step++;
+                       break;
+                      case 3:
+                          Move_to_by_volume(20,hunyun_spd);
+                           step++;
+                        break;   
+                       case 4:
+                          Move_to_by_volume(liquid_volume+250,hunyun_spd);
+                          Move_to_by_volume(20,hunyun_spd);
+                        break;
+                       case 5:
+                          Move_to_by_volume(liquid_volume,Z_chu_ye_mian_spd); 
+                          Motor3Home(Motor3.Back_Pulse,Motor3.Reset_Speed,Motor3.Reset_Speed);
+                          Motor3MoveTo(adsorbtion_position,Ci_normal_speed);               
+                          step++;
+                        break;  
+                       case 6:
+                          Move_to_by_volume(10,xi_ci_spd);
+                        break;  
+                       case 7:
+                          Move_to_by_volume(liquid_volume+250,Z_chu_ye_mian_spd);
+                          Motor2MoveTo(0,Z_normal_speed);
+                          Command_Status=0;  
+                          step=0;
+                          break;
+                   } 
+                   break;                                                
+            }
+            
+        }
+        UART_Command(); 
+    }
+    return 0;
+}

+ 5 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/main.h

@@ -0,0 +1,5 @@
+#ifndef MAIN_H
+#define	MAIN_H
+
+#endif	/* MOTOR_H */
+

+ 309 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/Makefile-default.mk

@@ -0,0 +1,309 @@
+#
+# Generated Makefile - do not edit!
+#
+# Edit the Makefile in the project folder instead (../Makefile). Each target
+# has a -pre and a -post target defined where you can add customized code.
+#
+# This makefile implements configuration specific macros and targets.
+
+
+# Include project Makefile
+ifeq "${IGNORE_LOCAL}" "TRUE"
+# do not include local makefile. User is passing all local related variables already
+else
+include Makefile
+# Include makefile containing local settings
+ifeq "$(wildcard nbproject/Makefile-local-default.mk)" "nbproject/Makefile-local-default.mk"
+include nbproject/Makefile-local-default.mk
+endif
+endif
+
+# Environment
+MKDIR=gnumkdir -p
+RM=rm -f 
+MV=mv 
+CP=cp 
+
+# Macros
+CND_CONF=default
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+IMAGE_TYPE=debug
+OUTPUT_SUFFIX=elf
+DEBUGGABLE_SUFFIX=elf
+FINAL_IMAGE=${DISTDIR}/WZYXHT_V1.12507260002.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
+else
+IMAGE_TYPE=production
+OUTPUT_SUFFIX=hex
+DEBUGGABLE_SUFFIX=elf
+FINAL_IMAGE=${DISTDIR}/WZYXHT_V1.12507260002.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
+endif
+
+ifeq ($(COMPARE_BUILD), true)
+COMPARISON_BUILD=-mafrlcsj
+else
+COMPARISON_BUILD=
+endif
+
+# Object Directory
+OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE}
+
+# Distribution Directory
+DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE}
+
+# Source Files Quoted if spaced
+SOURCEFILES_QUOTED_IF_SPACED=main.c ADC.c command.c Delay.c EEPROM.c Instrument_EEPROM_Param.c Interrupt.c IO.c Motor.c PWM.c system.c Temperature_Control.c Timer.c Uart.c
+
+# Object Files Quoted if spaced
+OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/main.o ${OBJECTDIR}/ADC.o ${OBJECTDIR}/command.o ${OBJECTDIR}/Delay.o ${OBJECTDIR}/EEPROM.o ${OBJECTDIR}/Instrument_EEPROM_Param.o ${OBJECTDIR}/Interrupt.o ${OBJECTDIR}/IO.o ${OBJECTDIR}/Motor.o ${OBJECTDIR}/PWM.o ${OBJECTDIR}/system.o ${OBJECTDIR}/Temperature_Control.o ${OBJECTDIR}/Timer.o ${OBJECTDIR}/Uart.o
+POSSIBLE_DEPFILES=${OBJECTDIR}/main.o.d ${OBJECTDIR}/ADC.o.d ${OBJECTDIR}/command.o.d ${OBJECTDIR}/Delay.o.d ${OBJECTDIR}/EEPROM.o.d ${OBJECTDIR}/Instrument_EEPROM_Param.o.d ${OBJECTDIR}/Interrupt.o.d ${OBJECTDIR}/IO.o.d ${OBJECTDIR}/Motor.o.d ${OBJECTDIR}/PWM.o.d ${OBJECTDIR}/system.o.d ${OBJECTDIR}/Temperature_Control.o.d ${OBJECTDIR}/Timer.o.d ${OBJECTDIR}/Uart.o.d
+
+# Object Files
+OBJECTFILES=${OBJECTDIR}/main.o ${OBJECTDIR}/ADC.o ${OBJECTDIR}/command.o ${OBJECTDIR}/Delay.o ${OBJECTDIR}/EEPROM.o ${OBJECTDIR}/Instrument_EEPROM_Param.o ${OBJECTDIR}/Interrupt.o ${OBJECTDIR}/IO.o ${OBJECTDIR}/Motor.o ${OBJECTDIR}/PWM.o ${OBJECTDIR}/system.o ${OBJECTDIR}/Temperature_Control.o ${OBJECTDIR}/Timer.o ${OBJECTDIR}/Uart.o
+
+# Source Files
+SOURCEFILES=main.c ADC.c command.c Delay.c EEPROM.c Instrument_EEPROM_Param.c Interrupt.c IO.c Motor.c PWM.c system.c Temperature_Control.c Timer.c Uart.c
+
+
+
+CFLAGS=
+ASFLAGS=
+LDLIBSOPTIONS=
+
+############# Tool locations ##########################################
+# If you copy a project from one host to another, the path where the  #
+# compiler is installed may be different.                             #
+# If you open this project with MPLAB X in the new host, this         #
+# makefile will be regenerated and the paths will be corrected.       #
+#######################################################################
+# fixDeps replaces a bunch of sed/cat/printf statements that slow down the build
+FIXDEPS=fixDeps
+
+.build-conf:  ${BUILD_SUBPROJECTS}
+ifneq ($(INFORMATION_MESSAGE), )
+	@echo $(INFORMATION_MESSAGE)
+endif
+	${MAKE}  -f nbproject/Makefile-default.mk ${DISTDIR}/WZYXHT_V1.12507260002.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
+
+MP_PROCESSOR_OPTION=33FJ64MC204
+MP_LINKER_FILE_OPTION=,--script=p33FJ64MC204.gld
+# ------------------------------------------------------------------------------------
+# Rules for buildStep: compile
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+${OBJECTDIR}/main.o: main.c  .generated_files/flags/default/36435cc9f9630a870ef9d02e9b4a5b612d88c342 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/main.o.d 
+	@${RM} ${OBJECTDIR}/main.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  main.c  -o ${OBJECTDIR}/main.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/main.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1    -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/ADC.o: ADC.c  .generated_files/flags/default/22d00054b0e941c887aa706505fc21e2f8358e9a .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/ADC.o.d 
+	@${RM} ${OBJECTDIR}/ADC.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  ADC.c  -o ${OBJECTDIR}/ADC.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/ADC.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1    -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/command.o: command.c  .generated_files/flags/default/9d65c18a712065d6e7eb31356ef3928904bacaeb .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/command.o.d 
+	@${RM} ${OBJECTDIR}/command.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  command.c  -o ${OBJECTDIR}/command.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/command.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1    -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/Delay.o: Delay.c  .generated_files/flags/default/9bf06658ffae01b8a83ac850380fcf75dae5a59 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/Delay.o.d 
+	@${RM} ${OBJECTDIR}/Delay.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  Delay.c  -o ${OBJECTDIR}/Delay.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/Delay.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1    -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/EEPROM.o: EEPROM.c  .generated_files/flags/default/73a946b07caafdbb7abc1625e5d155818648ea91 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/EEPROM.o.d 
+	@${RM} ${OBJECTDIR}/EEPROM.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  EEPROM.c  -o ${OBJECTDIR}/EEPROM.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/EEPROM.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1    -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/Instrument_EEPROM_Param.o: Instrument_EEPROM_Param.c  .generated_files/flags/default/a9edb79f62df5c7e54b3ab05e43bbfbc45afbed6 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/Instrument_EEPROM_Param.o.d 
+	@${RM} ${OBJECTDIR}/Instrument_EEPROM_Param.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  Instrument_EEPROM_Param.c  -o ${OBJECTDIR}/Instrument_EEPROM_Param.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/Instrument_EEPROM_Param.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1    -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/Interrupt.o: Interrupt.c  .generated_files/flags/default/2ac247f6c2b7e8212e0e9c8d90847d7b5f00a84 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/Interrupt.o.d 
+	@${RM} ${OBJECTDIR}/Interrupt.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  Interrupt.c  -o ${OBJECTDIR}/Interrupt.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/Interrupt.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1    -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/IO.o: IO.c  .generated_files/flags/default/5bb5800628d3f70de6b47074d7d662bfeb62c82d .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/IO.o.d 
+	@${RM} ${OBJECTDIR}/IO.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  IO.c  -o ${OBJECTDIR}/IO.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/IO.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1    -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/Motor.o: Motor.c  .generated_files/flags/default/26b43c698350744390d08f373f8bd8560f5d2c2c .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/Motor.o.d 
+	@${RM} ${OBJECTDIR}/Motor.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  Motor.c  -o ${OBJECTDIR}/Motor.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/Motor.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1    -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/PWM.o: PWM.c  .generated_files/flags/default/3eccf8c9b89f90967344a715df18517fafc3a9f5 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/PWM.o.d 
+	@${RM} ${OBJECTDIR}/PWM.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  PWM.c  -o ${OBJECTDIR}/PWM.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/PWM.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1    -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/system.o: system.c  .generated_files/flags/default/8e00794b88ca9ae2f8df32ff793ae67e41ae479f .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/system.o.d 
+	@${RM} ${OBJECTDIR}/system.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  system.c  -o ${OBJECTDIR}/system.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/system.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1    -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/Temperature_Control.o: Temperature_Control.c  .generated_files/flags/default/703f2599d0aa79431a7ffbff53a487e82ee0facc .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/Temperature_Control.o.d 
+	@${RM} ${OBJECTDIR}/Temperature_Control.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  Temperature_Control.c  -o ${OBJECTDIR}/Temperature_Control.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/Temperature_Control.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1    -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/Timer.o: Timer.c  .generated_files/flags/default/e93a069211a91c72bbb11822c5fea95864d05b91 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/Timer.o.d 
+	@${RM} ${OBJECTDIR}/Timer.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  Timer.c  -o ${OBJECTDIR}/Timer.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/Timer.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1    -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/Uart.o: Uart.c  .generated_files/flags/default/3da18ce1c015015655f4b202ddc887539ec500fd .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/Uart.o.d 
+	@${RM} ${OBJECTDIR}/Uart.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  Uart.c  -o ${OBJECTDIR}/Uart.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/Uart.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1    -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+else
+${OBJECTDIR}/main.o: main.c  .generated_files/flags/default/d4f6048a3d3c12c469a46c5f7b35c8ec49d1fe30 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/main.o.d 
+	@${RM} ${OBJECTDIR}/main.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  main.c  -o ${OBJECTDIR}/main.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/main.o.d"        -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/ADC.o: ADC.c  .generated_files/flags/default/22057ccff77115b2fc5505041dac5b287868351f .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/ADC.o.d 
+	@${RM} ${OBJECTDIR}/ADC.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  ADC.c  -o ${OBJECTDIR}/ADC.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/ADC.o.d"        -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/command.o: command.c  .generated_files/flags/default/2ff6886b41b0cf2b6f4cbc37f9179f909d242751 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/command.o.d 
+	@${RM} ${OBJECTDIR}/command.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  command.c  -o ${OBJECTDIR}/command.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/command.o.d"        -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/Delay.o: Delay.c  .generated_files/flags/default/6ec39116cc1113dd71c95f8b6bf26e16c59ca840 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/Delay.o.d 
+	@${RM} ${OBJECTDIR}/Delay.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  Delay.c  -o ${OBJECTDIR}/Delay.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/Delay.o.d"        -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/EEPROM.o: EEPROM.c  .generated_files/flags/default/684d8c696179608ad9ac6f7387076f4c030f263a .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/EEPROM.o.d 
+	@${RM} ${OBJECTDIR}/EEPROM.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  EEPROM.c  -o ${OBJECTDIR}/EEPROM.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/EEPROM.o.d"        -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/Instrument_EEPROM_Param.o: Instrument_EEPROM_Param.c  .generated_files/flags/default/fb1b7c3f1471b3b8c9f5175f6816073dbe0d51a8 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/Instrument_EEPROM_Param.o.d 
+	@${RM} ${OBJECTDIR}/Instrument_EEPROM_Param.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  Instrument_EEPROM_Param.c  -o ${OBJECTDIR}/Instrument_EEPROM_Param.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/Instrument_EEPROM_Param.o.d"        -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/Interrupt.o: Interrupt.c  .generated_files/flags/default/5305913b7ffbb4f685f85debc78b08c93c406b98 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/Interrupt.o.d 
+	@${RM} ${OBJECTDIR}/Interrupt.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  Interrupt.c  -o ${OBJECTDIR}/Interrupt.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/Interrupt.o.d"        -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/IO.o: IO.c  .generated_files/flags/default/9594b61679c8ad47424ba5853e3abf6fa25ce0a5 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/IO.o.d 
+	@${RM} ${OBJECTDIR}/IO.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  IO.c  -o ${OBJECTDIR}/IO.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/IO.o.d"        -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/Motor.o: Motor.c  .generated_files/flags/default/39bf790a3435af6cb375ddbcf8a6bbf56ef1a908 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/Motor.o.d 
+	@${RM} ${OBJECTDIR}/Motor.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  Motor.c  -o ${OBJECTDIR}/Motor.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/Motor.o.d"        -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/PWM.o: PWM.c  .generated_files/flags/default/1bcf8f21bcf5e0b91160032ab346138a6d9b643c .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/PWM.o.d 
+	@${RM} ${OBJECTDIR}/PWM.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  PWM.c  -o ${OBJECTDIR}/PWM.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/PWM.o.d"        -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/system.o: system.c  .generated_files/flags/default/43f505c4f709a5410e1542b227d5eb01da64915a .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/system.o.d 
+	@${RM} ${OBJECTDIR}/system.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  system.c  -o ${OBJECTDIR}/system.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/system.o.d"        -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/Temperature_Control.o: Temperature_Control.c  .generated_files/flags/default/df611787dae058846d64f0502ec6b3012090ca5e .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/Temperature_Control.o.d 
+	@${RM} ${OBJECTDIR}/Temperature_Control.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  Temperature_Control.c  -o ${OBJECTDIR}/Temperature_Control.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/Temperature_Control.o.d"        -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/Timer.o: Timer.c  .generated_files/flags/default/82c4ed328f5dee4945937f8f219f08ea2a69d3d4 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/Timer.o.d 
+	@${RM} ${OBJECTDIR}/Timer.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  Timer.c  -o ${OBJECTDIR}/Timer.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/Timer.o.d"        -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/Uart.o: Uart.c  .generated_files/flags/default/189f6e9b856da5593a56c84ed4aa2027669df70c .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}" 
+	@${RM} ${OBJECTDIR}/Uart.o.d 
+	@${RM} ${OBJECTDIR}/Uart.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  Uart.c  -o ${OBJECTDIR}/Uart.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/Uart.o.d"        -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+endif
+
+# ------------------------------------------------------------------------------------
+# Rules for buildStep: assemble
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+else
+endif
+
+# ------------------------------------------------------------------------------------
+# Rules for buildStep: assemblePreproc
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+else
+endif
+
+# ------------------------------------------------------------------------------------
+# Rules for buildStep: link
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+${DISTDIR}/WZYXHT_V1.12507260002.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES}  nbproject/Makefile-${CND_CONF}.mk    
+	@${MKDIR} ${DISTDIR} 
+	${MP_CC} $(MP_EXTRA_LD_PRE)  -o ${DISTDIR}/WZYXHT_V1.12507260002.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}  ${OBJECTFILES_QUOTED_IF_SPACED}      -mcpu=$(MP_PROCESSOR_OPTION)        -D__DEBUG=__DEBUG -D__MPLAB_DEBUGGER_PK3=1  -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)   -mreserve=data@0x800:0x81F -mreserve=data@0x820:0x821 -mreserve=data@0x822:0x823 -mreserve=data@0x824:0x825 -mreserve=data@0x826:0x84F   -Wl,,,--defsym=__MPLAB_BUILD=1,--defsym=__MPLAB_DEBUG=1,--defsym=__DEBUG=1,-D__DEBUG=__DEBUG,--defsym=__MPLAB_DEBUGGER_PK3=1,$(MP_LINKER_FILE_OPTION),--stack=16,--check-sections,--data-init,--pack-data,--handles,--isr,--no-gc-sections,--fill-upper=0,--stackguard=16,--no-force-link,--smart-io,-Map="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map",--report-mem,--memorysummary,${DISTDIR}/memoryfile.xml$(MP_EXTRA_LD_POST)  
+	
+else
+${DISTDIR}/WZYXHT_V1.12507260002.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES}  nbproject/Makefile-${CND_CONF}.mk   
+	@${MKDIR} ${DISTDIR} 
+	${MP_CC} $(MP_EXTRA_LD_PRE)  -o ${DISTDIR}/WZYXHT_V1.12507260002.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX}  ${OBJECTFILES_QUOTED_IF_SPACED}      -mcpu=$(MP_PROCESSOR_OPTION)        -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -Wl,,,--defsym=__MPLAB_BUILD=1,$(MP_LINKER_FILE_OPTION),--stack=16,--check-sections,--data-init,--pack-data,--handles,--isr,--no-gc-sections,--fill-upper=0,--stackguard=16,--no-force-link,--smart-io,-Map="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map",--report-mem,--memorysummary,${DISTDIR}/memoryfile.xml$(MP_EXTRA_LD_POST)  
+	${MP_CC_DIR}\\xc16-bin2hex ${DISTDIR}/WZYXHT_V1.12507260002.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} -a  -omf=elf   
+	
+endif
+
+
+# Subprojects
+.build-subprojects:
+
+
+# Subprojects
+.clean-subprojects:
+
+# Clean Targets
+.clean-conf: ${CLEAN_SUBPROJECTS}
+	${RM} -r ${OBJECTDIR}
+	${RM} -r ${DISTDIR}
+
+# Enable dependency checking
+.dep.inc: .depcheck-impl
+
+DEPFILES=$(wildcard ${POSSIBLE_DEPFILES})
+ifneq (${DEPFILES},)
+include ${DEPFILES}
+endif

+ 13 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/Makefile-genesis.properties

@@ -0,0 +1,13 @@
+#
+#Mon Aug 04 13:25:12 CST 2025
+default.languagetoolchain.version=2.10
+default.Pack.dfplocation=
+conf.ids=default
+default.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc16\\v2.10\\bin
+host.id=1lj1-c7wd-qs
+configurations-xml=ed15cc36d40c270060cb3e593bb16a1c
+default.com-microchip-mplab-mdbcore-PICKit3Tool-PICkit3DbgToolManager.md5=50072f33d27b72924000ca2dca4b7622
+com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=e62346c0c0ecee2637e613b49cb7b7fa
+proj.dir=F\:\\library\\source\\WZYXHT_V1.12507260002.X\\WZYXHT_V1.12507260002.X
+host.platform=windows
+default.com-microchip-mplab-nbide-toolchain-xc16-XC16LanguageToolchain.md5=07f7da95e66d00aa4668de5175f752c5

+ 69 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/Makefile-impl.mk

@@ -0,0 +1,69 @@
+#
+# Generated Makefile - do not edit!
+#
+# Edit the Makefile in the project folder instead (../Makefile). Each target
+# has a pre- and a post- target defined where you can add customization code.
+#
+# This makefile implements macros and targets common to all configurations.
+#
+# NOCDDL
+
+
+# Building and Cleaning subprojects are done by default, but can be controlled with the SUB
+# macro. If SUB=no, subprojects will not be built or cleaned. The following macro
+# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf
+# and .clean-reqprojects-conf unless SUB has the value 'no'
+SUB_no=NO
+SUBPROJECTS=${SUB_${SUB}}
+BUILD_SUBPROJECTS_=.build-subprojects
+BUILD_SUBPROJECTS_NO=
+BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}}
+CLEAN_SUBPROJECTS_=.clean-subprojects
+CLEAN_SUBPROJECTS_NO=
+CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}}
+
+
+# Project Name
+PROJECTNAME=WZYXHT_V1.12507260002.X
+
+# Active Configuration
+DEFAULTCONF=default
+CONF=${DEFAULTCONF}
+
+# All Configurations
+ALLCONFS=default 
+
+
+# build
+.build-impl: .build-pre
+	${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-conf
+
+
+# clean
+.clean-impl: .clean-pre
+	${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .clean-conf
+
+# clobber
+.clobber-impl: .clobber-pre .depcheck-impl
+	    ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default clean
+
+
+
+# all
+.all-impl: .all-pre .depcheck-impl
+	    ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default build
+
+
+
+# dependency checking support
+.depcheck-impl:
+#	@echo "# This code depends on make tool being used" >.dep.inc
+#	@if [ -n "${MAKE_VERSION}" ]; then \
+#	    echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \
+#	    echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \
+#	    echo "include \$${DEPFILES}" >>.dep.inc; \
+#	    echo "endif" >>.dep.inc; \
+#	else \
+#	    echo ".KEEP_STATE:" >>.dep.inc; \
+#	    echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \
+#	fi

+ 36 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/Makefile-local-default.mk

@@ -0,0 +1,36 @@
+#
+# Generated Makefile - do not edit!
+#
+#
+# This file contains information about the location of compilers and other tools.
+# If you commmit this file into your revision control server, you will be able to 
+# to checkout the project and build it from the command line with make. However,
+# if more than one person works on the same project, then this file might show
+# conflicts since different users are bound to have compilers in different places.
+# In that case you might choose to not commit this file and let MPLAB X recreate this file
+# for each user. The disadvantage of not commiting this file is that you must run MPLAB X at
+# least once so the file gets created and the project can be built. Finally, you can also
+# avoid using this file at all if you are only building from the command line with make.
+# You can invoke make with the values of the macros:
+# $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ...  
+#
+SHELL=cmd.exe
+PATH_TO_IDE_BIN=C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/
+# Adding MPLAB X bin directory to path.
+PATH:=C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/:$(PATH)
+# Path to java used to run MPLAB X when this makefile was created
+MP_JAVA_PATH="C:\Program Files\Microchip\MPLABX\v6.15\sys\java\zulu8.64.0.19-ca-fx-jre8.0.345-win_x64/bin/"
+OS_CURRENT="$(shell uname -s)"
+MP_CC="C:\Program Files\Microchip\xc16\v2.10\bin\xc16-gcc.exe"
+# MP_CPPC is not defined
+# MP_BC is not defined
+MP_AS="C:\Program Files\Microchip\xc16\v2.10\bin\xc16-as.exe"
+MP_LD="C:\Program Files\Microchip\xc16\v2.10\bin\xc16-ld.exe"
+MP_AR="C:\Program Files\Microchip\xc16\v2.10\bin\xc16-ar.exe"
+DEP_GEN=${MP_JAVA_PATH}java -jar "C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar"
+MP_CC_DIR="C:\Program Files\Microchip\xc16\v2.10\bin"
+# MP_CPPC_DIR is not defined
+# MP_BC_DIR is not defined
+MP_AS_DIR="C:\Program Files\Microchip\xc16\v2.10\bin"
+MP_LD_DIR="C:\Program Files\Microchip\xc16\v2.10\bin"
+MP_AR_DIR="C:\Program Files\Microchip\xc16\v2.10\bin"

+ 10 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/Makefile-variables.mk

@@ -0,0 +1,10 @@
+#
+# Generated - do not edit!
+#
+# NOCDDL
+#
+CND_BASEDIR=`pwd`
+# default configuration
+CND_ARTIFACT_DIR_default=dist/default/production
+CND_ARTIFACT_NAME_default=WZYXHT_V1.12507260002.X.production.hex
+CND_ARTIFACT_PATH_default=dist/default/production/WZYXHT_V1.12507260002.X.production.hex

+ 73 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/Package-default.bash

@@ -0,0 +1,73 @@
+#!/bin/bash -x
+
+#
+# Generated - do not edit!
+#
+
+# Macros
+TOP=`pwd`
+CND_CONF=default
+CND_DISTDIR=dist
+TMPDIR=build/${CND_CONF}/${IMAGE_TYPE}/tmp-packaging
+TMPDIRNAME=tmp-packaging
+OUTPUT_PATH=dist/${CND_CONF}/${IMAGE_TYPE}/WZYXHT_V1.02412310001.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
+OUTPUT_BASENAME=WZYXHT_V1.02412310001.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
+PACKAGE_TOP_DIR=wzyxhtv1.02412310001.x/
+
+# Functions
+function checkReturnCode
+{
+    rc=$?
+    if [ $rc != 0 ]
+    then
+        exit $rc
+    fi
+}
+function makeDirectory
+# $1 directory path
+# $2 permission (optional)
+{
+    mkdir -p "$1"
+    checkReturnCode
+    if [ "$2" != "" ]
+    then
+      chmod $2 "$1"
+      checkReturnCode
+    fi
+}
+function copyFileToTmpDir
+# $1 from-file path
+# $2 to-file path
+# $3 permission
+{
+    cp "$1" "$2"
+    checkReturnCode
+    if [ "$3" != "" ]
+    then
+        chmod $3 "$2"
+        checkReturnCode
+    fi
+}
+
+# Setup
+cd "${TOP}"
+mkdir -p ${CND_DISTDIR}/${CND_CONF}/package
+rm -rf ${TMPDIR}
+mkdir -p ${TMPDIR}
+
+# Copy files and create directories and links
+cd "${TOP}"
+makeDirectory ${TMPDIR}/wzyxhtv1.02412310001.x/bin
+copyFileToTmpDir "${OUTPUT_PATH}" "${TMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755
+
+
+# Generate tar file
+cd "${TOP}"
+rm -f ${CND_DISTDIR}/${CND_CONF}/package/wzyxhtv1.02412310001.x.tar
+cd ${TMPDIR}
+tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/package/wzyxhtv1.02412310001.x.tar *
+checkReturnCode
+
+# Cleanup
+cd "${TOP}"
+rm -rf ${TMPDIR}

+ 361 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/configurations.xml

@@ -0,0 +1,361 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configurationDescriptor version="65">
+  <logicalFolder name="root" displayName="root" projectFiles="true">
+    <logicalFolder name="HeaderFiles"
+                   displayName="Header Files"
+                   projectFiles="true">
+      <itemPath>ADC.h</itemPath>
+      <itemPath>command.h</itemPath>
+      <itemPath>Delay.h</itemPath>
+      <itemPath>EEPROM.h</itemPath>
+      <itemPath>Instrument_EEPROM_Param.h</itemPath>
+      <itemPath>Interrupt.h</itemPath>
+      <itemPath>IO.h</itemPath>
+      <itemPath>main.h</itemPath>
+      <itemPath>Motor.h</itemPath>
+      <itemPath>PWM.h</itemPath>
+      <itemPath>system.h</itemPath>
+      <itemPath>Temperature_Control.h</itemPath>
+      <itemPath>Timer.h</itemPath>
+      <itemPath>Uart.h</itemPath>
+    </logicalFolder>
+    <logicalFolder name="LinkerScript"
+                   displayName="Linker Files"
+                   projectFiles="true">
+    </logicalFolder>
+    <logicalFolder name="SourceFiles"
+                   displayName="Source Files"
+                   projectFiles="true">
+      <itemPath>main.c</itemPath>
+      <itemPath>ADC.c</itemPath>
+      <itemPath>command.c</itemPath>
+      <itemPath>Delay.c</itemPath>
+      <itemPath>EEPROM.c</itemPath>
+      <itemPath>Instrument_EEPROM_Param.c</itemPath>
+      <itemPath>Interrupt.c</itemPath>
+      <itemPath>IO.c</itemPath>
+      <itemPath>Motor.c</itemPath>
+      <itemPath>PWM.c</itemPath>
+      <itemPath>system.c</itemPath>
+      <itemPath>Temperature_Control.c</itemPath>
+      <itemPath>Timer.c</itemPath>
+      <itemPath>Uart.c</itemPath>
+      <itemPath>readme.txt</itemPath>
+    </logicalFolder>
+    <logicalFolder name="ExternalFiles"
+                   displayName="Important Files"
+                   projectFiles="false">
+      <itemPath>Makefile</itemPath>
+    </logicalFolder>
+  </logicalFolder>
+  <sourceRootList>
+    <Elem>.</Elem>
+  </sourceRootList>
+  <projectmakefile>Makefile</projectmakefile>
+  <confs>
+    <conf name="default" type="2">
+      <toolsSet>
+        <developmentServer>localhost</developmentServer>
+        <targetDevice>dsPIC33FJ64MC204</targetDevice>
+        <targetHeader></targetHeader>
+        <targetPluginBoard></targetPluginBoard>
+        <platformTool>PICkit3PlatformTool</platformTool>
+        <languageToolchain>XC16</languageToolchain>
+        <languageToolchainVersion>2.10</languageToolchainVersion>
+        <platform>3</platform>
+      </toolsSet>
+      <packs>
+        <pack name="dsPIC33F-GP-MC_DFP" vendor="Microchip" version="1.0.6"/>
+      </packs>
+      <ScriptingSettings>
+      </ScriptingSettings>
+      <compileType>
+        <linkerTool>
+          <linkerLibItems>
+          </linkerLibItems>
+        </linkerTool>
+        <archiverTool>
+        </archiverTool>
+        <loading>
+          <useAlternateLoadableFile>false</useAlternateLoadableFile>
+          <parseOnProdLoad>false</parseOnProdLoad>
+          <alternateLoadableFile></alternateLoadableFile>
+        </loading>
+        <subordinates>
+        </subordinates>
+      </compileType>
+      <makeCustomizationType>
+        <makeCustomizationPreStepEnabled>false</makeCustomizationPreStepEnabled>
+        <makeUseCleanTarget>false</makeUseCleanTarget>
+        <makeCustomizationPreStep></makeCustomizationPreStep>
+        <makeCustomizationPostStepEnabled>false</makeCustomizationPostStepEnabled>
+        <makeCustomizationPostStep></makeCustomizationPostStep>
+        <makeCustomizationPutChecksumInUserID>false</makeCustomizationPutChecksumInUserID>
+        <makeCustomizationEnableLongLines>false</makeCustomizationEnableLongLines>
+        <makeCustomizationNormalizeHexFile>false</makeCustomizationNormalizeHexFile>
+      </makeCustomizationType>
+      <C30>
+        <property key="code-model" value="default"/>
+        <property key="const-model" value="default"/>
+        <property key="data-model" value="default"/>
+        <property key="disable-instruction-scheduling" value="false"/>
+        <property key="enable-all-warnings" value="true"/>
+        <property key="enable-ansi-std" value="false"/>
+        <property key="enable-ansi-warnings" value="false"/>
+        <property key="enable-fatal-warnings" value="false"/>
+        <property key="enable-large-arrays" value="false"/>
+        <property key="enable-omit-frame-pointer" value="false"/>
+        <property key="enable-procedural-abstraction" value="false"/>
+        <property key="enable-short-double" value="false"/>
+        <property key="enable-symbols" value="true"/>
+        <property key="enable-unroll-loops" value="false"/>
+        <property key="extra-include-directories" value=""/>
+        <property key="isolate-each-function" value="false"/>
+        <property key="keep-inline" value="false"/>
+        <property key="oXC16gcc-align-arr" value="false"/>
+        <property key="oXC16gcc-cnsts-mauxflash" value="false"/>
+        <property key="oXC16gcc-data-sects" value="false"/>
+        <property key="oXC16gcc-errata" value=""/>
+        <property key="oXC16gcc-fillupper" value=""/>
+        <property key="oXC16gcc-large-aggregate" value="false"/>
+        <property key="oXC16gcc-mauxflash" value="false"/>
+        <property key="oXC16gcc-mpa-lvl" value=""/>
+        <property key="oXC16gcc-name-text-sec" value=""/>
+        <property key="oXC16gcc-near-chars" value="false"/>
+        <property key="oXC16gcc-no-isr-warn" value="false"/>
+        <property key="oXC16gcc-sfr-warn" value="false"/>
+        <property key="oXC16gcc-smar-io-lvl" value="1"/>
+        <property key="oXC16gcc-smart-io-fmt" value=""/>
+        <property key="optimization-level" value="0"/>
+        <property key="post-instruction-scheduling" value="default"/>
+        <property key="pre-instruction-scheduling" value="default"/>
+        <property key="preprocessor-macros" value=""/>
+        <property key="scalar-model" value="default"/>
+        <property key="use-cci" value="false"/>
+        <property key="use-iar" value="false"/>
+      </C30>
+      <C30-AR>
+        <property key="additional-options-chop-files" value="false"/>
+      </C30-AR>
+      <C30-AS>
+        <property key="assembler-symbols" value=""/>
+        <property key="expand-macros" value="false"/>
+        <property key="extra-include-directories-for-assembler" value=""/>
+        <property key="extra-include-directories-for-preprocessor" value=""/>
+        <property key="false-conditionals" value="false"/>
+        <property key="keep-locals" value="false"/>
+        <property key="list-assembly" value="false"/>
+        <property key="list-section-info" value="false"/>
+        <property key="list-source" value="false"/>
+        <property key="list-symbols" value="false"/>
+        <property key="oXC16asm-extra-opts" value=""/>
+        <property key="oXC16asm-list-to-file" value="false"/>
+        <property key="omit-debug-dirs" value="false"/>
+        <property key="omit-forms" value="false"/>
+        <property key="preprocessor-macros" value=""/>
+        <property key="relax" value="false"/>
+        <property key="warning-level" value="emit-warnings"/>
+      </C30-AS>
+      <C30-CO>
+        <property key="coverage-enable" value=""/>
+        <property key="stack-guidance" value="false"/>
+      </C30-CO>
+      <C30-LD>
+        <property key="additional-options-use-response-files" value="false"/>
+        <property key="boot-eeprom" value="no_eeprom"/>
+        <property key="boot-flash" value="no_flash"/>
+        <property key="boot-ram" value="no_ram"/>
+        <property key="boot-write-protect" value="no_write_protect"/>
+        <property key="enable-check-sections" value="false"/>
+        <property key="enable-data-init" value="true"/>
+        <property key="enable-default-isr" value="true"/>
+        <property key="enable-handles" value="true"/>
+        <property key="enable-pack-data" value="true"/>
+        <property key="extra-lib-directories" value=""/>
+        <property key="fill-flash-options-addr" value=""/>
+        <property key="fill-flash-options-const" value=""/>
+        <property key="fill-flash-options-how" value="0"/>
+        <property key="fill-flash-options-inc-const" value="1"/>
+        <property key="fill-flash-options-increment" value=""/>
+        <property key="fill-flash-options-seq" value=""/>
+        <property key="fill-flash-options-what" value="0"/>
+        <property key="general-code-protect" value="no_code_protect"/>
+        <property key="general-write-protect" value="no_write_protect"/>
+        <property key="generate-cross-reference-file" value="false"/>
+        <property key="heap-size" value=""/>
+        <property key="input-libraries" value=""/>
+        <property key="linker-stack" value="true"/>
+        <property key="linker-symbols" value=""/>
+        <property key="map-file" value="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map"/>
+        <property key="no-ivt" value="false"/>
+        <property key="oXC16ld-extra-opts" value=""/>
+        <property key="oXC16ld-fill-upper" value="0"/>
+        <property key="oXC16ld-force-link" value="false"/>
+        <property key="oXC16ld-no-smart-io" value="false"/>
+        <property key="oXC16ld-nostdlib" value="false"/>
+        <property key="oXC16ld-stackguard" value="16"/>
+        <property key="preprocessor-macros" value=""/>
+        <property key="remove-unused-sections" value="false"/>
+        <property key="report-memory-usage" value="true"/>
+        <property key="secure-eeprom" value="no_eeprom"/>
+        <property key="secure-flash" value="no_flash"/>
+        <property key="secure-ram" value="no_ram"/>
+        <property key="secure-write-protect" value="no_write_protect"/>
+        <property key="stack-size" value="16"/>
+        <property key="symbol-stripping" value=""/>
+        <property key="trace-symbols" value=""/>
+        <property key="warn-section-align" value="false"/>
+      </C30-LD>
+      <C30Global>
+        <property key="common-include-directories" value=""/>
+        <property key="dual-boot-partition" value="0"/>
+        <property key="fast-math" value="false"/>
+        <property key="generic-16-bit" value="false"/>
+        <property key="legacy-libc" value="true"/>
+        <property key="mpreserve-all" value="false"/>
+        <property key="oXC16glb-macros" value=""/>
+        <property key="output-file-format" value="elf"/>
+        <property key="preserve-all" value="false"/>
+        <property key="preserve-file" value=""/>
+        <property key="relaxed-math" value="false"/>
+        <property key="save-temps" value="false"/>
+      </C30Global>
+      <PICkit3PlatformTool>
+        <property key="ADC 1" value="true"/>
+        <property key="AutoSelectMemRanges" value="auto"/>
+        <property key="CRC" value="true"/>
+        <property key="DUAL COMPARATOR" value="true"/>
+        <property key="I2C1" value="true"/>
+        <property key="INPUT CAPTURE 1" value="true"/>
+        <property key="INPUT CAPTURE 2" value="true"/>
+        <property key="INPUT CAPTURE 7" value="true"/>
+        <property key="INPUT CAPTURE 8" value="true"/>
+        <property key="OUTPUT COMPARE 1" value="true"/>
+        <property key="OUTPUT COMPARE 2" value="true"/>
+        <property key="OUTPUT COMPARE 3" value="true"/>
+        <property key="OUTPUT COMPARE 8" value="true"/>
+        <property key="PARALLEL MASTER/SLAVE PORT" value="true"/>
+        <property key="PWM 1" value="true"/>
+        <property key="PWM 2" value="true"/>
+        <property key="REAL TIME CLOCK AND CALENDAR" value="true"/>
+        <property key="SPI 1" value="true"/>
+        <property key="SPI 2" value="true"/>
+        <property key="TIMER1" value="true"/>
+        <property key="TIMER2" value="true"/>
+        <property key="TIMER3" value="true"/>
+        <property key="TIMER4" value="true"/>
+        <property key="TIMER5" value="true"/>
+        <property key="ToolFirmwareFilePath"
+                  value="Press to browse for a specific firmware version"/>
+        <property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>
+        <property key="UART 1" value="true"/>
+        <property key="UART 2" value="true"/>
+        <property key="debugoptions.useswbreakpoints" value="false"/>
+        <property key="firmware.download.all" value="false"/>
+        <property key="hwtoolclock.frcindebug" value="false"/>
+        <property key="memories.aux" value="false"/>
+        <property key="memories.bootflash" value="true"/>
+        <property key="memories.configurationmemory" value="true"/>
+        <property key="memories.configurationmemory2" value="true"/>
+        <property key="memories.dataflash" value="true"/>
+        <property key="memories.eeprom" value="true"/>
+        <property key="memories.flashdata" value="true"/>
+        <property key="memories.id" value="true"/>
+        <property key="memories.instruction.ram" value="true"/>
+        <property key="memories.instruction.ram.ranges"
+                  value="${memories.instruction.ram.ranges}"/>
+        <property key="memories.programmemory" value="true"/>
+        <property key="memories.programmemory.ranges" value="0-7fffff"/>
+        <property key="poweroptions.powerenable" value="false"/>
+        <property key="programmertogo.imagename" value=""/>
+        <property key="programoptions.donoteraseauxmem" value="false"/>
+        <property key="programoptions.eraseb4program" value="true"/>
+        <property key="programoptions.pgmspeed" value="2"/>
+        <property key="programoptions.preservedataflash" value="false"/>
+        <property key="programoptions.preservedataflash.ranges"
+                  value="${programoptions.preservedataflash.ranges}"/>
+        <property key="programoptions.preserveeeprom" value="false"/>
+        <property key="programoptions.preserveeeprom.ranges" value=""/>
+        <property key="programoptions.preserveprogram.ranges" value=""/>
+        <property key="programoptions.preserveprogramrange" value="false"/>
+        <property key="programoptions.preserveuserid" value="false"/>
+        <property key="programoptions.programcalmem" value="false"/>
+        <property key="programoptions.programuserotp" value="false"/>
+        <property key="programoptions.testmodeentrymethod" value="VDDFirst"/>
+        <property key="programoptions.usehighvoltageonmclr" value="false"/>
+        <property key="programoptions.uselvpprogramming" value="false"/>
+        <property key="voltagevalue" value="3.25"/>
+        <property key="冻结所有其他外设" value="true"/>
+        <property key="安全段。分部编程" value="SegmentProgrammingAll"/>
+      </PICkit3PlatformTool>
+      <Tool>
+        <property key="ADC 1" value="true"/>
+        <property key="AutoSelectMemRanges" value="auto"/>
+        <property key="CRC" value="true"/>
+        <property key="DUAL COMPARATOR" value="true"/>
+        <property key="I2C1" value="true"/>
+        <property key="INPUT CAPTURE 1" value="true"/>
+        <property key="INPUT CAPTURE 2" value="true"/>
+        <property key="INPUT CAPTURE 7" value="true"/>
+        <property key="INPUT CAPTURE 8" value="true"/>
+        <property key="OUTPUT COMPARE 1" value="true"/>
+        <property key="OUTPUT COMPARE 2" value="true"/>
+        <property key="OUTPUT COMPARE 3" value="true"/>
+        <property key="OUTPUT COMPARE 8" value="true"/>
+        <property key="PARALLEL MASTER/SLAVE PORT" value="true"/>
+        <property key="PWM 1" value="true"/>
+        <property key="PWM 2" value="true"/>
+        <property key="REAL TIME CLOCK AND CALENDAR" value="true"/>
+        <property key="SPI 1" value="true"/>
+        <property key="SPI 2" value="true"/>
+        <property key="TIMER1" value="true"/>
+        <property key="TIMER2" value="true"/>
+        <property key="TIMER3" value="true"/>
+        <property key="TIMER4" value="true"/>
+        <property key="TIMER5" value="true"/>
+        <property key="ToolFirmwareFilePath"
+                  value="Press to browse for a specific firmware version"/>
+        <property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>
+        <property key="UART 1" value="true"/>
+        <property key="UART 2" value="true"/>
+        <property key="debugoptions.useswbreakpoints" value="false"/>
+        <property key="firmware.download.all" value="false"/>
+        <property key="hwtoolclock.frcindebug" value="false"/>
+        <property key="memories.aux" value="false"/>
+        <property key="memories.bootflash" value="true"/>
+        <property key="memories.configurationmemory" value="true"/>
+        <property key="memories.configurationmemory2" value="true"/>
+        <property key="memories.dataflash" value="true"/>
+        <property key="memories.eeprom" value="true"/>
+        <property key="memories.flashdata" value="true"/>
+        <property key="memories.id" value="true"/>
+        <property key="memories.instruction.ram" value="true"/>
+        <property key="memories.instruction.ram.ranges"
+                  value="${memories.instruction.ram.ranges}"/>
+        <property key="memories.programmemory" value="true"/>
+        <property key="memories.programmemory.ranges" value="0-7fffff"/>
+        <property key="poweroptions.powerenable" value="false"/>
+        <property key="programmertogo.imagename" value=""/>
+        <property key="programoptions.donoteraseauxmem" value="false"/>
+        <property key="programoptions.eraseb4program" value="true"/>
+        <property key="programoptions.pgmspeed" value="2"/>
+        <property key="programoptions.preservedataflash" value="false"/>
+        <property key="programoptions.preservedataflash.ranges"
+                  value="${programoptions.preservedataflash.ranges}"/>
+        <property key="programoptions.preserveeeprom" value="false"/>
+        <property key="programoptions.preserveeeprom.ranges" value=""/>
+        <property key="programoptions.preserveprogram.ranges" value=""/>
+        <property key="programoptions.preserveprogramrange" value="false"/>
+        <property key="programoptions.preserveuserid" value="false"/>
+        <property key="programoptions.programcalmem" value="false"/>
+        <property key="programoptions.programuserotp" value="false"/>
+        <property key="programoptions.testmodeentrymethod" value="VDDFirst"/>
+        <property key="programoptions.usehighvoltageonmclr" value="false"/>
+        <property key="programoptions.uselvpprogramming" value="false"/>
+        <property key="voltagevalue" value="3.25"/>
+        <property key="冻结所有其他外设" value="true"/>
+        <property key="安全段。分部编程" value="SegmentProgrammingAll"/>
+      </Tool>
+    </conf>
+  </confs>
+</configurationDescriptor>

+ 3 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/private/SuppressibleMessageMemo.properties

@@ -0,0 +1,3 @@
+#
+#Mon Jun 16 17:46:27 CST 2025
+mdbDebugger/LAST_HW_BP_RESOURCE_WARN=true

+ 25 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/private/configurations.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configurationDescriptor version="65">
+  <projectmakefile>Makefile</projectmakefile>
+  <defaultConf>0</defaultConf>
+  <confs>
+    <conf name="default" type="2">
+      <platformToolSN>:=MPLABComm-USB-Microchip:=&lt;vid>04D8:=&lt;pid>900A:=&lt;rev>0002:=&lt;man>Microchip Technology Inc.:=&lt;prod>PICkit 3:=&lt;sn>BUR182473687:=&lt;drv>x:=&lt;xpt>h:=end</platformToolSN>
+      <languageToolchainDir>C:\Program Files\Microchip\xc16\v2.10\bin</languageToolchainDir>
+      <mdbdebugger version="1">
+        <placeholder1>place holder 1</placeholder1>
+        <placeholder2>place holder 2</placeholder2>
+      </mdbdebugger>
+      <runprofile version="6">
+        <args></args>
+        <rundir></rundir>
+        <buildfirst>true</buildfirst>
+        <console-type>0</console-type>
+        <terminal-type>0</terminal-type>
+        <remove-instrumentation>0</remove-instrumentation>
+        <environment>
+        </environment>
+      </runprofile>
+    </conf>
+  </confs>
+</configurationDescriptor>

+ 86 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/private/private.xml

@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
+    <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="17">
+        <file>
+            <url>Instrument_EEPROM_Param.c</url>
+            <bookmark id="4">
+                <name/>
+                <line>10</line>
+                <key/>
+            </bookmark>
+        </file>
+        <file>
+            <url>main.c</url>
+            <bookmark id="14">
+                <name/>
+                <line>102</line>
+                <key/>
+            </bookmark>
+            <bookmark id="15">
+                <name/>
+                <line>244</line>
+                <key/>
+            </bookmark>
+            <bookmark id="16">
+                <name/>
+                <line>295</line>
+                <key/>
+            </bookmark>
+            <bookmark id="17">
+                <name/>
+                <line>348</line>
+                <key/>
+            </bookmark>
+        </file>
+        <file>
+            <url>command.c</url>
+            <bookmark id="5">
+                <name/>
+                <line>37</line>
+                <key/>
+            </bookmark>
+            <bookmark id="2">
+                <name/>
+                <line>261</line>
+                <key/>
+            </bookmark>
+            <bookmark id="3">
+                <name/>
+                <line>638</line>
+                <key/>
+            </bookmark>
+            <bookmark id="12">
+                <name/>
+                <line>667</line>
+                <key/>
+            </bookmark>
+            <bookmark id="13">
+                <name/>
+                <line>986</line>
+                <key/>
+            </bookmark>
+            <bookmark id="9">
+                <name/>
+                <line>1166</line>
+                <key/>
+            </bookmark>
+            <bookmark id="10">
+                <name/>
+                <line>1633</line>
+                <key/>
+            </bookmark>
+            <bookmark id="7">
+                <name/>
+                <line>1860</line>
+                <key/>
+            </bookmark>
+        </file>
+    </editor-bookmarks>
+    <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
+        <group>
+            <file>file:/E:/30.%20BTD24018-WZYXPOCT/01.Code/current/WZYXHT_V1.02412310001.X/command.c</file>
+            <file>file:/E:/30.%20BTD24018-WZYXPOCT/01.Code/current/WZYXHT_V1.02412310001.X/Instrument_EEPROM_Param.c</file>
+        </group>
+        <group name="source"/>
+    </open-files>
+</project-private>

+ 29 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/nbproject/project.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>com.microchip.mplab.nbide.embedded.makeproject</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/make-project/1">
+            <name>WZYXHT_V1.12507260002</name>
+            <creation-uuid>cfa35fdd-fc0b-4a09-b831-3737d0617bcb</creation-uuid>
+            <make-project-type>0</make-project-type>
+            <c-extensions>c</c-extensions>
+            <cpp-extensions/>
+            <header-extensions>h</header-extensions>
+            <asminc-extensions/>
+            <sourceEncoding>GB2312</sourceEncoding>
+            <make-dep-projects/>
+            <sourceRootList>
+                <sourceRootElem>.</sourceRootElem>
+            </sourceRootList>
+            <confList>
+                <confElem>
+                    <name>default</name>
+                    <type>2</type>
+                </confElem>
+            </confList>
+            <formatting>
+                <project-formatting-style>false</project-formatting-style>
+            </formatting>
+        </data>
+    </configuration>
+</project>

+ 2 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/readme.txt

@@ -0,0 +1,2 @@
+WZYXHT_V1.12507260002
+

+ 13 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/system.c

@@ -0,0 +1,13 @@
+#include <p33FJ64MC204.h>
+#include "system.h"
+/********************************************/
+void InitOsc(void)
+{
+    PLLFBD = 0x1E;         
+    CLKDIVbits.PLLPOST = 0;  
+    CLKDIVbits.PLLPRE = 0;   
+    __builtin_write_OSCCONH(0x03); 
+    __builtin_write_OSCCONL(0x01);
+    while (OSCCONbits.COSC != 0b011); 
+    while (OSCCONbits.LOCK != 1);
+}

+ 6 - 0
WZYXHT_V1.12507260002.X/WZYXHT_V1.12507260002.X/system.h

@@ -0,0 +1,6 @@
+#ifndef SYSTEM_H
+#define	STSTEM_H
+
+void InitOsc(void);
+
+#endif	

+ 113 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/Makefile

@@ -0,0 +1,113 @@
+#
+#  There exist several targets which are by default empty and which can be 
+#  used for execution of your targets. These targets are usually executed 
+#  before and after some main targets. They are: 
+#
+#     .build-pre:              called before 'build' target
+#     .build-post:             called after 'build' target
+#     .clean-pre:              called before 'clean' target
+#     .clean-post:             called after 'clean' target
+#     .clobber-pre:            called before 'clobber' target
+#     .clobber-post:           called after 'clobber' target
+#     .all-pre:                called before 'all' target
+#     .all-post:               called after 'all' target
+#     .help-pre:               called before 'help' target
+#     .help-post:              called after 'help' target
+#
+#  Targets beginning with '.' are not intended to be called on their own.
+#
+#  Main targets can be executed directly, and they are:
+#  
+#     build                    build a specific configuration
+#     clean                    remove built files from a configuration
+#     clobber                  remove all built files
+#     all                      build all configurations
+#     help                     print help mesage
+#  
+#  Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and
+#  .help-impl are implemented in nbproject/makefile-impl.mk.
+#
+#  Available make variables:
+#
+#     CND_BASEDIR                base directory for relative paths
+#     CND_DISTDIR                default top distribution directory (build artifacts)
+#     CND_BUILDDIR               default top build directory (object files, ...)
+#     CONF                       name of current configuration
+#     CND_ARTIFACT_DIR_${CONF}   directory of build artifact (current configuration)
+#     CND_ARTIFACT_NAME_${CONF}  name of build artifact (current configuration)
+#     CND_ARTIFACT_PATH_${CONF}  path to build artifact (current configuration)
+#     CND_PACKAGE_DIR_${CONF}    directory of package (current configuration)
+#     CND_PACKAGE_NAME_${CONF}   name of package (current configuration)
+#     CND_PACKAGE_PATH_${CONF}   path to package (current configuration)
+#
+# NOCDDL
+
+
+# Environment 
+MKDIR=mkdir
+CP=cp
+CCADMIN=CCadmin
+RANLIB=ranlib
+
+
+# build
+build: .build-post
+
+.build-pre:
+# Add your pre 'build' code here...
+
+.build-post: .build-impl
+# Add your post 'build' code here...
+
+
+# clean
+clean: .clean-post
+
+.clean-pre:
+# Add your pre 'clean' code here...
+# WARNING: the IDE does not call this target since it takes a long time to
+# simply run make. Instead, the IDE removes the configuration directories
+# under build and dist directly without calling make.
+# This target is left here so people can do a clean when running a clean
+# outside the IDE.
+
+.clean-post: .clean-impl
+# Add your post 'clean' code here...
+
+
+# clobber
+clobber: .clobber-post
+
+.clobber-pre:
+# Add your pre 'clobber' code here...
+
+.clobber-post: .clobber-impl
+# Add your post 'clobber' code here...
+
+
+# all
+all: .all-post
+
+.all-pre:
+# Add your pre 'all' code here...
+
+.all-post: .all-impl
+# Add your post 'all' code here...
+
+
+# help
+help: .help-post
+
+.help-pre:
+# Add your pre 'help' code here...
+
+.help-post: .help-impl
+# Add your post 'help' code here...
+
+
+
+# include project implementation makefile
+include nbproject/Makefile-impl.mk
+
+# include project make variables
+include nbproject/Makefile-variables.mk

+ 41 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/ABIS_User.c

@@ -0,0 +1,41 @@
+#include "ABIS_User.h"
+/*******************************************************************************
+ * º¯ÊýÃû³Æ£ºInitOsc
+ *******************************************************************************/
+void InitOsc(void){
+    PLLFBD = 0x2E;          
+//    PLLFBD = 0x1E;          
+    CLKDIVbits.PLLPOST = 0; 
+    CLKDIVbits.PLLPRE  = 0; 
+
+    __builtin_write_OSCCONH(0x03); 
+    __builtin_write_OSCCONL(0x01);
+
+    while (OSCCONbits.COSC != 0b011); 
+    while (OSCCONbits.LOCK != 1); 
+}
+/*******************************************************************************
+ * º¯ÊýÃû³Æ£ºSystem_Init
+ *******************************************************************************/
+void System_Init(void){
+     
+    InitOsc();              
+    PIN_Initialize();      
+    InitUart();           
+    InitUart2();
+    InitUart3();
+    Init_T4();              
+//    Init_T6();           
+    Init_T8();            
+    InitPWM();              
+    InitMotorXPWM();       
+    Init_OC();             
+    InitADC();             
+//    Init_T3();         
+    InitDMA();        
+//    InitDma0();     
+    InitTempCtlr();
+    Read_EE();             
+//    InitDA();          
+//    FANOC_Set(4,5000);
+}

+ 27 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/ABIS_User.h

@@ -0,0 +1,27 @@
+  
+#ifndef __USER_H
+#define	__USER_H
+
+#include <xc.h>                 
+#include <stdlib.h>
+#include <math.h> 
+#include <string.h>
+#include "Interrupt.h"
+#include "PIN.h"
+#include "Motor.h"
+#include "DA7512.h"
+#include "Dac5571.h"
+#include "AD.h"
+#include "EEPROM.h"
+#include "PWM.h"
+#include "OC.h"
+#include "Timer.h"
+#include "Uart.h"
+#include "DMA.h"
+#include "DS1802.h"
+#include "Delay.h"
+
+void InitOsc(void);
+void System_Init(void);
+#endif	/* XC_HEADER_TEMPLATE_H */
+

+ 101 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Ad.c

@@ -0,0 +1,101 @@
+#define  __AD_DEF
+#include "ABIS_User.h"
+/*******************************************************************************
+ * 函数名称:InitADC 
+ *******************************************************************************/
+//void InitADC(void){
+//    
+//    ANSELB = 0xFFFF;        
+//    AD1CON1bits.FORM   = 0; 
+//    AD1CON1bits.SSRC   = 2; 
+//    AD1CON1bits.ASAM   = 1; 
+//    AD1CON1bits.AD12B  = 1; 
+//    AD1CON1bits.SIMSAM = 0; 
+//    
+//    AD1CON2bits.BUFM   = 0;
+//    AD1CON2bits.CSCNA  = 1; 
+//    AD1CON2bits.CHPS   = 0; 
+//    
+//    AD1CON3bits.ADRC   = 0; 
+//    AD1CON3bits.ADCS   = 63; 
+//    //AD1CHS0:A/D Input Select Register
+//    AD1CHS0bits.CH0SA = 0; 
+//    AD1CHS0bits.CH0NA = 0; 
+//    //AD1CHS123:A/D Input Select Register
+//    AD1CHS123bits.CH123SA = 0; 
+//    AD1CHS123bits.CH123NA = 0; 
+//    
+//    //AD1CSSH/AD1CSSL:A/D Input Scan Selection Register
+//    AD1CSSH = 0x0000;
+//    AD1CSSL = 0xFFFF; 
+//    
+//    AD1CON1bits.ADDMABM = 0; 
+//    AD1CON2bits.SMPI    = 15; 
+//    AD1CON4bits.DMABL   = 0;  
+//    AD1CON4bits.ADDMAEN = 1;  
+//    
+//    IPC3bits.AD1IP   = 1; 
+//    IFS0bits.AD1IF   = 0; 
+//    IEC0bits.AD1IE   = 0; 
+//    AD1CON1bits.ADON = 1; 
+//}
+
+
+/*******************************************************************************
+ * 函数名称:InitADC 
+ *******************************************************************************/
+void InitADC(void)
+{
+    ANSELB = 0xFFFC;       
+    
+	AD1CON1bits.AD12B=1;   
+
+	AD1CON2=0;                              
+	AD1CON2bits.VCFG=0;   
+
+	AD1CON3bits.ADRC=0;     
+	AD1CON3bits.SAMC=2;   
+	AD1CON3bits.ADCS=7;    
+
+	AD1CHS0=0;                                             
+	AD1CSSL=0;             
+    
+	AD1CON1bits.FORM=0;    
+	AD1CON1bits.SSRC=7;   
+	AD1CON1bits.ASAM=0;   
+    
+            
+            
+
+    IPC3bits.AD1IP   = 1; 
+    IFS0bits.AD1IF   = 0; 
+    IEC0bits.AD1IE   = 0; 
+    AD1CON1bits.ADON = 1; 
+}
+unsigned int AD_Get(unsigned int num)
+{
+	AD1CHS0bits.CH0SA = num;
+	AD1CON1bits.ADON = 1;	//打开AD转换
+	AD1CON1bits.SAMP = 1;	//启动A/D采样
+	while (!AD1CON1bits.DONE);
+    return (ADC1BUF0);
+} 
+
+void Bubble_Sort(unsigned int *Array,unsigned char n)
+{ 
+	unsigned char i, j;
+	unsigned int temp;
+	for(i=0;i<n-1;i++)
+	{
+		for(j=i+1;j<n;j++)
+		{
+			if(Array[i] > Array[j])
+			{
+				temp     = Array[i];
+				Array[i] = Array[j];
+				Array[j] = temp;
+			}
+		}
+	}
+ }
+

+ 14 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Ad.h

@@ -0,0 +1,14 @@
+#ifndef __AD_H
+#define	__AD_H
+
+#ifdef  __AD_DEF
+#define EXTERN_AD
+#else
+#define EXTERN_AD extern
+#endif
+
+EXTERN_AD void InitADC(void);
+EXTERN_AD unsigned int AD_Get(unsigned int num);
+EXTERN_AD void Bubble_Sort(unsigned int *Array,unsigned char n);
+#endif	/* XC_HEADER_TEMPLATE_H */
+

+ 92 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Ad7606.c

@@ -0,0 +1,92 @@
+#define  __AD7606_DEF
+#include "ABIS_User.h"
+
+void InitADC7606()
+{
+	ADRD =1;
+	CNVST=1;      //raising to convst
+	ADRST=0;  	  //??λad7606
+	asm("nop");	
+	asm("nop");	
+	ADRST=1;
+	asm("nop");	
+	asm("nop");	
+	ADRST=0;
+}
+
+inline void CNVSTADC7606(void){	
+	
+	CNVST=0;//raising to convst
+   	asm("nop");
+   	asm("nop");
+	CNVST=1;//raising to convst
+   	asm("nop");
+   	asm("nop");
+		
+}
+inline unsigned short RdADC7606(void){
+    
+	unsigned short value;
+    
+	ADRD=1;
+   	asm("nop");
+   	asm("nop");
+	ADRD=0;
+   	asm("nop");
+   	asm("nop");
+    value=(unsigned short)PORTD;//????????ADC
+	return(value);
+}
+
+//冒泡法排序,排序结果有小到大
+void Bubble_Sort(unsigned int *Array,unsigned char n)
+{ 
+	unsigned char i, j;
+	unsigned int temp;
+	for(i=0;i<n-1;i++)
+	{
+		for(j=i+1;j<n;j++)
+		{
+			if(Array[i] > Array[j])
+			{
+				temp     = Array[i];
+				Array[i] = Array[j];
+				Array[j] = temp;
+			}
+		}
+	}
+ }
+//快速排序,排序结果有小到大
+void sort(unsigned int *a, int left, int right)
+{
+    if(left >= right)/*如果左边索引大于或者等于右边的索引就代表已经整理完成一个组了*/
+    {
+        return ;
+    }
+    int i = left;
+    int j = right;
+    int key = a[left];    
+    while(i < j)                               /*控制在当组内寻找一遍*/
+    {
+        while(i < j && key <= a[j])
+        /*而寻找结束的条件就是,1,找到一个小于或者大于key的数(大于或小于取决于你想升
+        序还是降序)2,没有符合条件1的,并且i与j的大小没有反转*/ 
+        {
+            j--;/*向前寻找*/
+        }         
+        a[i] = a[j];
+        /*找到一个这样的数后就把它赋给前面的被拿走的i的值(如果第一次循环且key是
+        a[left],那么就是给key)*/     
+        while(i < j && key >= a[i])
+        /*这是i在当组内向前寻找,同上,不过注意与key的大小关系停止循环和上面相反,
+        因为排序思想是把数往两边扔,所以左右两边的数大小与key的关系相反*/
+        {
+            i++;
+        }        
+        a[j] = a[i];
+    } 
+    a[i] = key;             /*当在当组内找完一遍以后就把中间数key回归*/
+    sort(a, left, i - 1);   /*最后用同样的方式对分出来的左边的小组进行同上的做法*/
+    sort(a, i + 1, right);  /*用同样的方式对分出来的右边的小组进行同上的做法*/
+                            /*当然最后可能会出现很多分左右,直到每一组的i = j 为止*/
+}

+ 34 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Ad7606.h

@@ -0,0 +1,34 @@
+#ifndef __AD7606_H
+#define	__AD7606_H
+
+#ifdef  __AD7606_DEF
+#define EXTERN_AD7606
+#else
+#define EXTERN_AD7606 extern
+#endif
+
+#define CNVST         LATJbits.LATJ3
+#define ADRST         LATJbits.LATJ1
+#define ADRD          LATJbits.LATJ0
+#define ADBUSY        PORTAbits.RA7
+
+//#define AD7606_OS0    LATAbits.LATA7            //왠齡AD7606법꽃湳굡쪽
+#define AD7606_OS1    LATAbits.LATA6            //왠齡AD7606법꽃湳굡쪽
+#define AD7606_OS2    LATJbits.LATJ10           //왠齡AD7606법꽃湳굡쪽
+
+EXTERN_AD7606 unsigned char AD_Enable,FAMFilter,VICFilter,ROXFilter,CY5Filter;
+
+EXTERN_AD7606 unsigned char FAMLED1;
+EXTERN_AD7606 unsigned char VICLED1;
+EXTERN_AD7606 unsigned char ROXLED1;
+EXTERN_AD7606 unsigned char CY5LED1;
+EXTERN_AD7606 unsigned char CY6LED1;
+EXTERN_AD7606 unsigned char _390LED1;
+
+EXTERN_AD7606 inline void InitADC7606();
+EXTERN_AD7606 inline void CNVSTADC7606(void);
+EXTERN_AD7606 inline unsigned short RdADC7606(void);
+EXTERN_AD7606 void Bubble_Sort(unsigned int *Array,unsigned char n);
+EXTERN_AD7606 void sort(unsigned int *a, int left, int right);
+
+#endif	/* AD7606_H */

+ 17 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/DA7512.h

@@ -0,0 +1,17 @@
+#ifndef __DA7512_H
+#define	__DA7512_H
+
+#ifdef  __DA7512_DEF
+#define EXTERN_DA7512
+#else
+#define EXTERN_DA7512 extern
+#endif
+
+#define  DACSYNC1   LATJbits.LATJ4
+#define  DACCLK     LATJbits.LATJ5
+#define  DACDI      LATJbits.LATJ6
+
+EXTERN_DA7512 void SET_DA (unsigned int temp,unsigned char num);
+EXTERN_DA7512 void InitDA(void);
+#endif	/* XC_HEADER_TEMPLATE_H */
+

+ 59 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/DMA.c

@@ -0,0 +1,59 @@
+#define  __DMA_DEF
+#include "ABIS_User.h"
+
+void InitDMA(void)
+{
+    //set the DMA1 to UART1 trans to PC
+//    g_ucUart1_Send_Data[0]=FRAME_HEAD;
+    
+
+    DMA3CON=0X6001;                           
+    DMA3CNT=SHORT_DATA;                      
+    DMA3REQ=0x0c;                              
+    DMA3PAD=(volatile unsigned int)&U1TXREG;   
+    DMA3STAH=__builtin_dmapage(g_ucU1TX_Data);
+    DMA3STAL=__builtin_dmaoffset(g_ucU1TX_Data);
+    IFS2bits.DMA3IF = 0;                      
+    IEC2bits.DMA3IE = 0;                       
+    DMA3CONbits.CHEN= 0;                     
+    IPC9bits. DMA3IP= 1;
+    IFS2bits.DMA3IF = 1;
+    
+
+    //DMACS0 =0;                             
+    DMA1CON=0X6001;                            
+    DMA1CNT=LONG_DATA;                       
+    DMA1REQ=0x0c;                              
+    DMA1PAD=(volatile unsigned int)&U1TXREG;    
+    DMA1STAH=__builtin_dmapage(ucBuffer_Data);
+    DMA1STAL=__builtin_dmaoffset(ucBuffer_Data);
+    IFS0bits.DMA1IF = 0;//中断标识清零
+    IPC3bits.DMA1IP = 7;
+    IEC0bits.DMA1IE = 0;//中断使能
+    DMA1CONbits.CHEN= 0;//启动
+    IFS0bits.DMA1IF = 1;
+
+}
+///*******************************************************************************
+// * 函数名称:InitDma0
+// *******************************************************************************/
+//void InitDma0(void)
+//{
+////    DMA0CONbits.AMODE = 2;  
+//    DMA0CONbits.AMODE = 0;    
+//    DMA0CONbits.MODE  = 2;    
+//    DMA0PAD=(int)&ADC1BUF0;
+//    DMA0CNT = 15;//          
+//    DMA0REQ = 13;          
+//    
+//    DMA0STAH = __builtin_dmaoffset(&BufferA);
+//    DMA0STAL = __builtin_dmaoffset(&BufferA);
+//    
+//    DMA0STBH = __builtin_dmaoffset(&BufferB);
+//    DMA0STBL = __builtin_dmaoffset(&BufferB);
+//    
+//    IFS0bits.DMA0IF = 0;   
+//    IPC3bits.DMA1IP = 6;  
+//    IEC0bits.DMA0IE = 1;   
+//    DMA0CONbits.CHEN= 1;    
+//}

+ 77 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/DMA.h

@@ -0,0 +1,77 @@
+#ifndef __DMA_H
+#define	__DMA_H
+
+#ifdef  __DMA_DEF
+#define EXTERN_DMA
+#else
+#define EXTERN_DMA extern
+#endif
+
+#define LONG_DATA       0xCB
+#define SHORT_DATA      0x13
+
+#define MAX_CHNUM       5           
+#define SAMP_BUFF_SIZE  16          
+#define ADSIZE          1
+
+EXTERN_DMA struct
+{
+    unsigned int Adc1Ch0[ADSIZE];
+    unsigned int Adc1Ch1[ADSIZE];
+    unsigned int Adc1Ch2[ADSIZE];
+    unsigned int Adc1Ch3[ADSIZE];
+    unsigned int Adc1Ch4[ADSIZE];
+    unsigned int Adc1Ch5[ADSIZE];
+    unsigned int Adc1Ch6[ADSIZE];
+    unsigned int Adc1Ch7[ADSIZE];
+    unsigned int Adc1Ch8[ADSIZE];
+    unsigned int FAM[ADSIZE];   
+    unsigned int VIC[ADSIZE];   
+    unsigned int ROX[ADSIZE];   
+    unsigned int CY5[ADSIZE]; 
+    unsigned int CY5_5[ADSIZE];     
+    unsigned int CY6[ADSIZE]; 
+    unsigned int MPPC[ADSIZE];      
+//    unsigned int Adc1Ch10[ADSIZE];
+//    unsigned int Adc1Ch11[ADSIZE];
+//    unsigned int Adc1Ch12[ADSIZE];
+//    unsigned int Adc1Ch13[ADSIZE];
+//    unsigned int Adc1Ch14[ADSIZE];
+//    unsigned int Adc1Ch15[ADSIZE];
+} BufferA;
+//BufferA __attribute__((space(eds)));;
+
+EXTERN_DMA struct
+{
+    unsigned int Adc1Ch0[ADSIZE];
+    unsigned int Adc1Ch1[ADSIZE];
+    unsigned int Adc1Ch2[ADSIZE];
+    unsigned int Adc1Ch3[ADSIZE];
+    unsigned int Adc1Ch4[ADSIZE];
+    unsigned int Adc1Ch5[ADSIZE];
+    unsigned int Adc1Ch6[ADSIZE];
+    unsigned int Adc1Ch7[ADSIZE];
+    unsigned int Adc1Ch8[ADSIZE];
+    unsigned int FAM[ADSIZE];   
+    unsigned int VIC[ADSIZE];   
+    unsigned int ROX[ADSIZE];   
+    unsigned int CY5[ADSIZE]; 
+    unsigned int CY5_5[ADSIZE];     
+    unsigned int CY6[ADSIZE]; 
+    unsigned int MPPC[ADSIZE];     
+//    unsigned int Adc1Ch10[ADSIZE];
+//    unsigned int Adc1Ch11[ADSIZE];
+//    unsigned int Adc1Ch12[ADSIZE];
+//    unsigned int Adc1Ch13[ADSIZE];
+//    unsigned int Adc1Ch14[ADSIZE];
+//    unsigned int Adc1Ch15[ADSIZE];
+}BufferB; 
+//BufferB __attribute__((space(eds)));;
+
+EXTERN_DMA unsigned char DmaBuffer;
+
+EXTERN_DMA void InitDMA(void);
+EXTERN_DMA void InitDma0(void);
+
+#endif	/* XC_HEADER_TEMPLATE_H */
+

+ 101 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/DS1802.c

@@ -0,0 +1,101 @@
+#include "DS1802.h"
+#include "ABIS_User.h"
+
+//us级别延时函数1~20精度高20us,偏差1us
+static inline void DelayUs(unsigned int Tmr)
+{
+	unsigned char i;
+	for(i=0;i<2;i++){
+		asm("nop");
+		asm("nop");
+		asm("nop");
+	}
+	if(Tmr > 1){
+		Tmr -= 1;
+		for(;Tmr>0;Tmr--){
+			for(i=0;i<3;i++){
+                asm("nop");
+                asm("nop");
+                asm("nop");
+			}
+            asm("nop");
+		}
+	}
+}
+
+void Ds18WriteChar(unsigned char data)  //向Ds18b20写函数
+{
+    unsigned char i,temp;
+	DQ_HIGH();
+    DelayUs(3); 
+	for(i=8;i>0;i--){
+		temp = data&0x01;  
+		DQ_LOW();
+		DelayUs(20);
+		if(temp == 1)DQ_HIGH();
+		DelayUs(45);
+		DQ_HIGH();
+		data=data>>1;
+	}
+}
+unsigned char Ds18ReadChar()
+{
+	unsigned char i,data=0;	
+	for(i=8;i>0;i--){
+		data=data>>1;
+		DQ_HIGH();
+	    DelayUs(3);
+		DQ_LOW();
+		DelayUs(6);
+		DQ_HIGH();
+		DelayUs(4);
+		if(DQ)data=data|0x80;
+		DelayUs(30);
+	}
+	return (data);
+}
+void Ds18Start()
+{
+	unsigned char i=10;
+	DQ_HIGH();
+	DelayUs(3); 
+	while(i){
+        DQ_LOW();
+        DelayUs(750); //延时750us
+        DQ_HIGH();
+        DelayUs(70); //延时70us
+        if (DQ == 1)i--;
+        else i = 0;
+        DelayUs(500); //延时500us
+	}
+}
+void Ds18Init()
+{
+	Ds18Start();
+	Ds18WriteChar(0xcc);
+	Ds18WriteChar(0x4e);
+	Ds18WriteChar(0x64);
+	Ds18WriteChar(0x8a);
+}
+float DS18GetTemp()
+{
+	unsigned char tl,th;
+	float temp;
+    
+	Ds18Start();
+	Ds18WriteChar(0xcc);
+	Ds18WriteChar(0x44);
+	Delay_ms(750);                          //暂时屏蔽
+	Ds18Start();
+	Ds18WriteChar(0xcc);
+	Ds18WriteChar(0xbe);
+	tl=Ds18ReadChar();
+	th=Ds18ReadChar();
+	Ds18Start();
+    
+    temp = th;
+    temp*= 256;
+    temp+= tl;
+    temp*= 0.0625;
+	return(temp);
+}

+ 12 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/DS1802.h

@@ -0,0 +1,12 @@
+#ifndef _DS1802_
+#define _DS1802_
+
+#define DQ  		_RA3
+#define DQ_HIGH() 	_TRISA3=1
+#define DQ_LOW() 	_TRISA3=0; DQ=0
+
+extern void Ds18Init();
+extern float DS18GetTemp();
+
+#endif
+

+ 35 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Da7512.c

@@ -0,0 +1,35 @@
+#define  __DA7512_DEF
+#include "ABIS_User.h"
+
+/*******************************************************************************
+ * º¯ÊýÃû³Æ£ºSET_DA
+ *******************************************************************************/
+void SET_DA(unsigned int temp,unsigned char num){
+    unsigned char i;
+    DACCLK = 1;
+    DACSYNC1 = 0;    
+    for(i=0;i<16;i++){ 
+        DACDI = (0x8000&temp) ? 1 : 0;
+        temp <<= 1;       
+        asm("nop");
+        DACCLK = 0;
+        asm("nop");
+        asm("nop");
+        DACCLK = 1;
+    }
+    asm("nop");
+    DACSYNC1 = 1; 
+}
+/*******************************************************************************
+ * º¯ÊýÃû³Æ£ºInitDA
+
+ *******************************************************************************/
+void InitDA(void){
+    
+    unsigned char i;
+    
+    for(i=1;i<5;i++){
+        MPPCdata = MPPCPowerNUM[i]*MPPCK[i]+MPPCB[i];
+        SET_DA((unsigned int)MPPCdata,i);
+    }
+}

+ 95 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Dac5571.c

@@ -0,0 +1,95 @@
+#define  __DAC5571_DEF
+#include "ABIS_User.h"
+
+void DAC5571_start()
+{
+    _TRISH14 = 0;     //SCL
+    _TRISH15 = 0;     //SDA     
+	DAC5571_SDA=1;
+	DAC5571_SCL=1;  
+	EE_delay(50);
+	DAC5571_SDA=0;
+	EE_delay(50);
+	DAC5571_SCL=0;
+	EE_delay(50);
+}
+void DAC5571_stop()
+{
+    _TRISH14 = 0;     //SCL
+    _TRISH15 = 0;     //SDA  
+	DAC5571_SDA=0;
+	EE_delay(50);
+	DAC5571_SCL=1;
+	EE_delay(50);
+	DAC5571_SDA=1;
+	EE_delay(50);
+}
+
+void DAC5571_Write1()
+{
+    _TRISH14 = 0;     //SCL
+    _TRISH15 = 0;     //SDA  
+	DAC5571_SDA=1;
+	EE_delay(50);
+	DAC5571_SCL=1;
+	EE_delay(50);
+	DAC5571_SCL=0;
+	EE_delay(50);
+}
+
+void DAC5571_Write0()
+{
+    _TRISH14 = 0;     //SCL
+    _TRISH15 = 0;     //SDA  
+	DAC5571_SDA=0;
+	EE_delay(50);
+	DAC5571_SCL=1;
+	EE_delay(50);
+	DAC5571_SCL=0;
+	EE_delay(50);
+}
+
+void DAC5571_Writelbyte(unsigned char data)
+{
+    unsigned char i;
+    for(i=8;i>0;i--){
+        if(data & 0x80)  
+            DAC5571_Write1();
+        else
+            DAC5571_Write0();
+        data <<= 1;
+    }
+}
+
+unsigned char DAC5571_Check(void){
+    unsigned char SlaveAck;
+    _TRISH15 = 1;     //SDA  
+    _TRISH14 = 0;     //SCL    
+ 	DAC5571_SCL=1;    
+	EE_delay(50);
+    SlaveAck =  _RH15;
+ 	DAC5571_SCL=0;   
+    _TRISH15 = 0;     //SDA    
+    if(SlaveAck) 
+        return 0;
+    else
+        return 1;
+}
+
+unsigned char Write_DAC(unsigned char data){
+    DAC5571_start();
+    DAC5571_Writelbyte(0x98);
+    if( DAC5571_Check() )  
+        DAC5571_Writelbyte(data >> 4);
+    else
+        return 0;
+    if( DAC5571_Check() )  
+        DAC5571_Writelbyte(data << 4);
+    else
+        return 0;  
+    if( DAC5571_Check() )  
+        DAC5571_stop();
+    else
+        return 0;     
+    return 1;
+}

+ 23 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Dac5571.h

@@ -0,0 +1,23 @@
+#ifndef __DAC5571_H
+#define	__DAC5571_H
+
+#ifdef  __DAC5571_DEF
+#define EXTERN_DAC5571
+#else
+#define EXTERN_DAC5571 extern
+#endif
+
+#define	 DAC5571_SCL 	_LATH14      //SCL
+#define	 DAC5571_SDA	_LATH15      //SDA
+
+EXTERN_DAC5571 void DAC5571_start();
+EXTERN_DAC5571 void DAC5571_stop();
+EXTERN_DAC5571 void DAC5571_Write1();
+EXTERN_DAC5571 void DAC5571_Write0();
+EXTERN_DAC5571 void DAC5571_Writelbyte(unsigned char data);
+EXTERN_DAC5571 unsigned char DAC5571_Check(void);
+EXTERN_DAC5571 unsigned char Write_DAC(unsigned char data);
+
+
+#endif	/* XC_HEADER_TEMPLATE_H */
+

+ 41 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Delay.c

@@ -0,0 +1,41 @@
+#define  __DELAY_DEF
+#include "ABIS_User.h"
+
+unsigned int temp_count;
+
+
+void Delay_Us(unsigned int cter)
+{
+	unsigned int ii;
+	if(cter == 0)   
+	{ 
+		for(ii=0;ii<8;ii++);
+	} 
+	else
+	{
+		for(;cter>0;cter--)
+ 			for(ii=0;ii<80;ii++);
+	}
+}
+
+//1ms
+void Delay_ms(unsigned int cter)
+{
+	unsigned int ii;
+	if(cter == 0)   
+	{ 
+		for(ii=0;ii<8;ii++);
+	} 
+	else
+	{
+		for(;cter>0;cter--)
+ 			for(ii=0;ii<8000;ii++);
+	}
+}
+//1s
+void Delay(unsigned int cter)
+{
+	Delay_ms(cter*1000);
+}
+
+

+ 23 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Delay.h

@@ -0,0 +1,23 @@
+#ifndef __DELAY_H
+#define __DELAY_H
+
+#ifdef  __DELAY_DEF
+#define DELAY_EXTERN
+#else
+#define DELAY_EXTERN extern
+#endif
+
+#define Fcy  40000000
+
+#define Delay200uS_count  (Fcy * 0.0002) / 1080
+#define Delay_1mS_Cnt	  (Fcy * 0.001) / 2950
+#define Delay_2mS_Cnt	  (Fcy * 0.002) / 2950
+#define Delay_5mS_Cnt	  (Fcy * 0.005) / 2950
+#define Delay_15mS_Cnt 	  (Fcy * 0.015) / 2950
+#define Delay_1S_Cnt	  (Fcy * 1) / 2950 
+
+DELAY_EXTERN void Delay_ms( unsigned int delay_count );
+DELAY_EXTERN void Delay_Us( unsigned int delayUs_count );
+DELAY_EXTERN void Delay(unsigned int cter);
+
+#endif

+ 538 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/EEPROM.c

@@ -0,0 +1,538 @@
+#define  __EEPROM_DEF
+#include "ABIS_User.h"
+
+void EE_delay(unsigned int cter)
+{
+	while(cter--);
+}
+void EE_start()
+{
+    _TRISK11 = 0;     //SCL
+    _TRISK12 = 0;     //SDA 
+	SDA=1;
+	SCL=1;  
+	EE_delay(50);
+	SDA=0;
+	EE_delay(50);
+	SCL=0;
+	EE_delay(50);
+}
+void EE_stop()
+{
+    _TRISK11 = 0;     //SCL
+    _TRISK12 = 0;     //SDA
+	SDA=0;
+	EE_delay(50);
+	SCL=1;
+	EE_delay(50);
+	SDA=1;
+	EE_delay(50);
+}
+void EE_sent(unsigned char temp)
+{
+	unsigned char BitCnt; 
+	unsigned int uiEE_overtime_Cnt; 
+	uiEE_overtime_Cnt = 0;
+
+    _TRISK11 = 0;     //SCL
+    _TRISK12 = 0;     //SDA
+	for(BitCnt=0;BitCnt<8;BitCnt++){ 
+		if(temp&0x80) SDA=1; 
+		else SDA=0; 
+		temp=temp<<1;
+		EE_delay(50);
+		SCL = 1;      
+		EE_delay(50);
+		SCL = 0; 
+	}
+	SDA=1;	
+	_TRISK12 = 1;//SDA
+	EE_delay(50);	
+	SCL=1;
+	while(_RK12);
+	EE_delay(50);
+	SCL=0;
+}
+unsigned char EE_receive(unsigned char data)
+{
+	unsigned int uiEE_receive_i,uiEE_receive_temp;
+
+	_TRISK12 = 1;//SDA
+	
+	for(uiEE_receive_i=0;uiEE_receive_i<8;uiEE_receive_i++)	{
+		EE_delay(50);		
+		SCL=0;		
+		EE_delay(50);		
+		SCL=1;		
+		uiEE_receive_temp = uiEE_receive_temp<<1;
+		if(_RK12==1)
+			uiEE_receive_temp = uiEE_receive_temp+1;	
+	}	
+	SCL=0;	
+	EE_delay(50);
+	_TRISK12 = 0;//SDA
+	//0 is acknowledge, 1 is not acknowledge
+    if(data)					
+		SDA=1;
+    else
+		SDA=0;	         			
+	SCL=1;	
+	EE_delay(50);	
+	SCL=0;	
+	return(uiEE_receive_temp);
+}
+void EE_write(unsigned long addr,unsigned char data)
+{
+	unsigned char temp0,temp1,temp2;
+	temp0=(addr>>16)&0xff;
+	temp1=(addr>>8)&0xff;
+	temp2=addr&0xff;
+	EE_start();
+	EE_sent(0xa0|(temp0<<1));
+	EE_sent(temp1);
+	EE_sent(temp2);
+	EE_sent(data);
+	EE_stop();
+	EE_delay(15000);
+}
+unsigned char EE_read(unsigned long addr)
+{
+	unsigned char temp0,temp1,temp2,temp3;
+	temp0=(addr>>16)&0xff;
+	temp1=(addr>>8)&0xff;
+	temp2=addr&0xff;
+	EE_start();
+	EE_sent(0xa0|(temp0<<1));
+	EE_sent(temp1);
+	EE_sent(temp2);
+	EE_delay(1);
+	EE_start();
+	EE_sent(0xa1);
+	temp3=EE_receive(1);
+    EE_stop();
+	return(temp3);
+}
+
+
+void EE_StrWrite(unsigned long addr,unsigned char *data,unsigned int len)
+{
+	unsigned char temp0,temp1,temp2;
+	temp0=(addr>>16)&0xff;
+	temp1=(addr>>8)&0xff;
+	temp2=addr&0xff;
+	
+	EE_start();
+	EE_sent(0xa0|(temp0<<1));	
+	EE_sent(temp1);
+	EE_sent(temp2);
+	while(len--)
+	{
+		EE_sent(*data);
+		data++;
+		temp2++;
+		if(temp2 == 0){
+			EE_stop();
+    		EE_delay(15000);
+			temp1++;
+			EE_start();
+			EE_sent(0xa0|(temp0<<1));	
+			EE_sent(temp1);
+			EE_sent(temp2);
+		}
+	}
+    EE_stop();
+    EE_delay(15000);
+    
+}
+void EE_StrRead(unsigned long addr,unsigned char *data,unsigned int len)
+{
+	unsigned char temp0,temp1,temp2;
+	temp0=(addr>>16)&0xff;
+	temp1=(addr>>8)&0xff;
+	temp2=addr&0xff;
+
+	while(len--)
+	{
+		EE_start();
+		EE_sent(0xa0|(temp0<<1));		
+		EE_sent(temp1);
+		EE_sent(temp2);
+		temp2++;
+		if(temp2 == 0)
+		{
+			temp1++;
+		}
+		EE_delay(1);
+		EE_start();
+		EE_sent(0xa1);	
+		*data=EE_receive(1);
+		data++;
+		EE_stop();
+	}
+}
+/*******************************************************************************
+ * º¯ÊýÃû³Æ£ºRead_Sys_EE
+ *******************************************************************************/
+void Read_EE(void)
+{
+    unsigned int i;
+    EE_StrRead(0x1FE,(unsigned char*)&i,2);
+    if(i==100){
+        Read_Sys_EE_01();
+        Read_Sys_EE_02();
+        Read_Sys_EE_03();
+        Read_Sys_EE_05();
+        Read_Sys_EE_06();
+        Read_Sys_EE_07();
+        Read_Sys_EE_FAMK();
+        Read_Sys_EE_VICK();
+        Read_Sys_EE_ROXK();
+        Read_Sys_EE_CY5K();
+        Read_Sys_EE_B();
+    }
+    else{
+        g_tEE.CAPTarget_temp[0] = 30;
+        g_tEE.CAPTarget_temp[1] = 30;
+        g_tEE.CAPTemp_PCR = 30;
+        g_tEE.uiFanHPwm = 500;
+        g_tEE.uiFanLPwm = 200; 
+        g_tEE.uiXPulseHome  = 0;
+        g_tEE.uiXSpeedHome  = 10000;
+        g_tEE.uiXSpeedLeave = 2000;
+        g_tEE.uiOverTempCnter = 10;
+        for(i=0;i<6;i++){
+            TempChn[i].MAXPWM = 10000;
+        }
+    }
+}
+void Read_Sys_EE(unsigned long addr)
+{
+    if(0x1FF > addr)       Read_Sys_EE_01();
+    else if(0x2FF > addr)  Read_Sys_EE_02();
+    else if(0x4FF > addr)  Read_Sys_EE_03();
+    else if(0x5FF > addr)  Read_Sys_EE_05();
+    else if(0x6FF > addr)  Read_Sys_EE_06();
+    else if(0x7FF > addr)  Read_Sys_EE_07();
+    else if(0xB7F > addr)  Read_Sys_EE_FAMK();
+    else if(0xCFF > addr)  Read_Sys_EE_VICK();
+    else if(0xE7F > addr)  Read_Sys_EE_ROXK();
+    else if(0xFFF > addr)  Read_Sys_EE_CY5K(); 
+    else if(0x17FF > addr) Read_Sys_EE_B();
+    else if(addr >= 0x2000) Read_Sys_EE_System();
+    else{}
+}
+void Read_Sys_EE_01(void){
+    unsigned int i;
+    EE_StrRead(0x1FE,(unsigned char*)&i,2);
+    if(i==100){ 
+//        EE_StrRead(0x1FC, (unsigned char*) &g_tEE.CutUart, 2);            
+//        if(g_tEE.CutUart == 0){
+//         _RP97R  = 0x01; 
+//         _U1RXR  = 0x60; 
+//        }
+//        else if(g_tEE.CutUart == 1){
+//         _RP97R  = 0x01; 
+//         _U1RXR  = 0x70; 
+//         }  
+    }    
+}
+void Read_Sys_EE_02(void){
+    unsigned int i;
+    EE_StrRead(0x1FE,(unsigned char*)&i,2);
+    if(i==100){
+/******************************************************/
+        EE_StrRead(0x200, (unsigned char*) &g_tEE.uiXPulseHome, 2);            
+        EE_StrRead(0x202, (unsigned char*) &g_tEE.uiXSpeedMax, 2);           
+        EE_StrRead(0x204, (unsigned char*) &g_tEE.uiXSpeedMin,2);             
+        EE_StrRead(0x206, (unsigned char*) &g_tEE.uiXSpeedScan, 2);            
+        EE_StrRead(0x208, (unsigned char*) &g_tEE.uiXSpeedHome, 2);        
+        EE_StrRead(0x20A, (unsigned char*) &g_tEE.uiXPulseAcc,2);            
+        EE_StrRead(0x20C, (unsigned char*) &g_tEE.uiXPulseMax, 2);             
+        EE_StrRead(0x20E, (unsigned char*) &g_tEE.uiXPulseScan, 2);           
+        EE_StrRead(0x210, (unsigned char*) &g_tEE.uiXPulseLock,2);           
+        EE_StrRead(0x212, (unsigned char*) &g_tEE.uiXSpeedLeave,2);                 
+    }   
+}
+void Read_Sys_EE_03(void){
+    unsigned int i;
+    EE_StrRead(0x1FE,(unsigned char*)&i,2);
+    if(i==100){
+/***********************************************/ 
+     
+        EE_StrRead(0x300, (unsigned char*) &TempPara[0].fK1, 4);           
+        EE_StrRead(0x304, (unsigned char*) &TempPara[0].fK2, 4);             
+        EE_StrRead(0x308, (unsigned char*) &TempPara[0].fB,  4);          
+        EE_StrRead(0x30C, (unsigned char*) &TempPara[1].fK1, 4);            
+        EE_StrRead(0x310, (unsigned char*) &TempPara[1].fK2, 4);              
+        EE_StrRead(0x314, (unsigned char*) &TempPara[1].fB,  4);           
+        EE_StrRead(0x318, (unsigned char*) &TempPara[2].fK1, 4);             
+        EE_StrRead(0x31C, (unsigned char*) &TempPara[2].fK2, 4);             
+        EE_StrRead(0x320, (unsigned char*) &TempPara[2].fB,  4);            
+        EE_StrRead(0x324, (unsigned char*) &TempPara[3].fK1, 4);              
+        EE_StrRead(0x328, (unsigned char*) &TempPara[3].fK2, 4);            
+        EE_StrRead(0x32C, (unsigned char*) &TempPara[3].fB,  4);              
+        EE_StrRead(0x330, (unsigned char*) &TempPara[4].fK1, 4);               
+        EE_StrRead(0x334, (unsigned char*) &TempPara[4].fK2, 4);              
+        EE_StrRead(0x338, (unsigned char*) &TempPara[4].fB,  4);        
+        EE_StrRead(0x33C, (unsigned char*) &TempPara[5].fK1, 4);         
+        EE_StrRead(0x340, (unsigned char*) &TempPara[5].fK2, 4);        
+        EE_StrRead(0x344, (unsigned char*) &TempPara[5].fB,  4);               
+   
+        EE_StrRead(0x390, (unsigned char*) &TempPara[0].TTk1, 4);            
+        EE_StrRead(0x394, (unsigned char*) &TempPara[0].TTk2, 4);      
+        EE_StrRead(0x398, (unsigned char*) &TempPara[0].TTb,  4);          
+        EE_StrRead(0x39C, (unsigned char*) &TempPara[1].TTk1, 4);
+        EE_StrRead(0x3A0, (unsigned char*) &TempPara[1].TTk2, 4);        
+        EE_StrRead(0x3A4, (unsigned char*) &TempPara[1].TTb,  4);     
+        EE_StrRead(0x3A8, (unsigned char*) &TempPara[2].TTk1, 4);            
+        EE_StrRead(0x3AC, (unsigned char*) &TempPara[2].TTk2, 4);          
+        EE_StrRead(0x3B0, (unsigned char*) &TempPara[2].TTb,  4);                  
+        EE_StrRead(0x3B4, (unsigned char*) &TempPara[3].TTk1, 4);          
+        EE_StrRead(0x3B8, (unsigned char*) &TempPara[3].TTk2, 4);         
+        EE_StrRead(0x3BC, (unsigned char*) &TempPara[3].TTb,  4);             
+        EE_StrRead(0x3C0, (unsigned char*) &TempPara[4].TTk1, 4);         
+        EE_StrRead(0x3C4, (unsigned char*) &TempPara[4].TTk2, 4);          
+        EE_StrRead(0x3C8, (unsigned char*) &TempPara[4].TTb,  4);           
+        EE_StrRead(0x3CC, (unsigned char*) &TempPara[5].TTk1, 4);          
+        EE_StrRead(0x3D0, (unsigned char*) &TempPara[5].TTk2, 4);           
+        EE_StrRead(0x3D4, (unsigned char*) &TempPara[5].TTb,  4);             
+                 
+        EE_StrRead(0x420, (unsigned char*) &TempChn[0].timer0,  2);          
+        EE_StrRead(0x422, (unsigned char*) &TempChn[0].HOTtemp, 4);           
+        EE_StrRead(0x426, (unsigned char*) &TempChn[0].CODEtemp,4);         
+        EE_StrRead(0x42A, (unsigned char*) &TempChn[1].timer0,  2);
+        EE_StrRead(0x42C, (unsigned char*) &TempChn[1].HOTtemp, 4);
+        EE_StrRead(0x430, (unsigned char*) &TempChn[1].CODEtemp,4);
+        EE_StrRead(0x434, (unsigned char*) &TempChn[2].timer0,  2);
+        EE_StrRead(0x436, (unsigned char*) &TempChn[2].HOTtemp, 4);
+        EE_StrRead(0x43A, (unsigned char*) &TempChn[2].CODEtemp,4);
+        EE_StrRead(0x43E, (unsigned char*) &TempChn[3].timer0,  2);
+        EE_StrRead(0x440, (unsigned char*) &TempChn[3].HOTtemp, 4);
+        EE_StrRead(0x444, (unsigned char*) &TempChn[3].CODEtemp,4);
+        EE_StrRead(0x448, (unsigned char*) &TempChn[4].timer0,  2);
+        EE_StrRead(0x44A, (unsigned char*) &TempChn[4].HOTtemp, 4);
+        EE_StrRead(0x44E, (unsigned char*) &TempChn[4].CODEtemp,4);
+        EE_StrRead(0x452, (unsigned char*) &TempChn[5].timer0,  2);
+        EE_StrRead(0x454, (unsigned char*) &TempChn[5].HOTtemp, 4);
+        EE_StrRead(0x458, (unsigned char*) &TempChn[5].CODEtemp,4);
+
+        for (i = 0; i < 6; i++) {
+            EE_StrRead(0x498 + 4 * i, (unsigned char*) &TempPara[i].fPowerCoef, 4);  
+            EE_StrRead(0x4C8 + 4 * i, (unsigned char*) &TempPara[i].fPowerCoefdown, 4); 
+        }        
+             
+    }   
+}
+void Read_Sys_EE_05(void){
+    unsigned int i;
+    EE_StrRead(0x1FE,(unsigned char*)&i,2);
+    if(i==100){
+/*****************************************/
+        EE_StrRead(0x574, (unsigned char*) &g_tEE.CutUart, 2);       
+        if(g_tEE.CutUart == 0){
+         _RP97R  = 0x01;
+         _U1RXR  = 0x60; 
+        }
+        else if(g_tEE.CutUart == 1){
+         _RP97R  = 0x01; 
+         _U1RXR  = 0x70; 
+         }   
+
+        EE_StrRead(0x500, (unsigned char*) &CAPTk[0], 4);                  
+        EE_StrRead(0x504, (unsigned char*) &CAPTb[0], 4);                    
+        EE_StrRead(0x508, (unsigned char*) &CAPTTk[0],4);                   
+        EE_StrRead(0x50C, (unsigned char*) &CAPTTb[0],4);              
+        EE_StrRead(0x510, (unsigned char*) &CAPTk[1], 4);                     
+        EE_StrRead(0x514, (unsigned char*) &CAPTb[1], 4);                  
+        EE_StrRead(0x518, (unsigned char*) &CAPTTk[1],4);               
+        EE_StrRead(0x51C, (unsigned char*) &CAPTTb[1],4);                      
+        EE_StrRead(0x540, (unsigned char*) &g_tEE.CAPTarget_temp[0], 2);      
+        EE_StrRead(0x544, (unsigned char*) &g_tEE.CAPTarget_temp[1], 2);     
+        EE_StrRead(0x550, (unsigned char*) &g_tEE.CAPTemp_PCR, 2);         
+        EE_StrRead(0x560, (unsigned char*) &g_tEE.fFINTk, 4);                 
+        EE_StrRead(0x564, (unsigned char*) &g_tEE.fFINTb, 4);                
+        EE_StrRead(0x568, (unsigned char*) &g_tEE.fFINTTk,4);                
+        EE_StrRead(0x56C, (unsigned char*) &g_tEE.fFINTTb,4);                 
+        EE_StrRead(0x570, (unsigned char*) &g_tEE.uiFINVPT,2);                
+
+        EE_StrRead(0x580, (unsigned char*) &g_usEERadiatorOvertemp, 2);        
+
+        EE_StrRead(0x582, (unsigned char*) &g_tEE.uiFanHPwm, 2);              
+        EE_StrRead(0x584, (unsigned char*) &g_tEE.uiFanLPwm, 2);        
+        
+        EE_StrRead(0x586, (unsigned char*) &g_tEE.uiMAXPWM, 2);            
+        for(i=0;i<6;i++){
+            TempChn[i].MAXPWM = g_tEE.uiMAXPWM;
+        }
+        EE_StrRead(0x58A, (unsigned char*) &g_tEE.uiOverTempCnter, 2);        
+        EE_StrRead(0x58C, (unsigned char*) &g_tEE.uiOverTempCnter1, 2);        
+        
+        CAPTarget_temp[0] = g_tEE.CAPTarget_temp[0];
+        CAPTarget_temp[1] = g_tEE.CAPTarget_temp[1]; 
+        
+        
+//        EE_StrRead(0x58E, (unsigned char*) &g_tEE.P0, 2);          //
+//        EE_StrRead(0x590, (unsigned char*) &g_tEE.I0, 2);          //      
+//        EE_StrRead(0x592, (unsigned char*) &g_tEE.D0, 2);          //
+//        EE_StrRead(0x594, (unsigned char*) &g_tEE.P1, 2);          //
+//        EE_StrRead(0x596, (unsigned char*) &g_tEE.I1, 2);          //      
+//        EE_StrRead(0x598, (unsigned char*) &g_tEE.D1, 2);          //
+//        EE_StrRead(0x59A, (unsigned char*) &g_tEE.P2, 2);          //
+//        EE_StrRead(0x59C, (unsigned char*) &g_tEE.I2, 2);          //      
+//        EE_StrRead(0x59E, (unsigned char*) &g_tEE.D2, 2);          //
+//        
+//        EE_StrRead(0x5A0, (unsigned char*) &g_tEE.WK1, 4);         //
+//        EE_StrRead(0x5A4, (unsigned char*) &g_tEE.WK2, 4);         //      
+//        EE_StrRead(0x5A8, (unsigned char*) &g_tEE.WB, 4);          //
+//        
+//        EE_StrRead(0x5B4, (unsigned char*) &g_tEE.WK11, 4);         //
+//        EE_StrRead(0x5B8, (unsigned char*) &g_tEE.WK22, 4);         //      
+//        EE_StrRead(0x5BC, (unsigned char*) &g_tEE.WB1, 4);          //        
+//
+//        EE_StrRead(0x5AC, (unsigned char*) &g_tEE.UP, 4);         //      
+//        EE_StrRead(0x5B0, (unsigned char*) &g_tEE.DOWN, 4);       //       
+//        
+//        EE_StrRead(0x5C0, (unsigned char*) &delays, 2);          //  
+//         EE_StrRead(0x5C2, (unsigned char*) &delays, 2);          //  
+
+        for(i=0;i<6;i++){         
+            TempPara[i].iKp[0]=5000;
+            TempPara[i].iKp[1]=5000;
+            TempPara[i].iKp[2]=5000;
+
+            TempPara[i].iKi[0]=20;
+            TempPara[i].iKi[1]=20;
+            TempPara[i].iKi[2]=20;
+
+            TempPara[i].iKd[0]=8000;
+            TempPara[i].iKd[1]=8000;
+            TempPara[i].iKd[2]=8000;
+
+            TempPara[i].HoldPWMa = 0.9197;               
+            TempPara[i].HoldPWMb = 60.465;             
+            TempPara[i].HoldPWMc = -1572.1;                
+            
+            TempPara[i].HoldPWMa1 = 0.9197;               
+            TempPara[i].HoldPWMb1 = 60.465;              
+            TempPara[i].HoldPWMc1 = -1572.1;                      
+        }        
+        
+        
+        
+    }  
+}
+void Read_Sys_EE_06(void){
+    unsigned int i;
+    EE_StrRead(0x1FE,(unsigned char*)&i,2);
+    if(i==100){
+/*************************************************/
+
+        for (i = 0; i < 17; i++) {
+            EE_StrRead(0x600 + i * 2, (unsigned char*) &g_uiScanFAM[i], 2);  
+            EE_StrRead(0x622 + i * 2, (unsigned char*) &g_uiScanVIC[i], 2);   
+            EE_StrRead(0x644 + i * 2, (unsigned char*) &g_uiScanROX[i], 2);   
+            EE_StrRead(0x666 + i * 2, (unsigned char*) &g_uiScanCY5[i], 2);         
+        }                               
+    }   
+}
+void Read_Sys_EE_07(void){
+    unsigned int i;
+    EE_StrRead(0x1FE,(unsigned char*)&i,2);
+    if(i==100){
+/*********************************************/
+
+        EE_StrRead(0x700, (unsigned char*) &DA_FAM, 2);                       
+
+        EE_StrRead(0x70C, (unsigned char*) &g_tEE.FAM_MPPCTk1, 4);              
+        EE_StrRead(0x710, (unsigned char*) &g_tEE.FAM_MPPCTk2, 4);             
+        EE_StrRead(0x714, (unsigned char*) &g_tEE.FAM_MPPCTb1, 4);         
+
+        EE_StrRead(0x718, (unsigned char*) &g_tEE.VIC_MPPCTk1, 4);           
+        EE_StrRead(0x71C, (unsigned char*) &g_tEE.VIC_MPPCTk2, 4);           
+        EE_StrRead(0x720, (unsigned char*) &g_tEE.VIC_MPPCTb1, 4);             
+
+        EE_StrRead(0x724, (unsigned char*) &g_tEE.ROX_MPPCTk1, 4);          
+        EE_StrRead(0x728, (unsigned char*) &g_tEE.ROX_MPPCTk2, 4);            
+        EE_StrRead(0x72C, (unsigned char*) &g_tEE.ROX_MPPCTb1, 4);         
+
+        EE_StrRead(0x730, (unsigned char*) &g_tEE.CY5_MPPCTk1, 4);           
+        EE_StrRead(0x734, (unsigned char*) &g_tEE.CY5_MPPCTk2, 4);          
+        EE_StrRead(0x738, (unsigned char*) &g_tEE.CY5_MPPCTb1, 4);             
+                        
+        EE_StrRead(0x7E0, (unsigned char*) &g_tEE.FAM_MPPCB, 2);         
+        EE_StrRead(0x7E2, (unsigned char*) &g_tEE.VIC_MPPCB, 2);            
+        EE_StrRead(0x7E4, (unsigned char*) &g_tEE.ROX_MPPCB, 2);             
+        EE_StrRead(0x7E6, (unsigned char*) &g_tEE.CY5_MPPCB, 2);         
+        
+        EE_StrRead(0x7E8, (unsigned char*) &g_tEE.uiQCbuffer, 2);             
+        
+        
+    }  
+}
+void Read_Sys_EE_FAMK(void){
+    unsigned int i;
+    EE_StrRead(0x1FE,(unsigned char*)&i,2);
+    if(i==100){
+       for (i = 0; i < 16; i++) {
+           EE_StrRead(0xA00 + i * 4, (unsigned char*) &g_tEE.fSFAMk[i], 4);       
+       }      
+    }
+}
+void Read_Sys_EE_VICK(void){
+    unsigned int i;
+    EE_StrRead(0x1FE,(unsigned char*)&i,2);
+    if(i==100){
+        for (i = 0; i < 16; i++) {
+           EE_StrRead(0xB80 + i * 4, (unsigned char*) &g_tEE.fSVICk[i], 4);     
+       }   
+    }    
+}
+void Read_Sys_EE_ROXK(void){
+    unsigned int i;
+    EE_StrRead(0x1FE,(unsigned char*)&i,2);
+    if(i==100){
+        for (i = 0; i < 16; i++) {
+           EE_StrRead(0xD00 + i * 4, (unsigned char*) &g_tEE.fSROXk[i], 4);        
+       }        
+    }    
+}
+void Read_Sys_EE_CY5K(void){
+    unsigned int i;
+    EE_StrRead(0x1FE,(unsigned char*)&i,2);
+    if(i==100){
+        for (i = 0; i < 16; i++) {
+           EE_StrRead(0xE80 + i * 4, (unsigned char*) &g_tEE.fSCY5k[i], 4);      
+       }        
+    }    
+}
+
+void Read_Sys_EE_B(void){
+    unsigned int i;
+    EE_StrRead(0x1FE,(unsigned char*)&i,2);
+    if(i==100){
+        for (i = 0; i < 16; i++) {
+           EE_StrRead(0x1300 + 2 * i, (unsigned char*) &g_tEE.sSFAMb[i], 2);            
+           EE_StrRead(0x13C0 + 2 * i, (unsigned char*) &g_tEE.sSVICb[i], 2);            
+           EE_StrRead(0x1480 + 2 * i, (unsigned char*) &g_tEE.sSROXb[i], 2);            
+           EE_StrRead(0x1540 + 2 * i, (unsigned char*) &g_tEE.sSCY5b[i], 2);        
+       }        
+    }    
+}
+void Read_Sys_EE_System(void){
+    unsigned int i;
+    EE_StrRead(0x1FE,(unsigned char*)&i,2);
+    if(i==100){
+//        EE_StrRead(0x2011, (unsigned char*) &g_tEE.sSROXb[i], 1);         
+//        EE_StrRead(0x2012, (unsigned char*) &g_tEE.sSCY5b[i], 1);     
+//        EE_StrRead(0x2013, (unsigned char*) &g_tEE.sSCY5b[i], 1);      
+    }    
+}
+
+
+
+
+
+
+
+
+

+ 93 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/EEPROM.h

@@ -0,0 +1,93 @@
+#ifndef __EEPROM_H
+#define	__EEPROM_H
+
+#ifdef  __EEPROM_DEF
+#define EXTERN_EEPROM
+#else
+#define EXTERN_EEPROM extern
+#endif
+/*EEPROMÒý½Å¶¨Òå*/
+#define	 SCL 	_LATK11      //SCL
+#define	 SDA	_LATK12      //SDA
+
+EXTERN_EEPROM struct EEPROM g_tEE;
+struct EEPROM{
+    unsigned int uiXPulseHome;         
+    unsigned int uiXSpeedMax;        
+    unsigned int uiXSpeedMin;        
+    unsigned int uiXSpeedScan;        
+    unsigned int uiXSpeedHome;        
+    unsigned int uiXPulseAcc;     
+    unsigned int uiXPulseMax;         
+    unsigned int uiXPulseScan;          
+    unsigned int uiXPulseLock;     
+    unsigned int uiXSpeedLeave;    
+       
+    unsigned int uiFanHPwm;          
+    unsigned int uiFanLPwm;           
+    unsigned int uiMAXPWM;            
+    unsigned int CAPTemp_PCR;         
+    unsigned int CAPTarget_temp[2];   
+    unsigned int CutUart;            
+    float FAM_MPPCTk1,FAM_MPPCTk2,FAM_MPPCTb1;     
+    float VIC_MPPCTk1,VIC_MPPCTk2,VIC_MPPCTb1;   
+    float ROX_MPPCTk1,ROX_MPPCTk2,ROX_MPPCTb1;    
+    float CY5_MPPCTk1,CY5_MPPCTk2,CY5_MPPCTb1;   
+    float CY6_MPPCTk1,CY6_MPPCTk2,CY6_MPPCTb1;     
+    float _390_MPPCTk1,_390_MPPCTk2,_390_MPPCTb1;  
+
+    short FAM_MPPCB;
+    short VIC_MPPCB;
+    short ROX_MPPCB;
+    short CY5_MPPCB;
+    short CY6_MPPCB;
+    short _390_MPPCB;
+    
+    
+    float fSFAMk[16],fSVICk[16],fSROXk[16],fSCY5k[16],fSCY6k[16],fS390k[16]; 
+    short sSFAMb[16],sSVICb[16],sSROXb[16],sSCY5b[16],sSCY6b[16],sS390b[16];
+    
+    float fFINTk,fFINTb,fFINTTk,fFINTTb;
+    unsigned int uiFINVPT;
+    unsigned int uiOverTempCnter;
+    unsigned int uiOverTempCnter1;
+    unsigned int uiQCbuffer;
+    
+    unsigned int P0,P1,P2,I0,I1,I2,D0,D1,D2;
+    float WK1,WK2,WB,UP,DOWN,WK11,WK22,WB1;
+    unsigned int delays;
+    
+};
+
+
+
+
+
+extern void EE_delay(unsigned int cter);
+extern void EE_start();
+extern void EE_stop();
+extern void EE_sent(unsigned char temp);
+extern unsigned char EE_receive(unsigned char data);
+extern void EE_write(unsigned long addr,unsigned char data);
+extern unsigned char EE_read(unsigned long addr);
+extern void EE_StrWrite(unsigned long addr,unsigned char *data,unsigned int len);
+extern void EE_StrRead(unsigned long addr,unsigned char *data,unsigned int len);
+extern void Read_Sys_EE(unsigned long addr);
+extern void Read_EE();
+extern void Read_Sys_EE_01();
+extern void Read_Sys_EE_02();
+extern void Read_Sys_EE_03();
+extern void Read_Sys_EE_05();
+extern void Read_Sys_EE_06();
+extern void Read_Sys_EE_07();
+extern void Read_Sys_EE_FAMK();
+extern void Read_Sys_EE_VICK();
+extern void Read_Sys_EE_ROXK();
+extern void Read_Sys_EE_CY5K();
+extern void Read_Sys_EE_CY6K();
+extern void Read_Sys_EE_390K();
+extern void Read_Sys_EE_B();
+extern void Read_Sys_EE_System();
+
+#endif	/* XC_HEADER_TEMPLATE_H */
+

+ 321 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Interrupt.c

@@ -0,0 +1,321 @@
+#define  __INTERRUPT_DEF
+#include "ABIS_User.h"
+unsigned char g_ucENABLE = 1;
+unsigned int uiData_num = 0,uiData_buffer = 0;
+
+
+/*******************************************************************************
+ * 函数名称:Init_T3
+ *******************************************************************************/
+//void Init_T3(){
+//	TMR3  = 0;
+//	PR3   = 9375;
+//	T3CON = 0x8020;     			 // T6=1:64
+//
+//   	IFS0bits.T3IF = 0;
+//    IPC2bits.T3IP = 4;
+//   	IEC0bits.T3IE = 1;              
+//    T3CONbits.TON = 1;
+//     
+//}
+//void __attribute__((__interrupt__,auto_psv)) _T3Interrupt (void)
+//{
+//    if(DmaBuffer == 0)
+//    {
+//        BufferA.Adc1Ch0[0] = AD_Get(0x00);
+//        BufferA.Adc1Ch1[0] = AD_Get(0x01);
+//        BufferA.Adc1Ch2[0] = AD_Get(0x02);
+//        BufferA.Adc1Ch3[0] = AD_Get(0x03);
+//        BufferA.Adc1Ch4[0] = AD_Get(0x04);
+//        BufferA.Adc1Ch5[0] = AD_Get(0x05);
+//        BufferA.Adc1Ch6[0] = AD_Get(0x06);
+//        BufferA.Adc1Ch7[0] = AD_Get(0x07);
+//        BufferA.Adc1Ch8[0] = AD_Get(0x08); 
+//    }
+//    else
+//    {
+//        BufferB.Adc1Ch0[0] = AD_Get(0x00);
+//        BufferB.Adc1Ch1[0] = AD_Get(0x01);
+//        BufferB.Adc1Ch2[0] = AD_Get(0x02);
+//        BufferB.Adc1Ch3[0] = AD_Get(0x03);
+//        BufferB.Adc1Ch4[0] = AD_Get(0x04);
+//        BufferB.Adc1Ch5[0] = AD_Get(0x05);
+//        BufferB.Adc1Ch6[0] = AD_Get(0x06);
+//        BufferB.Adc1Ch7[0] = AD_Get(0x07);
+//        BufferB.Adc1Ch8[0] = AD_Get(0x08);     
+//    }
+//    DmaBuffer ^= 1;   
+//    IFS0bits.T3IF = 0;
+//}
+/*******************************************************************************
+ * 函数名称:T1Interrupt
+ *******************************************************************************/
+void __attribute__((__interrupt__,auto_psv)) _T2Interrupt (void)
+{
+	IFS0bits.T2IF = 0;
+    T6CONbits.TON  = 0;              //修改为0
+	TMR2 = 0;
+    g_tMotorParam.ulXiPosition =( g_tMotorParam.ucXDirection == FORWARD )? (g_tMotorParam.ulXiPosition + 1) : (g_tMotorParam.ulXiPosition - 1);
+    if(MOTORX_DIR_scan == 1){
+        g_uiScanPulseX++;//记录当前脉冲值   
+    }else if(MOTORX_DIR_scan == 0){
+        g_uiScanPulseX--;//记录当前脉冲值
+    }else{}
+ 
+    if(Alldata == 1){
+        if(ADC7606Enable==1) {
+            if (g_ucFAMLED == 1) {
+                if ((g_uiScanPulseX >= (g_uiScanFAM[0] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[0] + SUM))) {
+                    FAMLED = 1;
+                    FAMData[0][FAMData_num] =  AD_Get(0x09);
+                    FAMData_num++;
+                } else if ((g_uiScanPulseX >= (g_uiScanFAM[1] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[1] + SUM))) {    
+                    FAMLED = 1;                    
+                    FAMData[1][FAMData_num] =  AD_Get(0x09);
+                    FAMData_num++;                      
+                } else if ((g_uiScanPulseX >= (g_uiScanFAM[2] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[2] + SUM))) {    
+                    FAMLED = 1;                    
+                    FAMData[2][FAMData_num] =  AD_Get(0x09);
+                    FAMData_num++;       
+                } else if ((g_uiScanPulseX >= (g_uiScanFAM[3] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[3] + SUM))) {
+                    FAMLED = 1;
+                    FAMData[3][FAMData_num] =  AD_Get(0x09);
+                    FAMData_num++;
+                } else if ((g_uiScanPulseX >= (g_uiScanFAM[4] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[4] + SUM))) {    
+                    FAMLED = 1;
+                    FAMData[4][FAMData_num] =  AD_Get(0x09);
+                    FAMData_num++;
+                } else if ((g_uiScanPulseX >= (g_uiScanFAM[5] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[5] + SUM))) {    
+                    FAMLED = 1;
+                    FAMData[5][FAMData_num] =  AD_Get(0x09);
+                    FAMData_num++;
+                } else if ((g_uiScanPulseX >= (g_uiScanFAM[6] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[6] + SUM))) {    
+                    FAMLED = 1;
+                    FAMData[6][FAMData_num] =  AD_Get(0x09);
+                    FAMData_num++;
+                } else if ((g_uiScanPulseX >= (g_uiScanFAM[7] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[7] + SUM))) {   
+                    FAMLED = 1;
+                    FAMData[7][FAMData_num] =  AD_Get(0x09);
+                    FAMData_num++;
+                } else if ((g_uiScanPulseX >= (g_uiScanFAM[8] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[8] + SUM))) {    
+                    FAMLED = 1;
+                    FAMData[8][FAMData_num] =  AD_Get(0x09);
+                    FAMData_num++;
+                } else if ((g_uiScanPulseX >= (g_uiScanFAM[9] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[9] + SUM))) {  
+                    FAMLED = 1;
+                    FAMData[9][FAMData_num] =  AD_Get(0x09);
+                    FAMData_num++;
+                } else if ((g_uiScanPulseX >= (g_uiScanFAM[10] - SUM)) &&(g_uiScanPulseX < (g_uiScanFAM[10] + SUM))) {     
+                    FAMLED = 1;
+                    FAMData[10][FAMData_num] =  AD_Get(0x09);
+                    FAMData_num++;
+                } else if ((g_uiScanPulseX >= (g_uiScanFAM[11] - SUM)) &&(g_uiScanPulseX < (g_uiScanFAM[11] + SUM))) { 
+                    FAMLED = 1;
+                    FAMData[11][FAMData_num] =  AD_Get(0x09);
+                    FAMData_num++;
+                } else if ((g_uiScanPulseX >= (g_uiScanFAM[12] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[12] + SUM))) {     
+                    FAMLED = 1;
+                    FAMData[12][FAMData_num] =  AD_Get(0x09);
+                    FAMData_num++;
+                }else if ((g_uiScanPulseX >= (g_uiScanFAM[13] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[13] + SUM))) {     
+                    FAMLED = 1;
+                    FAMData[13][FAMData_num] =  AD_Get(0x09);
+                    FAMData_num++;
+                }else if ((g_uiScanPulseX >= (g_uiScanFAM[14] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[14] + SUM))) {   
+                    FAMLED = 1;
+                    FAMData[14][FAMData_num] =  AD_Get(0x09);
+                    FAMData_num++;
+                }else if ((g_uiScanPulseX >= (g_uiScanFAM[15] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[15] + SUM))) {   
+                    FAMLED = 1;
+                    FAMData[15][FAMData_num] =  AD_Get(0x09);
+                    FAMData_num++;
+                }else if ((g_uiScanPulseX >= (g_uiScanFAM[16] - SUM))&&(g_uiScanPulseX < (g_uiScanFAM[16] + SUM))) {
+                    FAMLED = 1;
+                    FAMData[16][FAMData_num] =  AD_Get(0x09);
+                    FAMData_num++;
+                } else {
+                    FAMLED = 0;     
+                    FAMData_num = 0;
+                }
+            }
+  
+        }
+    }
+    else if(Alldata == 0){//获取全数据用
+        if(Motstep == 10){
+            Motstep = 0;        
+            if(MPPCnum == 0)  
+                ucBuffer_Data[FAMData_num] = AD_Get(0x09);
+            else if(MPPCnum == 1)  
+                ucBuffer_Data[FAMData_num] = AD_Get(0x0B);            
+            else if(MPPCnum == 2)  
+                ucBuffer_Data[FAMData_num] = AD_Get(0x0A); 
+            else if(MPPCnum == 3)  
+                ucBuffer_Data[FAMData_num] = AD_Get(0x0C);  
+       
+            FAMData_num++;
+        }
+        Motstep++;        
+    }
+    else{};
+    PR2   = g_uiMotorXPeriod[g_uiAccIndex]; 
+    OC1RS = g_uiMotorXPeriod[g_uiAccIndex]/2;      
+    OC1R  = 0; 
+
+    g_uliRunningPulse++; 
+    if(g_uliRunningPulse <= g_tMotorParam.ulXiAccPulse){
+        g_uiAccIndex++;
+    }
+    else if(g_uliRunningPulse < g_tMotorParam.ulXiConstPulse){                  //匀速运动,频率不变  
+        //g_uliRunningPulse--;
+    }
+    else if(g_uliRunningPulse < g_uliPulseCount){                               //减速运动,频率减小
+        g_uiAccIndex--;
+    }
+    else if(g_uliRunningPulse >= g_uliPulseCount){                               //停止PWM输出
+        TMR2 = 0;
+        T2CONbits.TON = 0;                                                      //off the T1
+        g_ucMotorXFinishFlag=1;
+        ADC7606Enable =0;
+    }
+    T6CONbits.TON  = 1;              //修改为0
+}
+
+
+/*******************************************************************************
+ * 函数名称:Init_T6
+ *******************************************************************************/
+void Init_T6()
+{
+	TMR6  = 0;
+	PR6   = 11719;
+	T6CON = 0x8030;     			
+
+   	IFS2bits.T6IF  = 0;
+   	IPC11bits.T6IP = 2;             
+   	IEC2bits.T6IE  = 1;             
+    T6CONbits.TON  = 1;            
+}
+void __attribute__((interrupt,auto_psv)) _T6Interrupt (void)
+{    
+    IFS2bits.T6IF = 0;
+    static unsigned char Timer ;
+    Timer++;
+    if(Timer == 20){
+        Timer = 0;
+        STU1 = !STU1;        
+    }
+        
+//    待测试标定对应顺序 测试OK 
+        MCUAdcBuff[0][SampleNo]  = AD_Get(0x05);     //BLOCK1
+        MCUAdcBuff[1][SampleNo]  = AD_Get(0x04);     //BLOCK2
+        MCUAdcBuff[2][SampleNo]  = AD_Get(0x03);     //BLOCK3
+        MCUAdcBuff[3][SampleNo]  = AD_Get(0x02);     //BLOCK4
+        MCUAdcBuff[4][SampleNo]  = AD_Get(0x06);     //BLOCK5制冷池
+        MCUAdcBuff[5][SampleNo]  = AD_Get(0x07);     //BLOCK6制冷池
+        MCUAdcBuff[6][SampleNo]  = AD_Get(0x02);     //热盖      
+//        MCUAdcBuff[7][SampleNo]  = AD_Get(0x07);     //
+        MCUAdcBuff[8][SampleNo]  = AD_Get(0x08);     //    散热片
+    SampleNo++;
+    if(SampleNo > 2) {     //100ms
+        SampleNo=0;
+        T4CONbits.TON=1;    //off the T4  for 1ms
+    }
+
+    
+    
+}
+/*******************************************************************************
+ * 函数名称:Init_T4
+ *******************************************************************************/
+void Init_T4()
+{
+	TMR4 = 0;
+	PR4   = 9375;
+	T4CON = 0x8020;     			// T4=1:64
+   	IFS1bits.T4IF = 0;
+   	IPC6bits.T4IP = 2;              //值越高优先级越高
+   	IEC1bits.T4IE = 1;              //使能中断
+    T4CONbits.TON = 0;
+}
+void __attribute__((interrupt,auto_psv)) _T4Interrupt (void)
+{   
+    unsigned char i;
+    unsigned char j;
+    long TempAD;
+//    STU2 = ~STU2;
+    IFS1bits.T4IF = 0;
+    T4CONbits.TON = 0;//off the T4  for 1ms    
+
+    for(i=0;i<9;i++){
+        TempAD=0;
+        for(j=0;j<3;j++){
+            TempAD += MCUAdcBuff[i][j];
+        }
+        dTemperature[i]=TempAD/3;
+        dTemperatureAD[i] = (unsigned int)dTemperature[i];
+    } 
+    for(i=0;i<6;i++){
+        TempChn[i].fCurrentTemperature = (double)(TempPara[i].fK1 * dTemperature[i]*dTemperature[i] + TempPara[i].fK2 * dTemperature[i] + TempPara[i].fB);
+        if(TempChn[i].fCurrentTemperature > 90)  TempChn[i].fCurrentTemperature = (double)(TempChn[i].fCurrentTemperature + TempPara[i].TTb);       
+    }  
+    if(g_ucENABLE == 1){
+        PeltierCtrler();
+    }   
+ 
+    for(i=6;i<8;i++){
+        CAPReal_temp[i-6] =(double)(CAPTk[i-6]*dTemperature[i] + CAPTb[i-6]); 
+        CAPReal_temp[i-6] =(double)(CAPTTk[i-6]*CAPReal_temp[i-6] + CAPTTb[i-6]);
+    }
+    if((CAPReal_temp[0] > (g_tEE.CAPTarget_temp[0]-3))&&(CAPReal_temp[0] < 121.0 )){//当前热盖温度在规定范围内时系统状态灯常亮
+        g_ucSTATE_CAP = 1;    
+    }  
+    CAPPeltierCtrler();//热盖温控
+
+    g_fFINReal_Temp = (float)(g_tEE.fFINTTk * (g_tEE.fFINTk*dTemperature[8] + g_tEE.fFINTb)+ g_tEE.fFINTTb); 
+      
+
+    g_ucSampleNo_STU++;
+    if((g_ucSampleNo_STU >= 3)&&(g_ucSTATE_RUN == 2)){//实验开始,状态灯间隔0.5s闪烁
+        g_ucSampleNo_STU = 0;
+        POWER_STU1 = ~POWER_STU1;
+        FANOC_Set(3,g_tEE.uiFanHPwm);   
+    }
+    if((g_ucSTATE_RUN == 1)&&(g_ucSTATE_CAP == 1)){//实验结束或空闲,状态灯常亮
+        g_ucSampleNo_STU = 0;
+        POWER_STU1 = 1;
+        FANOC_Set(3,g_tEE.uiFanLPwm);     
+    }   
+    if(g_ucSTATE_CAP == 0){
+        g_ucSampleNo_STU = 0;
+        POWER_STU1 = 0;
+        FANOC_Set(3,g_tEE.uiFanLPwm);    
+    }   
+    
+}
+
+/*******************************************************************************
+ * 函数名称:Init_T8
+ *******************************************************************************/
+void Init_T8()
+{
+	TMR8 = 0;                      
+	PR8  = 781;                    
+	T8CON = 0x8010;     			
+
+   	IFS3bits.T8IF = 0;
+   	IPC12bits.T8IP = 7;          
+   	IEC3bits.T8IE = 1;           
+}
+void __attribute__((interrupt,auto_psv)) _T8Interrupt (void)
+{
+    IFS3bits.T8IF = 0;
+    if(MotorXHomebuffer == 1){
+        MOTORX_PWM = !MOTORX_PWM;
+        PulseNum++;
+    }
+    if(MotorYHomebuffer == 1){
+        MOTORY_PWM = !MOTORY_PWM;
+        PulseNum++;
+    } 
+}

+ 69 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Interrupt.h

@@ -0,0 +1,69 @@
+#ifndef __INTERRUPT_H
+#define	__INTERRUPT_H
+
+#ifdef  __INTERRUPT_DEF
+#define EXTERN_INTERRUPT
+#else
+#define EXTERN_INTERRUPT extern
+#endif
+
+EXTERN_INTERRUPT short AD7606[8];
+EXTERN_INTERRUPT unsigned char SampleNo;
+EXTERN_INTERRUPT unsigned char g_ucSampleNo_STU;
+EXTERN_INTERRUPT unsigned char g_ucSTATE_RUN;
+EXTERN_INTERRUPT unsigned char g_ucSTATE_CAP;
+EXTERN_INTERRUPT unsigned char ADC7606Enable;
+
+#define     SCAN_X       720
+#define     SCAN_Y       480
+#define     REAGENT_INSTANCE    360 
+#define     SUM                 40  
+#define     SUM1                80  
+#define     COUNT1              100 
+
+EXTERN_INTERRUPT unsigned char FAMCount,g_ucFAMLED,g_ucFAMLED_CrossTalk; 
+EXTERN_INTERRUPT unsigned char VICCount,g_ucVICLED,g_ucVICLED_CrossTalk;
+EXTERN_INTERRUPT unsigned char ROXCount,g_ucROXLED,g_ucROXLED_CrossTalk;
+EXTERN_INTERRUPT unsigned char CY5Count,g_ucCY5LED,g_ucCY5LED_CrossTalk;
+EXTERN_INTERRUPT unsigned char CY6Count,g_ucCY6LED,g_ucCY6LED_CrossTalk;
+EXTERN_INTERRUPT unsigned char _390Count,g_uc390LED,g_uc390LED_CrossTalk;
+
+EXTERN_INTERRUPT unsigned int  FAMData_num;
+EXTERN_INTERRUPT unsigned int  VICData_num;
+EXTERN_INTERRUPT unsigned int  ROXData_num;
+EXTERN_INTERRUPT unsigned int  CY5Data_num;
+EXTERN_INTERRUPT unsigned int  CY6Data_num;
+EXTERN_INTERRUPT unsigned int  _390Data_num;
+EXTERN_INTERRUPT unsigned int  TEMP_num;
+
+EXTERN_INTERRUPT unsigned int FAMData[17][80] __attribute__((eds));
+EXTERN_INTERRUPT unsigned int VICData[17][80] __attribute__((eds));
+EXTERN_INTERRUPT unsigned int ROXData[17][80] __attribute__((eds));
+EXTERN_INTERRUPT unsigned int CY5Data[17][80] __attribute__((eds));
+EXTERN_INTERRUPT unsigned int CY6Data[17][80] __attribute__((eds));
+EXTERN_INTERRUPT unsigned int _390Data[17][80] __attribute__((eds));
+
+EXTERN_INTERRUPT unsigned int  g_uiScanFAM[17];
+EXTERN_INTERRUPT unsigned int  g_uiScanVIC[17];
+EXTERN_INTERRUPT unsigned int  g_uiScanROX[17];
+EXTERN_INTERRUPT unsigned int  g_uiScanCY5[17];
+EXTERN_INTERRUPT unsigned int  g_uiScanCY6[17];
+EXTERN_INTERRUPT unsigned int  g_uiScan390[17];
+
+EXTERN_INTERRUPT unsigned int g_uiScanFAM_F1,g_uiScanFAM_F12,g_uiScanFAM_R1,g_uiScanFAM_R12,g_uiFAM_F,g_uiFAM_R;
+EXTERN_INTERRUPT unsigned int g_uiScanVIC_F1,g_uiScanVIC_F12,g_uiScanVIC_R1,g_uiScanVIC_R12,g_uiVIC_F,g_uiVIC_R;
+EXTERN_INTERRUPT unsigned int g_uiScanROX_F1,g_uiScanROX_F12,g_uiScanROX_R1,g_uiScanROX_R12,g_uiROX_F,g_uiROX_R;
+EXTERN_INTERRUPT unsigned int g_uiScanCY5_F1,g_uiScanCY5_F12,g_uiScanCY5_R1,g_uiScanCY5_R12,g_uiCY5_F,g_uiCY5_R;
+EXTERN_INTERRUPT unsigned int g_uiScanCY6_F1,g_uiScanCY6_F12,g_uiScanCY6_R1,g_uiScanCY6_R12,g_uiCY6_F,g_uiCY6_R;
+EXTERN_INTERRUPT unsigned int g_uiScan390_F1,g_uiScan390_F12,g_uiScan390_R1,g_uiScan390_R12,g_ui390_F,g_ui390_R;
+
+EXTERN_INTERRUPT unsigned int  g_uiMPPCtemp[30],g_uiFRPLS,g_uiKongJianJuPLS;
+EXTERN_INTERRUPT unsigned int  g_usEERadiatorOvertemp;
+EXTERN_INTERRUPT unsigned char MPPCnum,g_ucENABLE,MOTORX_DIR_scan,MOTORY_DIR_scan,ucCtrlMode; 
+EXTERN_INTERRUPT unsigned int  g_uiScanPulseX,g_uliRunningPulseY,g_uliRunningPulseZ;
+EXTERN_INTERRUPT unsigned char g_ucMPPCtemp;
+EXTERN_INTERRUPT void InitINT2(void);
+EXTERN_INTERRUPT void ProcessADCSamples(unsigned int * AdcBuffer);
+
+#endif	/* XC_HEADER_TEMPLATE_H */
+

+ 241 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Motor.c

@@ -0,0 +1,241 @@
+#define  __MOTOR1_DEF
+#include "ABIS_User.h"
+/*******************************************************************************
+ * 函数名称:CalculateSModeLine
+ *******************************************************************************/
+void CalculateSModeLineX( unsigned int * period, unsigned int len, unsigned int fre_max, unsigned int fre_min, float flexible)
+{
+	int i,ttt;
+	float deno ;
+	float melo ;
+	float fre;
+	float Fdelt = fre_max-fre_min;
+	if(len>MOTORX_ACCLTH) len=MOTORX_ACCLTH;
+	for(i=0; i<len; i++){
+		melo = flexible * (2.0*i/len-1);                                        
+		deno = 1.0 / (1 + expf(-melo));                                         
+		fre = Fdelt * deno + fre_min;
+		ttt=period[i] = (unsigned short)(625000.0/fre);                         
+    }
+}
+/*******************************************************************************
+ * 函数名称:InitMotorPWM
+ *******************************************************************************/
+void InitMotorXPWM(void){
+    _RP100R = 0x10;               
+    OC1CON2 = 0;                 
+    OC1CON1bits.OCTSEL = 0;   
+
+    OC1R = 15000;                
+
+    OC1RS = 15000;
+    T2CON = 0;
+    T2CONbits.TCKPS = 2;         
+    PR2 = 30000;                  
+    OC1CON2bits.SYNCSEL = 0x0C;  
+    OC1CON1bits.OCM = 5;         
+    T2CONbits.TON = 0;         
+    IEC0bits.T2IE = 1;            
+    IFS0bits.T2IF = 0;
+    IPC1bits.T2IP = 7;
+}
+/*******************************************************************************
+ * 函数名称:SetMotor
+ *******************************************************************************/
+void SetMotorX(unsigned long int Pulses,unsigned int spd,unsigned long int *AccPLS,unsigned long int *constVPLS)
+{
+    unsigned int i;
+    unsigned int Prd;
+    Prd = 625000 / spd; 
+    for (i = 0; i < MOTORX_ACC; i++) {
+        if ((Prd < g_uiMotorXPeriod[i])&&(Prd >= g_uiMotorXPeriod[i + 1])) {
+            *AccPLS = i + 1;
+            break;
+        } else if (Prd == g_uiMotorXPeriod[i]) {
+            *AccPLS = i;
+            break;
+        }
+    }
+    if (Pulses >= *AccPLS + *AccPLS) {
+        *constVPLS = Pulses - *AccPLS;      
+    } else if (Pulses < *AccPLS + *AccPLS) { 
+        *AccPLS = Pulses / 2;
+        *constVPLS = *AccPLS;
+	}	
+}
+/*******************************************************************************
+ * 函数名称:MotorHome
+ *******************************************************************************/
+void MotorXHome(unsigned int pulseoffset,unsigned int MOVEspd,unsigned int LEAVspd )
+{
+	unsigned int Freq;
+	OC1CON1 = 0;  
+    MotorXHomebuffer = 1;
+    MotorYHomebuffer = 0;
+    MotorZHomebuffer = 0;
+	Delay_ms(2);
+	
+    TMR8=0;
+	PulseNum=0;
+    if(HOMEX == 0){
+        MOTORX_DIR = FORWARD;
+        Freq=5000000/LEAVspd;
+        TMR8=0;
+        PR8=Freq;
+        IFS3bits.T8IF = 0;
+        T8CONbits.TON=1;
+        
+        while(!HOMEX){
+            if(PulseNum > 200000) break;
+        }
+        T8CONbits.TON=0;
+        MOTORX_PWM=0;
+    }else{
+        MOTORX_DIR = REVERSAL;
+        Freq=5000000/MOVEspd;
+        TMR8=0;
+        PR8=Freq;
+        IFS3bits.T8IF = 0;
+        T8CONbits.TON=1;
+        while(PulseNum < 200000){ 
+            if(!HOMEX) 
+                break;
+        }
+        T8CONbits.TON=0;
+        
+        Freq=5000000/LEAVspd;
+        TMR8=0;
+        PR8=Freq;
+        IFS3bits.T8IF = 0;
+        T8CONbits.TON=1;
+        PulseNum=0;
+        
+        while(PulseNum <= g_tEE.uiXPulseHome * 2);
+        T8CONbits.TON=0;
+        
+        MOTORX_DIR = FORWARD;
+
+        Freq=5000000/LEAVspd;
+        TMR8=0;
+        PR8=Freq;
+        IFS3bits.T8IF = 0;
+        T8CONbits.TON=1;
+        PulseNum=0;
+        while(HOMEX==0){
+            if(PulseNum >= 200000) break;
+        }
+        T8CONbits.TON=0;
+        MOTORX_PWM=0;
+    }
+//	MOTORX_DIR = FORWARD;//close to the home sensor
+//    
+//    Freq=5000000/MOVEspd;//half period
+//    TMR8=0;
+//    PR8=Freq;
+//    IFS3bits.T8IF = 0;
+//    T8CONbits.TON=1;
+//    PulseNum=0;
+//    while(HOMEX == 0){
+//        if(PulseNum >= pulseoffset*2 ) break;//Leave the sensor to 1,出光电后过冲脉冲
+//    }
+//    T8CONbits.TON=0;
+//    MOTORX_PWM=0;
+
+    InitMotorXPWM();        //电机OC初始化
+    g_uliRunningPulse = 0;
+    g_uiScanPulseX = 0;
+	g_tMotorParam.ulXiPosition =0;
+	Delay_ms(10);
+    
+    
+   
+    
+    
+    
+    
+}
+/*******************************************************************************
+ * 函数名称:MotorXMoveTo 暂时没有调用
+ *******************************************************************************/
+void MotorXMoveTo(unsigned long int pulse,unsigned int spd)
+{
+    unsigned long int uliMotorPulse = 0;
+    if(pulse > g_tMotorParam.ulXiPosition)
+    {
+        uliMotorPulse = pulse - g_tMotorParam.ulXiPosition;
+        MotorXMove(uliMotorPulse,1,spd);
+    }
+    else if(pulse < g_tMotorParam.ulXiPosition)
+    {
+        uliMotorPulse = g_tMotorParam.ulXiPosition - pulse;
+        MotorXMove(uliMotorPulse,0,spd);
+    }
+}
+/*******************************************************************************
+ * 函数名称:MotorXMove
+ *******************************************************************************/
+void MotorXMove(unsigned long int pulse,unsigned char dir,unsigned int spd)//spd --HZ
+{       
+    if(pulse ==0) return;
+    g_tMotorParam.ucXDirection = dir;
+    MOTORX_DIR = dir;
+	if(spd < g_tEE.uiXSpeedMin)spd = g_tEE.uiXSpeedMin;
+    if(spd > g_tEE.uiXSpeedMax)spd = g_tEE.uiXSpeedMax;
+	g_uiAccIndex=0;
+	g_uliRunningPulse=0;
+    g_ucMotorXFinishFlag = 0;
+    g_uliPulseCount = pulse;
+	SetMotorX(pulse,spd,&(g_tMotorParam.ulXiAccPulse),&(g_tMotorParam.ulXiConstPulse));
+	T2CONbits.TON=1;//on the T1
+	while(!g_ucMotorXFinishFlag); 
+ 
+}
+/*******************************************************************************
+ * 函数名称:MotorXScan
+ *******************************************************************************/
+void MotorXScan(unsigned long int pulse,unsigned char dir,unsigned int spd)//spd --HZ
+{
+    if(pulse ==0) return;
+	MOTORX_DIR = dir;//close to the home sensor
+    MOTORX_DIR_scan = dir;   
+    g_tMotorParam.ucXDirection = dir; 
+    
+    
+    if(Alldata==1){ 
+        g_ucFAMLED = 1;
+        g_ucVICLED = 1;
+        g_ucROXLED = 1;
+        g_ucCY5LED = 1;
+        g_ucCY6LED = 1;
+        g_uc390LED = 1;       
+
+        ADC7606Enable = 1;
+        FAMData_num  = 0;
+        VICData_num  = 0;
+        ROXData_num  = 0;
+        CY5Data_num  = 0;
+        CY6Data_num  = 0;
+        _390Data_num = 0;
+        TEMP_num = 0;
+
+    }else{                                                                     
+        if(FAMLED == 1)      MPPCnum = 0;
+        else if(VICLED == 1) MPPCnum = 1;     
+        else if(ROXLED == 1) MPPCnum = 2;
+        else if(CY5LED == 1) MPPCnum = 3;
+        else if(CY6LED == 1) MPPCnum = 4;   
+        else if(_390LED == 1)MPPCnum = 5;                         
+        Motstep     = 0;
+        FAMData_num = 3;
+    } 
+	if(spd<g_tEE.uiXSpeedMin) spd=g_tEE.uiXSpeedMin;
+	g_uiAccIndex         = 0;
+	g_uliRunningPulse    = 0;                                                
+    g_ucMotorXFinishFlag = 0;
+    g_uliPulseCount = pulse;
+	SetMotorX(pulse,spd,&(g_tMotorParam.ulXiAccPulse),&(g_tMotorParam.ulXiConstPulse));
+	T2CONbits.TON=1;//on the T1
+	while(!g_ucMotorXFinishFlag); 
+
+}
+

+ 125 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Motor.h

@@ -0,0 +1,125 @@
+#ifndef __MOTOR1_H
+#define	__MOTOR1_H
+
+#ifdef  __MOTOR1_DEF
+#define EXTERN_MOTOR1
+#else
+#define EXTERN_MOTOR1 extern
+#endif
+
+#define		FORWARD		1
+#define		REVERSAL	0
+#define		LEDOFF      0	     
+#define		LEDON       1
+
+#define     MOTXMAXSTEP       20000
+#define     MOTYMAXSTEP       120000
+#define     MOTZMAXSTEP       20000
+
+#define     MOTTIMER         500         //3s
+
+#define		MOTORX_PWM		 _LATF4   
+#define     MOTORX_DIR       _LATF5    
+
+#define		MOTORY_PWM		 _LATG8    
+#define     MOTORY_DIR       _LATG9    
+
+#define		MOTORZ_PWM		 _LATG6    
+#define     MOTORZ_DIR       _LATG7   
+
+/*电机复位指令定义*/
+#define     HOMEX              !_RB1
+#define     HOMEY              _RB0
+#define     HOMEZ              _RB8
+
+#define		MOTORX_ACCLTH	   (unsigned int)1000   
+#define     MOTORX_ACC         (unsigned int)4000    
+#define     MOTORX_FREQMAX     (unsigned int)20000 
+#define     MOTORX_FREQMIN     (unsigned int)2000   
+#define     MOTORX_XFLEXIBLE   (float)4             
+
+#define		MOTORY_ACCLTH	   (unsigned int)2100  
+#define     MOTORY_ACC         (unsigned int)2000 
+#define     MOTORY_FREQMAX     (unsigned int)33000  
+#define     MOTORY_FREQMIN     (unsigned int)2000   
+#define     MOTORY_XFLEXIBLE   (float)6            
+
+#define		MOTORZ_ACCLTH	   (unsigned int)2100   
+#define     MOTORZ_ACC         (unsigned int)2000  
+#define     MOTORZ_FREQMAX     (unsigned int)33000 
+#define     MOTORZ_FREQMIN     (unsigned int)2000   
+#define     MOTORZ_XFLEXIBLE   (float)6              
+
+
+EXTERN_MOTOR1 unsigned char KongWei,HangHao;
+EXTERN_MOTOR1 int MOTSpeedTimer;          
+/*电机运行参数定义*/
+      
+EXTERN_MOTOR1 unsigned int g_uiAccIndex ;             
+EXTERN_MOTOR1 unsigned long int g_uliRunningPulse ;    
+EXTERN_MOTOR1 unsigned long int g_uliPulseCount ;     
+EXTERN_MOTOR1 unsigned int g_uiMotorXPeriod[MOTORX_ACC];
+
+
+EXTERN_MOTOR1 unsigned long int PulseNum;
+EXTERN_MOTOR1 unsigned char Motstep;
+
+EXTERN_MOTOR1 unsigned char PCR_MOTOR1,PCR_MOTOR2;
+EXTERN_MOTOR1 unsigned char ucMOTOR_DIR;
+EXTERN_MOTOR1 unsigned int uiSpeed;
+EXTERN_MOTOR1 long g_lPulse;
+
+EXTERN_MOTOR1 unsigned int MotMovePlus;                                
+EXTERN_MOTOR1 unsigned int MOTXSpeed,MOTYSpeed;                        
+EXTERN_MOTOR1 unsigned int MOTXHomeSpeed,MOTYHomeSpeed;               
+
+EXTERN_MOTOR1 unsigned char DglLedbuf;
+EXTERN_MOTOR1 unsigned char Alldata,SampleTransNo;
+
+
+EXTERN_MOTOR1 unsigned char MotorXHomebuffer,g_ucMotorXFinishFlag;
+EXTERN_MOTOR1 unsigned char MotorYHomebuffer,g_ucMotorYFinishFlag;
+EXTERN_MOTOR1 unsigned char MotorZHomebuffer,g_ucMotorZFinishFlag;
+
+EXTERN_MOTOR1 struct MotorParam g_tMotorParam;
+struct MotorParam{
+    unsigned char ucXDirection;       
+    unsigned int  uiXSpeed;             
+    unsigned long int ulXiPosition;    
+    unsigned long int ulXiAccPulse;    
+    unsigned long int ulXiConstPulse;   
+    
+    unsigned char ucYDirection;       
+    unsigned int  uiYSpeed;         
+    unsigned long int ulYiPosition;   
+    unsigned long int ulYiAccPulse;    
+    unsigned long int ulYiConstPulse;  
+    
+    unsigned char ucZDirection;         
+    unsigned int  uiZSpeed;           
+    unsigned long int ulZiPosition;    
+    unsigned long int ulZiAccPulse;  
+    unsigned long int ulZiConstPulse;  
+
+};
+
+EXTERN_MOTOR1 void CalculateSModeLineX( unsigned int * period, unsigned int len, unsigned int fre_max, unsigned int fre_min, float flexible);
+EXTERN_MOTOR1 void CalculateSModeLineY( unsigned int * period, unsigned int len, unsigned int fre_max, unsigned int fre_min, float flexible);
+//EXTERN_MOTOR1 void CalculateSModeLineZ( unsigned int * period, unsigned int len, unsigned int fre_max, unsigned int fre_min, float flexible);
+EXTERN_MOTOR1 void InitMotorXPWM();
+EXTERN_MOTOR1 void SetMotorX(unsigned long int Pulses,unsigned int spd,unsigned long int *AccPLS,unsigned long int *constVPLS);
+EXTERN_MOTOR1 void MotorXHome(unsigned int pulseoffset,unsigned int MOVEspd,unsigned int LEAVspd );
+EXTERN_MOTOR1 void MotorXMove(unsigned long int pulse,unsigned char dir,unsigned int spd);
+EXTERN_MOTOR1 void MotorXScan(unsigned long int pulse,unsigned char dir,unsigned int spd);
+EXTERN_MOTOR1 void MotorXMoveTo(unsigned long int pulse,unsigned int spd);
+
+EXTERN_MOTOR1 void InitMotorYPWM();
+EXTERN_MOTOR1 void SetMotorY(unsigned long int Pulses,unsigned int spd,unsigned long int *AccPLS,unsigned long int *constVPLS);
+EXTERN_MOTOR1 void MotorYHome(unsigned int pulseoffset,unsigned int MOVEspd,unsigned int LEAVspd );
+EXTERN_MOTOR1 void MotorYMove(unsigned long int pulse,unsigned char dir,unsigned int spd);
+EXTERN_MOTOR1 void MotorYScan(unsigned long int pulse,unsigned char dir,unsigned int spd);
+EXTERN_MOTOR1 void MotorYMoveTo(unsigned long int pulse,unsigned int spd);
+
+
+#endif	/* MOTOR_H */
+

+ 77 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/OC.c

@@ -0,0 +1,77 @@
+#define  __OC_DEF
+#include "ABIS_User.h"
+/*******************************************************************************
+ * 函数名称:Init_OC
+ *******************************************************************************/
+void Init_OC(){
+    _RP68R = 0x13;               
+//    _RP99R  = 0x14;               
+    _RP69R  = 0x15;              
+//    _RP104R = 0x16;                
+    
+	TMR5	= 0;
+	PR5		= 10000; 
+    T5CON	= 0x8000;//1:1分频
+       
+    OC4R	= 0;    
+	OC4RS	= 0;
+    OC4CON1 = 0x1C06;
+    OC4CON2 = 0x000F;
+    
+//    OC5R	= 0;
+//	OC5RS	= 0;
+//    OC5CON1 = 0x1C06;
+//    OC5CON2 = 0x000F;
+    
+    OC6R	= 0;
+	OC6RS	= 0;
+    OC6CON1 = 0x1C06;
+    OC6CON2 = 0x000F;
+    
+//    OC7R	= 0;
+//	OC7RS	= 0;
+//    OC7CON1 = 0x1C06;
+//    OC7CON2 = 0x000F;
+}
+/*******************************************************************************
+ * 函数名称:CAPOC_Set
+ *******************************************************************************/
+void CAPOC_Set(unsigned char data1,unsigned int data2){
+    switch (data1) {
+        case 0:
+            OC4R  = data2;
+            OC4RS = data2;
+            break;
+//        case 1:
+//            OC5R  = data2;
+//            OC5RS = data2;
+//            break;
+        default:
+            break;
+    }
+}
+/*******************************************************************************
+ * 函数名称:FANOC_Set
+
+ *******************************************************************************/
+void FANOC_Set(unsigned char data1,unsigned int data2){
+    switch (data1) {
+        case 1:
+            OC6R  = data2; 
+            OC6RS = data2;
+            break;
+//        case 2:
+//            OC7R  = data2; 
+//            OC7RS = data2;
+//            break;
+        case 3:
+            OC6R  = data2; 
+            OC6RS = data2;
+//            OC7R  = data2;
+//            OC7RS = data2;
+            break;
+        default:
+            break;
+    }
+}
+

+ 15 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/OC.h

@@ -0,0 +1,15 @@
+#ifndef  __OC_H
+#define  __OC_H
+
+#ifdef  __OC_DEF
+#define EXTERN_OC
+#else
+#define EXTERN_OC extern
+#endif
+
+
+EXTERN_OC void Init_OC();
+EXTERN_OC void FANOC_Set(unsigned char data1,unsigned int data2);
+EXTERN_OC void CAPOC_Set(unsigned char data1,unsigned int data2);
+#endif	/* XC_HEADER_TEMPLATE_H */
+

+ 152 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/PIN.c

@@ -0,0 +1,152 @@
+#define  __PIN_DEF
+#include "ABIS_User.h"
+
+void PIN_Initialize(void){
+
+    PMAEN = 0x0000;
+
+    ANSELA = 0;
+    ANSELB = 0;
+    ANSELC = 0;
+    ANSELD = 0;
+    ANSELE = 0;
+    ANSELG = 0;
+    
+
+    CM1CON=0;
+    CM2CON=0;
+    CM3CON=0;
+    SPI2STAT=0;     
+    PMCON=0;      
+    U1CON   = 0;   
+    U1PWRC  = 0;
+    I2C2CON = 0;    
+    
+
+    _TRISA4 = 0;   
+    _TRISA5 = 0;  
+    
+
+    _TRISF1 = 0;    
+    _TRISF0 = 1;   
+    _TRISG0 = 1;   
+    _RP97R  = 0x01; 
+    _U1RXR  = 0x60; 
+//    _U1RXR  = 0x70; 
+    
+
+    _TRISK11 = 0;     //SCL
+    _TRISK12 = 0;     //SDA    
+    
+
+    _TRISH14 = 0;     //SCL
+    _TRISH15 = 0;     //SDA    
+    
+
+    _TRISJ7  = 0;   
+    _TRISG14 = 0;   
+    _TRISG12 = 0;  
+    _TRISG13 = 0;   
+    _TRISG15 = 0;   
+    _TRISJ9  = 0;   
+    
+
+    _TRISJ5 = 0;   
+    _TRISJ6 = 0;   
+    _LATJ5 = 1;     
+    _LATJ6 = 0;     
+
+    _TRISB0  = 1;   
+    _TRISB1  = 1;   
+    _TRISB2  = 1;   
+    _TRISB3  = 1;   
+    _TRISB4  = 1;  
+    _TRISB5  = 1;   
+    _TRISB6  = 1;   
+    _TRISB7  = 1;  
+    _TRISB8  = 1;   
+    _TRISB9  = 1;   
+    _TRISB10 = 1;  
+    _TRISB11 = 1;  
+    _TRISB12 = 1;   
+    _TRISB13 = 1;
+    _TRISB14 = 1;
+    _TRISB15 = 1;
+    
+    _TRISG7  = 1;    
+    _TRISJ14 = 1;     
+    
+
+    _TRISF5 = 0;    
+    _TRISF4 = 0;    
+    _TRISB1 = 1;    
+
+    _TRISG9 = 0;   
+    _TRISG8 = 0;    
+    _TRISH2 = 1;   
+
+    _TRISG7 = 0;    
+    _TRISG6 = 0;    
+//    _TRISB8 = 1;        
+
+    
+    PMCONbits.PMPEN  = 0; 
+    PMCONbits.PTBEEN = 0;
+    PMCONbits.PTWREN = 0;
+    PMCONbits.PTRDEN = 0;
+    
+    _TRISD4 = 0;     
+    _TRISD5 = 0;     
+    _LATD5 = 0;      
+
+    
+
+
+}
+/*******************************************************************************
+ * şŻĘýĂűłĆŁşSetIO
+ *******************************************************************************/
+void SetIO(unsigned char index,unsigned char state){
+    
+    switch(index){
+        case LED1: _LATJ7 = state;break;
+        case LED2:_LATG14 = state;break;
+        case LED3:_LATG12 = state;break;
+        case LED4:_LATG13 = state;break;
+        case LED5:_LATG15 = state;break;      
+        case LEDALL:
+            _LATJ7  = state;
+            _LATG14 = state;
+            _LATG12 = state;
+            _LATG13 = state;
+            _LATG15 = state;
+            break;
+        case 8:g_ucMPPCtemp = state;break;
+        case 9: POWER_STU1 = state;break;
+        case 10:STATE_STU2 = state;break;
+        
+        default:
+            break;
+            
+    }
+}
+/*******************************************************************************
+ * şŻĘýĂűłĆŁşGet_IO
+ *******************************************************************************/
+unsigned int Get_IO(unsigned char uc_CH)
+{
+    unsigned char state;
+    switch(uc_CH){
+            case 10 : state = HOMEX;break;
+            case 11 : state = 15;break;
+            case 12 : state = PIC_IN2;break;
+            case 13 : state = PIC_IN5;break;
+//            case 3 : state = PIC_IN3;break;
+//            case 4 : state = PIC_IN4;break;//
+//            case 5 : state = PIC_IN5;break;//
+//            case 6 : state = PIC_IN6;break;//
+//            case 7 : state = PIC_IN7;break;//
+//            case 8 : state = PIC_IN8;break;//
+        }
+    return state;
+}

+ 57 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/PIN.h

@@ -0,0 +1,57 @@
+#ifndef __PIN_H
+#define	__PIN_H
+
+#ifdef  __PIN_DEF
+#define EXTERN_PIN
+#else
+#define EXTERN_PIN extern
+#endif
+
+#define		CTRLLED1	_LATJ7        
+#define		CTRLLED3	_LATG12      
+#define		CTRLLED5	_LATG14     
+#define		CTRLLED2	_LATG13      
+#define		CTRLLED4	_LATG15      
+#define		CTRLLED6	_LATJ9     
+    
+#define		FAMLED      CTRLLED1      
+#define		VICLED      CTRLLED3    
+#define		ROXLED      CTRLLED5    
+#define		CY5LED      CTRLLED2    
+#define		CY6LED      CTRLLED4  
+#define		_390LED     CTRLLED6     
+
+#define		STU1        _LATA4     
+#define		STU2        _LATA5      
+
+#define		STATE_STU2        _LATJ6      
+#define		POWER_STU1        _LATJ5  
+
+#define     REK         _RH3         
+
+#define     PIC_IN1     PORTBbits.RB0     //
+#define     PIC_IN2     PORTBbits.RB1      //
+//#define     PIC_IN3     PORTFbits.RF1       //
+//#define     PIC_IN4     PORTAbits.RA6       //
+#define     PIC_IN5     PORTHbits.RH3       //
+//#define     PIC_IN6     PORTEbits.RE5       //
+//#define     PIC_IN7     PORTEbits.RE4 
+
+
+
+
+#define     LED1        1
+#define     LED2        2
+#define     LED3        3
+#define     LED4        4
+#define     LED5        5
+#define     LED6        6
+#define     LEDALL      7
+
+EXTERN_PIN unsigned int LEDCount;
+EXTERN_PIN void PIN_Initialize(void);
+EXTERN_PIN void SetIO(unsigned char index,unsigned char state);
+EXTERN_PIN unsigned int Get_IO(unsigned char uc_CH);
+
+#endif	/* XC_HEADER_TEMPLATE_H */
+

+ 479 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/PWM.c

@@ -0,0 +1,479 @@
+#define  __TEMPCTRL_DEF
+#include "ABIS_User.h"
+//float  PWMKB[6]={1.47797,-8.96345,533.7256};
+//float  PWMKB[6]={1.029277,63.010346,-1594.777178};
+//float  PWMKB[3]={1.47797,-8.96345,1533.7256};
+unsigned char FallingTempCter;
+unsigned TubeBlockMode;
+void InitPWM(void)
+{
+    /* Set PWM Period on Primary Time Base */
+    PTPER = 40000;                                                              //FCY / FPWM - 1; 1.5K
+    /* Set Phase Shift */
+    PHASE1 = 0;
+    PHASE2 = 0;
+    PHASE3 = 0;
+    PHASE4 = 0;
+    PHASE5 = 0;
+    PHASE6 = 0;
+    /* Set Duty Cycles */
+
+    PDC1 = 0;
+    PDC2 = 0;
+    PDC3 = 0;
+    PDC4 = 0;
+    PDC5 = 0;
+    PDC6 = 0;
+
+    SDC1 = 0;//PWM1
+    SDC2 = 0;//PWM2
+    SDC3 = 0;//PWM3
+    SDC4 = 0;//PWM1
+    SDC5 = 0;//PWM2
+    SDC6 = 0;//PWM3
+
+    IOCON1 = IOCON2 = IOCON3 = 0xCC00;
+    IOCON4 = IOCON5 = IOCON6 = 0xCC00;
+
+    PWMCON1 = PWMCON2 = PWMCON3 = 0x0000;
+    PWMCON4 = PWMCON5 = PWMCON6 = 0x0000;
+
+    FCLCON1 = FCLCON2 = FCLCON3 = 0x0003;
+    FCLCON4 = FCLCON5 = FCLCON6 = 0x0003;
+
+    PTCON2 = 0x0002;
+
+    PTCON = 0x8000;
+}
+
+/*******************************************************************************
+ * 函数名称:SetPWM
+ *******************************************************************************/
+void SetPWM(unsigned char ucChannel , long uiDuty)
+{
+    if(uiDuty > 0){ 
+        uiDuty =(long)((float)uiDuty * TempPara[ucChannel].fPowerCoef) ;
+        switch(ucChannel){
+            case 0:
+                PDC1 = uiDuty;
+                SDC1 = 0;
+                break;
+            case 1:
+                PDC2=uiDuty;
+                SDC2 = 0;
+                break;
+            case 2:
+                PDC3=uiDuty;
+                SDC3 =0;
+                break;
+            case 3:
+                PDC4=uiDuty;
+                SDC4 = 0;
+                break;
+            case 4:
+                PDC5=uiDuty;
+                SDC5 = 0;
+                break;
+            case 5:
+                PDC6=uiDuty;
+                SDC6 = 0;
+                break;
+            default:
+                break;
+           
+        }
+    }else{
+        if((TempChn[ucChannel].cOverTempCnter == 0)&&(TempChn[ucChannel].cHeatOrRefrig == 1)){
+            switch(ucChannel){
+                case 0:
+                    SDC1 = 0;
+                    PDC1 = 0;
+                    break;
+                case 1:
+                    SDC2 = 0;
+                    PDC2 = 0;//加热
+                    break;
+                case 2:
+                    SDC3 = 0;
+                    PDC3 = 0;//加热
+                    break;
+                case 3:
+                    SDC4 = 0;
+                    PDC4 = 0;//加热
+                    break;
+                case 4:
+                    SDC5 = 0;
+                    PDC5 = 0;//加热
+                    break; 
+                case 5:
+                    SDC6 = 0;
+                    PDC6 = 0;//加热
+                    break;                                  
+                default:
+                    break;                
+            }
+        }else{
+            uiDuty =(long)((float)uiDuty * TempPara[ucChannel].fPowerCoefdown) ;
+            switch(ucChannel){
+                case 0:
+                    SDC1 = -uiDuty;
+                    PDC1 = 0;
+                    break;
+                case 1:
+                    SDC2 = -uiDuty;
+                    PDC2 = 0;
+                    break;
+                case 2:
+                    SDC3 = -uiDuty;
+                    PDC3 = 0;
+                    break;
+                case 3:
+                    SDC4 = -uiDuty;
+                    PDC4 = 0;
+                    break;
+                case 4:
+                    SDC5 = -uiDuty;
+                    PDC5 = 0;
+                    break; 
+                case 5:
+                    SDC6 = -uiDuty;
+                    PDC6 = 0;
+                    break;
+                default:
+                    break;                
+            }
+        }
+    }
+}
+
+
+void CAPPeltierCtrler(void){
+    
+    unsigned char i;
+    
+    for(i=0;i<2;i++){    
+        if(CAPTarget_temp[i] > 130) CAPOC_Set(i ,0);
+        if(CAPTarget_temp[i] < 15) CAPOC_Set(i ,0);
+        if(CAPTarget_temp[i] >= CAPReal_temp[i]){  
+            if((CAPTarget_temp[i] -  CAPReal_temp[i]) > 5) {
+                CAPOC_Set(i ,6000);
+               
+            }else if((CAPTarget_temp[i] -  CAPReal_temp[i]) > 4.0){
+                CAPOC_Set(i ,5000);
+               
+            }else if((CAPTarget_temp[i] -  CAPReal_temp[i]) > 2.0){
+                CAPOC_Set(i ,5000);
+               
+            }else if((CAPTarget_temp[i] -  CAPReal_temp[i]) > 1.0){
+                CAPOC_Set(i ,5000);
+               
+            }else if((CAPTarget_temp[i] -  CAPReal_temp[i]) > 0.5){
+                CAPOC_Set(i ,3000);
+               
+            }else if((CAPTarget_temp[i] -  CAPReal_temp[i]) > 0.3){
+                CAPOC_Set(i ,2500);
+            }  
+            else if((CAPTarget_temp[i] -  CAPReal_temp[i]) > 0.1){
+                CAPOC_Set(i ,2000);
+                
+            }else  {
+                CAPOC_Set(i ,0);
+               
+            }
+        }else{
+            CAPOC_Set(i ,0);
+            
+        }
+    }    
+}
+
+void PeltierCtrler(void)
+{
+    unsigned char i;   
+    for(i=0;i<6;i++)
+    {
+        
+        if(!TempChn[i].cPeltierRun){//
+            SetPWM (i,0);            
+            continue;
+        }   
+        if(TempChn[i].cOverTempCnter){//
+            TempPara[i].fErr=TempChn[i].fTubeTargetTemp - TempChn[i].fCurrentTemperature;  
+            TempChn[i].fHoldPWM = TempPara[i].HoldPWMa * TempChn[i].fTubeTargetTemp * TempChn[i].fTubeTargetTemp + TempPara[i].HoldPWMb * TempChn[i].fTubeTargetTemp + TempPara[i].HoldPWMc;
+        }
+        else{// block mode
+            TempPara[i].fErr = TempChn[i].fBlockTargetTemp - TempChn[i].fCurrentTemperature;
+            TempChn[i].fHoldPWM = TempPara[i].HoldPWMa * TempChn[i].fBlockTargetTemp * TempChn[i].fBlockTargetTemp + TempPara[i].HoldPWMb * TempChn[i].fBlockTargetTemp + TempPara[i].HoldPWMc;
+        }
+        if((TempChn[i].cCtrlMode !=1)&&(TempChn[i].cCtrlMode !=3)){
+            if (fabs(TempPara[i].fErr) < 0.05) {
+//                TempChn[i].cBlockTempAriv = 1;
+                TempChn[i].FallingTempCter = 0;               
+                TempPara[i].fVlOutP = TempPara[i].iKp[2] * TempPara[i].fErr;
+                TempPara[i].fSum += TempPara[i].fErr; 
+                TempPara[i].fVlSum = TempPara[i].iKi[2] * TempPara[i].fSum; 
+                TempPara[i].fVlOut = TempPara[i].iKd[2]*(TempPara[i].fErr - TempPara[i].fErrLast);           
+                TempPara[i].fVlOutP += TempPara[i].fVlOut + TempPara[i].fVlSum;
+            } else if (fabs(TempPara[i].fErr) < 0.1) {
+//                TempChn[i].cBlockTempAriv = 1;
+                TempChn[i].FallingTempCter = 0;             
+                TempPara[i].fVlOutP = TempPara[i].iKp[2] * TempPara[i].fErr;
+                TempPara[i].fSum += TempPara[i].fErr; 
+                TempPara[i].fVlSum = TempPara[i].iKi[2] * TempPara[i].fSum; 
+                TempPara[i].fVlOut = TempPara[i].iKd[2]*(TempPara[i].fErr - TempPara[i].fErrLast);          
+                TempPara[i].fVlOutP += TempPara[i].fVlOut + TempPara[i].fVlSum;
+            } else if (fabs(TempPara[i].fErr) < 0.5) {
+//                TempChn[i].cBlockTempAriv = 1;
+                TempChn[i].FallingTempCter = 0;             
+                TempPara[i].fVlOutP = TempPara[i].iKp[2] * TempPara[i].fErr;
+                TempPara[i].fSum += TempPara[i].fErr; 
+                TempPara[i].fVlSum = TempPara[i].iKi[2] * TempPara[i].fSum; 
+                TempPara[i].fVlOut = TempPara[i].iKd[2]*(TempPara[i].fErr - TempPara[i].fErrLast);          
+                TempPara[i].fVlOutP += TempPara[i].fVlOut + TempPara[i].fVlSum;
+            } else if (fabs(TempPara[i].fErr) < 1) {
+//                TempChn[i].cBlockTempAriv = 1;
+                TempChn[i].FallingTempCter = 0;             
+                TempPara[i].fVlOutP = TempPara[i].iKp[1] * TempPara[i].fErr;
+                TempPara[i].fSum += TempPara[i].fErr;
+                TempPara[i].fVlSum = TempPara[i].iKi[1] * TempPara[i].fSum;
+                TempPara[i].fVlOut = TempPara[i].iKd[1]*(TempPara[i].fErr - TempPara[i].fErrLast);
+                TempPara[i].fVlOutP += TempPara[i].fVlOut + TempPara[i].fVlSum;
+            } else if (fabs(TempPara[i].fErr) <= MODEMRANGE) {
+//                TempChn[i].cBlockTempAriv = 1;
+                TempChn[i].FallingTempCter = 0;           
+                TempPara[i].fVlOutP = TempPara[i].iKp[0] * TempPara[i].fErr;
+                TempPara[i].fSum += TempPara[i].fErr; 
+                TempPara[i].fVlSum = TempPara[i].iKi[0] * TempPara[i].fSum;                      
+                TempPara[i].fVlOut = TempPara[i].iKd[0]*(TempPara[i].fErr - TempPara[i].fErrLast); 
+                TempPara[i].fVlOutP += TempPara[i].fVlOut + TempPara[i].fVlSum; 
+            }
+            else {
+                TempPara[i].fSum = 0;
+                if ((TempPara[i].fErr > MODEMRANGE)){
+                    TempPara[i].fVlOutP = 100000;
+                }
+                else if ((TempPara[i].fErr < -MODEMRANGE)){
+                    TempPara[i].fVlOutP = -100000;
+                }
+            }          
+            TempPara[i].fDerr=TempPara[i].fErr - TempPara[i].fErrLast;
+
+//            TempChn[i].fHoldPWM = 0;
+//            TempPara[i].fVlOutP += TempChn[i].fHoldPWM;
+//            TempPara[i].fErrLast = TempPara[i].fErr;  
+//
+//            if(TempPara[i].fVlOutP > TempChn[i].MAXPWM){
+//                TempPara[i].fVlOutP = TempChn[i].MAXPWM;
+//            }
+//            else if(TempPara[i].fVlOutP < -TempChn[i].MAXPWM){
+//                TempPara[i].fVlOutP = -TempChn[i].MAXPWM;
+//            }
+ 
+            if((TempChn[i].cOverTempCnter == 0)&&(TempChn[i].cHeatOrRefrig == 0)&&(g_uiOverTempCnter[i] <= g_tEE.uiOverTempCnter)){
+                TempPara[i].fVlOutP = TempChn[i].fHoldPWM;    
+                TempPara[i].fErrLast = TempPara[i].fErr;
+                g_uiOverTempCnter[i]++;
+            }else{
+                TempPara[i].fVlOutP += TempChn[i].fHoldPWM;    
+                TempPara[i].fErrLast = TempPara[i].fErr;   
+            }    
+            
+            if(TempChn[i].cHeatOrRefrig == 1){
+                if(TempChn[i].fBlockTargetTemp < TempChn[i].fCurrentTemperature){
+                   TempChn[i].cBlockTempAriv = 1;  
+                }  
+            }else if(TempChn[i].cHeatOrRefrig == 0){
+                if(TempChn[i].fBlockTargetTemp > TempChn[i].fCurrentTemperature){
+                   TempChn[i].cBlockTempAriv = 1;  
+                }                
+            }else if(TempChn[i].cHeatOrRefrig == 2){
+                   TempChn[i].cBlockTempAriv = 1;
+            }else{   
+            }
+            
+            if(TempPara[i].fVlOutP > TempChn[i].MAXPWM){
+                TempPara[i].fVlOutP = TempChn[i].MAXPWM;
+            }
+            else if(TempPara[i].fVlOutP < -TempChn[i].MAXPWM){
+                TempPara[i].fVlOutP = -TempChn[i].MAXPWM;
+            }
+
+            if(TempPara[i].fVlOutP >=TempChn[i].MAXPWM){
+                TempPara[i].fVlOutR +=4000;
+            }
+            else if(TempPara[i].fVlOutP <= -TempChn[i].MAXPWM){
+                TempPara[i].fVlOutR -=4000;
+            }
+            if((TempPara[i].fVlOutR < 0)&&(TempPara[i].fVlOutP > 0)){  
+                TempPara[i].fVlOutR =0;
+            }
+            else {
+                TempPara[i].fVlOutR =TempPara[i].fVlOutP;
+            }
+            if(TempPara[i].fVlOutR > TempChn[i].MAXPWM){ 
+                TempPara[i].fVlOutR = TempChn[i].MAXPWM;
+            }
+            else if(TempPara[i].fVlOutR < -TempChn[i].MAXPWM){ 
+                TempPara[i].fVlOutR = -TempChn[i].MAXPWM;
+            }
+   
+            SetPWM (i,TempPara[i].fVlOutR);
+            if(TempPara[i].fVlOutR > 0){
+               g_uiGetPWM[i] = (unsigned int)TempPara[i].fVlOutR; 
+            }else{
+               g_uiGetPWM[i] = 0;
+            }          
+        }
+        else if(TempChn[i].cCtrlMode ==1){
+        }
+        else if(TempChn[i].cCtrlMode ==3){
+        }
+
+        if(TempChn[i].fCurrentTemperature > 120.0) {
+            TempChn[i].PeltierOvertempCnter++;
+            if(TempChn[i].PeltierOvertempCnter >= 10){
+                SetPWM (i,0);
+            }
+        }
+        else if(TempChn[i].fCurrentTemperature < -1){
+            TempChn[i].PeltierOvertempCnter++;
+            if(TempChn[i].PeltierOvertempCnter >= 10){
+                SetPWM (i,0);
+            }
+        }
+        else{
+            TempChn[i].PeltierOvertempCnter=0;
+        }
+
+        TempChn[i].TimerForPeltier++;
+        if(TempChn[i].TimerForPeltier >= TempChn[i].timer0 ){
+            TempChn[i].TimerForPeltier = 0;
+            if(FallingTempCter!=0) FallingTempCter--;
+            if((TempChn[i].cPeltierRun != 0)&&(TempChn[i].cCtrlMode !=1)){
+                if(TempChn[i].cBlockTempAriv && TempChn[i].cOverTempCnter){
+                    TempChn[i].cOverTempCnter--;
+                }
+                if(!TempChn[i].cOverTempCnter && !TempChn[i].cTubeTempAriv){
+                    TempChn[i].cTubeTempAriv = 1;
+                }
+            }
+        }          
+    }
+}
+
+unsigned char ScheduleOperate(unsigned char chn)
+{   
+    
+    if(chn >= 6) return 0;
+    
+    TempPara[chn].fVlOut=0; 
+    TempPara[chn].fSum =0;
+    g_uiOverTempCnter[chn] = 0;
+    TempChn[chn].cBlockTempAriv = 0;
+    TempChn[chn].cTubeTempAriv = 0;
+    TempChn[chn].cBlockFirstAriv = 0;
+
+
+    if(TubeBlockMode )//tubemode
+    {
+        TempChn[chn].cOverTempCnter = 5;
+        if(TempChn[chn].fBlockTargetTemp < 30)
+            TempChn[chn].cOverTempCnter =1;//
+    }
+    else
+    {
+        TempChn[chn].cOverTempCnter = 0;
+    }
+
+
+    if(TempChn[chn].fBlockTargetTemp > TempChn[chn].fCurrentTemperature + TempChn[chn].HOTtemp)
+    {
+        TempChn[chn].cHeatOrRefrig = 1;
+        TempChn[chn].fTubeTargetTemp = TempChn[chn].fBlockTargetTemp + TempChn[chn].HOTtemp;
+    }
+
+    else if(TempChn[chn].fBlockTargetTemp < TempChn[chn].fCurrentTemperature - TempChn[chn].CODEtemp)
+    {
+        TempChn[chn].cHeatOrRefrig = 0;
+        TempChn[chn].fTubeTargetTemp = TempChn[chn].fBlockTargetTemp - TempChn[chn].CODEtemp;
+    }
+    else
+    {
+        TempChn[chn].cHeatOrRefrig = 2;
+//        TempChn[chn].cBlockTempAriv = 1;       
+//                    Run.TubeAriv = 1;
+        TempChn[chn].fTubeTargetTemp = TempChn[chn].fBlockTargetTemp;
+
+        if(fabs(TempChn[chn].fBlockTargetTemp - TempChn[chn].fCurrentTemperature) < 2) 
+            TempChn[chn].cOverTempCnter = 1;//5
+
+        if(!TempChn[chn].cCtrlMode)
+            TempChn[chn].cOverTempCnter = 1;//5
+
+        if(TempChn[chn].cCtrlMode)
+        {
+            TempChn[chn].cOverTempCnter = 0;
+            if(TempChn[chn].fBlockTargetTemp > TempChn[chn].fCurrentTemperature)
+            {
+                TempChn[chn].cHeatOrRefrig = 1;
+            }
+            //降温
+            else if(TempChn[chn].fBlockTargetTemp < TempChn[chn].fCurrentTemperature)
+            {
+                TempChn[chn].cHeatOrRefrig = 0;
+            }
+        }
+    }
+    return 0;
+}
+
+void InitTempCtlr(){
+    unsigned char i,j;
+    unsigned char *m, *n;
+    for(i=0;i<6;i++){
+        SetPWM(i ,0);
+        m= (unsigned char *)&TempChn[i];
+        n= (unsigned char *)&TempPara[i];
+        for(j=0;j<41;j++){
+            *m++ =0;
+        }
+        for(j=0;j<62;j++){
+            *n++ =0;
+        }
+    }
+    mn = 0;
+    for(i=0;i<6;i++){        
+        TempChn[i].fTargetTemperature=30.0;//
+        TempChn[i].fCurrentTemperature=30.0;//
+        TempChn[i].fBlockTargetTemp=30.0;//
+        TempChn[i].fTubeTargetTemp=30.0;//
+        TempChn[i].fTargetSpeed=15.0;//
+        TempChn[i].fCurrentSpeed=15.0;//
+        TempChn[i].fHoldPWM=0;//
+        TempChn[i].lSetPWM=0;//
+        TempChn[i].cCtrlMode=0;//
+        TempChn[i].cHeatOrRefrig=1;//
+        TempChn[i].cBlockTempAriv=1;//
+        TempChn[i].cBlockFirstAriv=1;//
+        TempChn[i].PeltierOvertempCnter=0;//
+        TempChn[i].TimerForPeltier=0;//
+        TempChn[i].cTubeTempAriv=1;//
+        TempChn[i].cOverTempCnter=0;//
+        TempChn[i].FallingTempCter=0;
+        TempChn[i].cTubeMode=1;
+        TempChn[i].cPeltierRun=0;
+    }
+    
+    for(i=0;i<6;i++){         
+        TempPara[i].iKp[0]=TempPara[i].iKp[1]=TempPara[i].iKp[2]=5000;
+        TempPara[i].iKi[0]=TempPara[i].iKi[1]=TempPara[i].iKi[2]=20;
+        TempPara[i].iKd[0]=TempPara[i].iKd[1]=TempPara[i].iKd[2]=8000;
+        
+        TempPara[i].HoldPWMa = 0.9197;
+        TempPara[i].HoldPWMb = 60.465;
+        TempPara[i].HoldPWMc = -1572.1;
+    }
+    TubeBlockMode=1;//tube mode
+//    CAPTarget_temp[0] = 60;
+//    CAPTarget_temp[1] = 60;
+}

+ 123 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/PWM.h

@@ -0,0 +1,123 @@
+#ifndef     PWM_H
+#define     PWM_H
+
+#ifdef  __TEMPCTRL_DEF
+#define TEMPCTRLEXTERN
+#else
+#define TEMPCTRLEXTERN extern
+#endif
+
+#include    <stdio.h>
+#include    <ctype.h>
+#include    <stdlib.h>
+#include	<math.h>
+#include    <stdarg.h>
+#include    <string.h>
+
+#define RadiatorTemp        400
+#define LoopChannel         6
+
+TEMPCTRLEXTERN double dTemperature[16];
+TEMPCTRLEXTERN unsigned int dTemperatureAD[16];
+TEMPCTRLEXTERN unsigned int g_uiGetPWM[6];
+TEMPCTRLEXTERN unsigned int PumpLPwm;
+TEMPCTRLEXTERN unsigned int g_usTlimit;
+TEMPCTRLEXTERN unsigned int DA_FAM,DA_VIC,DA_ROX,DA_CY5;
+//TEMPCTRLEXTERN unsigned int g_uiOverTempCnter,g_uiOverTempCnter1,g_uiOverTempCnter2;
+TEMPCTRLEXTERN unsigned int g_uiOverTempCnter[6];
+TEMPCTRLEXTERN unsigned int mn;
+
+typedef struct _TEMPCHN_{
+    double fTargetTemperature;
+    double fCurrentTemperature;
+    double fBlockTargetTemp;
+    double fTubeTargetTemp;
+    float fTargetSpeed;
+    float fCurrentSpeed;
+    long fHoldPWM;
+    long MAXPWM;
+    long lSetPWM;
+    unsigned int timer0; 
+    float HOTtemp; 
+    float CODEtemp;
+    unsigned char cCtrlMode;
+    unsigned char cHeatOrRefrig;
+    unsigned char cBlockTempAriv,cBlockFirstAriv;//
+    unsigned char PeltierOvertempCnter,TimerForPeltier,cRefrigTimer;
+    unsigned char cRefrigMode;
+    unsigned char cTubeTempAriv;//
+    unsigned char cOverTempCnter;//
+    unsigned char FallingTempCter;
+    unsigned char cTubeMode;//0: block; 1:tube ;   default->tube
+    
+    unsigned char cPeltierRun;
+}TEMPCHN;
+ TEMPCTRLEXTERN TEMPCHN TempChn[6];
+
+typedef struct __TEMPPARA{
+    double fHwK1;
+    double fHwK2;
+    double fHwB;
+    float fK1;
+    float fK2;
+    float fB;
+    float TTk1;
+    float TTk2;
+    float TTb;
+    double fSum;
+    double fErr;
+    double fErrLast;
+    double fDerr;
+    double fVlSum;
+    float fVlOutP;
+    float fVlOut;
+    float fVlOutR;
+    short iKp[3];
+    short iKi[3];
+    short iKd[3];
+    float fPowerCoef;
+    float fPowerCoefdown;
+    float HoldPWMa;
+    float HoldPWMb;
+    float HoldPWMc;
+    float HoldPWMa1;
+    float HoldPWMb1;
+    float HoldPWMc1;
+    
+}TEMPPARA;
+ TEMPCTRLEXTERN TEMPPARA TempPara[6];
+
+ 
+#define MODEMRANGE              3 
+#define TUBERANGE               3
+#define TUBEADD                 2 
+#define TUBESUB                 2 
+
+TEMPCTRLEXTERN unsigned int MCUAdcBuff[9][25],Bubble_MCUAdcBuff[15][25];
+TEMPCTRLEXTERN unsigned int Target_temp,Target_temp1,Target_temp2;
+TEMPCTRLEXTERN unsigned int Real_temp[8];
+TEMPCTRLEXTERN unsigned char Temp_count;
+TEMPCTRLEXTERN unsigned char Temp_count1;
+TEMPCTRLEXTERN double g_dTarget_temp;
+
+TEMPCTRLEXTERN unsigned int CAPTarget_temp[2];
+TEMPCTRLEXTERN unsigned int CAPTarget_temp1[2];
+TEMPCTRLEXTERN double CAPReal_temp[2];
+TEMPCTRLEXTERN float CAPTk[2],CAPTTk[2];
+TEMPCTRLEXTERN float CAPTb[2],CAPTTb[2];
+TEMPCTRLEXTERN float g_fFINReal_Temp;
+
+TEMPCTRLEXTERN unsigned int set_Target_temp;   
+
+
+TEMPCTRLEXTERN void PeltierCtrler(void);
+TEMPCTRLEXTERN void CAPPeltierCtrler(void);
+TEMPCTRLEXTERN void SetPWM(unsigned char ucChannel ,long uiDuty);
+TEMPCTRLEXTERN void InitPWM(void);
+TEMPCTRLEXTERN void InitTempCtlr(void);
+TEMPCTRLEXTERN unsigned char ScheduleOperate(unsigned char chn);
+
+TEMPCTRLEXTERN char fBlockbuffer;
+TEMPCTRLEXTERN short delays;
+#endif
+

+ 6 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Timer.c

@@ -0,0 +1,6 @@
+#define  __TIMER_DEF
+#include "ABIS_User.h"
+
+
+
+

+ 16 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Timer.h

@@ -0,0 +1,16 @@
+#ifndef __TIMER_H
+#define	__TIMER_H
+
+#ifdef  __TIMER_DEF
+#define EXTERN_TIMER
+#else
+#define EXTERN_TIMER extern
+#endif
+
+EXTERN_TIMER void Init_T3();
+EXTERN_TIMER void Init_T4();
+EXTERN_TIMER void Init_T6();
+EXTERN_TIMER void Init_T8();
+
+#endif	/* XC_HEADER_TEMPLATE_H */
+

+ 1639 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Uart.c

@@ -0,0 +1,1639 @@
+#define  __UART_DEF
+#include "ABIS_User.h"
+
+/*******************************************************************************
+ * 函数名称:InitUart1
+ *******************************************************************************/
+void InitUart(void) {
+
+    U1MODEbits.STSEL = 0;  
+    U1MODEbits.PDSEL = 0;   
+    U1MODEbits.BRGH = 0;    
+    U1MODEbits.ABAUD = 0;  
+    U1MODEbits.LPBACK = 0;  
+
+    //    U1BRG = 31;       
+    U1BRG = 389;           
+
+    U1STAbits.UTXISEL0 = 1;
+    U1STAbits.UTXISEL1 = 0;
+    U1STAbits.URXISEL = 0;
+
+    IEC0bits.U1TXIE = 0;
+    IEC0bits.U1RXIE = 1;
+    U1MODEbits.UARTEN = 1;
+    U1STAbits.UTXEN = 1;
+    IPC2bits.U1RXIP = 7;
+    IPC3bits.U1TXIP = 7;
+}
+
+
+/*******************************************************************************
+ * 函数名称:InitUart2
+ *******************************************************************************/
+void InitUart2(void) {
+
+    U2MODEbits.STSEL = 0;  
+    U2MODEbits.PDSEL = 0;   
+    U2MODEbits.BRGH = 0;    
+    U2MODEbits.ABAUD = 0;   
+    U2MODEbits.LPBACK = 0;  
+
+    //    U1BRG = 31;      
+    U2BRG = 389;           
+
+    U2STAbits.UTXISEL0 = 1;
+    U2STAbits.UTXISEL1 = 0;
+    U2STAbits.URXISEL = 0;
+
+    IEC1bits.U2TXIE = 0;
+    IEC1bits.U2RXIE = 1;
+    U2MODEbits.UARTEN = 1;
+    U2STAbits.UTXEN = 1;
+    IPC7bits.U2RXIP = 7;
+    IPC7bits.U2TXIP = 7;
+}
+
+/*******************************************************************************
+ * 函数名称:InitUart3
+ *******************************************************************************/
+void InitUart3(void) {
+
+    U3MODEbits.STSEL = 0;   
+    U3MODEbits.PDSEL = 0;   
+    U3MODEbits.BRGH = 0;    
+    U3MODEbits.ABAUD = 0;  
+    U3MODEbits.LPBACK = 0;  
+
+    //    U1BRG = 31;       
+    U3BRG = 389;            
+
+    U3STAbits.UTXISEL0 = 1;
+    U3STAbits.UTXISEL1 = 0;
+    U3STAbits.URXISEL = 0;
+
+    IEC5bits.U3TXIE = 0;
+    IEC5bits.U3RXIE = 1;
+    U3MODEbits.UARTEN = 1;
+    U3STAbits.UTXEN = 1;
+    IPC20bits.U3RXIP = 7;
+    IPC20bits.U3TXIP = 7;
+}
+/*******************************************************************************
+ * 函数名称:Uart1Send
+ *******************************************************************************/
+void UART1SEND(char data)
+{
+     U1TXREG = data;   
+     while(!IFS0bits.U1TXIF);
+     IFS0bits.U1TXIF=0;       		
+}
+/*******************************************************************************
+ * 函数名称:_U1RXInterrupt
+ *******************************************************************************/
+void  __attribute__((__interrupt__,no_auto_psv)) _U1RXInterrupt(void)
+{
+	IFS0bits.U1RXIF = 0;                                                     
+	g_ucU1RX_Data[g_uiUart1_No] = U1RXREG;                                 
+    if(g_BUSY1 == 1) return;
+    if(g_ucHeaderFlag1 == 0){                                             
+		if(g_ucU1RX_Data[g_uiUart1_No] == FRAME_HEAD){                    
+            g_ucHeaderFlag1 = 1;                                    
+            g_ucU1RX_Data[0] = FRAME_HEAD;                                 
+            g_uiUart1_No = 1;                                            
+		}else{
+            g_BUSY1 = 0;                                                  
+        }
+	}else if(g_ucHeaderFlag1 == 1){                                      
+		g_uiUart1_No++;
+    } 
+    if(g_uiUart1_No > (FRAME_LTHH_INDEX+1)){                                                          
+        g_uiLth1 = g_ucU1RX_Data[FRAME_LTHH_INDEX]; 
+        if(g_uiUart1_No == g_uiLth1){                                       
+            g_ulRSUM1 = Check(g_ucU1RX_Data,g_uiLth1-1);                     
+            g_ucCRC1 = (unsigned char)g_ulRSUM1;                                //
+            if(g_ucCRC1 == g_ucU1RX_Data[g_uiLth1-1]){                   
+                g_ucCMD1 = g_ucU1RX_Data[FRAME_CMD_INDEX];                 
+                g_ucUART1_flag  = 1;                                           
+                g_ulRSUM1       = 0;                                       
+                g_uiUart1_No    = 0;                                         
+                g_ucHeaderFlag1 = 0;                                        
+                g_BUSY1         = 1;                                       
+            }else{
+                memset(g_ucU1RX_Data,0,g_uiLth1*sizeof(unsigned char));        
+                g_BUSY1 = 0;                                                 
+            }        
+        }else if(g_uiUart1_No > g_uiLth1){                                  
+            g_uiUart1_No    = 0;                                          
+            g_ucHeaderFlag1 = 0;                                          
+            g_BUSY1         = 0;                                           
+        }
+    }
+//    if(g_ucUART1_flag == 1)
+//    {  
+//        Uart1_Ack();                       
+//    }
+}
+/*******************************************************************************
+ * 函数名称:_U2RXInterrupt
+ *******************************************************************************/
+void  __attribute__((__interrupt__,no_auto_psv)) _U2RXInterrupt(void)
+{
+	IFS1bits.U2RXIF = 0;                                                  
+	g_ucU1RX_Data[g_uiUart1_No] = U2RXREG;                                
+    if(g_BUSY1 == 1) return;
+    if(g_ucHeaderFlag1 == 0){                                          
+		if(g_ucU1RX_Data[g_uiUart1_No] == FRAME_HEAD){                      
+            g_ucHeaderFlag1 = 1;                                           
+            g_ucU1RX_Data[0] = FRAME_HEAD;                            
+            g_uiUart1_No = 1;                                              
+		}else{
+            g_BUSY1 = 0;                                                      
+        }
+	}else if(g_ucHeaderFlag1 == 1){                                   
+		g_uiUart1_No++;
+    } 
+    if(g_uiUart1_No > (FRAME_LTHH_INDEX+1)){                                                        
+        g_uiLth1 = g_ucU1RX_Data[FRAME_LTHH_INDEX]; 
+        if(g_uiUart1_No == g_uiLth1){                                       
+            g_ulRSUM1 = Check(g_ucU1RX_Data,g_uiLth1-1);                   
+            g_ucCRC1 = (unsigned char)g_ulRSUM1;                            
+            if(g_ucCRC1 == g_ucU1RX_Data[g_uiLth1-1]){                
+                g_ucCMD1 = g_ucU1RX_Data[FRAME_CMD_INDEX];                  
+                g_ucUART1_flag  = 1;                                        
+                g_ulRSUM1       = 0;                                       
+                g_uiUart1_No    = 0;                                        
+                g_ucHeaderFlag1 = 0;                                   
+                g_BUSY1         = 1;                                  
+            }else{
+                memset(g_ucU1RX_Data,0,g_uiLth1*sizeof(unsigned char));       
+                g_BUSY1 = 0;                                                  
+            }        
+        }else if(g_uiUart1_No > g_uiLth1){                                 
+            g_uiUart1_No    = 0;                                         
+            g_ucHeaderFlag1 = 0;                                   
+            g_BUSY1         = 0;                                   
+        }
+    }
+}
+
+/*******************************************************************************
+ * 函数名称:_U3RXInterrupt
+ *******************************************************************************/
+void  __attribute__((__interrupt__,no_auto_psv)) _U3RXInterrupt(void)
+{
+	IFS5bits.U3RXIF = 0;                                                
+	g_ucU1RX_Data[g_uiUart1_No] = U3RXREG;                               
+    if(g_BUSY1 == 1) return;
+    if(g_ucHeaderFlag1 == 0){                                             
+		if(g_ucU1RX_Data[g_uiUart1_No] == FRAME_HEAD){                  
+            g_ucHeaderFlag1 = 1;                                 
+            g_ucU1RX_Data[0] = FRAME_HEAD;                             
+            g_uiUart1_No = 1;                                        
+		}else{
+            g_BUSY1 = 0;                                                     
+        }
+	}else if(g_ucHeaderFlag1 == 1){                                          
+		g_uiUart1_No++;
+    } 
+    if(g_uiUart1_No > (FRAME_LTHH_INDEX+1)){                                                           
+        g_uiLth1 = g_ucU1RX_Data[FRAME_LTHH_INDEX]; 
+        if(g_uiUart1_No == g_uiLth1){                                     
+            g_ulRSUM1 = Check(g_ucU1RX_Data,g_uiLth1-1);                  
+            g_ucCRC1 = (unsigned char)g_ulRSUM1;                                //
+            if(g_ucCRC1 == g_ucU1RX_Data[g_uiLth1-1]){                 
+                g_ucCMD1 = g_ucU1RX_Data[FRAME_CMD_INDEX];                    
+                g_ucUART1_flag  = 1;                                 
+                g_ulRSUM1       = 0;                             
+                g_uiUart1_No    = 0;                             
+                g_ucHeaderFlag1 = 0;                                
+                g_BUSY1         = 1;                                    
+            }else{
+                memset(g_ucU1RX_Data,0,g_uiLth1*sizeof(unsigned char));      
+                g_BUSY1 = 0;                                                 
+            }        
+        }else if(g_uiUart1_No > g_uiLth1){                                  
+            g_uiUart1_No    = 0;                                             
+            g_ucHeaderFlag1 = 0;                                        
+            g_BUSY1         = 0;                                       
+        }
+    }
+}
+
+/*******************************************************************************
+ * 函数名称:Check
+ *******************************************************************************/
+unsigned int Check(unsigned char *p,unsigned char num)
+{
+	unsigned char i=0;
+    unsigned int uiCheckSum=0;
+	for(i=0;i<num;i++){
+		uiCheckSum += *p;
+		p++;
+	}
+    return uiCheckSum;
+}
+/*******************************************************************************
+ * 函数名称:RS1_Ack
+ *******************************************************************************/
+void RS1_Ack(unsigned int sendnum)
+{
+    unsigned int i;
+	for(i=0;i<sendnum;i++){
+        UART1SEND(g_ucU1TX_Data[i]);
+	}
+    memset(g_ucU1TX_Data,0,sendnum*sizeof(unsigned char));
+}
+/*******************************************************************************
+ * 函数名称:Uart1_Ack
+ *******************************************************************************/
+void Uart1_Ack(void)
+{
+    unsigned int g_uiFrmLth;               
+    unsigned int i=0;                     
+    unsigned int j=0;                  
+    unsigned int n=0;            
+    unsigned long sum;          
+    unsigned char Flag_STATUS=0;          
+    unsigned char Sensor,ucPWMindex,ucCtrlMode;  
+    unsigned int ADC;
+    long lMPPCtemp = 0;
+    long lPWMstate=0;
+    switch(g_ucCMD1){      
+        /***********************(0x01)****************************/ 
+        case HELLO:
+            
+            g_uiFrmLth = 6;                                        
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;                          
+            g_ucU1TX_Data[4] = Flag_STATUS;                            
+            g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);    
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;
+        /*************************(0x02)***************************/   
+        case PCR_SYSRST:
+            
+            g_uiFrmLth = 6;                                        
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;          
+            g_ucU1TX_Data[4] = Flag_STATUS;  
+            g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);         
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;
+        /**********************(0x03)*****************************/    
+        case PCR_SELFTEST:
+   
+            g_uiFrmLth = 6;
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
+            g_ucU1TX_Data[4] = 0x00; //
+            g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;
+            
+        /**************************(0x04)***************************/                    
+        case PCR_DEV:       
+            
+            g_uiFrmLth = 6;
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
+            g_ucU1TX_Data[4] = Flag_STATUS;
+            g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);     
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;
+        /*************************(0x05)**************************/    
+        case PCR_STATUS:
+            
+            g_uiFrmLth = 6;
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
+            g_ucU1TX_Data[4] = Flag_STATUS;
+            g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);
+            
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;
+            
+        /*************************(0x06)**************************/ 
+        case SET_Temperature:             
+            if(g_ucU1RX_Data[4] != 0xFF){                                 
+                ucCtrlMode = 0;                                           
+                ucCtrlMode = g_ucU1RX_Data[12];                       
+                if(ucCtrlMode == 1){                               
+                    g_ucENABLE = 0;                                 
+                    TempChn[0].cPeltierRun = TempChn[1].cPeltierRun = TempChn[2].cPeltierRun = 0; 
+                    TempChn[3].cPeltierRun = 0;                      
+                }else{                                                     
+                    g_ucENABLE = 1; 
+                    Target_temp = g_ucU1RX_Data[4]; 
+                    Target_temp = (Target_temp<<8) + g_ucU1RX_Data[5];        
+                    g_dTarget_temp = (double)Target_temp /100.0;
+                    if(g_dTarget_temp >= 130.0) g_dTarget_temp = 130.0;
+                    if(g_dTarget_temp < 0)  g_dTarget_temp = 0;
+                    for (i = 0; i < 4; i++) {
+                        TempChn[i].cBlockTempAriv = 0;
+                        TempChn[i].cPeltierRun = 1;
+                        TempChn[i].fBlockTargetTemp = g_dTarget_temp;
+                        if (fabs(TempChn[i].fCurrentTemperature - g_dTarget_temp) >= 0.3){                            
+                            ScheduleOperate(i);                            
+                        }
+                    }   
+                }
+            }else{
+                    for (i = 0; i < 4; i++) {
+                        TempChn[i].cPeltierRun = 0;
+                    }
+            } 
+            g_uiFrmLth = 6;
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;    
+            g_ucU1TX_Data[4] = Flag_STATUS; 
+            g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;
+        /***************************(0x78)**************************/ 
+        case SET_ZLTemperature:             
+            if(g_ucU1RX_Data[4] != 0xFF){                             
+                ucCtrlMode = 0;                                        
+                ucCtrlMode = g_ucU1RX_Data[12];                 
+                if(ucCtrlMode == 1){                                       
+                    g_ucENABLE = 0;                                      
+                    TempChn[4].cPeltierRun = TempChn[5].cPeltierRun = 0;                    
+                }else{                                                        
+                    g_ucENABLE = 1; 
+                    Target_temp = g_ucU1RX_Data[4]; 
+                    Target_temp = (Target_temp<<8) + g_ucU1RX_Data[5];      
+                    g_dTarget_temp = (double)Target_temp /100.0;
+                    if(g_dTarget_temp >= 130.0) g_dTarget_temp = 130.0;
+                    if(g_dTarget_temp < 0)  g_dTarget_temp = 0;
+                    for (i = 4; i < 6; i++) {
+                        TempChn[i].cBlockTempAriv = 0;
+                        TempChn[i].cPeltierRun = 1;
+                        TempChn[i].fBlockTargetTemp = g_dTarget_temp;
+                        if (fabs(TempChn[i].fCurrentTemperature - g_dTarget_temp) >= 0.3){                            
+                            ScheduleOperate(i);                            
+                        }
+                    }   
+                }
+            }else{
+                    for (i = 4; i < 6; i++) {
+                        TempChn[i].cPeltierRun = 0;
+                    }
+            } 
+            g_uiFrmLth = 6;
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;    
+            g_ucU1TX_Data[4] = Flag_STATUS; 
+            g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;            
+        /****************************(0x07)*************************/  
+        case PCR_MOTOR:
+            PCR_MOTOR1 =  (g_ucU1RX_Data[4]&0xf0);                           
+            PCR_MOTOR2 =  g_ucU1RX_Data[4]&0x0f;                                   
+            if(PCR_MOTOR1 == 0x10 ){   
+                switch(PCR_MOTOR2){                                             
+                    case 6:g_lPulse = g_ucU1RX_Data[5];
+                           g_lPulse = (g_lPulse<<8) + g_ucU1RX_Data[6];
+                           g_lPulse = g_lPulse * 2;
+                           ucMOTOR_DIR = g_ucU1RX_Data[7];             
+                           uiSpeed = g_ucU1RX_Data[8];
+                           uiSpeed = (uiSpeed<<8) + g_ucU1RX_Data[9];                     
+                           MotorXMove(g_lPulse,ucMOTOR_DIR,uiSpeed);
+                           break;       
+                    case 7:g_lPulse = g_ucU1RX_Data[5];
+                           g_lPulse = (g_lPulse<<8) + g_ucU1RX_Data[6];
+                           g_lPulse = g_lPulse * 2;                           
+                           ucMOTOR_DIR = g_ucU1RX_Data[7];             
+                           uiSpeed = g_ucU1RX_Data[8];
+                           uiSpeed = (uiSpeed<<8) + g_ucU1RX_Data[9];           
+                           MotorXMove(g_lPulse,ucMOTOR_DIR,uiSpeed);
+                           break;
+                    case 3:
+                           MotorXHome(g_tEE.uiXPulseHome,g_tEE.uiXSpeedHome,g_tEE.uiXSpeedLeave);                
+                           HangHao=0;
+                           break;              
+                    case 10:g_lPulse = g_ucU1RX_Data[5];
+                        g_lPulse = (g_lPulse << 8) + g_ucU1RX_Data[6];
+                        g_lPulse = g_lPulse * 2;                        
+                        uiSpeed = g_ucU1RX_Data[7];
+                        uiSpeed = (uiSpeed << 8) + g_ucU1RX_Data[8];
+                        MotorXMoveTo(g_lPulse, uiSpeed);
+                        break;                 
+                    case 5:    
+                        g_lPulse = g_ucU1RX_Data[5];
+                        g_lPulse = (g_lPulse << 8) + g_ucU1RX_Data[6];
+                        g_lPulse = g_lPulse * 2;                        
+                        ucMOTOR_DIR = g_ucU1RX_Data[7];
+                        uiSpeed = g_ucU1RX_Data[8];
+                        uiSpeed = (uiSpeed << 8) + g_ucU1RX_Data[9];
+                        Alldata = 1;
+
+                        MotorXScan(g_lPulse, ucMOTOR_DIR, uiSpeed);
+                        MotorXMoveTo(0, uiSpeed);
+                        MotorXHome(g_tEE.uiXPulseHome,g_tEE.uiXSpeedHome,g_tEE.uiXSpeedLeave);
+//                        g_uiScanPulseX = 0;  
+//                        Alldata = 0;
+//                        IEC1bits.INT2IE = 0; 
+//                        //数据处理
+//                        
+//                        for(i=0;i<17;i++){
+//                            ulFAMAD_All = 0;
+//                            ulVICAD_All = 0;
+//                            ulROXAD_All = 0;
+//                            ulCY5AD_All = 0;                    
+//                            for(j=0;j<SUM1;j++){
+//                                ulFAMAD_All += FAMData[i][j];
+//                                ulVICAD_All += VICData[i][j];
+//                                ulROXAD_All += ROXData[i][j];
+//                                ulCY5AD_All += CY5Data[i][j];
+//                            }
+//                            g_fFAMAD_Max[i] = (float)(ulFAMAD_All/SUM1);
+//                            g_fVICAD_Max[i] = (float)(ulVICAD_All/SUM1);
+//                            g_fROXAD_Max[i] = (float)(ulROXAD_All/SUM1);
+//                            g_fCY5AD_Max[i] = (float)(ulCY5AD_All/SUM1);
+//                        }
+//                            g_fQCFAM_Current = g_fFAMAD_Max[8];
+//                            g_fQCVIC_Current = g_fVICAD_Max[8];
+//                            g_fQCROX_Current = g_fROXAD_Max[8];
+//                            g_fQCCY5_Current = g_fCY5AD_Max[8];
+                         
+                        for(i=0;i<17;i++){
+                            ulFAMAD_All = 0;
+                            ulVICAD_All = 0;
+                            ulROXAD_All = 0;
+                            ulCY5AD_All = 0; 
+                                Bubble_Sort( &FAMData[i][15], 50);
+                                Bubble_Sort( &VICData[i][15], 50);
+                                Bubble_Sort( &ROXData[i][15], 50);
+                                Bubble_Sort( &CY5Data[i][15], 50);
+                                Bubble_Sort( &CY6Data[i][0], 50);
+                                Bubble_Sort(&_390Data[i][0], 50);                            
+                            for(j=18;j<(SUM1-18);j++){
+                                ulFAMAD_All += FAMData[i][j];
+                                ulVICAD_All += VICData[i][j];
+                                ulROXAD_All += ROXData[i][j];
+                                ulCY5AD_All += CY5Data[i][j];
+                            }
+                            g_fFAMAD_Max[i] = (float)(ulFAMAD_All/3);
+                            g_fVICAD_Max[i] = (float)(ulVICAD_All/3);
+                            g_fROXAD_Max[i] = (float)(ulROXAD_All/3);
+                            g_fCY5AD_Max[i] = (float)(ulCY5AD_All/3);
+                        }
+                            g_fQCFAM_Current = g_fFAMAD_Max[8];
+                            g_fQCVIC_Current = g_fVICAD_Max[8];
+                            g_fQCROX_Current = g_fROXAD_Max[8];
+                            g_fQCCY5_Current = g_fCY5AD_Max[8];                      
+                            MotorXMoveTo(0, uiSpeed);
+                            Alldata = 2;     
+                            g_uiScanPulseX = 0;  
+
+                        
+                        break; 
+                    case 11:
+                           Alldata = 0;
+                           DglLedbuf = 0;
+                           FAMLED = 1;
+                           g_lPulse = g_ucU1RX_Data[5];
+                           g_lPulse = (g_lPulse<<8) + g_ucU1RX_Data[6];
+                           g_lPulse = g_lPulse * 2;                           
+                           ucMOTOR_DIR = g_ucU1RX_Data[7];            
+                           uiSpeed = g_ucU1RX_Data[8];
+                           uiSpeed = (uiSpeed<<8) + g_ucU1RX_Data[9];   
+                           
+                           MotorXScan(g_lPulse,ucMOTOR_DIR,uiSpeed);
+                           Alldata = 2;  
+                           FAMLED = 0;
+                           break;
+                           
+                    case 12:
+                           DglLedbuf = 0; 
+                           Alldata = 0; 
+                           VICLED = 1;
+                           
+                           g_lPulse = g_ucU1RX_Data[5];
+                           g_lPulse = (g_lPulse<<8) + g_ucU1RX_Data[6]; 
+                           g_lPulse = g_lPulse * 2;
+                           ucMOTOR_DIR = g_ucU1RX_Data[7];           
+                           uiSpeed = g_ucU1RX_Data[8];
+                           uiSpeed = (uiSpeed<<8) + g_ucU1RX_Data[9];   
+                           
+                           MotorXScan(g_lPulse,ucMOTOR_DIR,uiSpeed);
+                           Alldata = 2;   
+                           VICLED = 0;
+                           break;
+                    case 13:
+                           DglLedbuf = 0; 
+                           Alldata = 0; 
+                           ROXLED = 1;
+                           g_lPulse = g_ucU1RX_Data[5];
+                           g_lPulse = (g_lPulse<<8) + g_ucU1RX_Data[6]; 
+                           g_lPulse = g_lPulse * 6;
+                           ucMOTOR_DIR = g_ucU1RX_Data[7];             
+                           uiSpeed = g_ucU1RX_Data[8];
+                           uiSpeed = (uiSpeed<<8) + g_ucU1RX_Data[9];   
+                           
+                           MotorXScan(g_lPulse,ucMOTOR_DIR,uiSpeed);
+                           Alldata = 2;   
+                           ROXLED = 0;
+                           break; 
+                    case 14:
+                           DglLedbuf = 0;
+                           Alldata = 0; 
+                           CY5LED = 1;
+                           g_lPulse = g_ucU1RX_Data[5];
+                           g_lPulse = (g_lPulse<<8) + g_ucU1RX_Data[6]; 
+                           g_lPulse = g_lPulse * 2;
+                           ucMOTOR_DIR = g_ucU1RX_Data[7];            
+                           uiSpeed = g_ucU1RX_Data[8];
+                           uiSpeed = (uiSpeed<<8) + g_ucU1RX_Data[9];   
+                           
+                           MotorXScan(g_lPulse,ucMOTOR_DIR,uiSpeed);
+                           Alldata = 2;  
+                           CY5LED = 0;
+                           break;
+                    case 15:
+                           DglLedbuf = 0;  
+                           Alldata = 0; 
+                           CY6LED = 1;
+                           g_lPulse = g_ucU1RX_Data[5];
+                           g_lPulse = (g_lPulse<<8) + g_ucU1RX_Data[6];
+                           g_lPulse = g_lPulse * 2;
+                           ucMOTOR_DIR = g_ucU1RX_Data[7];             
+                           uiSpeed = g_ucU1RX_Data[8];
+                           uiSpeed = (uiSpeed<<8) + g_ucU1RX_Data[9];   
+                           
+                           MotorXScan(g_lPulse,ucMOTOR_DIR,uiSpeed);
+                           Alldata = 2;  
+                           CY6LED = 0;                           
+                           break;     
+                    case 9:
+                           DglLedbuf = 0;  
+                           Alldata = 0; 
+                           _390LED = 1;
+                           g_lPulse = g_ucU1RX_Data[5];
+                           g_lPulse = (g_lPulse<<8) + g_ucU1RX_Data[6];
+                           g_lPulse = g_lPulse * 2;
+                           ucMOTOR_DIR = g_ucU1RX_Data[7];             
+                           uiSpeed = g_ucU1RX_Data[8];
+                           uiSpeed = (uiSpeed<<8) + g_ucU1RX_Data[9];   
+                           
+                           MotorXScan(g_lPulse,ucMOTOR_DIR,uiSpeed);
+                           Alldata = 2;  
+                           _390LED = 0;  
+                           break;        
+                    default:
+                           break;
+                }   
+            }
+            g_uiFrmLth = 6;
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2] = 0x00;       
+            g_ucU1TX_Data[3] = g_uiFrmLth;
+            g_ucU1TX_Data[4] = Flag_STATUS; 
+            g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);
+            
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;
+            
+        /**************************(0x08)*****************************/   
+        case PCR_LEDCTRL:          
+            switch(g_ucU1RX_Data[4]){                                      
+                case 1:                                                        
+                    CTRLLED1=(g_ucU1RX_Data[5]&0x01)? 1:0; 
+                    CTRLLED2=(g_ucU1RX_Data[5]&0x02)? 1:0; 
+                    CTRLLED3=(g_ucU1RX_Data[5]&0x04)? 1:0; 
+                    CTRLLED4=(g_ucU1RX_Data[5]&0x08)? 1:0;                   
+                    CTRLLED5=(g_ucU1RX_Data[5]&0x10)? 1:0; 
+                    CTRLLED6=(g_ucU1RX_Data[5]&0x20)? 1:0;
+                    break;
+                case 2:                                                   
+                    DglLedbuf=g_ucU1RX_Data[5]&0x3f;
+                    break;
+                default:
+                    break;
+            }        
+            g_uiFrmLth = 6;
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
+            g_ucU1TX_Data[4] = Flag_STATUS;
+            g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);
+            
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;
+            /*********************(0x09)*************************/      
+        case PCR_RDTEMP:
+
+            g_ucRealTemp_Chanel = g_ucU1RX_Data[4];                   
+            switch(g_ucRealTemp_Chanel){
+                case 0:
+//                    Real_temp[0] = (unsigned int)(TempChn[0].fCurrentTemperature*100.0);   
+//                    g_ucRealTemp_Chanel = 0;
+                    break;                   
+                case 1:Real_temp[0] = (unsigned int)(TempChn[0].fCurrentTemperature*100.0);   
+                       g_ucRealTemp_Chanel = 0;
+                       break;
+                case 2:Real_temp[1] = (unsigned int)(CAPReal_temp[0]*100.0);  
+                       g_ucRealTemp_Chanel = 1;
+                       break;
+                case 3:Real_temp[2] = (unsigned int)(CAPReal_temp[1]*100.0);  
+                       g_ucRealTemp_Chanel = 2;
+                       break;
+                case 4:Real_temp[3] = (unsigned int)(CAPReal_temp[0] * 100.0); 
+                       g_ucRealTemp_Chanel = 3;
+                       break;
+                case 5:Real_temp[4] = (unsigned int)(g_fFINReal_Temp*100.0); 
+                       g_ucRealTemp_Chanel = 4;
+                       break;
+                case 6:Real_temp[0] = (unsigned int)(TempChn[0].fCurrentTemperature*100.0);   
+                       g_ucRealTemp_Chanel = 0;
+                       break;
+                case 7:Real_temp[0] = (unsigned int)(TempChn[0].fCurrentTemperature*100.0);   
+                       g_ucRealTemp_Chanel = 0;
+                       break;
+                case 8:Real_temp[0] = (unsigned int)(TempChn[0].fCurrentTemperature*100.0);   
+                       g_ucRealTemp_Chanel = 0;
+                       break;
+                default :
+                    break;
+            }        
+            g_uiFrmLth = 9;
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;//桢长
+            g_ucU1TX_Data[4] = Real_temp[g_ucRealTemp_Chanel]>>8;             
+            g_ucU1TX_Data[5] = Real_temp[g_ucRealTemp_Chanel]&0x00ff;         
+            g_ucU1TX_Data[6] = TempChn[g_ucRealTemp_Chanel].cTubeTempAriv;
+            g_ucU1TX_Data[7] = Flag_STATUS;//状态位
+            g_ucU1TX_Data[8] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);
+            
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	 
+            break; 
+            
+        case PCR_RTPCREMP://0x10    
+            g_ucRealTemp_Chanel = g_ucU1RX_Data[4];                  
+            g_ucRealTemp_Chanel = 0;
+            Real_temp[0] = (unsigned int)(TempChn[0].fCurrentTemperature*100.0); 
+            
+//            if((TempChn[0].cTubeTempAriv == 1)||(TempChn[1].cTubeTempAriv == 1)||(TempChn[2].cTubeTempAriv == 1)){
+//                g_cTubeTempAriv = 1;
+//            }else{
+//                g_cTubeTempAriv = 0;
+//            }
+            g_uiFrmLth = 9;
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;//桢长
+            g_ucU1TX_Data[4] = Real_temp[0]>>8;           
+            g_ucU1TX_Data[5] = Real_temp[0]&0x00ff;   
+            g_ucU1TX_Data[6] =TempChn[0].cTubeTempAriv;
+            g_ucU1TX_Data[7] = Flag_STATUS;  //状态位
+            g_ucU1TX_Data[8] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);
+            
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;                 
+            /**********************(0x0A)************************/   
+       case PCR_SETCAP://0x0A
+         
+            CAPPower = g_ucU1RX_Data[4];
+            CAPPower = (CAPPower<<8) + g_ucU1RX_Data[5];
+            
+            if(g_ucU1RX_Data[4] == 0xFF){
+                CAPTarget_temp[0] = g_tEE.CAPTarget_temp[0];
+                CAPTarget_temp[1] = g_tEE.CAPTarget_temp[1]; 
+            }
+            else {
+                if(CAPPower < 13000){
+                   CAPTarget_temp[0] = CAPTarget_temp[1] = CAPPower/100;  
+                }else{
+                    
+                }
+                
+            }           
+                                   
+            g_uiFrmLth = 6;
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
+            g_ucU1TX_Data[4] = 0;
+            g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);
+            
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;      
+            /********************(0x0c)***********************/               
+     case RD_PCRDATA://0x0C 
+            g_ucPCRDATA_Chanel=g_ucU1RX_Data[4]; 
+            ucBuffer_Data[0]=((g_ucCMD1|0x80)<<8)+FRAME_HEAD;
+            ucBuffer_Data[1]=(ZLENTH1<<8)+0;//帧长+CMDNO,
+            g_ucU1RX_Data[3]=0;
+            
+//            for(i=0;i<20;i++){
+//                lMPPCtemp += g_uiMPPCtemp[i];
+//            }           
+            lMPPCtemp = AD_Get(0x0F);
+//            if((MPPCALLtemp>60000)||((MPPCALLtemp<100)){                      
+//            }
+            HangHao=0;
+            //FAM
+            for(i=0;i<8;i++){
+                g_fAD_Max[i] =  g_fFAMAD_Max[i];
+            }
+            for(i=8;i<16;i++){
+                g_fAD_Max[i] =  g_fFAMAD_Max[i+1];     
+            }
+            for (i = 0; i < 16; i++) {
+                if (g_tEE.uiQCbuffer == 0) { 
+                    g_fAD_Max[i] = g_fAD_Max[i];
+                } else if (g_tEE.uiQCbuffer == 1) {
+                    if (g_fAD_Max[i] > g_tEE.FAM_MPPCB) {
+                        g_fAD_Max[i] = g_fAD_Max[i] - g_tEE.FAM_MPPCB;    
+                        g_fAD_Max[i] = g_fAD_Max[i] / (g_fQCFAM_Current / g_fQCFAM);
+                        g_fAD_Max[i] = g_fAD_Max[i] + g_tEE.FAM_MPPCB;   
+                    }else{ 
+                        g_fAD_Max[i] = g_fAD_Max[i] / (g_fQCFAM_Current / g_fQCFAM);
+                    }                     
+                } else if (g_tEE.uiQCbuffer == 2) {
+                    if (g_fAD_Max[i] > g_tEE.FAM_MPPCB) {
+                        g_fAD_Max[i] = g_fAD_Max[i] - g_tEE.FAM_MPPCB;    
+                        g_fAD_Max[i] = g_fAD_Max[i] / (g_tEE.FAM_MPPCTk1 * lMPPCtemp * lMPPCtemp + g_tEE.FAM_MPPCTk2 * lMPPCtemp + g_tEE.FAM_MPPCTb1); /*温度补偿*/
+                        g_fAD_Max[i] = g_fAD_Max[i] + g_tEE.FAM_MPPCB;   
+                    }else{ 
+                        g_fAD_Max[i] = g_fAD_Max[i];
+                    }    
+                }else {
+                }
+                g_fAD_Max[i] = (g_tEE.fSFAMk[i] * g_fAD_Max[i] + g_tEE.sSFAMb[i]); 
+                if (g_fAD_Max[i] > 60000)g_fAD_Max[i] = 60000;
+                if (g_fAD_Max[i] < 20)g_fAD_Max[i] = 20;
+                uiAD_Max[i] = (unsigned int) g_fAD_Max[i];
+                
+            }
+           for(GlobalNum1=0;GlobalNum1<16;GlobalNum1++){
+               ucBuffer_Data[2+ GlobalNum1] = uiAD_Max[GlobalNum1];//帧
+               g_ucU1RX_Data[3] += ucBuffer_Data[2+GlobalNum1]>>8;
+               g_ucU1RX_Data[3] += ucBuffer_Data[2+GlobalNum1]&0xff;
+           }  
+  
+            for(i=0;i<8;i++){
+                g_fAD_Max[i] =  g_fCY5AD_Max[i];
+            }
+            for(i=8;i<16;i++){  
+                g_fAD_Max[i] =  g_fCY5AD_Max[i+1];     
+            }            
+            for (i = 0; i < 16; i++) {
+                if (g_tEE.uiQCbuffer == 0) { 
+                    g_fAD_Max[i] = g_fAD_Max[i];
+                }
+                else if (g_tEE.uiQCbuffer == 1) {
+                    if (g_fAD_Max[i] > g_tEE.CY5_MPPCB) {
+                        g_fAD_Max[i] = g_fAD_Max[i] - g_tEE.CY5_MPPCB;    
+                        g_fAD_Max[i] = g_fAD_Max[i] / (g_fQCCY5_Current / g_fQCCY5);
+                        g_fAD_Max[i] = g_fAD_Max[i] + g_tEE.CY5_MPPCB;   
+                    }else{ 
+                        g_fAD_Max[i] = g_fAD_Max[i] / (g_fQCCY5_Current / g_fQCCY5);
+                    }                       
+                }
+                else if (g_tEE.uiQCbuffer == 2) {
+                    if (g_fAD_Max[i] > g_tEE.CY5_MPPCB) {
+                        g_fAD_Max[i] = g_fAD_Max[i] - g_tEE.CY5_MPPCB;    
+                        g_fAD_Max[i] = g_fAD_Max[i] / (g_tEE.CY5_MPPCTk1 * lMPPCtemp * lMPPCtemp + g_tEE.CY5_MPPCTk2 * lMPPCtemp + g_tEE.CY5_MPPCTb1);
+                        g_fAD_Max[i] = g_fAD_Max[i] + g_tEE.CY5_MPPCB;   
+                    }else{ 
+                        g_fAD_Max[i] = g_fAD_Max[i]; 
+                    }    
+                }
+                else {
+                }
+                g_fAD_Max[i] = (g_tEE.fSCY5k[i] * g_fAD_Max[i] + g_tEE.sSCY5b[i]); 
+                if (g_fAD_Max[i] > 60000)g_fAD_Max[i] = 60000;
+                if (g_fAD_Max[i] < 20)g_fAD_Max[i] = 20;
+                uiAD_Max[i] = (unsigned int) g_fAD_Max[i];
+                
+            }
+            for(GlobalNum1=16;GlobalNum1<32;GlobalNum1++){
+                ucBuffer_Data[2+GlobalNum1]=uiAD_Max[GlobalNum1-16];//帧
+                g_ucU1RX_Data[3] += ucBuffer_Data[2+GlobalNum1]>>8;
+                g_ucU1RX_Data[3] += ucBuffer_Data[2+GlobalNum1]&0xff;
+            }
+  
+            for(i=0;i<8;i++){
+                g_fAD_Max[i] =  g_fVICAD_Max[i];
+            }
+            for(i=8;i<16;i++){
+                g_fAD_Max[i] =  g_fVICAD_Max[i+1];     
+            }            
+            for (i = 0; i < 16; i++) {
+                if (g_tEE.uiQCbuffer == 0) {
+                    g_fAD_Max[i] = g_fAD_Max[i];
+                } else if (g_tEE.uiQCbuffer == 1) {
+                    if (g_fAD_Max[i] > g_tEE.VIC_MPPCB) {
+                        g_fAD_Max[i] = g_fAD_Max[i] - g_tEE.VIC_MPPCB;    
+                        g_fAD_Max[i] = g_fAD_Max[i] / (g_fQCVIC_Current / g_fQCVIC);
+                        g_fAD_Max[i] = g_fAD_Max[i] + g_tEE.VIC_MPPCB;   
+                    }else{ 
+                        g_fAD_Max[i] = g_fAD_Max[i] / (g_fQCVIC_Current / g_fQCVIC);
+                    }                    
+                } else if (g_tEE.uiQCbuffer == 2) {
+                    if (g_fAD_Max[i] > g_tEE.VIC_MPPCB) {
+                        g_fAD_Max[i] = g_fAD_Max[i] - g_tEE.VIC_MPPCB;    
+                        g_fAD_Max[i] = g_fAD_Max[i] / (g_tEE.VIC_MPPCTk1 * lMPPCtemp * lMPPCtemp + g_tEE.VIC_MPPCTk2 * lMPPCtemp + g_tEE.VIC_MPPCTb1); 
+                        g_fAD_Max[i] = g_fAD_Max[i] + g_tEE.VIC_MPPCB;   
+                    }else{ 
+                        g_fAD_Max[i] = g_fAD_Max[i];
+                    }    
+                }else {
+                }
+                g_fAD_Max[i] = (g_tEE.fSVICk[i] * g_fAD_Max[i] + g_tEE.sSVICb[i]); 
+                if (g_fAD_Max[i] > 60000)g_fAD_Max[i] = 60000;
+                if (g_fAD_Max[i] < 20)g_fAD_Max[i] = 20;
+                uiAD_Max[i] = (unsigned int) g_fAD_Max[i];
+                
+            }
+            for(GlobalNum1=32;GlobalNum1<48;GlobalNum1++){
+                ucBuffer_Data[2+GlobalNum1]=uiAD_Max[GlobalNum1-32];//帧
+                g_ucU1RX_Data[3] += ucBuffer_Data[2+GlobalNum1]>>8;
+                g_ucU1RX_Data[3] += ucBuffer_Data[2+GlobalNum1]&0xff;
+            }
+
+            for(i=0;i<8;i++){
+                g_fAD_Max[i] =  g_fROXAD_Max[i];
+            }
+            for(i=8;i<16;i++){//排序      
+                g_fAD_Max[i] =  g_fROXAD_Max[i+1];     
+            }            
+            for (i = 0; i < 16; i++) {
+                if (g_tEE.uiQCbuffer == 0) {
+                    g_fAD_Max[i] = g_fAD_Max[i];
+                } else if (g_tEE.uiQCbuffer == 1) {
+                    if (g_fAD_Max[i] > g_tEE.ROX_MPPCB) {
+                        g_fAD_Max[i] = g_fAD_Max[i] - g_tEE.ROX_MPPCB;    
+                        g_fAD_Max[i] = g_fAD_Max[i] / (g_fQCROX_Current / g_fQCROX);
+                        g_fAD_Max[i] = g_fAD_Max[i] + g_tEE.ROX_MPPCB;   
+                    }else{ 
+                        g_fAD_Max[i] = g_fAD_Max[i] / (g_fQCROX_Current / g_fQCROX);
+                    }                    
+                    
+                } else if (g_tEE.uiQCbuffer == 2) {
+                    if (g_fAD_Max[i] > g_tEE.ROX_MPPCB) {
+                        g_fAD_Max[i] = g_fAD_Max[i] - g_tEE.ROX_MPPCB;    
+                        g_fAD_Max[i] = g_fAD_Max[i] / (g_tEE.ROX_MPPCTk1 * lMPPCtemp * lMPPCtemp + g_tEE.ROX_MPPCTk2 * lMPPCtemp + g_tEE.ROX_MPPCTb1); 
+                        g_fAD_Max[i] = g_fAD_Max[i] + g_tEE.ROX_MPPCB;   
+                    }else{ 
+                        g_fAD_Max[i] = g_fAD_Max[i]; 
+                    }    
+                }else {
+                }
+                g_fAD_Max[i] = (g_tEE.fSROXk[i] * g_fAD_Max[i] + g_tEE.sSROXb[i]); 
+                if (g_fAD_Max[i] > 60000)g_fAD_Max[i] = 60000;
+                if (g_fAD_Max[i] < 20)g_fAD_Max[i] = 20;
+                uiAD_Max[i] = (unsigned int) g_fAD_Max[i];
+                
+            }
+            for(GlobalNum1=48;GlobalNum1<55;GlobalNum1++){
+                ucBuffer_Data[2+GlobalNum1]=uiAD_Max[GlobalNum1-48];//帧
+                g_ucU1RX_Data[3] += ucBuffer_Data[2+GlobalNum1]>>8;
+                g_ucU1RX_Data[3] += ucBuffer_Data[2+GlobalNum1]&0xff;
+            } 
+            
+            if(g_ucMPPCtemp == 1){
+                ucBuffer_Data[57] = (unsigned int)lMPPCtemp;
+                g_ucU1RX_Data[3] += ucBuffer_Data[57]>>8;
+                g_ucU1RX_Data[3] += ucBuffer_Data[57]&0xff;
+            }else{
+                ucBuffer_Data[57]=uiAD_Max[7];//帧
+                g_ucU1RX_Data[3] += ucBuffer_Data[57]>>8;
+                g_ucU1RX_Data[3] += ucBuffer_Data[57]&0xff;        
+            }            
+
+            for(GlobalNum1=56;GlobalNum1<64;GlobalNum1++){
+                ucBuffer_Data[2+GlobalNum1]=uiAD_Max[GlobalNum1-48];//帧
+                g_ucU1RX_Data[3] += ucBuffer_Data[2+GlobalNum1]>>8;
+                g_ucU1RX_Data[3] += ucBuffer_Data[2+GlobalNum1]&0xff;
+            }
+            
+            g_ucU1RX_Data[3] +=ucBuffer_Data[0]>>8;
+            g_ucU1RX_Data[3] +=ucBuffer_Data[0]&0xff;
+            g_ucU1RX_Data[3] +=ucBuffer_Data[1]>>8;
+            g_ucU1RX_Data[3] +=ucBuffer_Data[1]&0xff;
+            ucBuffer_Data[GlobalNum1+2]=g_ucU1RX_Data[3]<<8;         
+                     
+            memset( uiAD_Max,0,16*sizeof(unsigned int));
+            
+            while(DMA1CONbits.CHEN);
+            DMA1CNT=(ucBuffer_Data[1]>>8)-1;
+            DMA1CONbits.CHEN=1;
+            DMA1REQbits.FORCE =1;
+            
+            break;              
+        /***********************0x0d)******************************/            
+        case PCR_PMT:
+            MPPCPower = g_ucU1RX_Data[4];
+            MPPCPower = (MPPCPower<<8) + g_ucU1RX_Data[5];
+            
+            Write_DAC(DA_FAM);
+            Delay_ms(10);
+            Write_DAC(DA_FAM);
+            
+            g_uiFrmLth  = 6;
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
+            g_ucU1TX_Data[4] = Flag_STATUS;  //状态位
+            g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);           
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break; 
+            /**********************(0x0f)***********************/   
+       case PCR_STALED:
+            g_ucSTATE_RUN = g_ucU1RX_Data[4];
+            
+            if(g_ucSTATE_RUN == 2){
+                CAPTarget_temp[0] = CAPTarget_temp[1] = g_tEE.CAPTemp_PCR;
+//             
+//                IEC1bits.INT2IE = 1;
+                Alldata = 1;
+                MotorXScan(g_tEE.uiXPulseScan * 2, 1, g_tEE.uiXSpeedScan);
+                MotorXMoveTo(0, uiSpeed);
+                MotorXHome(g_tEE.uiXPulseHome,g_tEE.uiXSpeedHome,g_tEE.uiXSpeedLeave); 
+                Alldata = 2;
+                
+                ulAD_Max = 0;
+                Bubble_Sort( &FAMData[8][15], 50);
+                for(j=18;j<(SUM1-18);j++){
+                        ulAD_Max += FAMData[8][j];
+                }
+                g_fQCFAM = (float)(ulAD_Max/3);               
+                if(g_fQCFAM<100)g_fQCFAM = 100;
+                if(g_fQCFAM>60000)g_fQCFAM = 60000;
+                
+                ulAD_Max = 0;   
+                Bubble_Sort( &VICData[8][15], 50);
+                for(j=18;j<(SUM1-18);j++){
+                        ulAD_Max += VICData[8][j];
+                }
+                g_fQCVIC = (float)(ulAD_Max/3);
+                if(g_fQCVIC<100)g_fQCVIC = 100;
+                if(g_fQCVIC>60000)g_fQCVIC = 60000;
+                
+                ulAD_Max = 0;
+                Bubble_Sort( &ROXData[8][15], 50);
+                for(j=18;j<(SUM1-18);j++){
+                        ulAD_Max += ROXData[8][j];
+                }
+                g_fQCROX = (float)(ulAD_Max/3);
+                if(g_fQCROX<100)g_fQCROX = 100;
+                if(g_fQCROX>60000)g_fQCROX = 60000;
+                
+                ulAD_Max = 0;      
+                Bubble_Sort( &CY5Data[8][15], 50);
+                for(j=18;j<(SUM1-18);j++){
+                        ulAD_Max += CY5Data[8][j];
+                }
+                g_fQCCY5 = (float)(ulAD_Max/3);
+                if(g_fQCCY5<100)g_fQCCY5 = 100;
+                if(g_fQCCY5>60000)g_fQCCY5 = 60000;
+
+                ulAD_Max = 0;  
+                Bubble_Sort( &CY6Data[8][15], 50);
+                for(j=18;j<(SUM1-18);j++){
+                        ulAD_Max += CY6Data[8][j];
+                }
+                g_fQCCY6 = (float)(ulAD_Max/3);
+                if(g_fQCCY6<100)g_fQCCY6 = 100;
+                if(g_fQCCY6>60000)g_fQCCY6 = 60000;
+                
+    
+            }
+            else if(g_ucSTATE_RUN == 1){
+                CAPTarget_temp[0] = g_tEE.CAPTarget_temp[0];
+                CAPTarget_temp[1] = g_tEE.CAPTarget_temp[1]; 
+               if(g_usEERadiatorOvertemp >= 60)g_usEERadiatorOvertemp = 60;
+                if(g_usEERadiatorOvertemp < 20)g_usEERadiatorOvertemp = 20;    
+
+                for (i = 0; i < 2; i++) {                
+                    TempChn[i].fBlockTargetTemp = g_usEERadiatorOvertemp;
+                    TempChn[i].cPeltierRun = 1;
+                    ScheduleOperate(i);
+                }                 
+            }
+             
+            g_uiFrmLth = 6;
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
+            g_ucU1TX_Data[4] = Flag_STATUS;  //状态位
+            g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);         
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;  
+        /***************************(0x11)************************/  
+        case READ_EEPROM:            
+            uiEE_address = g_ucU1RX_Data[4];
+            uiEE_address = (uiEE_address << 8) + g_ucU1RX_Data[5]; 
+            uiEE_address = (uiEE_address << 8) + g_ucU1RX_Data[6];           
+            GlobalTmp	 = g_ucU1RX_Data[7];
+            
+            for(i=0;i<GlobalTmp;i++){
+                g_ucU1TX_Data[FRAME_LTHL_INDEX+i] = EE_read(uiEE_address+i);
+            }
+            g_uiFrmLth = GlobalTmp+6;
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2] = 0;//地址
+            g_ucU1TX_Data[3] =  g_uiFrmLth & 0xff;
+            g_ucU1TX_Data[g_uiFrmLth-FRAME_STATE_INDEX-1] = Flag_STATUS;    
+            g_ucU1TX_Data[g_uiFrmLth-FRAME_CRC_INDEX-1] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);                       
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;           
+        /***************************(0x12)*************************/  
+        case WRITE_EEPROM:
+            uiEE_address = g_ucU1RX_Data[4];                               
+            uiEE_address = (uiEE_address << 8) + g_ucU1RX_Data[5]; 
+            uiEE_address = (uiEE_address << 8) + g_ucU1RX_Data[6];
+            if((uiEE_address >= 0x20)&&(uiEE_address < 0x40)){
+                
+            }else{
+                GlobalTmp = g_ucU1RX_Data[3]-8;                                   
+                for(i=0;i<GlobalTmp;i++){
+                    EE_write(uiEE_address+i,g_ucU1RX_Data[7+i]);               
+                    Delay_ms(10);
+                }
+                Read_Sys_EE(uiEE_address);
+            }
+            g_uiFrmLth = 6;
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
+            g_ucU1TX_Data[4] = Flag_STATUS;  //状态标志位
+            g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);
+                        
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;
+        /**************************(0x15)**********************/     
+        case PCR_RDSENSOR:
+            
+            g_uiFrmLth = 7;
+            
+            if(HOMEX==1)Sensor = 1;
+            else        Sensor = 0;
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
+            g_ucU1TX_Data[4] = Sensor;
+            g_ucU1TX_Data[5] = Flag_STATUS;  
+            g_ucU1TX_Data[6] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);
+            
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;
+        /**************************(0x18)**********************/   
+        case GET_MPPCAD:   
+            
+            
+            memset( uiMppcADBuff,0,6*sizeof(unsigned int));
+            
+            uiMppcADBuff[0] =  AD_Get(0x09);     
+            uiMppcADBuff[1] =  AD_Get(0x0B);            
+            uiMppcADBuff[2] =  AD_Get(0x0A);             
+            uiMppcADBuff[3] =  AD_Get(0x0C);        
+            uiMppcADBuff[6] =  AD_Get(0x0F);         
+            
+            g_uiFrmLth = 20;
+            g_ucU1TX_Data[0]  = FRAME_HEAD;
+            g_ucU1TX_Data[1]  = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2]  = 0;
+            g_ucU1TX_Data[3]  = g_uiFrmLth & 0xff;
+            g_ucU1TX_Data[4]  = uiMppcADBuff[0] >> 8;
+            g_ucU1TX_Data[5]  = (unsigned char) uiMppcADBuff[0];
+            g_ucU1TX_Data[6]  = uiMppcADBuff[1] >> 8;
+            g_ucU1TX_Data[7]  = (unsigned char) uiMppcADBuff[1];
+            g_ucU1TX_Data[8]  = uiMppcADBuff[2] >> 8;
+            g_ucU1TX_Data[9]  = (unsigned char) uiMppcADBuff[2];
+            g_ucU1TX_Data[10] = uiMppcADBuff[3] >> 8;
+            g_ucU1TX_Data[11] = (unsigned char) uiMppcADBuff[3];     
+            g_ucU1TX_Data[12]  = uiMppcADBuff[4] >> 8;
+            g_ucU1TX_Data[13]  = (unsigned char) uiMppcADBuff[4];
+            g_ucU1TX_Data[14]  = uiMppcADBuff[5] >> 8;
+            g_ucU1TX_Data[15]  = (unsigned char) uiMppcADBuff[5];
+            g_ucU1TX_Data[16] = uiMppcADBuff[6] >> 8;
+            g_ucU1TX_Data[17] = (unsigned char) uiMppcADBuff[6];             
+            g_ucU1TX_Data[18] = Flag_STATUS; //状态位
+            g_ucU1TX_Data[19] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);   
+            
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;  
+        /*************************** (0x18)***********************/   
+        case PCR_RDADC:          
+            g_uiFrmLth = 24;
+            g_ucU1TX_Data[0]  = FRAME_HEAD;
+            g_ucU1TX_Data[1]  = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2]  = 0;
+            g_ucU1TX_Data[3]  = g_uiFrmLth & 0xff;
+            g_ucU1TX_Data[4]  = dTemperatureAD[0] >> 8;
+            g_ucU1TX_Data[5]  = (unsigned char) dTemperatureAD[0];     
+            g_ucU1TX_Data[6]  = dTemperatureAD[1] >> 8;
+            g_ucU1TX_Data[7]  = (unsigned char) dTemperatureAD[1];    
+            g_ucU1TX_Data[8]  = dTemperatureAD[2] >> 8;
+            g_ucU1TX_Data[9]  = (unsigned char) dTemperatureAD[2];   
+            g_ucU1TX_Data[10] = dTemperatureAD[3] >> 8;
+            g_ucU1TX_Data[11] = (unsigned char) dTemperatureAD[3];  
+            g_ucU1TX_Data[12] = dTemperatureAD[4] >> 8;
+            g_ucU1TX_Data[13] = (unsigned char) dTemperatureAD[4];    
+            g_ucU1TX_Data[14] = dTemperatureAD[5] >> 8;
+            g_ucU1TX_Data[15] = (unsigned char) dTemperatureAD[5];    
+            g_ucU1TX_Data[16] = dTemperatureAD[6] >> 8; 
+            g_ucU1TX_Data[17] = (unsigned char) dTemperatureAD[6];   
+            g_ucU1TX_Data[18] = dTemperatureAD[7] >> 8;
+            g_ucU1TX_Data[19] = (unsigned char) dTemperatureAD[7];     
+            g_ucU1TX_Data[20] = dTemperatureAD[8] >> 8;
+            g_ucU1TX_Data[21] = (unsigned char) dTemperatureAD[8];          
+            g_ucU1TX_Data[22] = Flag_STATUS; 
+            g_ucU1TX_Data[23] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);                        
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;            
+        /***************************(0x18)***********************/   
+//        case ADGET:       
+//
+//            ADC = AD_Get(g_ucU1RX_Data[4]);
+//            
+//            g_uiFrmLth = 8;
+//            g_ucU1TX_Data[0]  = FRAME_HEAD;
+//            g_ucU1TX_Data[1]  = g_ucCMD1|0X80;
+//            g_ucU1TX_Data[2]  = 0;
+//            g_ucU1TX_Data[3]  = g_uiFrmLth & 0xff;
+//            g_ucU1TX_Data[4] = AD_Get(g_ucU1RX_Data[4]) >> 8;
+//            g_ucU1TX_Data[5] = (unsigned char) AD_Get(g_ucU1RX_Data[4]);       
+//            g_ucU1TX_Data[6] = Flag_STATUS; //状态位
+//            g_ucU1TX_Data[7] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);                        
+//            while(DMA3CONbits.CHEN);        
+//            DMA3CNT=(g_uiFrmLth-1);
+//            DMA3CONbits.CHEN  = 1;		
+//            DMA3REQbits.FORCE = 1;	
+//            break;            
+            
+            
+        /***************************(0x1C)***********************/    
+        case PCR_FAN:           
+            FanCount  = g_ucU1RX_Data[4];
+            MPPCPower = g_ucU1RX_Data[5];
+            MPPCPower = (MPPCPower<<8) + g_ucU1RX_Data[6];           
+            FANOC_Set(FanCount,MPPCPower);            
+            g_uiFrmLth = 6;
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
+            g_ucU1TX_Data[4] = Flag_STATUS;  //状态位
+            g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);           
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;
+        /**************************(0x44)***********************/   
+        case QC_Data:          
+            g_uiFrmLth = 14;
+            g_ucU1TX_Data[0]  = FRAME_HEAD;
+            g_ucU1TX_Data[1]  = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2]  = 0;
+            g_ucU1TX_Data[3]  = g_uiFrmLth & 0xff;
+            g_ucU1TX_Data[4]  = (unsigned int)g_fQCFAM_Current >> 8;
+            g_ucU1TX_Data[5]  = (unsigned char) g_fQCFAM_Current;
+            g_ucU1TX_Data[6]  = (unsigned int)g_fQCVIC_Current >> 8;
+            g_ucU1TX_Data[7]  = (unsigned char) g_fQCVIC_Current;
+            g_ucU1TX_Data[8]  = (unsigned int)g_fQCROX_Current >> 8;
+            g_ucU1TX_Data[9]  = (unsigned char) g_fQCROX_Current;
+            g_ucU1TX_Data[10] = (unsigned int)g_fQCCY5_Current >> 8;
+            g_ucU1TX_Data[11] = (unsigned char) g_fQCCY5_Current;          
+            g_ucU1TX_Data[12] = Flag_STATUS; //状态位
+            g_ucU1TX_Data[13] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);                        
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;            
+            
+            
+        /***************************(0x1E)*************************/    
+        case PCR_IO:         
+            g_uiFrmLth = 6;           
+            if(g_ucU1RX_Data[4] == 255){     
+                g_ucENABLE = 0;
+            }else if(g_ucU1RX_Data[4] == 254){
+                g_ucENABLE = 1;
+            }else{
+                SetIO(g_ucU1RX_Data[4],g_ucU1RX_Data[5]);   
+            }                     
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
+            g_ucU1TX_Data[4] = Flag_STATUS;  //状态位
+            g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);           
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;
+            
+            if(g_ucU1RX_Data[4] == 253){
+                _RP97R  = 0x01;
+                _U1RXR  = 0x6D;    
+            }
+            else if(g_ucU1RX_Data[4] == 252){
+                _RP97R  = 0x01;
+                _U1RXR  = 0x60;    
+            }
+            else{}        
+            
+            
+            break;            
+        /*****************************(0xE0)***************************/
+        case GET_IO:
+            Get_IOstate = Get_IO(g_ucU1RX_Data[4]);
+            g_uiFrmLth = 7;
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth; //
+            g_ucU1TX_Data[4] = Get_IOstate; //获取的IO状态
+            g_ucU1TX_Data[5] = Flag_STATUS; //状态位
+            g_ucU1TX_Data[6] = (unsigned char) Check(g_ucU1TX_Data, g_uiFrmLth - 1);
+            while (DMA3CONbits.CHEN);
+            DMA3CNT = (g_uiFrmLth - 1);
+            DMA3CONbits.CHEN = 1;
+            DMA3REQbits.FORCE = 1;
+            break;                 
+        /************************** (0x31)*************************/
+        case SET_PWM:       
+            ucPWMindex = g_ucU1RX_Data[4];
+            lPWMstate = g_ucU1RX_Data[5];
+            lPWMstate = (lPWMstate << 8) + g_ucU1RX_Data[6];
+            ucCtrlMode = g_ucU1RX_Data[7];
+            if (ucCtrlMode == 0) {
+                SetPWM(ucPWMindex, lPWMstate);
+            } else if (ucCtrlMode == 1) {
+                SetPWM(ucPWMindex, -lPWMstate);
+            } else {}                                  
+            g_uiFrmLth = 6;
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1 | 0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth;
+            g_ucU1TX_Data[4] = 0x00; //状态位
+            g_ucU1TX_Data[5] = (unsigned char) Check(g_ucU1TX_Data, g_uiFrmLth - 1);
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;
+        /**************************(0x32)***********************/   
+        case GET_PWM:          
+            g_uiFrmLth = 18;
+            g_ucU1TX_Data[0]  = FRAME_HEAD;
+            g_ucU1TX_Data[1]  = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2]  = 0;
+            g_ucU1TX_Data[3]  = g_uiFrmLth & 0xff;
+            g_ucU1TX_Data[4]  = g_uiGetPWM[0] >> 8;
+            g_ucU1TX_Data[5]  = (unsigned char) g_uiGetPWM[0];
+            g_ucU1TX_Data[6]  = g_uiGetPWM[1] >> 8;
+            g_ucU1TX_Data[7]  = (unsigned char) g_uiGetPWM[1];
+            g_ucU1TX_Data[8]  = g_uiGetPWM[2] >> 8;
+            g_ucU1TX_Data[9]  = (unsigned char) g_uiGetPWM[2];
+            g_ucU1TX_Data[10] = g_uiGetPWM[3] >> 8;
+            g_ucU1TX_Data[11] = (unsigned char) g_uiGetPWM[3];
+            g_ucU1TX_Data[12] = g_uiGetPWM[4] >> 8;
+            g_ucU1TX_Data[13] = (unsigned char) g_uiGetPWM[4];
+            g_ucU1TX_Data[14] = g_uiGetPWM[5] >> 8;
+            g_ucU1TX_Data[15] = (unsigned char) g_uiGetPWM[5];
+            g_ucU1TX_Data[16] = Flag_STATUS; //状态位
+            g_ucU1TX_Data[17] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);                        
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;            
+            /********************(0x25)**********************/   
+       case PCR_TUBEMODE:
+           
+           
+           
+            g_uiFrmLth = 6;
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
+            g_ucU1TX_Data[4] = Flag_STATUS;  //状态位
+            g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);           
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break; 
+            /**********************(0x26)***************************/   
+        case PCR_INBOX: 
+            
+            g_uiFrmLth = 6;
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
+            g_ucU1TX_Data[4] = 0;  //状态位
+            g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);        
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;
+
+            /**********************(0x27)***************************/   
+        case PCR_OUTBOX: 
+            
+            g_uiFrmLth = 6;
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
+            g_ucU1TX_Data[4] = 0;  //状态位
+            g_ucU1TX_Data[5] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);        
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;            
+            
+        case PCR_TEMP://0x43
+            
+            if((TempChn[0].cTubeTempAriv == 1)||(TempChn[1].cTubeTempAriv == 1)||(TempChn[2].cTubeTempAriv == 1)||(TempChn[3].cTubeTempAriv == 1)
+                ){
+                g_cTubeTempAriv = 1;
+            }else{
+                g_cTubeTempAriv = 0;
+            } 
+            g_uiFrmLth = 23;
+            g_ucU1TX_Data[0]  = FRAME_HEAD;
+            g_ucU1TX_Data[1]  = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2]  = 0;
+            g_ucU1TX_Data[3]  = g_uiFrmLth & 0xff;
+            g_ucU1TX_Data[4]  = (unsigned int)(TempChn[0].fCurrentTemperature*100.0) >> 8;
+            g_ucU1TX_Data[5]  = (unsigned char) (TempChn[0].fCurrentTemperature*100.0);
+            g_ucU1TX_Data[6]  = (unsigned int)(TempChn[1].fCurrentTemperature*100.0) >> 8;
+            g_ucU1TX_Data[7]  = (unsigned char) (TempChn[1].fCurrentTemperature*100.0);
+            g_ucU1TX_Data[8]  = (unsigned int)(TempChn[2].fCurrentTemperature*100.0) >> 8;
+            g_ucU1TX_Data[9]  = (unsigned char) (TempChn[2].fCurrentTemperature*100.0);
+            g_ucU1TX_Data[10] = (unsigned int)(TempChn[3].fCurrentTemperature*100.0) >> 8;
+            g_ucU1TX_Data[11] = (unsigned char) (TempChn[3].fCurrentTemperature*100.0);
+            g_ucU1TX_Data[12] = (unsigned int)(TempChn[4].fCurrentTemperature*100.0) >> 8;
+            g_ucU1TX_Data[13] = (unsigned char) (TempChn[4].fCurrentTemperature*100.0);
+            g_ucU1TX_Data[14] = (unsigned int)(TempChn[5].fCurrentTemperature*100.0) >> 8;
+            g_ucU1TX_Data[15] = (unsigned char) (TempChn[5].fCurrentTemperature*100.0);
+            g_ucU1TX_Data[16] = (unsigned int)(TempChn[5].fCurrentTemperature*100.0) >> 8;
+            g_ucU1TX_Data[17] = (unsigned char) (TempChn[5].fCurrentTemperature*100.0);
+            g_ucU1TX_Data[18] = (unsigned int)(TempChn[5].fCurrentTemperature*100.0) >> 8;
+            g_ucU1TX_Data[19] = (unsigned char) (TempChn[5].fCurrentTemperature*100.0);            
+            g_ucU1TX_Data[20] = g_cTubeTempAriv;
+            g_ucU1TX_Data[21] = Flag_STATUS; //状态位
+            g_ucU1TX_Data[22] = (unsigned char) Check(g_ucU1TX_Data, g_uiFrmLth - 1);
+                        
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;            
+            /***************(0x28)*********************/   
+        case PCR_STATEBIT://0x28 
+
+            g_uiFrmLth = 8;
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
+            g_ucU1TX_Data[4] = 0x00;
+            g_ucU1TX_Data[5] = 0x00;
+            g_ucU1TX_Data[6] = Flag_STATUS;  //状态位
+            g_ucU1TX_Data[7] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);
+            
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break;   
+            /*********************(0xFF)***********************/   
+        case RD_PCRALLDATA: 
+            ucBuffer_Data[0]=((g_ucCMD1|0x80)<<8)+FRAME_HEAD;                                                                                
+            ucBuffer_Data[1]=(ZLENTH2<<8)+0;
+            g_ucU1RX_Data[3]=0;
+            BTvar.ucScanNum = 0;          
+            if(g_ucU1RX_Data[4] == 1){
+                SampleTransNo = 0;
+                for(i = 0;i<6748;i++){
+                     ucBuffer_Data[i+2]  = ((ucBuffer_Data[i+2]<< 8) + (ucBuffer_Data[i+2]>> 8));
+                }
+                ucBuffer_Data[2] = 0;
+                for(GlobalNum1=0;GlobalNum1<(ZLENTH2/2-3);GlobalNum1++){
+                    g_ucU1RX_Data[3] += ucBuffer_Data[2+GlobalNum1]>>8;
+                    g_ucU1RX_Data[3] += ucBuffer_Data[2+GlobalNum1]&0xff;
+                }
+            }
+            else {
+                SampleTransNo ++;
+                for(GlobalNum1=0;GlobalNum1<(ZLENTH2/2-3);GlobalNum1++){
+                    ucBuffer_Data[2+GlobalNum1]=ucBuffer_Data[SampleTransNo * (ZLENTH2/2-3)+GlobalNum1];//帧
+                    g_ucU1RX_Data[3] += ucBuffer_Data[2+GlobalNum1]>>8;
+                    g_ucU1RX_Data[3] += ucBuffer_Data[2+GlobalNum1]&0xff;
+                }
+            }
+            g_ucU1RX_Data[3] +=ucBuffer_Data[0]>>8;
+            g_ucU1RX_Data[3] +=ucBuffer_Data[0]&0xff;
+            g_ucU1RX_Data[3] +=ucBuffer_Data[1]>>8;
+            g_ucU1RX_Data[3] +=ucBuffer_Data[1]&0xff;
+            ucBuffer_Data[GlobalNum1+2]=(g_ucU1RX_Data[3]<<8);//低位先发送,错误       
+            while(DMA1CONbits.CHEN);
+            DMA1CNT=(ucBuffer_Data[1]>>8)-1;
+            DMA1CONbits.CHEN  = 1;
+            DMA1REQbits.FORCE = 1;
+            
+            break;            
+            /********************(0xFE)***********************/   
+        case RD_ALLDATAMAX: 
+            
+            ucBuffer_Data[0]=((g_ucCMD1|0x80)<<8)+FRAME_HEAD;                                                                                
+            ucBuffer_Data[1]=(ZLENTH2<<8)+0;
+            g_ucU1RX_Data[3]=0;
+            
+            if(g_ucU1RX_Data[4] == 1){
+                SampleTransNo = 0;
+                n = 0;
+                if(g_ucU1RX_Data[5] == 1){
+                    for(i = 0;i<17;i++){
+                        for(j = 0;j<SUM1;j++){
+                             Alldata_Max[n]  = ((FAMData[i][j]<< 8) + (FAMData[i][j]>> 8));
+                             n++;
+                        }               
+                    }                    
+                }
+                else if(g_ucU1RX_Data[5] == 2){
+                    for(i = 0;i<17;i++){
+                        for(j = 0;j<SUM1;j++){
+                             Alldata_Max[n]  = ((VICData[i][j]<< 8) + (VICData[i][j]>> 8));
+                             n++;
+                        }               
+                    }                    
+                }
+                else if(g_ucU1RX_Data[5] == 3){
+                    for(i = 0;i<17;i++){
+                        for(j = 0;j<SUM1;j++){
+                             Alldata_Max[n]  = ((ROXData[i][j]<< 8) + (ROXData[i][j]>> 8));
+                             n++;
+                        }               
+                    }                    
+                }
+                else if(g_ucU1RX_Data[5] == 4){
+                    for(i = 0;i<17;i++){
+                        for(j = 0;j<SUM1;j++){
+                             Alldata_Max[n]  = ((CY5Data[i][j]<< 8) + (CY5Data[i][j]>> 8));
+                             n++;
+                        }               
+                    }                    
+                }
+            }
+            else SampleTransNo ++;
+            for(GlobalNum1=0;GlobalNum1<ZLENTH2/2-3;GlobalNum1++){
+                ucBuffer_Data[2+GlobalNum1]=Alldata_Max[SampleTransNo * (ZLENTH2/2-3)+GlobalNum1];//帧
+                g_ucU1RX_Data[3] += ucBuffer_Data[2+GlobalNum1]>>8;
+                g_ucU1RX_Data[3] += ucBuffer_Data[2+GlobalNum1]&0xff;
+            }
+
+            g_ucU1RX_Data[3] +=ucBuffer_Data[0]>>8;
+            g_ucU1RX_Data[3] +=ucBuffer_Data[0]&0xff;
+            g_ucU1RX_Data[3] +=ucBuffer_Data[1]>>8;
+            g_ucU1RX_Data[3] +=ucBuffer_Data[1]&0xff;
+            ucBuffer_Data[GlobalNum1+2]=(g_ucU1RX_Data[3]<<8);
+           
+            while(DMA1CONbits.CHEN);
+            DMA1CNT=(ucBuffer_Data[1]>>8)-1;
+            DMA1CONbits.CHEN  = 1;                                           
+            DMA1REQbits.FORCE = 1;
+            
+            break;
+            /****************(0x66)*********************/   
+        case BT_Protocol://
+
+            BTvar.ucStepNum = g_ucU1RX_Data[5];
+   
+            for (i = 0; i < BTvar.ucStepNum; i++) {
+                BTStep[i].Temp_Start = (g_ucU1RX_Data[i * 10 + 6] << 8) + g_ucU1RX_Data[i * 10 + 7];
+                BTStep[i].Temp_End   = (g_ucU1RX_Data[i * 10 + 8] << 8) + g_ucU1RX_Data[i * 10 + 9]; 
+                BTStep[i].Duration   = (g_ucU1RX_Data[i * 10 + 10] << 8) + g_ucU1RX_Data[i * 10 + 11]; 
+                BTStep[i].Cycle  =  g_ucU1RX_Data[i * 10 + 12]; 
+                if(BTStep[i].Cycle == 0)
+                
+                BTStep[i].Mode   =  g_ucU1RX_Data[i * 10 + 13]; 
+                BTStep[i].Point  =  g_ucU1RX_Data[i * 10 + 14]; 
+                BTStep[i].Goto   =  g_ucU1RX_Data[i * 10 + 15]; 
+            }
+            BTvar.ucStartbuffer = 1;
+            BTvar.ucQCbuffer = 1;
+            
+            g_uiFrmLth = 8;
+            g_ucU1TX_Data[0] = FRAME_HEAD;
+            g_ucU1TX_Data[1] = g_ucCMD1|0X80;
+            g_ucU1TX_Data[2] = 0;
+            g_ucU1TX_Data[3] = g_uiFrmLth & 0xff;
+            g_ucU1TX_Data[4] = 0x00;
+            g_ucU1TX_Data[5] = 0x00;
+            g_ucU1TX_Data[6] = Flag_STATUS;  //状态位
+            g_ucU1TX_Data[7] = (unsigned char)Check(g_ucU1TX_Data,g_uiFrmLth-1);
+            
+            while(DMA3CONbits.CHEN);        
+            DMA3CNT=(g_uiFrmLth-1);
+            DMA3CONbits.CHEN  = 1;		
+            DMA3REQbits.FORCE = 1;	
+            break; 
+
+            
+        default:
+            break;
+             
+    }
+    g_ucUART1_flag  = 0;
+    g_uiUart1_No    = 0;
+    g_ucHeaderFlag1 = 0;
+    memset(g_ucU1RX_Data,0,g_uiLth1*sizeof(unsigned char));
+    g_BUSY1 = 0;
+}

+ 187 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Uart.h

@@ -0,0 +1,187 @@
+#ifndef __UART_H
+#define	__UART_H
+
+#ifdef  __UART_DEF
+#define EXTERN_UART
+#else
+#define EXTERN_UART extern
+#endif
+
+/*****************Ö¸ÁîÂë*******************/
+#define     HELLO	                 0x01
+#define     PCR_SYSRST               0x02
+#define     PCR_SELFTEST             0x03
+#define     PCR_DEV                  0x04
+#define     PCR_STATUS	             0x05              
+#define     SET_Temperature          0x06                   
+#define     PCR_MOTOR	             0x07                   
+#define     PCR_LEDCTRL              0x08       
+#define     PCR_RDTEMP               0x09                   
+#define     PCR_SETCAP               0x0A  
+#define     PCR_AUXER                0x0B
+#define     RD_PCRDATA	             0x0c               
+#define     PCR_PMT                  0x0d               
+#define     PCR_GAIN                 0x0e
+#define     PCR_STALED               0x0f    
+#define     PCR_RTPCREMP             0x10                  
+
+#define     READ_EEPROM              0x11
+#define     WRITE_EEPROM             0x12
+#define     READ_FLASH               0x13
+#define     WRITE_FLISH              0x14
+
+#define     PCR_RDSENSOR             0x15             
+#define     GET_MPPCAD               0x17
+#define     PCR_RDADC                0x18
+#define     PCR_GLDQ                 0x19
+#define     PCR_START                0x1A
+#define     PCR_STOP                 0x1B
+#define     PCR_FAN                  0x1C
+#define     PCR_IO                   0x1E
+#define     GET_IO                   0xE0
+
+#define     PCR_TUBEMODE             0x25 
+#define     PCR_INBOX                0x26  
+#define	    PCR_OUTBOX	             0x27
+#define     PCR_STATEBIT             0x28
+
+#define     SET_PWM                  0x31
+#define     GET_PWM                  0x32
+#define     PCR_CHIP                 0x41
+#define     PCR_RDCURTEMP            0x42
+#define     PCR_TEMP                 0x43
+#define     QC_Data                  0x44
+
+#define     BT_Protocol              0x66
+
+#define     ADGET                    0x77
+#define     SET_ZLTemperature          0x78         
+
+#define     RD_ALLDATAMAX            0xFE
+#define     RD_PCRALLDATA            0xff 
+
+#define     FRAME_HEAD		         0x5e                     
+#define     FRAME_HEAD_INDEX	     0
+#define     FRAME_CMD_INDEX	         1
+#define     FRAME_NO_INDEX           2
+#define     FRAME_LTHH_INDEX	     3
+#define     FRAME_LTHL_INDEX	     4
+
+#define     FRAME_STATE_INDEX	     1  
+#define     FRAME_CRC_INDEX	         0   
+#define     PERDATALTH	             2  
+
+#define     ZLENTH                   14000
+#define     ZLENTH1                  134
+#define     ZLENTH2                  198
+
+//оƬ¼ì²â
+typedef union {
+	unsigned char ChipNum;
+	struct {
+        unsigned ChipNum1: 1;
+        unsigned ChipNum2: 1;
+        unsigned ChipNum3: 1;
+        unsigned ChipNum4: 1;
+        unsigned ChipNum5: 1;
+        unsigned ChipNum6: 1;
+        unsigned ChipNum7: 1;
+        unsigned ChipNum8: 1;
+    };
+}CHIP;
+EXTERN_UART CHIP CHIPData;
+
+EXTERN_UART unsigned int uiMppcADBuff[8];
+
+typedef struct _BT1_{ 
+    unsigned int Temp_Start;
+    unsigned int Temp_End; 
+    unsigned int Duration; 
+    unsigned int Cycle;   
+    unsigned int Mode;    
+    unsigned int Point;   
+    unsigned int Goto;   
+   
+}BT1;
+EXTERN_UART BT1 BTStep[20];
+
+EXTERN_UART struct BT BTvar;
+struct BT{
+    unsigned char ucStepNum;
+    unsigned char ucStartbuffer;
+    unsigned char ucStepRunNum;
+    unsigned char ucCurrentCycle;
+    unsigned char ucDurationbuffer;
+    unsigned char ucDurationnum_ms;
+    unsigned int  uiDurationnum_s;
+    unsigned char ucStepTemp;
+    unsigned char ucScanoverbuffer;
+    unsigned char ucQCbuffer;
+    unsigned char ucScanNum;
+    
+    
+};
+
+
+
+
+//´®¿Ú½ÓÊÕ±äÁ¿
+EXTERN_UART unsigned char g_ucCMD1,Get_IOstate;
+EXTERN_UART unsigned char g_ucUART1_flag;
+EXTERN_UART unsigned char g_ucU1RX_Data[255];
+EXTERN_UART unsigned char g_uiUart1_No;
+EXTERN_UART unsigned char g_BUSY1;
+EXTERN_UART unsigned char g_ucHeaderFlag1;
+EXTERN_UART unsigned int g_uiLth1,GlobalNum;
+EXTERN_UART unsigned long g_ulRSUM1;
+EXTERN_UART unsigned char g_ucCRC1;
+
+EXTERN_UART unsigned char g_ucRealTemp_Chanel;
+EXTERN_UART unsigned char g_ucPCRDATA_Chanel;
+EXTERN_UART unsigned int  uiAD_Max[16];
+EXTERN_UART unsigned long ulAD_Max,ulFAMAD_All,ulVICAD_All,ulROXAD_All,ulCY5AD_All,ulCY6AD_All;
+
+EXTERN_UART float g_fAD_Max[17];
+EXTERN_UART float g_fFAMAD_Coefficient,g_fVICAD_Coefficient,g_fROXAD_Coefficient,g_fCY5AD_Coefficient,g_fCY6AD_Coefficient;
+
+EXTERN_UART float g_fFAMAD_Max[17],g_fVICAD_Max[17],g_fROXAD_Max[17],g_fCY5AD_Max[17],g_fCY6AD_Max[17];
+
+EXTERN_UART float g_fQCFAM,g_fQCVIC,g_fQCROX,g_fQCCY5,g_fQCCY6;
+EXTERN_UART float g_fQCFAM_Current,g_fQCVIC_Current,g_fQCROX_Current,g_fQCCY5_Current,g_fQCCY6_Current;
+
+EXTERN_UART unsigned char Flag_STATUS1;    
+      
+EXTERN_UART unsigned int PID_OVERTIME,PID_OVERTEMPUP,PID_OVERTEMPDOWN;
+
+EXTERN_UART unsigned int FRN;
+
+EXTERN_UART unsigned int Alldata_Max[2000];
+
+EXTERN_UART unsigned char g_ucU1TX_Data[500] __attribute__((eds));
+EXTERN_UART unsigned int ucBuffer_Data[7000] __attribute__((eds));
+
+EXTERN_UART unsigned long int uiEE_address;
+EXTERN_UART unsigned char GlobalTmp,GlobalNum1;
+
+EXTERN_UART unsigned int MPPCPower,CAPPower;
+EXTERN_UART unsigned char FanCount,g_cTubeTempAriv;
+
+
+EXTERN_UART float MPPCK[5];
+EXTERN_UART float MPPCB[5];
+EXTERN_UART unsigned int MPPCPowerNUM[5];
+EXTERN_UART double MPPCdata;
+
+
+
+
+
+
+void InitUart(void);
+void InitUart2(void);
+void InitUart3(void);
+void UART1SEND(char data);
+unsigned int Check(unsigned char *p,unsigned char num);
+void Uart1_Ack(void);
+#endif	/* XC_HEADER_TEMPLATE_H */
+

+ 127 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/main.c

@@ -0,0 +1,127 @@
+
+// DSPIC33EP512MU810 Configuration Bit Settings
+// 'C' source line config statements
+// FGS
+#pragma config GWRP = OFF               // General Segment Write-Protect bit (General Segment may be written)
+#pragma config GSS = OFF                // General Segment Code-Protect bit (General Segment Code protect is disabled)
+#pragma config GSSK = OFF               // General Segment Key bits (General Segment Write Protection and Code Protection is Disabled)
+
+// FOSCSEL
+#pragma config FNOSC = PRI              // Initial Oscillator Source Selection bits (Primary Oscillator (XT, HS, EC))
+#pragma config IESO = ON                // Two-speed Oscillator Start-up Enable bit (Start up device with FRC, then switch to user-selected oscillator source)
+
+// FOSC
+#pragma config POSCMD = XT              // Primary Oscillator Mode Select bits (XT Crystal Oscillator Mode)
+#pragma config OSCIOFNC = ON            // OSC2 Pin Function bit (OSC2 is general purpose digital I/O pin)
+#pragma config IOL1WAY = ON             // Peripheral pin select configuration (Allow only one reconfiguration)
+#pragma config FCKSM = CSECMD           // Clock Switching Mode bits (Clock switching is enabled,Fail-safe Clock Monitor is disabled)
+
+// FWDT
+#pragma config WDTPOST = PS32768        // Watchdog Timer Postscaler bits (1:32,768)
+#pragma config WDTPRE = PR128           // Watchdog Timer Prescaler bit (1:128)
+#pragma config PLLKEN = ON              // PLL Lock Wait Enable bit (Clock switch to PLL source will wait until the PLL lock signal is valid.)
+#pragma config WINDIS = OFF             // Watchdog Timer Window Enable bit (Watchdog Timer in Non-Window mode)
+#pragma config FWDTEN = OFF             // Watchdog Timer Enable bit (Watchdog timer enabled/disabled by user software)
+
+// FPOR
+#pragma config FPWRT = PWR128           // Power-on Reset Timer Value Select bits (128ms)
+#pragma config BOREN = OFF              // Brown-out Reset (BOR) Detection Enable bit (BOR is disabled)
+#pragma config ALTI2C1 = OFF            // Alternate I2C pins for I2C1 (SDA1/SCK1 pins are selected as the I/O pins for I2C1)
+#pragma config ALTI2C2 = OFF            // Alternate I2C pins for I2C2 (SDA2/SCK2 pins are selected as the I/O pins for I2C2)
+
+// FICD
+#pragma config ICS = PGD2               // ICD Communication Channel Select bits (Communicate on PGEC2 and PGED2)
+#pragma config RSTPRI = PF              // Reset Target Vector Select bit (Device will obtain reset instruction from Primary flash)
+#pragma config JTAGEN = OFF             // JTAG Enable bit (JTAG is disabled)
+
+// FAS
+#pragma config AWRP = OFF               // Auxiliary Segment Write-protect bit (Aux Flash may be written)
+#pragma config APL = OFF                // Auxiliary Segment Code-protect bit (Aux Flash Code protect is disabled)
+#pragma config APLK = OFF               // Auxiliary Segment Key bits (Aux Flash Write Protection and Code Protection is Disabled)
+
+#include "ABIS_User.h"
+ unsigned char VersionNumber[16]="N01.20230823";//¹Ì¼þ°æ±¾ºÅ
+ unsigned char HardwareVersionNumber[16]="10062308022300802";//Ó²¼þ°æ±¾ºÅ
+ 
+int main(void) {   
+    unsigned int i;
+    unsigned int K;
+
+    System_Init();
+    POWER_STU1 = 0;                   
+    FANOC_Set(3,g_tEE.uiFanLPwm);       
+
+    for(i=0;i<16;i++){
+        EE_write(0x30+i,VersionNumber[i]);  
+        Delay_ms(10);
+    }
+    for(i=0;i<16;i++){
+        EE_write(0x20+i,HardwareVersionNumber[i]);  
+        Delay_ms(10);
+    }   
+    
+    Write_DAC(DA_FAM);
+    Delay_ms(10);
+    Write_DAC(DA_FAM);    
+//    if(g_tEE.CutUart == 0){
+//     _RP97R  = 0x01; 
+//     _U1RXR  = 0x60;
+//    InitUart();     
+//    }
+//    else if(g_tEE.CutUart == 1){
+//     _RP97R  = 0x01;
+//     _U1RXR  = 0x70; 
+//    InitUart(); 
+//     }    
+    for(i=0;i<5;i++){
+        STU1 = ~STU1;
+        STU2 = ~STU2;
+        Delay_ms(200);
+    }
+    POWER_STU1 = 1;                    
+  
+ 
+//     while(1){
+//        K = PIC_IN2;
+//        if(K == 0){
+//            POWER_STU1 = ~POWER_STU1;
+//        } else{
+//            break;
+//        }
+//        Delay_ms(50);
+//        if(g_ucUART1_flag == 1){  
+//            Uart1_Ack();                       
+//        }
+//    }
+    
+    Init_T6();             
+    CalculateSModeLineX(g_uiMotorXPeriod, g_tEE.uiXPulseAcc, MOTORX_FREQMAX, MOTORX_FREQMIN, MOTORX_XFLEXIBLE);   
+    MotorXHome(g_tEE.uiXPulseHome,g_tEE.uiXSpeedHome,g_tEE.uiXSpeedLeave);
+    Delay_ms(500);
+    MotorXHome(g_tEE.uiXPulseHome,g_tEE.uiXSpeedHome,g_tEE.uiXSpeedLeave);
+    Delay_ms(500);
+    
+    MotorXScan(g_tEE.uiXPulseScan * 2, 1, g_tEE.uiXSpeedScan);
+    Delay_ms(500);
+    MotorXHome(g_tEE.uiXPulseHome,g_tEE.uiXSpeedHome,g_tEE.uiXSpeedLeave);
+    Delay_ms(500);
+
+    for (i = 0; i < 6; i++) {
+        TempChn[i].cPeltierRun = 0; 
+    }
+    
+    Alldata = 2;
+    g_ucMPPCtemp = 0;
+        
+    CAPTarget_temp[0] = g_tEE.CAPTarget_temp[0];
+    CAPTarget_temp[1] = g_tEE.CAPTarget_temp[1];     
+    g_ucSTATE_RUN = 1;
+    g_ucSTATE_CAP = 0;
+    BTvar.ucStartbuffer = 0;
+    BTvar.ucScanNum = 0;
+    while(1){
+        if(g_ucUART1_flag == 1){  
+            Uart1_Ack();                       
+        }
+    }  
+}

+ 4 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/readme.c

@@ -0,0 +1,4 @@
+/* *****************************************************************************
+ * WZYXPCR_NO1.20250726
+ ***********************************************************************/
+

+ 345 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/Makefile-default.mk

@@ -0,0 +1,345 @@
+#
+# Generated Makefile - do not edit!
+#
+# Edit the Makefile in the project folder instead (../Makefile). Each target
+# has a -pre and a -post target defined where you can add customized code.
+#
+# This makefile implements configuration specific macros and targets.
+
+
+# Include project Makefile
+ifeq "${IGNORE_LOCAL}" "TRUE"
+# do not include local makefile. User is passing all local related variables already
+else
+include Makefile
+# Include makefile containing local settings
+ifeq "$(wildcard nbproject/Makefile-local-default.mk)" "nbproject/Makefile-local-default.mk"
+include nbproject/Makefile-local-default.mk
+endif
+endif
+
+# Environment
+MKDIR=gnumkdir -p
+RM=rm -f 
+MV=mv 
+CP=cp 
+
+# Macros
+CND_CONF=default
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+IMAGE_TYPE=debug
+OUTPUT_SUFFIX=elf
+DEBUGGABLE_SUFFIX=elf
+FINAL_IMAGE=${DISTDIR}/WZYXPCR_NO1.20250726.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
+else
+IMAGE_TYPE=production
+OUTPUT_SUFFIX=hex
+DEBUGGABLE_SUFFIX=elf
+FINAL_IMAGE=${DISTDIR}/WZYXPCR_NO1.20250726.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
+endif
+
+ifeq ($(COMPARE_BUILD), true)
+COMPARISON_BUILD=-mafrlcsj
+else
+COMPARISON_BUILD=
+endif
+
+# Object Directory
+OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE}
+
+# Distribution Directory
+DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE}
+
+# Source Files Quoted if spaced
+SOURCEFILES_QUOTED_IF_SPACED=file/ABIS_User.c file/Ad.c file/Da7512.c file/Delay.c file/DMA.c file/DS1802.c file/Interrupt.c file/EEPROM.c file/main.c file/Motor.c file/OC.c file/PIN.c file/PWM.c file/readme.c file/Timer.c file/Uart.c file/Dac5571.c
+
+# Object Files Quoted if spaced
+OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/file/ABIS_User.o ${OBJECTDIR}/file/Ad.o ${OBJECTDIR}/file/Da7512.o ${OBJECTDIR}/file/Delay.o ${OBJECTDIR}/file/DMA.o ${OBJECTDIR}/file/DS1802.o ${OBJECTDIR}/file/Interrupt.o ${OBJECTDIR}/file/EEPROM.o ${OBJECTDIR}/file/main.o ${OBJECTDIR}/file/Motor.o ${OBJECTDIR}/file/OC.o ${OBJECTDIR}/file/PIN.o ${OBJECTDIR}/file/PWM.o ${OBJECTDIR}/file/readme.o ${OBJECTDIR}/file/Timer.o ${OBJECTDIR}/file/Uart.o ${OBJECTDIR}/file/Dac5571.o
+POSSIBLE_DEPFILES=${OBJECTDIR}/file/ABIS_User.o.d ${OBJECTDIR}/file/Ad.o.d ${OBJECTDIR}/file/Da7512.o.d ${OBJECTDIR}/file/Delay.o.d ${OBJECTDIR}/file/DMA.o.d ${OBJECTDIR}/file/DS1802.o.d ${OBJECTDIR}/file/Interrupt.o.d ${OBJECTDIR}/file/EEPROM.o.d ${OBJECTDIR}/file/main.o.d ${OBJECTDIR}/file/Motor.o.d ${OBJECTDIR}/file/OC.o.d ${OBJECTDIR}/file/PIN.o.d ${OBJECTDIR}/file/PWM.o.d ${OBJECTDIR}/file/readme.o.d ${OBJECTDIR}/file/Timer.o.d ${OBJECTDIR}/file/Uart.o.d ${OBJECTDIR}/file/Dac5571.o.d
+
+# Object Files
+OBJECTFILES=${OBJECTDIR}/file/ABIS_User.o ${OBJECTDIR}/file/Ad.o ${OBJECTDIR}/file/Da7512.o ${OBJECTDIR}/file/Delay.o ${OBJECTDIR}/file/DMA.o ${OBJECTDIR}/file/DS1802.o ${OBJECTDIR}/file/Interrupt.o ${OBJECTDIR}/file/EEPROM.o ${OBJECTDIR}/file/main.o ${OBJECTDIR}/file/Motor.o ${OBJECTDIR}/file/OC.o ${OBJECTDIR}/file/PIN.o ${OBJECTDIR}/file/PWM.o ${OBJECTDIR}/file/readme.o ${OBJECTDIR}/file/Timer.o ${OBJECTDIR}/file/Uart.o ${OBJECTDIR}/file/Dac5571.o
+
+# Source Files
+SOURCEFILES=file/ABIS_User.c file/Ad.c file/Da7512.c file/Delay.c file/DMA.c file/DS1802.c file/Interrupt.c file/EEPROM.c file/main.c file/Motor.c file/OC.c file/PIN.c file/PWM.c file/readme.c file/Timer.c file/Uart.c file/Dac5571.c
+
+
+
+CFLAGS=
+ASFLAGS=
+LDLIBSOPTIONS=
+
+############# Tool locations ##########################################
+# If you copy a project from one host to another, the path where the  #
+# compiler is installed may be different.                             #
+# If you open this project with MPLAB X in the new host, this         #
+# makefile will be regenerated and the paths will be corrected.       #
+#######################################################################
+# fixDeps replaces a bunch of sed/cat/printf statements that slow down the build
+FIXDEPS=fixDeps
+
+.build-conf:  ${BUILD_SUBPROJECTS}
+ifneq ($(INFORMATION_MESSAGE), )
+	@echo $(INFORMATION_MESSAGE)
+endif
+	${MAKE}  -f nbproject/Makefile-default.mk ${DISTDIR}/WZYXPCR_NO1.20250726.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
+
+MP_PROCESSOR_OPTION=33EP512MU814
+MP_LINKER_FILE_OPTION=,--script=p33EP512MU814.gld
+# ------------------------------------------------------------------------------------
+# Rules for buildStep: compile
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+${OBJECTDIR}/file/ABIS_User.o: file/ABIS_User.c  .generated_files/flags/default/38997a614196d1748f5c391915ccc9d1f6ec5397 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/ABIS_User.o.d 
+	@${RM} ${OBJECTDIR}/file/ABIS_User.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/ABIS_User.c  -o ${OBJECTDIR}/file/ABIS_User.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/ABIS_User.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1  -mno-eds-warn  -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/Ad.o: file/Ad.c  .generated_files/flags/default/d0d6b856fe9d8a32d6f504ebeeedd2e8081b189e .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/Ad.o.d 
+	@${RM} ${OBJECTDIR}/file/Ad.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/Ad.c  -o ${OBJECTDIR}/file/Ad.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/Ad.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1  -mno-eds-warn  -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/Da7512.o: file/Da7512.c  .generated_files/flags/default/79e478bbf8140e67938328c3a3427be93b908361 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/Da7512.o.d 
+	@${RM} ${OBJECTDIR}/file/Da7512.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/Da7512.c  -o ${OBJECTDIR}/file/Da7512.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/Da7512.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1  -mno-eds-warn  -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/Delay.o: file/Delay.c  .generated_files/flags/default/f92ac7c00527a44f41b1e9e96043cc4d1f03208c .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/Delay.o.d 
+	@${RM} ${OBJECTDIR}/file/Delay.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/Delay.c  -o ${OBJECTDIR}/file/Delay.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/Delay.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1  -mno-eds-warn  -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/DMA.o: file/DMA.c  .generated_files/flags/default/6d3722c2226ea29c1b494a535c56be1af1f3e89d .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/DMA.o.d 
+	@${RM} ${OBJECTDIR}/file/DMA.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/DMA.c  -o ${OBJECTDIR}/file/DMA.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/DMA.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1  -mno-eds-warn  -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/DS1802.o: file/DS1802.c  .generated_files/flags/default/9b59a03c0eea3bc335b0d69143855d93ba363115 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/DS1802.o.d 
+	@${RM} ${OBJECTDIR}/file/DS1802.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/DS1802.c  -o ${OBJECTDIR}/file/DS1802.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/DS1802.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1  -mno-eds-warn  -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/Interrupt.o: file/Interrupt.c  .generated_files/flags/default/4ada79aa7672b899d817446415f76882fb6eea4d .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/Interrupt.o.d 
+	@${RM} ${OBJECTDIR}/file/Interrupt.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/Interrupt.c  -o ${OBJECTDIR}/file/Interrupt.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/Interrupt.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1  -mno-eds-warn  -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/EEPROM.o: file/EEPROM.c  .generated_files/flags/default/207287b9e5730930bbfeb87bebbc5f5ebcd6e710 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/EEPROM.o.d 
+	@${RM} ${OBJECTDIR}/file/EEPROM.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/EEPROM.c  -o ${OBJECTDIR}/file/EEPROM.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/EEPROM.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1  -mno-eds-warn  -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/main.o: file/main.c  .generated_files/flags/default/6b34cf3627eb0a73c7c78ed25de61add604a3e11 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/main.o.d 
+	@${RM} ${OBJECTDIR}/file/main.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/main.c  -o ${OBJECTDIR}/file/main.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/main.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1  -mno-eds-warn  -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/Motor.o: file/Motor.c  .generated_files/flags/default/7156ca7d1dca982417d2239e343a5ae5ce4e0d53 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/Motor.o.d 
+	@${RM} ${OBJECTDIR}/file/Motor.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/Motor.c  -o ${OBJECTDIR}/file/Motor.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/Motor.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1  -mno-eds-warn  -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/OC.o: file/OC.c  .generated_files/flags/default/3aadb8e629e4fb4848d17a5dec85444e201f54aa .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/OC.o.d 
+	@${RM} ${OBJECTDIR}/file/OC.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/OC.c  -o ${OBJECTDIR}/file/OC.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/OC.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1  -mno-eds-warn  -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/PIN.o: file/PIN.c  .generated_files/flags/default/d4623b1b2d598d11ec1e1a9dd179da79b3233cdd .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/PIN.o.d 
+	@${RM} ${OBJECTDIR}/file/PIN.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/PIN.c  -o ${OBJECTDIR}/file/PIN.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/PIN.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1  -mno-eds-warn  -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/PWM.o: file/PWM.c  .generated_files/flags/default/6266f61cfcc7da1c0ee6d8d1ee8db66c870dbe18 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/PWM.o.d 
+	@${RM} ${OBJECTDIR}/file/PWM.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/PWM.c  -o ${OBJECTDIR}/file/PWM.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/PWM.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1  -mno-eds-warn  -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/readme.o: file/readme.c  .generated_files/flags/default/44c1b7b7043e4715beec591e30cc25540b7352d8 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/readme.o.d 
+	@${RM} ${OBJECTDIR}/file/readme.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/readme.c  -o ${OBJECTDIR}/file/readme.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/readme.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1  -mno-eds-warn  -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/Timer.o: file/Timer.c  .generated_files/flags/default/f15e8a602401fc9395f633d6dcdf54901df1b4b1 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/Timer.o.d 
+	@${RM} ${OBJECTDIR}/file/Timer.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/Timer.c  -o ${OBJECTDIR}/file/Timer.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/Timer.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1  -mno-eds-warn  -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/Uart.o: file/Uart.c  .generated_files/flags/default/6851fd0e35795d4278561743343380236edce620 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/Uart.o.d 
+	@${RM} ${OBJECTDIR}/file/Uart.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/Uart.c  -o ${OBJECTDIR}/file/Uart.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/Uart.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1  -mno-eds-warn  -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/Dac5571.o: file/Dac5571.c  .generated_files/flags/default/a6946065f9c049bc549f25c2af4b51dc24a0f2fa .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/Dac5571.o.d 
+	@${RM} ${OBJECTDIR}/file/Dac5571.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/Dac5571.c  -o ${OBJECTDIR}/file/Dac5571.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/Dac5571.o.d"      -g -D__DEBUG -D__MPLAB_DEBUGGER_PK3=1  -mno-eds-warn  -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+else
+${OBJECTDIR}/file/ABIS_User.o: file/ABIS_User.c  .generated_files/flags/default/de283369ec850fa455129d88340b7cd667cda0f2 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/ABIS_User.o.d 
+	@${RM} ${OBJECTDIR}/file/ABIS_User.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/ABIS_User.c  -o ${OBJECTDIR}/file/ABIS_User.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/ABIS_User.o.d"      -mno-eds-warn  -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/Ad.o: file/Ad.c  .generated_files/flags/default/8440332f09ae565981760b9ec7bff2170b731e10 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/Ad.o.d 
+	@${RM} ${OBJECTDIR}/file/Ad.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/Ad.c  -o ${OBJECTDIR}/file/Ad.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/Ad.o.d"      -mno-eds-warn  -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/Da7512.o: file/Da7512.c  .generated_files/flags/default/f8e6cc36252a4d518a56c6d4c3ef976282f90bb .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/Da7512.o.d 
+	@${RM} ${OBJECTDIR}/file/Da7512.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/Da7512.c  -o ${OBJECTDIR}/file/Da7512.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/Da7512.o.d"      -mno-eds-warn  -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/Delay.o: file/Delay.c  .generated_files/flags/default/136ee1eef558a01311f805f0c7f4b83a9ce7e70c .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/Delay.o.d 
+	@${RM} ${OBJECTDIR}/file/Delay.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/Delay.c  -o ${OBJECTDIR}/file/Delay.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/Delay.o.d"      -mno-eds-warn  -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/DMA.o: file/DMA.c  .generated_files/flags/default/9249682dbbde9cc7e0ed3a0a222af9dd8b4955c5 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/DMA.o.d 
+	@${RM} ${OBJECTDIR}/file/DMA.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/DMA.c  -o ${OBJECTDIR}/file/DMA.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/DMA.o.d"      -mno-eds-warn  -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/DS1802.o: file/DS1802.c  .generated_files/flags/default/e9c79fb67e11cc7ee0aa30ea77a2dc65c714eee8 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/DS1802.o.d 
+	@${RM} ${OBJECTDIR}/file/DS1802.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/DS1802.c  -o ${OBJECTDIR}/file/DS1802.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/DS1802.o.d"      -mno-eds-warn  -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/Interrupt.o: file/Interrupt.c  .generated_files/flags/default/eb1f547c1c8d1c2ec6a4c2132e8b509971aefa29 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/Interrupt.o.d 
+	@${RM} ${OBJECTDIR}/file/Interrupt.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/Interrupt.c  -o ${OBJECTDIR}/file/Interrupt.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/Interrupt.o.d"      -mno-eds-warn  -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/EEPROM.o: file/EEPROM.c  .generated_files/flags/default/f80ecf532c3d521f2b741c007dd1e0a0d3978633 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/EEPROM.o.d 
+	@${RM} ${OBJECTDIR}/file/EEPROM.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/EEPROM.c  -o ${OBJECTDIR}/file/EEPROM.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/EEPROM.o.d"      -mno-eds-warn  -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/main.o: file/main.c  .generated_files/flags/default/dad034eaba1b1dc3a81b58a4874fc690233bff7c .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/main.o.d 
+	@${RM} ${OBJECTDIR}/file/main.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/main.c  -o ${OBJECTDIR}/file/main.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/main.o.d"      -mno-eds-warn  -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/Motor.o: file/Motor.c  .generated_files/flags/default/dbda6a38909aee4b49e51a54f7ca4e6d002ce778 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/Motor.o.d 
+	@${RM} ${OBJECTDIR}/file/Motor.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/Motor.c  -o ${OBJECTDIR}/file/Motor.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/Motor.o.d"      -mno-eds-warn  -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/OC.o: file/OC.c  .generated_files/flags/default/ba79e4a1bfdc33cd6b8d413dfea0f2657f2cfdd4 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/OC.o.d 
+	@${RM} ${OBJECTDIR}/file/OC.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/OC.c  -o ${OBJECTDIR}/file/OC.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/OC.o.d"      -mno-eds-warn  -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/PIN.o: file/PIN.c  .generated_files/flags/default/1feb9751342fd015787114834b8b2360501cdb04 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/PIN.o.d 
+	@${RM} ${OBJECTDIR}/file/PIN.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/PIN.c  -o ${OBJECTDIR}/file/PIN.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/PIN.o.d"      -mno-eds-warn  -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/PWM.o: file/PWM.c  .generated_files/flags/default/84463cba55a227f2b8100f63f71e8e98013bbf10 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/PWM.o.d 
+	@${RM} ${OBJECTDIR}/file/PWM.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/PWM.c  -o ${OBJECTDIR}/file/PWM.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/PWM.o.d"      -mno-eds-warn  -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/readme.o: file/readme.c  .generated_files/flags/default/44945495eb73611ae11a1d33ccc304023ec1d825 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/readme.o.d 
+	@${RM} ${OBJECTDIR}/file/readme.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/readme.c  -o ${OBJECTDIR}/file/readme.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/readme.o.d"      -mno-eds-warn  -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/Timer.o: file/Timer.c  .generated_files/flags/default/7872e5b5588c64e339edaf8c69d569570ebb0d10 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/Timer.o.d 
+	@${RM} ${OBJECTDIR}/file/Timer.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/Timer.c  -o ${OBJECTDIR}/file/Timer.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/Timer.o.d"      -mno-eds-warn  -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/Uart.o: file/Uart.c  .generated_files/flags/default/51aa97b7b49f5cfd98b42401bfed1c06a807fc0f .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/Uart.o.d 
+	@${RM} ${OBJECTDIR}/file/Uart.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/Uart.c  -o ${OBJECTDIR}/file/Uart.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/Uart.o.d"      -mno-eds-warn  -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+${OBJECTDIR}/file/Dac5571.o: file/Dac5571.c  .generated_files/flags/default/96ffea408976690f7ee7b09d0bc2a9250d24bff8 .generated_files/flags/default/da39a3ee5e6b4b0d3255bfef95601890afd80709
+	@${MKDIR} "${OBJECTDIR}/file" 
+	@${RM} ${OBJECTDIR}/file/Dac5571.o.d 
+	@${RM} ${OBJECTDIR}/file/Dac5571.o 
+	${MP_CC} $(MP_EXTRA_CC_PRE)  file/Dac5571.c  -o ${OBJECTDIR}/file/Dac5571.o  -c -mcpu=$(MP_PROCESSOR_OPTION)  -MP -MMD -MF "${OBJECTDIR}/file/Dac5571.o.d"      -mno-eds-warn  -g -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -O0 -msmart-io=1 -Wall -msfr-warn=off   
+	
+endif
+
+# ------------------------------------------------------------------------------------
+# Rules for buildStep: assemble
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+else
+endif
+
+# ------------------------------------------------------------------------------------
+# Rules for buildStep: assemblePreproc
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+else
+endif
+
+# ------------------------------------------------------------------------------------
+# Rules for buildStep: link
+ifeq ($(TYPE_IMAGE), DEBUG_RUN)
+${DISTDIR}/WZYXPCR_NO1.20250726.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES}  nbproject/Makefile-${CND_CONF}.mk    
+	@${MKDIR} ${DISTDIR} 
+	${MP_CC} $(MP_EXTRA_LD_PRE)  -o ${DISTDIR}/WZYXPCR_NO1.20250726.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}  ${OBJECTFILES_QUOTED_IF_SPACED}      -mcpu=$(MP_PROCESSOR_OPTION)        -D__DEBUG=__DEBUG -D__MPLAB_DEBUGGER_PK3=1  -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)   -mreserve=data@0x1000:0x101B -mreserve=data@0x101C:0x101D -mreserve=data@0x101E:0x101F -mreserve=data@0x1020:0x1021 -mreserve=data@0x1022:0x1023 -mreserve=data@0x1024:0x1027 -mreserve=data@0x1028:0x104F   -Wl,--local-stack,,--defsym=__MPLAB_BUILD=1,--defsym=__MPLAB_DEBUG=1,--defsym=__DEBUG=1,-D__DEBUG=__DEBUG,--defsym=__MPLAB_DEBUGGER_PK3=1,$(MP_LINKER_FILE_OPTION),--stack=16,--check-sections,--data-init,--pack-data,--handles,--isr,--no-gc-sections,--fill-upper=0,--stackguard=16,--no-force-link,--smart-io,-Map="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map",--report-mem,--memorysummary,${DISTDIR}/memoryfile.xml$(MP_EXTRA_LD_POST)  
+	
+else
+${DISTDIR}/WZYXPCR_NO1.20250726.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES}  nbproject/Makefile-${CND_CONF}.mk   
+	@${MKDIR} ${DISTDIR} 
+	${MP_CC} $(MP_EXTRA_LD_PRE)  -o ${DISTDIR}/WZYXPCR_NO1.20250726.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX}  ${OBJECTFILES_QUOTED_IF_SPACED}      -mcpu=$(MP_PROCESSOR_OPTION)        -omf=elf -DXPRJ_default=$(CND_CONF)    $(COMPARISON_BUILD)  -Wl,--local-stack,,--defsym=__MPLAB_BUILD=1,$(MP_LINKER_FILE_OPTION),--stack=16,--check-sections,--data-init,--pack-data,--handles,--isr,--no-gc-sections,--fill-upper=0,--stackguard=16,--no-force-link,--smart-io,-Map="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map",--report-mem,--memorysummary,${DISTDIR}/memoryfile.xml$(MP_EXTRA_LD_POST)  
+	${MP_CC_DIR}\\xc16-bin2hex ${DISTDIR}/WZYXPCR_NO1.20250726.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX} -a  -omf=elf   
+	
+endif
+
+
+# Subprojects
+.build-subprojects:
+
+
+# Subprojects
+.clean-subprojects:
+
+# Clean Targets
+.clean-conf: ${CLEAN_SUBPROJECTS}
+	${RM} -r ${OBJECTDIR}
+	${RM} -r ${DISTDIR}
+
+# Enable dependency checking
+.dep.inc: .depcheck-impl
+
+DEPFILES=$(wildcard ${POSSIBLE_DEPFILES})
+ifneq (${DEPFILES},)
+include ${DEPFILES}
+endif

+ 13 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/Makefile-genesis.properties

@@ -0,0 +1,13 @@
+#
+#Tue Aug 05 18:39:51 CST 2025
+default.languagetoolchain.version=2.10
+default.Pack.dfplocation=C\:\\Users\\onechip\\.mchp_packs\\Microchip\\dsPIC33E-GM-GP-MC-GU-MU_DFP\\1.0.23
+conf.ids=default
+default.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc16\\v2.10\\bin
+host.id=1lj1-c7wd-qs
+configurations-xml=04f6ad8908cb296473dfdf6bc72baa34
+default.com-microchip-mplab-mdbcore-PICKit3Tool-PICkit3DbgToolManager.md5=50072f33d27b72924000ca2dca4b7622
+com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=e62346c0c0ecee2637e613b49cb7b7fa
+proj.dir=F\:\\library\\source\\WZYXPCR_NO1.20250726.X\\WZYXPCR_NO1.20250726.X
+host.platform=windows
+default.com-microchip-mplab-nbide-toolchain-xc16-XC16LanguageToolchain.md5=07f7da95e66d00aa4668de5175f752c5

+ 69 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/Makefile-impl.mk

@@ -0,0 +1,69 @@
+#
+# Generated Makefile - do not edit!
+#
+# Edit the Makefile in the project folder instead (../Makefile). Each target
+# has a pre- and a post- target defined where you can add customization code.
+#
+# This makefile implements macros and targets common to all configurations.
+#
+# NOCDDL
+
+
+# Building and Cleaning subprojects are done by default, but can be controlled with the SUB
+# macro. If SUB=no, subprojects will not be built or cleaned. The following macro
+# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf
+# and .clean-reqprojects-conf unless SUB has the value 'no'
+SUB_no=NO
+SUBPROJECTS=${SUB_${SUB}}
+BUILD_SUBPROJECTS_=.build-subprojects
+BUILD_SUBPROJECTS_NO=
+BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}}
+CLEAN_SUBPROJECTS_=.clean-subprojects
+CLEAN_SUBPROJECTS_NO=
+CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}}
+
+
+# Project Name
+PROJECTNAME=WZYXPCR_NO1.20250726.X
+
+# Active Configuration
+DEFAULTCONF=default
+CONF=${DEFAULTCONF}
+
+# All Configurations
+ALLCONFS=default 
+
+
+# build
+.build-impl: .build-pre
+	${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-conf
+
+
+# clean
+.clean-impl: .clean-pre
+	${MAKE} -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .clean-conf
+
+# clobber
+.clobber-impl: .clobber-pre .depcheck-impl
+	    ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default clean
+
+
+
+# all
+.all-impl: .all-pre .depcheck-impl
+	    ${MAKE} SUBPROJECTS=${SUBPROJECTS} CONF=default build
+
+
+
+# dependency checking support
+.depcheck-impl:
+#	@echo "# This code depends on make tool being used" >.dep.inc
+#	@if [ -n "${MAKE_VERSION}" ]; then \
+#	    echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \
+#	    echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \
+#	    echo "include \$${DEPFILES}" >>.dep.inc; \
+#	    echo "endif" >>.dep.inc; \
+#	else \
+#	    echo ".KEEP_STATE:" >>.dep.inc; \
+#	    echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \
+#	fi

+ 37 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/Makefile-local-default.mk

@@ -0,0 +1,37 @@
+#
+# Generated Makefile - do not edit!
+#
+#
+# This file contains information about the location of compilers and other tools.
+# If you commmit this file into your revision control server, you will be able to 
+# to checkout the project and build it from the command line with make. However,
+# if more than one person works on the same project, then this file might show
+# conflicts since different users are bound to have compilers in different places.
+# In that case you might choose to not commit this file and let MPLAB X recreate this file
+# for each user. The disadvantage of not commiting this file is that you must run MPLAB X at
+# least once so the file gets created and the project can be built. Finally, you can also
+# avoid using this file at all if you are only building from the command line with make.
+# You can invoke make with the values of the macros:
+# $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ...  
+#
+SHELL=cmd.exe
+PATH_TO_IDE_BIN=C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/
+# Adding MPLAB X bin directory to path.
+PATH:=C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/:$(PATH)
+# Path to java used to run MPLAB X when this makefile was created
+MP_JAVA_PATH="C:\Program Files\Microchip\MPLABX\v6.15\sys\java\zulu8.64.0.19-ca-fx-jre8.0.345-win_x64/bin/"
+OS_CURRENT="$(shell uname -s)"
+MP_CC="C:\Program Files\Microchip\xc16\v2.10\bin\xc16-gcc.exe"
+# MP_CPPC is not defined
+# MP_BC is not defined
+MP_AS="C:\Program Files\Microchip\xc16\v2.10\bin\xc16-as.exe"
+MP_LD="C:\Program Files\Microchip\xc16\v2.10\bin\xc16-ld.exe"
+MP_AR="C:\Program Files\Microchip\xc16\v2.10\bin\xc16-ar.exe"
+DEP_GEN=${MP_JAVA_PATH}java -jar "C:/Program Files/Microchip/MPLABX/v6.15/mplab_platform/platform/../mplab_ide/modules/../../bin/extractobjectdependencies.jar"
+MP_CC_DIR="C:\Program Files\Microchip\xc16\v2.10\bin"
+# MP_CPPC_DIR is not defined
+# MP_BC_DIR is not defined
+MP_AS_DIR="C:\Program Files\Microchip\xc16\v2.10\bin"
+MP_LD_DIR="C:\Program Files\Microchip\xc16\v2.10\bin"
+MP_AR_DIR="C:\Program Files\Microchip\xc16\v2.10\bin"
+DFP_DIR=C:/Users/onechip/.mchp_packs/Microchip/dsPIC33E-GM-GP-MC-GU-MU_DFP/1.0.23

+ 10 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/Makefile-variables.mk

@@ -0,0 +1,10 @@
+#
+# Generated - do not edit!
+#
+# NOCDDL
+#
+CND_BASEDIR=`pwd`
+# default configuration
+CND_ARTIFACT_DIR_default=dist/default/production
+CND_ARTIFACT_NAME_default=WZYXPCR_NO1.20250726.X.production.hex
+CND_ARTIFACT_PATH_default=dist/default/production/WZYXPCR_NO1.20250726.X.production.hex

+ 73 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/Package-default.bash

@@ -0,0 +1,73 @@
+#!/bin/bash -x
+
+#
+# Generated - do not edit!
+#
+
+# Macros
+TOP=`pwd`
+CND_CONF=default
+CND_DISTDIR=dist
+TMPDIR=build/${CND_CONF}/${IMAGE_TYPE}/tmp-packaging
+TMPDIRNAME=tmp-packaging
+OUTPUT_PATH=dist/${CND_CONF}/${IMAGE_TYPE}/WZYXPCR_NO1.20250726.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
+OUTPUT_BASENAME=WZYXPCR_NO1.20250726.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}
+PACKAGE_TOP_DIR=wzyxpcrno1.20250726.x/
+
+# Functions
+function checkReturnCode
+{
+    rc=$?
+    if [ $rc != 0 ]
+    then
+        exit $rc
+    fi
+}
+function makeDirectory
+# $1 directory path
+# $2 permission (optional)
+{
+    mkdir -p "$1"
+    checkReturnCode
+    if [ "$2" != "" ]
+    then
+      chmod $2 "$1"
+      checkReturnCode
+    fi
+}
+function copyFileToTmpDir
+# $1 from-file path
+# $2 to-file path
+# $3 permission
+{
+    cp "$1" "$2"
+    checkReturnCode
+    if [ "$3" != "" ]
+    then
+        chmod $3 "$2"
+        checkReturnCode
+    fi
+}
+
+# Setup
+cd "${TOP}"
+mkdir -p ${CND_DISTDIR}/${CND_CONF}/package
+rm -rf ${TMPDIR}
+mkdir -p ${TMPDIR}
+
+# Copy files and create directories and links
+cd "${TOP}"
+makeDirectory ${TMPDIR}/wzyxpcrno1.20250726.x/bin
+copyFileToTmpDir "${OUTPUT_PATH}" "${TMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755
+
+
+# Generate tar file
+cd "${TOP}"
+rm -f ${CND_DISTDIR}/${CND_CONF}/package/wzyxpcrno1.20250726.x.tar
+cd ${TMPDIR}
+tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/package/wzyxpcrno1.20250726.x.tar *
+checkReturnCode
+
+# Cleanup
+cd "${TOP}"
+rm -rf ${TMPDIR}

+ 433 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/configurations.xml

@@ -0,0 +1,433 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configurationDescriptor version="65">
+  <logicalFolder name="root" displayName="root" projectFiles="true">
+    <logicalFolder name="HeaderFiles" displayName="头文件" projectFiles="true">
+      <itemPath>file/ABIS_User.h</itemPath>
+      <itemPath>file/Ad.h</itemPath>
+      <itemPath>file/DA7512.h</itemPath>
+      <itemPath>file/Delay.h</itemPath>
+      <itemPath>file/DMA.h</itemPath>
+      <itemPath>file/DS1802.h</itemPath>
+      <itemPath>file/EEPROM.h</itemPath>
+      <itemPath>file/Interrupt.h</itemPath>
+      <itemPath>file/Motor.h</itemPath>
+      <itemPath>file/OC.h</itemPath>
+      <itemPath>file/PIN.h</itemPath>
+      <itemPath>file/PWM.h</itemPath>
+      <itemPath>file/Timer.h</itemPath>
+      <itemPath>file/Uart.h</itemPath>
+      <itemPath>file/Dac5571.h</itemPath>
+    </logicalFolder>
+    <logicalFolder name="SourceFiles" displayName="源文件" projectFiles="true">
+      <itemPath>file/ABIS_User.c</itemPath>
+      <itemPath>file/Ad.c</itemPath>
+      <itemPath>file/Da7512.c</itemPath>
+      <itemPath>file/Delay.c</itemPath>
+      <itemPath>file/DMA.c</itemPath>
+      <itemPath>file/DS1802.c</itemPath>
+      <itemPath>file/Interrupt.c</itemPath>
+      <itemPath>file/EEPROM.c</itemPath>
+      <itemPath>file/main.c</itemPath>
+      <itemPath>file/Motor.c</itemPath>
+      <itemPath>file/OC.c</itemPath>
+      <itemPath>file/PIN.c</itemPath>
+      <itemPath>file/PWM.c</itemPath>
+      <itemPath>file/readme.c</itemPath>
+      <itemPath>file/Timer.c</itemPath>
+      <itemPath>file/Uart.c</itemPath>
+      <itemPath>file/Dac5571.c</itemPath>
+    </logicalFolder>
+    <logicalFolder name="LinkerScript" displayName="链接器文件" projectFiles="true">
+    </logicalFolder>
+    <logicalFolder name="ExternalFiles" displayName="重要文件" projectFiles="false">
+      <itemPath>Makefile</itemPath>
+    </logicalFolder>
+  </logicalFolder>
+  <sourceRootList>
+    <Elem>file</Elem>
+  </sourceRootList>
+  <projectmakefile>Makefile</projectmakefile>
+  <confs>
+    <conf name="default" type="2">
+      <toolsSet>
+        <developmentServer>localhost</developmentServer>
+        <targetDevice>dsPIC33EP512MU814</targetDevice>
+        <targetHeader></targetHeader>
+        <targetPluginBoard></targetPluginBoard>
+        <platformTool>PICkit3PlatformTool</platformTool>
+        <languageToolchain>XC16</languageToolchain>
+        <languageToolchainVersion>2.10</languageToolchainVersion>
+        <platform>3</platform>
+      </toolsSet>
+      <packs>
+        <pack name="dsPIC33E-GM-GP-MC-GU-MU_DFP" vendor="Microchip" version="1.0.23"/>
+      </packs>
+      <ScriptingSettings>
+      </ScriptingSettings>
+      <compileType>
+        <linkerTool>
+          <linkerLibItems>
+          </linkerLibItems>
+        </linkerTool>
+        <archiverTool>
+        </archiverTool>
+        <loading>
+          <useAlternateLoadableFile>false</useAlternateLoadableFile>
+          <parseOnProdLoad>false</parseOnProdLoad>
+          <alternateLoadableFile></alternateLoadableFile>
+        </loading>
+        <subordinates>
+        </subordinates>
+      </compileType>
+      <makeCustomizationType>
+        <makeCustomizationPreStepEnabled>false</makeCustomizationPreStepEnabled>
+        <makeUseCleanTarget>false</makeUseCleanTarget>
+        <makeCustomizationPreStep></makeCustomizationPreStep>
+        <makeCustomizationPostStepEnabled>false</makeCustomizationPostStepEnabled>
+        <makeCustomizationPostStep></makeCustomizationPostStep>
+        <makeCustomizationPutChecksumInUserID>false</makeCustomizationPutChecksumInUserID>
+        <makeCustomizationEnableLongLines>false</makeCustomizationEnableLongLines>
+        <makeCustomizationNormalizeHexFile>false</makeCustomizationNormalizeHexFile>
+      </makeCustomizationType>
+      <C30>
+        <property key="cast-align" value="false"/>
+        <property key="code-model" value="default"/>
+        <property key="const-model" value="default"/>
+        <property key="data-model" value="default"/>
+        <property key="disable-instruction-scheduling" value="false"/>
+        <property key="enable-all-warnings" value="true"/>
+        <property key="enable-ansi-std" value="false"/>
+        <property key="enable-ansi-warnings" value="false"/>
+        <property key="enable-fatal-warnings" value="false"/>
+        <property key="enable-large-arrays" value="false"/>
+        <property key="enable-omit-frame-pointer" value="false"/>
+        <property key="enable-procedural-abstraction" value="false"/>
+        <property key="enable-short-double" value="false"/>
+        <property key="enable-symbols" value="true"/>
+        <property key="enable-unroll-loops" value="false"/>
+        <property key="expand-pragma-config" value="false"/>
+        <property key="extra-include-directories" value=""/>
+        <property key="isolate-each-function" value="false"/>
+        <property key="keep-inline" value="false"/>
+        <property key="oXC16gcc-align-arr" value="false"/>
+        <property key="oXC16gcc-cnsts-mauxflash" value="false"/>
+        <property key="oXC16gcc-data-sects" value="false"/>
+        <property key="oXC16gcc-errata" value=""/>
+        <property key="oXC16gcc-fillupper" value=""/>
+        <property key="oXC16gcc-large-aggregate" value="false"/>
+        <property key="oXC16gcc-mauxflash" value="false"/>
+        <property key="oXC16gcc-mpa-lvl" value=""/>
+        <property key="oXC16gcc-name-text-sec" value=""/>
+        <property key="oXC16gcc-near-chars" value="false"/>
+        <property key="oXC16gcc-no-isr-warn" value="false"/>
+        <property key="oXC16gcc-sfr-warn" value="false"/>
+        <property key="oXC16gcc-smar-io-lvl" value="1"/>
+        <property key="oXC16gcc-smart-io-fmt" value=""/>
+        <property key="optimization-level" value="0"/>
+        <property key="post-instruction-scheduling" value="default"/>
+        <property key="pre-instruction-scheduling" value="default"/>
+        <property key="preprocessor-macros" value=""/>
+        <property key="scalar-model" value="default"/>
+        <property key="use-cci" value="false"/>
+        <property key="use-iar" value="false"/>
+      </C30>
+      <C30-AR>
+        <property key="additional-options-chop-files" value="false"/>
+      </C30-AR>
+      <C30-AS>
+        <property key="assembler-symbols" value=""/>
+        <property key="expand-macros" value="false"/>
+        <property key="extra-include-directories-for-assembler" value=""/>
+        <property key="extra-include-directories-for-preprocessor" value=""/>
+        <property key="false-conditionals" value="false"/>
+        <property key="keep-locals" value="false"/>
+        <property key="list-assembly" value="false"/>
+        <property key="list-section-info" value="false"/>
+        <property key="list-source" value="false"/>
+        <property key="list-symbols" value="false"/>
+        <property key="oXC16asm-extra-opts" value=""/>
+        <property key="oXC16asm-list-to-file" value="false"/>
+        <property key="omit-debug-dirs" value="false"/>
+        <property key="omit-forms" value="false"/>
+        <property key="preprocessor-macros" value=""/>
+        <property key="relax" value="false"/>
+        <property key="warning-level" value="emit-warnings"/>
+      </C30-AS>
+      <C30-CO>
+        <property key="coverage-enable" value=""/>
+        <property key="stack-guidance" value="false"/>
+      </C30-CO>
+      <C30-LD>
+        <property key="additional-options-use-response-files" value="false"/>
+        <property key="boot-eeprom" value="no_eeprom"/>
+        <property key="boot-flash" value="no_flash"/>
+        <property key="boot-ram" value="no_ram"/>
+        <property key="boot-write-protect" value="no_write_protect"/>
+        <property key="enable-check-sections" value="false"/>
+        <property key="enable-data-init" value="true"/>
+        <property key="enable-default-isr" value="true"/>
+        <property key="enable-handles" value="true"/>
+        <property key="enable-pack-data" value="true"/>
+        <property key="extra-lib-directories" value=""/>
+        <property key="fill-flash-options-addr" value=""/>
+        <property key="fill-flash-options-const" value=""/>
+        <property key="fill-flash-options-how" value="0"/>
+        <property key="fill-flash-options-inc-const" value="1"/>
+        <property key="fill-flash-options-increment" value=""/>
+        <property key="fill-flash-options-seq" value=""/>
+        <property key="fill-flash-options-what" value="0"/>
+        <property key="general-code-protect" value="no_code_protect"/>
+        <property key="general-write-protect" value="no_write_protect"/>
+        <property key="generate-cross-reference-file" value="false"/>
+        <property key="heap-size" value=""/>
+        <property key="input-libraries" value=""/>
+        <property key="linker-stack" value="true"/>
+        <property key="linker-symbols" value=""/>
+        <property key="map-file" value="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map"/>
+        <property key="no-ivt" value="false"/>
+        <property key="oXC16ld-extra-opts" value=""/>
+        <property key="oXC16ld-fill-upper" value="0"/>
+        <property key="oXC16ld-force-link" value="false"/>
+        <property key="oXC16ld-no-smart-io" value="false"/>
+        <property key="oXC16ld-nostdlib" value="false"/>
+        <property key="oXC16ld-stackguard" value="16"/>
+        <property key="preprocessor-macros" value=""/>
+        <property key="remove-unused-sections" value="false"/>
+        <property key="report-memory-usage" value="true"/>
+        <property key="secure-eeprom" value="no_eeprom"/>
+        <property key="secure-flash" value="no_flash"/>
+        <property key="secure-ram" value="no_ram"/>
+        <property key="secure-write-protect" value="no_write_protect"/>
+        <property key="stack-size" value="16"/>
+        <property key="symbol-stripping" value=""/>
+        <property key="trace-symbols" value=""/>
+        <property key="warn-section-align" value="false"/>
+      </C30-LD>
+      <C30Global>
+        <property key="combine-sourcefiles" value="false"/>
+        <property key="common-include-directories" value=""/>
+        <property key="dual-boot-partition" value="0"/>
+        <property key="fast-math" value="false"/>
+        <property key="generic-16-bit" value="false"/>
+        <property key="legacy-libc" value="true"/>
+        <property key="mpreserve-all" value="false"/>
+        <property key="oXC16glb-macros" value=""/>
+        <property key="omit-pack-options" value="1"/>
+        <property key="output-file-format" value="elf"/>
+        <property key="preserve-all" value="false"/>
+        <property key="preserve-file" value=""/>
+        <property key="relaxed-math" value="false"/>
+        <property key="save-temps" value="false"/>
+      </C30Global>
+      <PICkit3PlatformTool>
+        <property key="ADC 1" value="true"/>
+        <property key="ADC 2" value="true"/>
+        <property key="AutoSelectMemRanges" value="auto"/>
+        <property key="COMPARATOR" value="true"/>
+        <property key="CRC" value="true"/>
+        <property key="DCI" value="true"/>
+        <property key="Freeze All Other Peripherals" value="true"/>
+        <property key="I2C1" value="true"/>
+        <property key="I2C2" value="true"/>
+        <property key="INPUT CAPTURE 1" value="true"/>
+        <property key="INPUT CAPTURE 10" value="true"/>
+        <property key="INPUT CAPTURE 11" value="true"/>
+        <property key="INPUT CAPTURE 12" value="true"/>
+        <property key="INPUT CAPTURE 13" value="true"/>
+        <property key="INPUT CAPTURE 14" value="true"/>
+        <property key="INPUT CAPTURE 15" value="true"/>
+        <property key="INPUT CAPTURE 16" value="true"/>
+        <property key="INPUT CAPTURE 2" value="true"/>
+        <property key="INPUT CAPTURE 3" value="true"/>
+        <property key="INPUT CAPTURE 4" value="true"/>
+        <property key="INPUT CAPTURE 5" value="true"/>
+        <property key="INPUT CAPTURE 6" value="true"/>
+        <property key="INPUT CAPTURE 7" value="true"/>
+        <property key="INPUT CAPTURE 8" value="true"/>
+        <property key="INPUT CAPTURE 9" value="true"/>
+        <property key="OUTPUT COMPARE 1" value="true"/>
+        <property key="OUTPUT COMPARE 10" value="true"/>
+        <property key="OUTPUT COMPARE 11" value="true"/>
+        <property key="OUTPUT COMPARE 12" value="true"/>
+        <property key="OUTPUT COMPARE 13" value="true"/>
+        <property key="OUTPUT COMPARE 14" value="true"/>
+        <property key="OUTPUT COMPARE 15" value="true"/>
+        <property key="OUTPUT COMPARE 16" value="true"/>
+        <property key="OUTPUT COMPARE 2" value="true"/>
+        <property key="OUTPUT COMPARE 3" value="true"/>
+        <property key="OUTPUT COMPARE 4" value="true"/>
+        <property key="OUTPUT COMPARE 5" value="true"/>
+        <property key="OUTPUT COMPARE 6" value="true"/>
+        <property key="OUTPUT COMPARE 7" value="true"/>
+        <property key="OUTPUT COMPARE 8" value="true"/>
+        <property key="OUTPUT COMPARE 9" value="true"/>
+        <property key="PARALLEL MASTER/SLAVE PORT" value="true"/>
+        <property key="PWM" value="true"/>
+        <property key="REAL TIME CLOCK AND CALENDAR" value="true"/>
+        <property key="SPI 1" value="true"/>
+        <property key="SPI 2" value="true"/>
+        <property key="SPI 3" value="true"/>
+        <property key="SPI 4" value="true"/>
+        <property key="SecureSegment.SegmentProgramming" value="FullChipProgramming"/>
+        <property key="TIMER1" value="true"/>
+        <property key="TIMER2" value="true"/>
+        <property key="TIMER3" value="true"/>
+        <property key="TIMER4" value="true"/>
+        <property key="TIMER5" value="true"/>
+        <property key="TIMER6" value="true"/>
+        <property key="TIMER7" value="true"/>
+        <property key="TIMER8" value="true"/>
+        <property key="TIMER9" value="true"/>
+        <property key="ToolFirmwareFilePath"
+                  value="Press to browse for a specific firmware version"/>
+        <property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>
+        <property key="UART 1" value="true"/>
+        <property key="UART 2" value="true"/>
+        <property key="UART 3" value="true"/>
+        <property key="UART 4" value="true"/>
+        <property key="USB" value="true"/>
+        <property key="debugoptions.debug-startup" value="Use system settings"/>
+        <property key="debugoptions.reset-behaviour" value="Use system settings"/>
+        <property key="debugoptions.useswbreakpoints" value="false"/>
+        <property key="event.recorder.enabled" value="false"/>
+        <property key="event.recorder.scvd.files" value=""/>
+        <property key="hwtoolclock.frcindebug" value="false"/>
+        <property key="lastid" value=""/>
+        <property key="memories.aux" value="false"/>
+        <property key="memories.bootflash" value="true"/>
+        <property key="memories.configurationmemory" value="true"/>
+        <property key="memories.configurationmemory2" value="true"/>
+        <property key="memories.dataflash" value="true"/>
+        <property key="memories.eeprom" value="true"/>
+        <property key="memories.flashdata" value="true"/>
+        <property key="memories.id" value="true"/>
+        <property key="memories.instruction.ram" value="true"/>
+        <property key="memories.instruction.ram.ranges"
+                  value="${memories.instruction.ram.ranges}"/>
+        <property key="memories.programmemory" value="true"/>
+        <property key="memories.programmemory.ranges" value="0-7fffff"/>
+        <property key="poweroptions.powerenable" value="true"/>
+        <property key="programmertogo.imagename" value=""/>
+        <property key="programoptions.donoteraseauxmem" value="false"/>
+        <property key="programoptions.eraseb4program" value="true"/>
+        <property key="programoptions.pgmspeed" value="2"/>
+        <property key="programoptions.preservedataflash" value="false"/>
+        <property key="programoptions.preservedataflash.ranges"
+                  value="${programoptions.preservedataflash.ranges}"/>
+        <property key="programoptions.preserveeeprom" value="false"/>
+        <property key="programoptions.preserveeeprom.ranges" value=""/>
+        <property key="programoptions.preserveprogram.ranges" value=""/>
+        <property key="programoptions.preserveprogramrange" value="false"/>
+        <property key="programoptions.preserveuserid" value="false"/>
+        <property key="programoptions.programcalmem" value="false"/>
+        <property key="programoptions.programuserotp" value="false"/>
+        <property key="programoptions.testmodeentrymethod" value="VDDFirst"/>
+        <property key="programoptions.usehighvoltageonmclr" value="false"/>
+        <property key="programoptions.uselvpprogramming" value="false"/>
+        <property key="voltagevalue" value="3.25"/>
+      </PICkit3PlatformTool>
+      <Tool>
+        <property key="ADC 1" value="true"/>
+        <property key="ADC 2" value="true"/>
+        <property key="AutoSelectMemRanges" value="auto"/>
+        <property key="COMPARATOR" value="true"/>
+        <property key="CRC" value="true"/>
+        <property key="DCI" value="true"/>
+        <property key="I2C1" value="true"/>
+        <property key="I2C2" value="true"/>
+        <property key="INPUT CAPTURE 1" value="true"/>
+        <property key="INPUT CAPTURE 10" value="true"/>
+        <property key="INPUT CAPTURE 11" value="true"/>
+        <property key="INPUT CAPTURE 12" value="true"/>
+        <property key="INPUT CAPTURE 13" value="true"/>
+        <property key="INPUT CAPTURE 14" value="true"/>
+        <property key="INPUT CAPTURE 15" value="true"/>
+        <property key="INPUT CAPTURE 16" value="true"/>
+        <property key="INPUT CAPTURE 2" value="true"/>
+        <property key="INPUT CAPTURE 3" value="true"/>
+        <property key="INPUT CAPTURE 4" value="true"/>
+        <property key="INPUT CAPTURE 5" value="true"/>
+        <property key="INPUT CAPTURE 6" value="true"/>
+        <property key="INPUT CAPTURE 7" value="true"/>
+        <property key="INPUT CAPTURE 8" value="true"/>
+        <property key="INPUT CAPTURE 9" value="true"/>
+        <property key="OUTPUT COMPARE 1" value="true"/>
+        <property key="OUTPUT COMPARE 10" value="true"/>
+        <property key="OUTPUT COMPARE 11" value="true"/>
+        <property key="OUTPUT COMPARE 12" value="true"/>
+        <property key="OUTPUT COMPARE 13" value="true"/>
+        <property key="OUTPUT COMPARE 14" value="true"/>
+        <property key="OUTPUT COMPARE 15" value="true"/>
+        <property key="OUTPUT COMPARE 16" value="true"/>
+        <property key="OUTPUT COMPARE 2" value="true"/>
+        <property key="OUTPUT COMPARE 3" value="true"/>
+        <property key="OUTPUT COMPARE 4" value="true"/>
+        <property key="OUTPUT COMPARE 5" value="true"/>
+        <property key="OUTPUT COMPARE 6" value="true"/>
+        <property key="OUTPUT COMPARE 7" value="true"/>
+        <property key="OUTPUT COMPARE 8" value="true"/>
+        <property key="OUTPUT COMPARE 9" value="true"/>
+        <property key="PARALLEL MASTER/SLAVE PORT" value="true"/>
+        <property key="PWM" value="true"/>
+        <property key="REAL TIME CLOCK AND CALENDAR" value="true"/>
+        <property key="SPI 1" value="true"/>
+        <property key="SPI 2" value="true"/>
+        <property key="SPI 3" value="true"/>
+        <property key="SPI 4" value="true"/>
+        <property key="TIMER1" value="true"/>
+        <property key="TIMER2" value="true"/>
+        <property key="TIMER3" value="true"/>
+        <property key="TIMER4" value="true"/>
+        <property key="TIMER5" value="true"/>
+        <property key="TIMER6" value="true"/>
+        <property key="TIMER7" value="true"/>
+        <property key="TIMER8" value="true"/>
+        <property key="TIMER9" value="true"/>
+        <property key="ToolFirmwareFilePath"
+                  value="Press to browse for a specific firmware version"/>
+        <property key="ToolFirmwareOption.UseLatestFirmware" value="true"/>
+        <property key="UART 1" value="true"/>
+        <property key="UART 2" value="true"/>
+        <property key="UART 3" value="true"/>
+        <property key="UART 4" value="true"/>
+        <property key="USB" value="true"/>
+        <property key="debugoptions.useswbreakpoints" value="false"/>
+        <property key="hwtoolclock.frcindebug" value="false"/>
+        <property key="memories.aux" value="false"/>
+        <property key="memories.bootflash" value="true"/>
+        <property key="memories.configurationmemory" value="true"/>
+        <property key="memories.configurationmemory2" value="true"/>
+        <property key="memories.dataflash" value="true"/>
+        <property key="memories.eeprom" value="true"/>
+        <property key="memories.flashdata" value="true"/>
+        <property key="memories.id" value="true"/>
+        <property key="memories.instruction.ram" value="true"/>
+        <property key="memories.instruction.ram.ranges"
+                  value="${memories.instruction.ram.ranges}"/>
+        <property key="memories.programmemory" value="true"/>
+        <property key="memories.programmemory.ranges" value="0-7fffff"/>
+        <property key="poweroptions.powerenable" value="true"/>
+        <property key="programmertogo.imagename" value=""/>
+        <property key="programoptions.donoteraseauxmem" value="false"/>
+        <property key="programoptions.eraseb4program" value="true"/>
+        <property key="programoptions.pgmspeed" value="2"/>
+        <property key="programoptions.preservedataflash" value="false"/>
+        <property key="programoptions.preservedataflash.ranges"
+                  value="${programoptions.preservedataflash.ranges}"/>
+        <property key="programoptions.preserveeeprom" value="false"/>
+        <property key="programoptions.preserveeeprom.ranges" value=""/>
+        <property key="programoptions.preserveprogram.ranges" value=""/>
+        <property key="programoptions.preserveprogramrange" value="false"/>
+        <property key="programoptions.preserveuserid" value="false"/>
+        <property key="programoptions.programcalmem" value="false"/>
+        <property key="programoptions.programuserotp" value="false"/>
+        <property key="programoptions.testmodeentrymethod" value="VDDFirst"/>
+        <property key="programoptions.usehighvoltageonmclr" value="false"/>
+        <property key="programoptions.uselvpprogramming" value="false"/>
+        <property key="voltagevalue" value="3.25"/>
+        <property key="冻结所有其他外设" value="true"/>
+        <property key="安全段。分部编程" value="FullChipProgramming"/>
+      </Tool>
+    </conf>
+  </confs>
+</configurationDescriptor>

+ 3 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/private/SuppressibleMessageMemo.properties

@@ -0,0 +1,3 @@
+#
+#Mon Jun 26 09:11:29 CST 2023
+pk3/DEVID_MISMATCH=true

+ 25 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/private/configurations.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configurationDescriptor version="65">
+  <projectmakefile>Makefile</projectmakefile>
+  <defaultConf>0</defaultConf>
+  <confs>
+    <conf name="default" type="2">
+      <platformToolSN>:=MPLABComm-USB-Microchip:=&lt;vid>04D8:=&lt;pid>900A:=&lt;rev>0002:=&lt;man>Microchip Technology Inc.:=&lt;prod>PICkit 3:=&lt;sn>DEFAULT_PK3 :=&lt;drv>x:=&lt;xpt>h:=end</platformToolSN>
+      <languageToolchainDir>C:\Program Files\Microchip\xc16\v2.10\bin</languageToolchainDir>
+      <mdbdebugger version="1">
+        <placeholder1>place holder 1</placeholder1>
+        <placeholder2>place holder 2</placeholder2>
+      </mdbdebugger>
+      <runprofile version="6">
+        <args></args>
+        <rundir></rundir>
+        <buildfirst>true</buildfirst>
+        <console-type>0</console-type>
+        <terminal-type>0</terminal-type>
+        <remove-instrumentation>0</remove-instrumentation>
+        <environment>
+        </environment>
+      </runprofile>
+    </conf>
+  </confs>
+</configurationDescriptor>

+ 15 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/private/private.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
+    <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
+    <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
+        <group/>
+        <group name="source">
+            <file>file:/F:/library/source/WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Uart.c</file>
+            <file>file:/F:/library/source/WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Delay.c</file>
+            <file>file:/F:/library/source/WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/DS1802.c</file>
+            <file>file:/F:/library/source/WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/Uart.h</file>
+            <file>file:/F:/library/source/WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/main.c</file>
+            <file>file:/F:/library/source/WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/file/EEPROM.c</file>
+        </group>
+    </open-files>
+</project-private>

+ 29 - 0
WZYXPCR_NO1.20250726.X/WZYXPCR_NO1.20250726.X/nbproject/project.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>com.microchip.mplab.nbide.embedded.makeproject</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/make-project/1">
+            <name>WZYXPCR_NO1.20250726</name>
+            <creation-uuid>52350a44-b23e-415c-bde5-da05c8ddbc92</creation-uuid>
+            <make-project-type>0</make-project-type>
+            <c-extensions>c</c-extensions>
+            <cpp-extensions/>
+            <header-extensions>h</header-extensions>
+            <asminc-extensions/>
+            <sourceEncoding>GB2312</sourceEncoding>
+            <make-dep-projects/>
+            <sourceRootList>
+                <sourceRootElem>file</sourceRootElem>
+            </sourceRootList>
+            <confList>
+                <confElem>
+                    <name>default</name>
+                    <type>2</type>
+                </confElem>
+            </confList>
+            <formatting>
+                <project-formatting-style>false</project-formatting-style>
+            </formatting>
+        </data>
+    </configuration>
+</project>

+ 42 - 0
WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Delay.c

@@ -0,0 +1,42 @@
+#define  __DELAY_DEF
+#include"User.h"
+
+unsigned int temp_count;
+
+// cter>0  Ϊ10usÑÓʱº¯Êý
+// cter=0  Ϊ1usÑÓʱº¯Êý
+void Delay_Us(unsigned int cter)
+{
+	unsigned int ii;
+	if(cter == 0)   
+	{ 
+		for(ii=0;ii<8;ii++);
+	} 
+	else
+	{
+		for(;cter>0;cter--)
+ 			for(ii=0;ii<80;ii++);
+	}
+}
+
+//1ms
+void Delay_ms(unsigned int cter)
+{
+	unsigned int ii;
+	if(cter == 0)   
+	{ 
+		for(ii=0;ii<8;ii++);
+	} 
+	else
+	{
+		for(;cter>0;cter--)
+ 			for(ii=0;ii<8000;ii++);
+	}
+}
+//1s
+void Delay(unsigned int cter)
+{
+	Delay_ms(cter*1000);
+}
+
+

+ 23 - 0
WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Delay.h

@@ -0,0 +1,23 @@
+#ifndef __DELAY_H
+#define __DELAY_H
+
+#ifdef  __DELAY_DEF
+#define DELAY_EXTERN
+#else
+#define DELAY_EXTERN extern
+#endif
+
+#define Fcy  40000000
+
+#define Delay200uS_count  (Fcy * 0.0002) / 1080
+#define Delay_1mS_Cnt	  (Fcy * 0.001) / 2950
+#define Delay_2mS_Cnt	  (Fcy * 0.002) / 2950
+#define Delay_5mS_Cnt	  (Fcy * 0.005) / 2950
+#define Delay_15mS_Cnt 	  (Fcy * 0.015) / 2950
+#define Delay_1S_Cnt	  (Fcy * 1) / 2950 
+
+DELAY_EXTERN void Delay_ms( unsigned int delay_count );
+DELAY_EXTERN void Delay_Us( unsigned int delayUs_count );
+DELAY_EXTERN void Delay(unsigned int cter);
+
+#endif

+ 113 - 0
WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Makefile

@@ -0,0 +1,113 @@
+#
+#  There exist several targets which are by default empty and which can be 
+#  used for execution of your targets. These targets are usually executed 
+#  before and after some main targets. They are: 
+#
+#     .build-pre:              called before 'build' target
+#     .build-post:             called after 'build' target
+#     .clean-pre:              called before 'clean' target
+#     .clean-post:             called after 'clean' target
+#     .clobber-pre:            called before 'clobber' target
+#     .clobber-post:           called after 'clobber' target
+#     .all-pre:                called before 'all' target
+#     .all-post:               called after 'all' target
+#     .help-pre:               called before 'help' target
+#     .help-post:              called after 'help' target
+#
+#  Targets beginning with '.' are not intended to be called on their own.
+#
+#  Main targets can be executed directly, and they are:
+#  
+#     build                    build a specific configuration
+#     clean                    remove built files from a configuration
+#     clobber                  remove all built files
+#     all                      build all configurations
+#     help                     print help mesage
+#  
+#  Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and
+#  .help-impl are implemented in nbproject/makefile-impl.mk.
+#
+#  Available make variables:
+#
+#     CND_BASEDIR                base directory for relative paths
+#     CND_DISTDIR                default top distribution directory (build artifacts)
+#     CND_BUILDDIR               default top build directory (object files, ...)
+#     CONF                       name of current configuration
+#     CND_ARTIFACT_DIR_${CONF}   directory of build artifact (current configuration)
+#     CND_ARTIFACT_NAME_${CONF}  name of build artifact (current configuration)
+#     CND_ARTIFACT_PATH_${CONF}  path to build artifact (current configuration)
+#     CND_PACKAGE_DIR_${CONF}    directory of package (current configuration)
+#     CND_PACKAGE_NAME_${CONF}   name of package (current configuration)
+#     CND_PACKAGE_PATH_${CONF}   path to package (current configuration)
+#
+# NOCDDL
+
+
+# Environment 
+MKDIR=mkdir
+CP=cp
+CCADMIN=CCadmin
+RANLIB=ranlib
+
+
+# build
+build: .build-post
+
+.build-pre:
+# Add your pre 'build' code here...
+
+.build-post: .build-impl
+# Add your post 'build' code here...
+
+
+# clean
+clean: .clean-post
+
+.clean-pre:
+# Add your pre 'clean' code here...
+# WARNING: the IDE does not call this target since it takes a long time to
+# simply run make. Instead, the IDE removes the configuration directories
+# under build and dist directly without calling make.
+# This target is left here so people can do a clean when running a clean
+# outside the IDE.
+
+.clean-post: .clean-impl
+# Add your post 'clean' code here...
+
+
+# clobber
+clobber: .clobber-post
+
+.clobber-pre:
+# Add your pre 'clobber' code here...
+
+.clobber-post: .clobber-impl
+# Add your post 'clobber' code here...
+
+
+# all
+all: .all-post
+
+.all-pre:
+# Add your pre 'all' code here...
+
+.all-post: .all-impl
+# Add your post 'all' code here...
+
+
+# help
+help: .help-post
+
+.help-pre:
+# Add your pre 'help' code here...
+
+.help-post: .help-impl
+# Add your post 'help' code here...
+
+
+
+# include project implementation makefile
+include nbproject/Makefile-impl.mk
+
+# include project make variables
+include nbproject/Makefile-variables.mk

+ 74 - 0
WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Pin.c

@@ -0,0 +1,74 @@
+
+#define  __PIN_DEF
+#include"User.h"
+
+#define  STU PORTGbits.RG9 
+#define  IN1 PORTFbits.RF13 
+#define  IN2 PORTFbits.RF12
+
+void Pin_Init(){
+	ANSELA = 0;
+    ANSELB = 0;
+    ANSELC = 0;
+    ANSELD = 0;
+    ANSELE = 0;
+    ANSELG = 0;
+
+    TRISGbits.TRISG9=0;
+	PORTGbits.RG9=0;
+
+	TRISFbits.TRISF4 = 0;
+	TRISFbits.TRISF5 = 1;
+	TRISDbits.TRISD15 = 0;
+	TRISDbits.TRISD14 = 1;
+	TRISBbits.TRISB14 = 0;
+	TRISBbits.TRISB15 = 1;
+	TRISBbits.TRISB1 = 0;
+	TRISBbits.TRISB0 = 1;
+	TRISDbits.TRISD1 = 0;
+	TRISDbits.TRISD6 = 1;
+	TRISBbits.TRISB7 = 0;
+	TRISBbits.TRISB12 = 1;
+	
+//	RPINR18bits.U1RXR = 17;//上电默认PC使用
+	RPINR18bits.U1RXR = 48; //上电默认屏幕使用    
+	RPINR19bits.U2RXR= 43;
+	RPINR17bits.U3RXR = 29;
+//	RPINR27bits.U4RXR = 48;
+    
+	
+//    _RP10R = 3;  //上电默认PC使用
+    _RP1R = 3; //上电默认屏幕使用    
+	_RP5R = 5;
+	_RP14R = 22 ;
+//	_RP1R= 24;
+    
+
+	TRISFbits.TRISF13 = 1;
+	TRISFbits.TRISF12 = 1;
+	
+	TRISBbits.TRISB8 = 0;
+	TRISBbits.TRISB9 = 0;
+	
+}
+
+void SetIO(unsigned char data,unsigned char state){
+    
+ switch(data){
+	 case 1 : STU = data;break;    
+        default:
+            break;
+ 
+            
+    }
+}
+unsigned int Get_IO(unsigned char uc_CH)//获取IO口输出状态
+{
+    unsigned char state;
+    switch(uc_CH){
+            case 1 : state = IN1;break;//
+            case 2 : state = IN2;break;//    
+
+        }
+    return state;
+}

+ 23 - 0
WZYX_UART_V1.1250726.X/WZYX_UART_V1.1250726.X/Pin.h

@@ -0,0 +1,23 @@
+/* 
+ * File:   Pin.h
+ * Author: Lenovo
+ *
+ * Created on 2023Äê9ÔÂ20ÈÕ, ÉÏÎç10:25
+ */
+
+#ifndef PIN_H
+#define	PIN_H
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+
+
+
+#ifdef	__cplusplus
+}
+#endif
+void Pin_Init();
+#endif	/* PIN_H */
+

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels