diff --git a/Readme.txt b/Readme.txt deleted file mode 100644 index 9dbfeee..0000000 --- a/Readme.txt +++ /dev/null @@ -1 +0,0 @@ -Some text \ No newline at end of file diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/4x4_key.LST b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/4x4_key.LST new file mode 100644 index 0000000..8856ed8 --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/4x4_key.LST @@ -0,0 +1,106 @@ +C51 COMPILER V9.60.7.0 4X4_KEY 07/10/2026 17:02:31 PAGE 1 + + +C51 COMPILER V9.60.7.0, COMPILATION OF MODULE 4X4_KEY +OBJECT MODULE PLACED IN 4x4_key.OBJ +COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 4x4_key.c BROWSE DEBUG OBJECTEXTEND + +line level source + + 1 //#include //including sfr registers for ports of the controller + 2 //#include + 3 //#include + 4 + 5 //#include + 6 #include + 7 #include + 8 #include <4x4_key.h> + 9 + 10 //Keypad Connections + 11 sbit R1 = P0^0; + 12 sbit R2 = P0^1; + 13 sbit R3 = P0^2; + 14 sbit R4 = P0^3; + 15 sbit C1 = P0^4; + 16 sbit C2 = P0^5; + 17 sbit C3 = P0^6; + 18 sbit C4 = P0^7; + 19 //============================================================================== + 20 unsigned char Read_Keypad(void) + 21 { + 22 1 C1=1; + 23 1 C2=1; + 24 1 C3=1; + 25 1 C4=1; + 26 1 R1=0; + 27 1 R2=1; + 28 1 R3=1; + 29 1 R4=1; + 30 1 /*if(C1==0){delay(100);while(C1==0);return '7';} + 31 1 if(C2==0){delay(100);while(C2==0);return '8';} + 32 1 if(C3==0){delay(100);while(C3==0);return '9';} + 33 1 if(C4==0){delay(100);while(C4==0);return 'C';} */ + 34 1 + 35 1 if(C1==0)return 0x01; + 36 1 if(C2==0)return 0x02; + 37 1 if(C3==0)return 0x03; + 38 1 if(C4==0)return 'A'; + 39 1 R1=1; + 40 1 R2=0; + 41 1 R3=1; + 42 1 R4=1; + 43 1 /*if(C1==0){delay(100);while(C1==0);return '4';} + 44 1 if(C2==0){delay(100);while(C2==0);return '5';} + 45 1 if(C3==0){delay(100);while(C3==0);return '6';} + 46 1 if(C4==0){delay(100);while(C4==0);return 'B';} */ + 47 1 + 48 1 if(C1==0)return 0x04; + 49 1 if(C2==0)return 0x05; + 50 1 if(C3==0)return 0x06; + 51 1 if(C4==0)return 'B'; + 52 1 R1=1; + 53 1 R2=1; + 54 1 R3=0; + 55 1 R4=1; + C51 COMPILER V9.60.7.0 4X4_KEY 07/10/2026 17:02:31 PAGE 2 + + 56 1 /*if(C1==0){delay(100);while(C1==0);return '1';} + 57 1 if(C2==0){delay(100);while(C2==0);return '2';} + 58 1 if(C3==0){delay(100);while(C3==0);return '3';} + 59 1 if(C4==0){delay(100);while(C4==0);return 'A';} */ + 60 1 + 61 1 if(C1==0)return 0x07; + 62 1 if(C2==0)return 0x08; + 63 1 if(C3==0)return 0x09; + 64 1 if(C4==0)return 'C'; + 65 1 R1=1; + 66 1 R2=1; + 67 1 R3=1; + 68 1 R4=0; + 69 1 /*if(C1==0){delay(100);while(C1==0);return '*';} + 70 1 if(C2==0){delay(100);while(C2==0);return '0';} + 71 1 if(C3==0){delay(100);while(C3==0);return '#';} + 72 1 if(C4==0){delay(100);while(C4==0);return 'D';} */ + 73 1 + 74 1 if(C1==0)return '*'; + 75 1 if(C2==0)return 0x00; + 76 1 if(C3==0)return '#'; + 77 1 if(C4==0)return 'D'; + 78 1 + 79 1 return 'x'; + 80 1 } + 81 + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 139 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/4x4_key.OBJ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/4x4_key.OBJ new file mode 100644 index 0000000..e956f8d Binary files /dev/null and b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/4x4_key.OBJ differ diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/4x4_key.c b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/4x4_key.c new file mode 100644 index 0000000..10229e0 --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/4x4_key.c @@ -0,0 +1,81 @@ +//#include //including sfr registers for ports of the controller +//#include +//#include + +//#include +#include +#include +#include <4x4_key.h> + +//Keypad Connections +sbit R1 = P0^0; +sbit R2 = P0^1; +sbit R3 = P0^2; +sbit R4 = P0^3; +sbit C1 = P0^4; +sbit C2 = P0^5; +sbit C3 = P0^6; +sbit C4 = P0^7; +//============================================================================== +unsigned char Read_Keypad(void) +{ + C1=1; + C2=1; + C3=1; + C4=1; + R1=0; + R2=1; + R3=1; + R4=1; + /*if(C1==0){delay(100);while(C1==0);return '7';} + if(C2==0){delay(100);while(C2==0);return '8';} + if(C3==0){delay(100);while(C3==0);return '9';} + if(C4==0){delay(100);while(C4==0);return 'C';} */ + + if(C1==0)return 0x01; + if(C2==0)return 0x02; + if(C3==0)return 0x03; + if(C4==0)return 'A'; + R1=1; + R2=0; + R3=1; + R4=1; + /*if(C1==0){delay(100);while(C1==0);return '4';} + if(C2==0){delay(100);while(C2==0);return '5';} + if(C3==0){delay(100);while(C3==0);return '6';} + if(C4==0){delay(100);while(C4==0);return 'B';} */ + + if(C1==0)return 0x04; + if(C2==0)return 0x05; + if(C3==0)return 0x06; + if(C4==0)return 'B'; + R1=1; + R2=1; + R3=0; + R4=1; + /*if(C1==0){delay(100);while(C1==0);return '1';} + if(C2==0){delay(100);while(C2==0);return '2';} + if(C3==0){delay(100);while(C3==0);return '3';} + if(C4==0){delay(100);while(C4==0);return 'A';} */ + + if(C1==0)return 0x07; + if(C2==0)return 0x08; + if(C3==0)return 0x09; + if(C4==0)return 'C'; + R1=1; + R2=1; + R3=1; + R4=0; + /*if(C1==0){delay(100);while(C1==0);return '*';} + if(C2==0){delay(100);while(C2==0);return '0';} + if(C3==0){delay(100);while(C3==0);return '#';} + if(C4==0){delay(100);while(C4==0);return 'D';} */ + + if(C1==0)return '*'; + if(C2==0)return 0x00; + if(C3==0)return '#'; + if(C4==0)return 'D'; + + return 'x'; +} + diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/4x4_key.h b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/4x4_key.h new file mode 100644 index 0000000..48d9ae1 --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/4x4_key.h @@ -0,0 +1 @@ +unsigned char Read_Keypad(void); \ No newline at end of file diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_AD7780.C b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_AD7780.C new file mode 100644 index 0000000..990f504 --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_AD7780.C @@ -0,0 +1,87 @@ +/*this is the pgm for ADC 7780 using SPI Protocol*/ + +//#pragma ot(9,size) +//#pragma nointpromote +//#include +//#include +//#include + +//#include +#include + +#include +#include +#include + +#include +#include +#include + +//----------------------------------------------------------------------------- +sbit clk = P3^3; +sbit dout = P3^2; + +sbit PDRST = P3^4; +//----------------------------------------------------------------------------- +extern unsigned char data Adc_Value_LSB,Adc_Value_MSB,Adc_Value_MLSB,Status_Bits; +extern unsigned int idata adc_val,filter_val; +extern bit Adc_Data_Ready,Adc_Status_bit73; + +unsigned int data Adc_Value; +extern bit adc_pol,rd_ok; +//-------------------------------------------------------------------------- +void init_adc_AD7780(void) +{ + PDRST = 0; + delay(5); + PDRST = 1; +} +//----------------------------------------------------------------------------- +unsigned char Read_Adc_AD7780(void) +{ + unsigned char dat=0; + char i; + for(i=0;i<8;i++) + { + dat <<= 1; + clk=1; + nop(); + clk=0; + nop(); + if(dout) dat |= 0x01; + else dat |= 0x00; + rst_wdt(); + } + clk=1; + return(dat); +} +//------------------------------------------------------------------------- +void Get_Adc_Result_AD7780(void) +{ + if(Adc_Data_Ready) + { + Adc_Value_MSB = Read_Adc_AD7780(); + Adc_Value_MLSB = Read_Adc_AD7780(); + Adc_Value_LSB = Read_Adc_AD7780(); + + if((Adc_Value_MSB & 0x80)==0x80)adc_pol=0; + else adc_pol=1; + + Adc_Value_LSB = (Adc_Value_MLSB << 2 ) + (Adc_Value_LSB >> 6); + Adc_Value_MSB = (Adc_Value_MSB << 2 ) + (Adc_Value_MLSB >> 6); + Adc_Value = ((unsigned int)Adc_Value_MSB * 0x100) + Adc_Value_LSB; + rst_wdt(); + Status_Bits = Read_Adc_AD7780(); + Adc_Data_Ready=0; + EX0 = 1; + } + if(Status_Bits == 73) + { + adc_val = Adc_Value; + //filter_val = adc_val; //No filteration + Adc_Status_bit73 = 1; + rd_ok=1; + } +} +//------------------------------------------------------------------------- + diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_AD7780.LST b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_AD7780.LST new file mode 100644 index 0000000..8b4c976 --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_AD7780.LST @@ -0,0 +1,112 @@ +C51 COMPILER V9.60.7.0 ADC_AD7780 07/10/2026 17:02:31 PAGE 1 + + +C51 COMPILER V9.60.7.0, COMPILATION OF MODULE ADC_AD7780 +OBJECT MODULE PLACED IN ADC_AD7780.OBJ +COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ADC_AD7780.C BROWSE DEBUG OBJECTEXTEND + +line level source + + 1 /*this is the pgm for ADC 7780 using SPI Protocol*/ + 2 + 3 //#pragma ot(9,size) + 4 //#pragma nointpromote + 5 //#include + 6 //#include + 7 //#include + 8 + 9 //#include + 10 #include + 11 + 12 #include + 13 #include + 14 #include + 15 + 16 #include + 17 #include + 18 #include + 19 + 20 //----------------------------------------------------------------------------- + 21 sbit clk = P3^3; + 22 sbit dout = P3^2; + 23 + 24 sbit PDRST = P3^4; + 25 //----------------------------------------------------------------------------- + 26 extern unsigned char data Adc_Value_LSB,Adc_Value_MSB,Adc_Value_MLSB,Status_Bits; + 27 extern unsigned int idata adc_val,filter_val; + 28 extern bit Adc_Data_Ready,Adc_Status_bit73; + 29 + 30 unsigned int data Adc_Value; + 31 extern bit adc_pol,rd_ok; + 32 //-------------------------------------------------------------------------- + 33 void init_adc_AD7780(void) + 34 { + 35 1 PDRST = 0; + 36 1 delay(5); + 37 1 PDRST = 1; + 38 1 } + 39 //----------------------------------------------------------------------------- + 40 unsigned char Read_Adc_AD7780(void) + 41 { + 42 1 unsigned char dat=0; + 43 1 char i; + 44 1 for(i=0;i<8;i++) + 45 1 { + 46 2 dat <<= 1; + 47 2 clk=1; + 48 2 nop(); + 49 2 clk=0; + 50 2 nop(); + 51 2 if(dout) dat |= 0x01; + 52 2 else dat |= 0x00; + 53 2 rst_wdt(); + 54 2 } + 55 1 clk=1; + C51 COMPILER V9.60.7.0 ADC_AD7780 07/10/2026 17:02:31 PAGE 2 + + 56 1 return(dat); + 57 1 } + 58 //------------------------------------------------------------------------- + 59 void Get_Adc_Result_AD7780(void) + 60 { + 61 1 if(Adc_Data_Ready) + 62 1 { + 63 2 Adc_Value_MSB = Read_Adc_AD7780(); + 64 2 Adc_Value_MLSB = Read_Adc_AD7780(); + 65 2 Adc_Value_LSB = Read_Adc_AD7780(); + 66 2 + 67 2 if((Adc_Value_MSB & 0x80)==0x80)adc_pol=0; + 68 2 else adc_pol=1; + 69 2 + 70 2 Adc_Value_LSB = (Adc_Value_MLSB << 2 ) + (Adc_Value_LSB >> 6); + 71 2 Adc_Value_MSB = (Adc_Value_MSB << 2 ) + (Adc_Value_MLSB >> 6); + 72 2 Adc_Value = ((unsigned int)Adc_Value_MSB * 0x100) + Adc_Value_LSB; + 73 2 rst_wdt(); + 74 2 Status_Bits = Read_Adc_AD7780(); + 75 2 Adc_Data_Ready=0; + 76 2 EX0 = 1; + 77 2 } + 78 1 if(Status_Bits == 73) + 79 1 { + 80 2 adc_val = Adc_Value; + 81 2 //filter_val = adc_val; //No filteration + 82 2 Adc_Status_bit73 = 1; + 83 2 rd_ok=1; + 84 2 } + 85 1 } + 86 //------------------------------------------------------------------------- + 87 + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 164 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = 2 2 + IDATA SIZE = ---- ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_AD7780.OBJ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_AD7780.OBJ new file mode 100644 index 0000000..ebd54fb Binary files /dev/null and b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_AD7780.OBJ differ diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_AD7780.h b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_AD7780.h new file mode 100644 index 0000000..81bca4a --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_AD7780.h @@ -0,0 +1,6 @@ + +//extern void Get_Adc_Result(void); +//extern void init_adc(void); + +extern void Get_Adc_Result_AD7780(void); +extern void init_adc_AD7780(void); \ No newline at end of file diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_HX711.C b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_HX711.C new file mode 100644 index 0000000..011cce8 --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_HX711.C @@ -0,0 +1,201 @@ +/*this is the pgm for ADC 7780 using SPI Protocol*/ +#if defined( _HX711 ) +//#pragma ot(9,size) +//#pragma nointpromote +//#include +//#include +// #include +#include + + +#include +#include +#include + +#include +#include +#include +//----------------------------------------------------------------------------- +sbit dout = P3^2; +//sbit clk = P3^4; +sbit clk = P3^3; +sbit PDRST = P3^5; + +//sbit SPEED = P1^7; +//----------------------------------------------------------------------------- +extern unsigned char data Adc_Value_LSB,Adc_Value_MSB,Adc_Value_MLSB,Status_Bits; +extern unsigned int idata filter_val; +extern unsigned int idata adc_val; +extern bit Adc_Data_Ready,Adc_Status_bit73; + +unsigned int data Temp_Adc_Value; +extern bit adc_pol,rd_ok; +//unsigned char set_gain=1,GAIN=1; +//-------------------------------------------------------------------------- +unsigned char Read_Adc_HX711(void); +//-------------------------------------------------------------------------- +//void init_adc(void) +void init_adc_HX711(void) +{ + unsigned char i; + + /*if(set_gain < 64) GAIN = 2; //32, channel B + else if(set_gain < 128) GAIN = 3; //64, channel A + else GAIN = 1; //128, channel A */ + + PDRST = 0; + delay(5); + + /*SPEED=0;//10 SPS + //SPEED=1;//80 SPS + GAIN=1;//0mV to +19.5mV (Gain = 128) + //GAIN=0; //0mV to +39mV (Gain = 64)*/ + + PDRST = 1; + delay(5); + + clk=0; + nop(); + nop(); + delay(5); + + //for(i=0;i<=26;i++) + //for(i=0;i<(24+GAIN);i++) + for(i=0;i<25;i++) + { + clk=1; + nop(); + clk=0; + nop(); + rst_wdt(); + } + delay(500); +} +//----------------------------------------------------------------------------- +unsigned char Read_Adc_HX711(void) +{ + unsigned char dat=0; + char i; + for(i=0;i<8;i++) + { + dat <<= 1; + clk=1; + nop(); + clk=0; + nop(); + if(dout)dat |= 0x01; + else dat |= 0x00; + rst_wdt(); + } + //clk=1; + return(dat); +} +//------------------------------------------------------------------------- +//void Get_Adc_Result(void) +void Get_Adc_Result_HX711(void) +{ + if(Adc_Data_Ready) + { + Adc_Value_MSB = Read_Adc_HX711(); + Adc_Value_MLSB = Read_Adc_HX711(); + Adc_Value_LSB = Read_Adc_HX711(); + + if((Adc_Value_MSB & 0x80)==0x80)adc_pol=1; + else adc_pol=0; + + /*Adc_Value_LSB = (Adc_Value_MLSB << 2 ) + (Adc_Value_LSB >> 6); + Adc_Value_MSB = (Adc_Value_MSB << 2 ) + (Adc_Value_MLSB >> 6);*/ + Adc_Value_LSB = (Adc_Value_MLSB << 1 ) + (Adc_Value_LSB >> 7); + Adc_Value_MSB = (Adc_Value_MSB << 1 ) + (Adc_Value_MLSB >> 7); + Temp_Adc_Value = ((unsigned int)Adc_Value_MSB * 0x100) + Adc_Value_LSB; + //Status_Bits = Read_Adc(); + Adc_Data_Ready=0; + //EX0 = 1; + } + //filter_val = Temp_Adc_Value; + adc_val = Temp_Adc_Value; + rd_ok=1; +/* if(Status_Bits == 73) + { + adc_val = Adc_Value; + filter_val = adc_val; //No filteration + Adc_Status_bit73 = 1; + }*/ + clk=1; + nop(); + clk=0; +} +//------------------------------------------------------------------------- +/*unsigned char Read_Adc(void) +{ + unsigned char dat=0; + char i; + Temp_Adc_Value=0; + + clk=0; + nop(); + //delay(1); + + for(i=0;i<24;i++) + { + clk=1; + nop(); + //delay(1); + + clk=0; + nop(); + //delay(1); + if(i==0) + { + if(dout) dat |= 0x01; + else dat |= 0x00; + } + if(i>1 && i<18) + { + Temp_Adc_Value <<= 1; + if(dout) Temp_Adc_Value |= 0x01; + else Temp_Adc_Value |= 0x00; + } + //rst_wdt(); + } + //clk=1; + return(dat); +}*/ +//------------------------------------------------------------------------- +/*void Get_Adc_Result(void) +{ + clk=0; + nop(); + nop(); + //delay(5); + + //while(dout); + //Adc_Data_Ready=1; + + + if(Adc_Data_Ready) + { + //Adc_Value_MSB = Read_Adc(); + //Adc_Value_MLSB = Read_Adc(); + //Adc_Value_LSB = Read_Adc(); + //Adc_Value_LSB = (Adc_Value_MLSB << 4 ) + (Adc_Value_LSB >> 4); + //Adc_Value_MSB = (Adc_Value_MSB << 4 ) + (Adc_Value_MLSB >> 4); + //Adc_Value = ((unsigned int)Adc_Value_MSB * 0x100) + Adc_Value_LSB; + //rst_wdt(); + Status_Bits = Read_Adc(); + adc_value = Temp_Adc_Value; + //adc_val = Adc_Value>>1; + //adc_val = (( ~( Adc_Value - 1 ) ) & 0xFFFF )>>1; + Adc_Data_Ready=0; + //EX0 = 1; + } + //if(Status_Bits == 73) + //{ + //adc_val = Adc_Value; + //filter_val = adc_val; //No filteration + // Adc_Status_bit73 = 1; + //} +} */ +//------------------------------------------------------------------------ + + #endif \ No newline at end of file diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_HX711.LST b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_HX711.LST new file mode 100644 index 0000000..4dbcf27 --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_HX711.LST @@ -0,0 +1,230 @@ +C51 COMPILER V9.60.7.0 ADC_HX711 07/10/2026 17:02:32 PAGE 1 + + +C51 COMPILER V9.60.7.0, COMPILATION OF MODULE ADC_HX711 +OBJECT MODULE PLACED IN ADC_HX711.OBJ +COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ADC_HX711.C BROWSE DEBUG OBJECTEXTEND + +line level source + + 1 /*this is the pgm for ADC 7780 using SPI Protocol*/ + 2 #if defined( _HX711 ) + //#pragma ot(9,size) + //#pragma nointpromote + //#include + //#include + // #include + #include + + + #include + #include + #include + + #include + #include + #include + //----------------------------------------------------------------------------- + sbit dout = P3^2; + //sbit clk = P3^4; + sbit clk = P3^3; + sbit PDRST = P3^5; + + //sbit SPEED = P1^7; + //----------------------------------------------------------------------------- + extern unsigned char data Adc_Value_LSB,Adc_Value_MSB,Adc_Value_MLSB,Status_Bits; + extern unsigned int idata filter_val; + extern unsigned int idata adc_val; + extern bit Adc_Data_Ready,Adc_Status_bit73; + + unsigned int data Temp_Adc_Value; + extern bit adc_pol,rd_ok; + //unsigned char set_gain=1,GAIN=1; + //-------------------------------------------------------------------------- + unsigned char Read_Adc_HX711(void); + //-------------------------------------------------------------------------- + //void init_adc(void) + void init_adc_HX711(void) + { + unsigned char i; + + /*if(set_gain < 64) GAIN = 2; //32, channel B + else if(set_gain < 128) GAIN = 3; //64, channel A + else GAIN = 1; //128, channel A */ + + PDRST = 0; + delay(5); + + /*SPEED=0;//10 SPS + //SPEED=1;//80 SPS + GAIN=1;//0mV to +19.5mV (Gain = 128) + //GAIN=0; //0mV to +39mV (Gain = 64)*/ + + PDRST = 1; + delay(5); + C51 COMPILER V9.60.7.0 ADC_HX711 07/10/2026 17:02:32 PAGE 2 + + + clk=0; + nop(); + nop(); + delay(5); + + //for(i=0;i<=26;i++) + //for(i=0;i<(24+GAIN);i++) + for(i=0;i<25;i++) + { + clk=1; + nop(); + clk=0; + nop(); + rst_wdt(); + } + delay(500); + } + //----------------------------------------------------------------------------- + unsigned char Read_Adc_HX711(void) + { + unsigned char dat=0; + char i; + for(i=0;i<8;i++) + { + dat <<= 1; + clk=1; + nop(); + clk=0; + nop(); + if(dout)dat |= 0x01; + else dat |= 0x00; + rst_wdt(); + } + //clk=1; + return(dat); + } + //------------------------------------------------------------------------- + //void Get_Adc_Result(void) + void Get_Adc_Result_HX711(void) + { + if(Adc_Data_Ready) + { + Adc_Value_MSB = Read_Adc_HX711(); + Adc_Value_MLSB = Read_Adc_HX711(); + Adc_Value_LSB = Read_Adc_HX711(); + + if((Adc_Value_MSB & 0x80)==0x80)adc_pol=1; + else adc_pol=0; + + /*Adc_Value_LSB = (Adc_Value_MLSB << 2 ) + (Adc_Value_LSB >> 6); + Adc_Value_MSB = (Adc_Value_MSB << 2 ) + (Adc_Value_MLSB >> 6);*/ + Adc_Value_LSB = (Adc_Value_MLSB << 1 ) + (Adc_Value_LSB >> 7); + Adc_Value_MSB = (Adc_Value_MSB << 1 ) + (Adc_Value_MLSB >> 7); + Temp_Adc_Value = ((unsigned int)Adc_Value_MSB * 0x100) + Adc_Value_LSB; + //Status_Bits = Read_Adc(); + Adc_Data_Ready=0; + //EX0 = 1; + } + //filter_val = Temp_Adc_Value; + adc_val = Temp_Adc_Value; + rd_ok=1; + C51 COMPILER V9.60.7.0 ADC_HX711 07/10/2026 17:02:32 PAGE 3 + + /* if(Status_Bits == 73) + { + adc_val = Adc_Value; + filter_val = adc_val; //No filteration + Adc_Status_bit73 = 1; + }*/ + clk=1; + nop(); + clk=0; + } + //------------------------------------------------------------------------- + /*unsigned char Read_Adc(void) + { + unsigned char dat=0; + char i; + Temp_Adc_Value=0; + + clk=0; + nop(); + //delay(1); + + for(i=0;i<24;i++) + { + clk=1; + nop(); + //delay(1); + + clk=0; + nop(); + //delay(1); + if(i==0) + { + if(dout) dat |= 0x01; + else dat |= 0x00; + } + if(i>1 && i<18) + { + Temp_Adc_Value <<= 1; + if(dout) Temp_Adc_Value |= 0x01; + else Temp_Adc_Value |= 0x00; + } + //rst_wdt(); + } + //clk=1; + return(dat); + }*/ + //------------------------------------------------------------------------- + /*void Get_Adc_Result(void) + { + clk=0; + nop(); + nop(); + //delay(5); + + //while(dout); + //Adc_Data_Ready=1; + + + if(Adc_Data_Ready) + { + //Adc_Value_MSB = Read_Adc(); + //Adc_Value_MLSB = Read_Adc(); + C51 COMPILER V9.60.7.0 ADC_HX711 07/10/2026 17:02:32 PAGE 4 + + //Adc_Value_LSB = Read_Adc(); + //Adc_Value_LSB = (Adc_Value_MLSB << 4 ) + (Adc_Value_LSB >> 4); + //Adc_Value_MSB = (Adc_Value_MSB << 4 ) + (Adc_Value_MLSB >> 4); + //Adc_Value = ((unsigned int)Adc_Value_MSB * 0x100) + Adc_Value_LSB; + //rst_wdt(); + Status_Bits = Read_Adc(); + adc_value = Temp_Adc_Value; + //adc_val = Adc_Value>>1; + //adc_val = (( ~( Adc_Value - 1 ) ) & 0xFFFF )>>1; + Adc_Data_Ready=0; + //EX0 = 1; + } + //if(Status_Bits == 73) + //{ + //adc_val = Adc_Value; + //filter_val = adc_val; //No filteration + // Adc_Status_bit73 = 1; + //} + } */ + //------------------------------------------------------------------------ + + #endif + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = ---- ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- ---- + IDATA SIZE = ---- ---- + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_HX711.OBJ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_HX711.OBJ new file mode 100644 index 0000000..093cad5 Binary files /dev/null and b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_HX711.OBJ differ diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_HX711.h b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_HX711.h new file mode 100644 index 0000000..25e64cb --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ADC_HX711.h @@ -0,0 +1,17 @@ + +/*sbit dout = P1^3; +sbit clk = P1^2; +sbit PDRST = P1^1;*/ + +/*sbit dout = P3^2; +sbit clk = P3^3; +sbit PDRST = P3^4;*/ +/*sbit SPEED = P3^5; +sbit GAIN = P0^0;*/ + +//extern void Get_Adc_Result(void); +//extern void init_adc(void); + +extern void init_adc_HX711(void); +extern void Get_Adc_Result_HX711(void); + diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/IAP.c b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/IAP.c new file mode 100644 index 0000000..e121324 --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/IAP.c @@ -0,0 +1,249 @@ +/*********************************************************************************************************** +* demoIAP.c - Sample IAP C51 code for SST89x516RDx/SST89x58RDx Devices +* +* +* This sample code provides programming routines using In-Application +* Programming (IAP). +* This sample code is for the user’s reference only. SST does not +* guarantee the functionality or the usefulness of the sample code. +* +* In the SST89x516RDx/SST89x58RDx MCU, there are two blocks of flash +* memory. This code is to write data to block1 starting at 1000H +* (for the SST89x516RDx) or E000H (for the SST89x58RDx) by running IAP +* operations from block 0. The default set up is for SST89x516RDx. +* When using SST89x58RDx, please modify the global variable BLK1_DST_ADDR +* following the instruction below the variable definition. +* +* The companion SST89x516RDx/SST89x58RDx MCU data sheet should be +* reviewed in conjunction with this sample code. +* +* Note: This demo program is specifically for SST89x516RDx/SST89x58RDx devices. +***********************************************************************************************************/ +//#include +//#include + +#include +#include +#include +#include +//********************************************************************************************************** +extern unsigned char idata EEPROM_block; +/*********************************************************************************************************** +* FlashFlex MCU SFR Memory Addresses +***********************************************************************************************************/ +//sfr SFCF = 0xB1; /*SuperFlash Configuration*/ +//sfr SFCM = 0xB2; /*SuperFlash Command*/ +//sfr SFAL = 0xB3; /*SuperFlash Address Low*/ +//sfr SFAH = 0xB4; /*SuperFlash Address High*/ +//sfr SFDT = 0xB5; /*SuperFlash Data*/ +//sfr SFST = 0xB6; /*SuperFlash Status*/ +/*********************************************************************************************************** +* FlashFlex MCU IAP Commands +***********************************************************************************************************/ +#define SFCM_SE 0x0B; /*Sector-Erase IAP cmd*/ +#define SFCM_VB 0x0C; /*Byte-Verify IAP cmd*/ +#define SFCM_PB 0x0E; /*Byte-Program IAP cmd*/ +/*********************************************************************************************************** +* Global Variable Definition +***********************************************************************************************************/ +const unsigned short int BLK1_DST_ADDR = 0x1000; +/*SST89x516RDx destination address (in the other on-chip flash memory block) +where data will be written to, which is above BSL code space. +Please comment out this line and uncomment the following line if SST89x58RDx is used*/ +/*const unsigned short int BLK1_DST_ADDR = 0x0F000; */ +/*SST89x58RDx destination address (in the other on-chip flash memory block) +where data will be written to, which is above BSL code space. +Please comment out this line and uncomment the previous line if SST89x516RDx is used*/ +const unsigned char SECT_SIZE = 0x80; /*number of bytes in a sector*/ +unsigned char ErrorCode; /*show the result of the operation*/ +//********************************************************************************************************* +/*©2008 Silicon Storage Technology, Inc. S72048-03-000 8/08 +Application Note +FlashFlex Microcontroller +In-Application Programming Example Using C +3*/ +/*********************************************************************************************************** +* Function Prototype +***********************************************************************************************************/ +//void sector_erase(unsigned short int dataAddr); +//void byte_program(unsigned short int dataAddr, unsigned char dataByte); +//unsigned char byte_verify(unsigned short int dataAddr); +int ready(); +void error(); +/*********************************************************************************************************** +* MAIN PROGRAM +* To program a sector of data bytes (starting from 0, increment by 1) +* into block 1, starting address is BLK1_DST_ADDR. +* When the IAP is completed successfully, ErrorCode is 0. Otherwise, +* ErrorCode is 1. +*********************************************************************************************************/ +void EEPROM_copy_to_sectors(unsigned short int dataAddr, unsigned char EEdataByteAddr) +{ + //unsigned short int destAddr = BLK1_DST_ADDR; + unsigned short int destAddr = dataAddr; + unsigned char byteCnt ; //byte count/ + unsigned char origData; //store the data byte for IAP operation + unsigned char verifyData; //verify the data byte + unsigned char sectorNo=0; //each sector 128 bytes + +for(sectorNo=0; sectorNo<8; sectorNo++) + { + sector_erase(destAddr); //erase sector area before writing there + origData = 0; + if(sectorNo==0) {EEPROM_block = Block_0;EEdataByteAddr=0;} + else if(sectorNo==1) {EEPROM_block = Block_0;} + else if(sectorNo==2) {EEPROM_block = Block_1;EEdataByteAddr=0;} + else if(sectorNo==3) {EEPROM_block = Block_1;} + else if(sectorNo==4) {EEPROM_block = Block_2;EEdataByteAddr=0;} + else if(sectorNo==5) {EEPROM_block = Block_2;} + else if(sectorNo==6) {EEPROM_block = Block_3;EEdataByteAddr=0;} + else if(sectorNo==7) {EEPROM_block = Block_3;} + rst_wdt(); + for(byteCnt=0; byteCnt>8; /*load high order address byte*/ + SFAL = destAddr; /*load low order address byte */ + SFCM = SFCM_SE; /*issue sector erase command */ + if(!ready()) error(); + return; +} +//********************************************************************************************************* +/*©2008 Silicon Storage Technology, Inc. S72048-03-000 8/08 +4 +Application Note +FlashFlex Microcontroller +In-Application Programming Example Using C */ +/*********************************************************************************************************** +* Byte-Program Subroutine +***********************************************************************************************************/ +void byte_program(unsigned short int dataAddr, unsigned char dataByte) +{ + unsigned short int destAddr = dataAddr; + SFCF = SFCF | 0x40; /*enable IAP */ + SFAH = destAddr>>8; /*load high order address byte*/ + SFAL = destAddr; /*load low order address byte */ + SFDT = dataByte; /*load data to be programmed */ + SFCM = SFCM_PB; /*issue byte program command */ + if(!ready()) error(); + return; +} +/*********************************************************************************************************** +* Byte-Verify Subroutine +***********************************************************************************************************/ +unsigned char byte_verify(unsigned short int dataAddr) +{ + unsigned short int destAddr = dataAddr; + unsigned char readByte; + SFCF = SFCF | 0x40; /*enable IAP */ + SFAH = destAddr>>8; /*load high order address byte*/ + SFAL = destAddr; /*load low order address byte */ + SFCM = SFCM_VB; /*issue byte verify command */ + readByte = SFDT; + SFCF = SFCF & 0xBF; /*turn off IAP*/ + SFDT = 0; + return readByte; +} +/*********************************************************************************************************** +* Ready Subroutine +* +* Purpose: To check if the IAP operation is completed. +* When it is done, turn off IAP configuration. +***********************************************************************************************************/ +int ready() +{ + unsigned long int TimeOut = 0; + while (TimeOut < 100000) + { + if ((SFST&4) == 0) /* Check if IAP is done */ + { /* IAP is done */ + SFCF = SFCF & 0xBF; /* turn off IAP*/ + SFDT = 0; /* any value other than 0x55 */ + return 1; /* IAP operation is completed*/ + } + TimeOut++; + } + SFCF = SFCF & 0xBF; /*turn off IAP*/ + SFDT = 0; /*any value other than 0x55*/ + return 0; /*IAP operation is NOT completed before time out*/ +} +//******************************************************************************************************** +/*©2008 Silicon Storage Technology, Inc. S72048-03-000 8/08 +Application Note +FlashFlex Microcontroller +In-Application Programming Example Using C +5*/ +/*********************************************************************************************************** +* Error Function +***********************************************************************************************************/ +void error() +{ + disp(0x11,0x11,0x0f,0x0a,0x01,0x16,0x11,0x11); //"Fail" + ErrorCode=1; /*IAP error*/ + //while(1) /*software trap*/ + //{} + #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) + if(KeyPressed == mode)return; + #endif +} +//********************************************************************************************************** +void sectors_copy_to_EEPROM(unsigned short int dataAddr, unsigned char EEdataByteAddr) +{ + //unsigned short int destAddr = BLK1_DST_ADDR; + unsigned short int destAddr = dataAddr; + unsigned char byteCnt ; //byte count/ + unsigned char verifyData; //verify the data byte + unsigned char sectorNo=0; //each sector 128 bytes + +for(sectorNo=0; sectorNo<8; sectorNo++) + { + if(sectorNo==0) {EEPROM_block = Block_0;EEdataByteAddr=0;} + else if(sectorNo==1) {EEPROM_block = Block_0;} + else if(sectorNo==2) {EEPROM_block = Block_1;EEdataByteAddr=0;} + else if(sectorNo==3) {EEPROM_block = Block_1;} + else if(sectorNo==4) {EEPROM_block = Block_2;EEdataByteAddr=0;} + else if(sectorNo==5) {EEPROM_block = Block_2;} + else if(sectorNo==6) {EEPROM_block = Block_3;EEdataByteAddr=0;} + else if(sectorNo==7) {EEPROM_block = Block_3;} + rst_wdt(); + for(byteCnt=0; byteCnt + +
+

µVision Build Log

+

Project:

+E:\FILLTRONICS\CHECKING POGRAMS\UNDER GOING PROJECTS\New folder\Tin_fill_ 4x4-&_6Key_8digit_new_keyboard_ffd_36_recipe_2speed_HX711_AD7780 - 55wd\fill.uvproj +Project File Date: 07/24/2023 + +

Output:

+Build target 'Target 1' +compiling main.c... +compiling ser_disp.c... +compiling utility.c... +compiling eeprom.c... +compiling 4x4_key.c... +compiling ADC_AD7780.C... +compiling ADC_HX711.C... +linking... +Program Size: data=185.1 xdata=0 code=19562 +creating hex file from "Tin_fill_4x4_key_36Recipe_ad7780_55WD"... +"Tin_fill_4x4_key_36Recipe_ad7780_55WD" - 0 Error(s), 0 Warning(s). +Build target 'Target 1' +compiling main.c... +compiling ser_disp.c... +compiling utility.c... +compiling eeprom.c... +compiling 4x4_key.c... +compiling ADC_AD7780.C... +compiling ADC_HX711.C... +linking... +Program Size: data=185.1 xdata=0 code=19562 +creating hex file from "Tin_fill_4x4_key_36Recipe_ad7780_55WD"... +"Tin_fill_4x4_key_36Recipe_ad7780_55WD" - 0 Error(s), 0 Warning(s). +Build target 'Target 1' +compiling main.c... +compiling ser_disp.c... +compiling utility.c... +compiling eeprom.c... +compiling 4x4_key.c... +compiling ADC_AD7780.C... +compiling ADC_HX711.C... +linking... +Program Size: data=185.1 xdata=0 code=19562 +creating hex file from "Tin_fill_4x4_key_36Recipe_ad7780_55WD_default"... +"Tin_fill_4x4_key_36Recipe_ad7780_55WD_default" - 0 Error(s), 0 Warning(s). diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/Tin_fill_4x4_key_36Recipe_ad7780_55WD_default b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/Tin_fill_4x4_key_36Recipe_ad7780_55WD_default new file mode 100644 index 0000000..1642ff1 Binary files /dev/null and b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/Tin_fill_4x4_key_36Recipe_ad7780_55WD_default differ diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/Tin_fill_4x4_key_36Recipe_ad7780_55WD_default.M51 b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/Tin_fill_4x4_key_36Recipe_ad7780_55WD_default.M51 new file mode 100644 index 0000000..95b2a8c --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/Tin_fill_4x4_key_36Recipe_ad7780_55WD_default.M51 @@ -0,0 +1,3587 @@ +BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 1 + + +BL51 BANKED LINKER/LOCATER V6.22.4.0, INVOKED BY: +C:\KEIL\C51\BIN\BL51.EXE main.obj, ser_disp.obj, utility.obj, eeprom.obj, 4x4_key.obj, ADC_AD7780.obj, ADC_HX711.obj TO +>> Tin_fill_4x4_key_36Recipe_ad7780_55WD_default RAMSIZE (256) + + +MEMORY MODEL: SMALL + + +INPUT MODULES INCLUDED: + main.obj (MAIN) + ser_disp.obj (SER_DISP) + utility.obj (UTILITY) + eeprom.obj (EEPROM) + 4x4_key.obj (4X4_KEY) + ADC_AD7780.obj (ADC_AD7780) + ADC_HX711.obj (ADC_HX711) + C:\KEIL\C51\LIB\C51S.LIB (?C_STARTUP) + C:\KEIL\C51\LIB\C51S.LIB (?C?SCDIV) + C:\KEIL\C51\LIB\C51S.LIB (?C?CLDOPTR) + C:\KEIL\C51\LIB\C51S.LIB (?C?IMUL) + C:\KEIL\C51\LIB\C51S.LIB (?C?UIDIV) + C:\KEIL\C51\LIB\C51S.LIB (?C?LMUL) + C:\KEIL\C51\LIB\C51S.LIB (?C?ULDIV) + C:\KEIL\C51\LIB\C51S.LIB (?C?ULCMP) + C:\KEIL\C51\LIB\C51S.LIB (?C?ULSHR) + C:\KEIL\C51\LIB\C51S.LIB (?C?LSHL) + C:\KEIL\C51\LIB\C51S.LIB (?C?LLDIDATA) + C:\KEIL\C51\LIB\C51S.LIB (?C?LLDIDATA0) + C:\KEIL\C51\LIB\C51S.LIB (?C?LSTIDATA) + C:\KEIL\C51\LIB\C51S.LIB (?C?LSTKIDATA) + C:\KEIL\C51\LIB\C51S.LIB (ABS) + C:\KEIL\C51\LIB\C51S.LIB (?C_INIT) + + +LINK MAP OF MODULE: Tin_fill_4x4_key_36Recipe_ad7780_55WD_default (MAIN) + + + TYPE BASE LENGTH RELOCATION SEGMENT NAME + ----------------------------------------------------- + + * * * * * * * D A T A M E M O R Y * * * * * * * + REG 0000H 0008H ABSOLUTE "REG BANK 0" + DATA 0008H 0002H UNIT ?DT?ADC_AD7780 + IDATA 000AH 0010H UNIT _IDATA_GROUP_ + 001AH 0006H *** GAP *** + BIT 0020H.0 0004H.7 UNIT ?BI?MAIN + BIT 0024H.7 0000H.2 UNIT _BIT_GROUP_ + 0025H.1 0000H.7 *** GAP *** + DATA 0026H 0030H UNIT ?DT?MAIN + DATA 0056H 0019H UNIT _DATA_GROUP_ + IDATA 006FH 0054H UNIT ?ID?MAIN + IDATA 00C3H 0001H UNIT ?STACK + + * * * * * * * C O D E M E M O R Y * * * * * * * + CODE 0000H 0003H ABSOLUTE + CODE 0003H 0003H ABSOLUTE + CODE 0006H 0015H UNIT ?PR?ACK?EEPROM + CODE 001BH 0003H ABSOLUTE + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 2 + + + CODE 001EH 08A0H UNIT ?PR?CHECK_KEYPAD?MAIN + CODE 08BEH 07FFH UNIT ?PR?MENU?MAIN + CODE 10BDH 0695H UNIT ?PR?CHECK_VALUES?MAIN + CODE 1752H 0627H UNIT ?PR?SETTINGS?MAIN + CODE 1D79H 0353H UNIT ?PR?CHECK_SWITCH?MAIN + CODE 20CCH 0349H UNIT ?PR?READ_VALUES?MAIN + CODE 2415H 0347H UNIT ?PR?SYS_PARAMTS?MAIN + CODE 275CH 0270H UNIT ?PR?SELECT_MENU?MAIN + CODE 29CCH 0248H UNIT ?C?LIB_CODE + CODE 2C14H 0245H UNIT ?PR?LOAD_EEP_DEFAULTS?MAIN + CODE 2E59H 0207H UNIT ?PR?SELF_TEST?MAIN + CODE 3060H 01D5H UNIT ?PR?CAL?MAIN + CODE 3235H 016BH UNIT ?PR?CLEAR_CURRENT_CUMULATIVE_BATCH?MAIN + CODE 33A0H 015AH UNIT ?PR?DISPLAY_CURRENT_BATCH?MAIN + CODE 34FAH 0153H UNIT ?PR?MAIN?MAIN + CODE 364DH 013BH UNIT ?PR?DISPLAY_TOTAL_BATCH?MAIN + CODE 3788H 013BH UNIT ?PR?CLEAR_BATCH_CUMULATIVE?MAIN + CODE 38C3H 0116H UNIT ?PR?DISPLAY_VALUE?MAIN + CODE 39D9H 010EH UNIT ?PR?CAL_FIND?MAIN + CODE 3AE7H 00FFH UNIT ?PR?RECIPE_MENU?MAIN + CODE 3BE6H 00FFH UNIT ?PR?DISPLAY_CURRENT_CUMULATIVE?MAIN + CODE 3CE5H 00DCH UNIT ?PR?DISPLAY_TOTAL_CUMULATIVE?MAIN + CODE 3DC1H 00DCH UNIT ?C_INITSEG + CODE 3E9DH 00BDH UNIT ?PR?_RTC_READLONG?EEPROM + CODE 3F5AH 00BBH UNIT ?PR?DEFAULTS?MAIN + CODE 4015H 00BAH UNIT ?PR?FILTER?MAIN + CODE 40CFH 00AEH UNIT ?PR?PROCESS?MAIN + CODE 417DH 00ACH UNIT ?PR?CAL_RST?MAIN + CODE 4229H 009AH UNIT ?PR?_LONG2BCD?SER_DISP + CODE 42C3H 008CH UNIT ?C_C51STARTUP + CODE 434FH 008BH UNIT ?PR?READ_KEYPAD?4X4_KEY + CODE 43DAH 007EH UNIT ?PR?PWD?MAIN + CODE 4458H 0070H UNIT ?PR?_VAL_READ?MAIN + CODE 44C8H 0069H UNIT ?PR?_RTC_WRITELONG?EEPROM + CODE 4531H 0068H UNIT ?PR?GET_ADC_RESULT_AD7780?ADC_AD7780 + CODE 4599H 0066H UNIT ?PR?TARE_CHK?MAIN + CODE 45FFH 0066H UNIT ?PR?_BATCH2BCD?SER_DISP + CODE 4665H 0062H UNIT ?PR?ADCINT0_ISR?MAIN + CODE 46C7H 0061H UNIT ?PR?DISPLAY?SER_DISP + CODE 4728H 0060H UNIT ?PR?_INCDEC?MAIN + CODE 4788H 005BH UNIT ?PR?_BLINK?MAIN + CODE 47E3H 004CH UNIT ?CO?MAIN + CODE 482FH 004AH UNIT ?PR?_BCD2BIN?MAIN + CODE 4879H 0049H UNIT ?PR?TIMER1_ISR?MAIN + CODE 48C2H 0049H UNIT ?PR?CALIBRATE?MAIN + CODE 490BH 0045H UNIT ?PR?_BIN2BCD?MAIN + CODE 4950H 0040H UNIT ?PR?DISPLAY_NAME?SER_DISP + CODE 4990H 0040H UNIT ?PR?_ARR_CMP?UTILITY + CODE 49D0H 003DH UNIT ?PR?DISP_CHECK?MAIN + CODE 4A0DH 0038H UNIT ?PR?_READ_EEPROM?EEPROM + CODE 4A45H 0032H UNIT ?CO?SER_DISP + CODE 4A77H 0030H UNIT ?PR?_DELAY?UTILITY + CODE 4AA7H 0030H UNIT ?PR?READ_ADC_AD7780?ADC_AD7780 + CODE 4AD7H 002EH UNIT ?PR?INIT?MAIN + CODE 4B05H 002EH UNIT ?PR?_WRITE_EEPROM?EEPROM + CODE 4B33H 002DH UNIT ?PR?ZERO_TRACK?MAIN + CODE 4B60H 0026H UNIT ?PR?_READ_RTC?EEPROM + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 3 + + + CODE 4B86H 0024H UNIT ?PR?AVERAGE?MAIN + CODE 4BAAH 0024H UNIT ?PR?_WRITE_RTC?EEPROM + CODE 4BCEH 001FH UNIT ?PR?ADD_VALUES?MAIN + CODE 4BEDH 001FH UNIT ?PR?_WRITE_DATA?EEPROM + CODE 4C0CH 001DH UNIT ?PR?READ_DATA?EEPROM + CODE 4C29H 001CH UNIT ?PR?_ARR_CPY?UTILITY + CODE 4C45H 001BH UNIT ?PR?CLR_DISP?SER_DISP + CODE 4C60H 0018H UNIT ?PR?_DISP?SER_DISP + CODE 4C78H 0012H UNIT ?PR?_ABS?ABS + CODE 4C8AH 000FH UNIT ?PR?_BCD2INT?UTILITY + CODE 4C99H 000FH UNIT ?PR?START?EEPROM + CODE 4CA8H 000DH UNIT ?PR?STOP?EEPROM + CODE 4CB5H 000CH UNIT ?PR?INIT_ADC_AD7780?ADC_AD7780 + CODE 4CC1H 0007H UNIT ?PR?RST_WDT?UTILITY + + + +OVERLAY MAP OF MODULE: Tin_fill_4x4_key_36Recipe_ad7780_55WD_default (MAIN) + + +SEGMENT BIT_GROUP DATA_GROUP IDATA_GROUP + +--> CALLED SEGMENT START LENGTH START LENGTH START LENGTH +------------------------------------------------------------------------------------------------------- +?PR?ADCINT0_ISR?MAIN ----- ----- ----- ----- ----- ----- + +--> ?PR?GET_ADC_RESULT_AD7780?ADC_AD7780 + +--> ?PR?ADD_VALUES?MAIN + +--> ?PR?AVERAGE?MAIN + +--> ?PR?FILTER?MAIN + +?PR?GET_ADC_RESULT_AD7780?ADC_AD7780 ----- ----- ----- ----- ----- ----- + +--> ?PR?READ_ADC_AD7780?ADC_AD7780 + +--> ?PR?RST_WDT?UTILITY + +?PR?READ_ADC_AD7780?ADC_AD7780 ----- ----- 0056H 0002H ----- ----- + +--> ?PR?RST_WDT?UTILITY + +?PR?FILTER?MAIN 0024H.7 0000H.1 0056H 0001H ----- ----- + +--> ?PR?_ABS?ABS + +*** NEW ROOT *************************************************** + +?PR?TIMER1_ISR?MAIN ----- ----- ----- ----- ----- ----- + +--> ?PR?READ_KEYPAD?4X4_KEY + +*** NEW ROOT *************************************************** + +?C_C51STARTUP ----- ----- ----- ----- ----- ----- + +--> ?PR?MAIN?MAIN + +--> ?C_INITSEG + +?PR?MAIN?MAIN ----- ----- ----- ----- ----- ----- + +--> ?PR?INIT?MAIN + +--> ?PR?RST_WDT?UTILITY + +--> ?PR?_DISP?SER_DISP + +--> ?PR?DISPLAY_NAME?SER_DISP + +--> ?PR?READ_VALUES?MAIN + +--> ?PR?_READ_EEPROM?EEPROM + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 4 + + + +--> ?PR?_DELAY?UTILITY + +--> ?PR?LOAD_EEP_DEFAULTS?MAIN + +--> ?PR?INIT_ADC_AD7780?ADC_AD7780 + +--> ?PR?CLR_DISP?SER_DISP + +--> ?PR?DISP_CHECK?MAIN + +--> ?PR?SELF_TEST?MAIN + +--> ?PR?PROCESS?MAIN + +--> ?PR?READ_KEYPAD?4X4_KEY + +--> ?PR?CHECK_KEYPAD?MAIN + +--> ?PR?CHECK_SWITCH?MAIN + +--> ?PR?CHECK_VALUES?MAIN + +--> ?PR?DISPLAY_VALUE?MAIN + +?PR?_DISP?SER_DISP ----- ----- 005DH 000FH ----- ----- + +--> ?PR?DISPLAY?SER_DISP + +?PR?DISPLAY?SER_DISP ----- ----- 006CH 0003H ----- ----- + +--> ?CO?SER_DISP + +--> ?PR?RST_WDT?UTILITY + +?PR?DISPLAY_NAME?SER_DISP ----- ----- 0058H 0001H ----- ----- + +--> ?CO?SER_DISP + +--> ?PR?_DELAY?UTILITY + +--> ?PR?DISPLAY?SER_DISP + +?PR?_DELAY?UTILITY ----- ----- 0063H 0004H ----- ----- + +--> ?PR?RST_WDT?UTILITY + +?PR?READ_VALUES?MAIN ----- ----- 005DH 0001H ----- ----- + +--> ?PR?_READ_RTC?EEPROM + +--> ?PR?_WRITE_RTC?EEPROM + +--> ?PR?RST_WDT?UTILITY + +--> ?PR?_READ_EEPROM?EEPROM + +--> ?CO?MAIN + +?PR?_READ_RTC?EEPROM ----- ----- 005EH 0001H ----- ----- + +--> ?PR?RST_WDT?UTILITY + +--> ?PR?ACK?EEPROM + +--> ?PR?_WRITE_DATA?EEPROM + +--> ?PR?START?EEPROM + +--> ?PR?READ_DATA?EEPROM + +--> ?PR?STOP?EEPROM + +?PR?ACK?EEPROM ----- ----- ----- ----- ----- ----- + +--> ?PR?START?EEPROM + +--> ?PR?_WRITE_DATA?EEPROM + +?PR?_WRITE_RTC?EEPROM ----- ----- 0060H 0002H ----- ----- + +--> ?PR?RST_WDT?UTILITY + +--> ?PR?ACK?EEPROM + +--> ?PR?_WRITE_DATA?EEPROM + +--> ?PR?STOP?EEPROM + +--> ?PR?_DELAY?UTILITY + +?PR?_READ_EEPROM?EEPROM ----- ----- 005EH 0002H ----- ----- + +--> ?PR?RST_WDT?UTILITY + +--> ?PR?START?EEPROM + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 5 + + + +--> ?PR?_WRITE_DATA?EEPROM + +--> ?PR?ACK?EEPROM + +--> ?PR?READ_DATA?EEPROM + +--> ?PR?STOP?EEPROM + +?PR?LOAD_EEP_DEFAULTS?MAIN ----- ----- 005BH 0002H ----- ----- + +--> ?PR?_DISP?SER_DISP + +--> ?PR?_DELAY?UTILITY + +--> ?PR?DEFAULTS?MAIN + +--> ?PR?_WRITE_EEPROM?EEPROM + +--> ?PR?_WRITE_RTC?EEPROM + +--> ?PR?_BLINK?MAIN + +--> ?PR?RST_WDT?UTILITY + +--> ?PR?READ_VALUES?MAIN + +--> ?PR?CLR_DISP?SER_DISP + +?PR?DEFAULTS?MAIN ----- ----- ----- ----- ----- ----- + +--> ?CO?MAIN + +?PR?_WRITE_EEPROM?EEPROM ----- ----- 005DH 0002H ----- ----- + +--> ?PR?RST_WDT?UTILITY + +--> ?PR?START?EEPROM + +--> ?PR?_WRITE_DATA?EEPROM + +--> ?PR?ACK?EEPROM + +--> ?PR?STOP?EEPROM + +--> ?PR?_DELAY?UTILITY + +?PR?_BLINK?MAIN ----- ----- 005FH 0004H ----- ----- + +--> ?PR?_ARR_CPY?UTILITY + +--> ?PR?DISPLAY?SER_DISP + +--> ?PR?_DELAY?UTILITY + +?PR?CLR_DISP?SER_DISP ----- ----- ----- ----- ----- ----- + +--> ?PR?DISPLAY?SER_DISP + +?PR?INIT_ADC_AD7780?ADC_AD7780 ----- ----- ----- ----- ----- ----- + +--> ?PR?_DELAY?UTILITY + +?PR?DISP_CHECK?MAIN ----- ----- 0058H 0001H ----- ----- + +--> ?PR?_DISP?SER_DISP + +--> ?PR?_DELAY?UTILITY + +?PR?SELF_TEST?MAIN 0025H.0 0000H.1 0058H 0002H ----- ----- + +--> ?PR?_DISP?SER_DISP + +--> ?PR?_DELAY?UTILITY + +--> ?PR?_READ_EEPROM?EEPROM + +--> ?PR?_READ_RTC?EEPROM + +?PR?PROCESS?MAIN ----- ----- ----- ----- ----- ----- + +--> ?PR?TARE_CHK?MAIN + +--> ?PR?RST_WDT?UTILITY + +--> ?PR?ZERO_TRACK?MAIN + +--> ?PR?CAL_FIND?MAIN + +--> ?PR?CALIBRATE?MAIN + +--> ?PR?_DISP?SER_DISP + +--> ?PR?_BLINK?MAIN + + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 6 + + +?PR?CAL_FIND?MAIN ----- ----- ----- ----- ----- ----- + +--> ?PR?_WRITE_EEPROM?EEPROM + +--> ?PR?_DISP?SER_DISP + +--> ?PR?_DELAY?UTILITY + +--> ?PR?CLR_DISP?SER_DISP + +--> ?PR?CALIBRATE?MAIN + +?PR?CHECK_KEYPAD?MAIN ----- ----- 0058H 0002H ----- ----- + +--> ?PR?RST_WDT?UTILITY + +--> ?PR?PWD?MAIN + +--> ?PR?_ARR_CPY?UTILITY + +--> ?CO?MAIN + +--> ?PR?_ARR_CMP?UTILITY + +--> ?PR?RECIPE_MENU?MAIN + +--> ?PR?MENU?MAIN + +--> ?PR?CAL?MAIN + +--> ?PR?SETTINGS?MAIN + +--> ?PR?SYS_PARAMTS?MAIN + +--> ?PR?LOAD_EEP_DEFAULTS?MAIN + +--> ?PR?SELECT_MENU?MAIN + +--> ?PR?DISPLAY_TOTAL_CUMULATIVE?MAIN + +--> ?PR?DISPLAY_CURRENT_BATCH?MAIN + +--> ?PR?CLEAR_CURRENT_CUMULATIVE_BATCH?MAIN + +--> ?PR?DISPLAY_CURRENT_CUMULATIVE?MAIN + +--> ?PR?CLEAR_BATCH_CUMULATIVE?MAIN + +--> ?PR?DISPLAY_TOTAL_BATCH?MAIN + +--> ?PR?_WRITE_RTC?EEPROM + +--> ?PR?_DISP?SER_DISP + +--> ?PR?_DELAY?UTILITY + +--> ?PR?CLR_DISP?SER_DISP + +--> ?PR?_BIN2BCD?MAIN + +--> ?PR?_VAL_READ?MAIN + +--> ?PR?_BCD2BIN?MAIN + +--> ?PR?_READ_RTC?EEPROM + +--> ?PR?_BLINK?MAIN + +--> ?PR?_INCDEC?MAIN + +--> ?PR?_BCD2INT?UTILITY + +--> ?PR?_READ_EEPROM?EEPROM + +--> ?PR?READ_VALUES?MAIN + +?PR?PWD?MAIN ----- ----- 005AH 0001H ----- ----- + +--> ?PR?_DISP?SER_DISP + +--> ?PR?RST_WDT?UTILITY + +--> ?PR?_BLINK?MAIN + +--> ?PR?_INCDEC?MAIN + +--> ?PR?_DELAY?UTILITY + +?PR?_ARR_CMP?UTILITY 0025H.0 0000H.1 005AH 0008H ----- ----- + +?PR?RECIPE_MENU?MAIN ----- ----- 005AH 0001H ----- ----- + +--> ?PR?_READ_RTC?EEPROM + +--> ?PR?_DISP?SER_DISP + +--> ?PR?RST_WDT?UTILITY + +--> ?PR?_BLINK?MAIN + +--> ?PR?_INCDEC?MAIN + +--> ?PR?_BCD2INT?UTILITY + +--> ?PR?_DELAY?UTILITY + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 7 + + + +--> ?PR?_WRITE_RTC?EEPROM + +?PR?MENU?MAIN 0025H.0 0000H.1 005AH 0003H ----- ----- + +--> ?PR?READ_VALUES?MAIN + +--> ?PR?_DISP?SER_DISP + +--> ?PR?_BIN2BCD?MAIN + +--> ?PR?_DELAY?UTILITY + +--> ?PR?_VAL_READ?MAIN + +--> ?PR?_BCD2BIN?MAIN + +--> ?CO?MAIN + +--> ?PR?_WRITE_EEPROM?EEPROM + +--> ?PR?_BLINK?MAIN + +--> ?PR?_INCDEC?MAIN + +--> ?PR?_READ_EEPROM?EEPROM + +?PR?_BIN2BCD?MAIN ----- ----- 005DH 0002H ----- ----- + +--> ?PR?DISPLAY?SER_DISP + +?PR?_VAL_READ?MAIN ----- ----- 005DH 0002H ----- ----- + +--> ?PR?_BLINK?MAIN + +--> ?PR?_INCDEC?MAIN + +--> ?PR?_DELAY?UTILITY + +?PR?_BCD2BIN?MAIN ----- ----- 005DH 0002H ----- ----- + +?PR?CAL?MAIN ----- ----- 005BH 0001H ----- ----- + +--> ?PR?_DISP?SER_DISP + +--> ?PR?_DELAY?UTILITY + +--> ?PR?PROCESS?MAIN + +--> ?PR?_BLINK?MAIN + +--> ?PR?_INCDEC?MAIN + +--> ?PR?_BCD2BIN?MAIN + +?PR?SETTINGS?MAIN ----- ----- 005BH 0001H ----- ----- + +--> ?PR?READ_VALUES?MAIN + +--> ?PR?_DISP?SER_DISP + +--> ?PR?_BIN2BCD?MAIN + +--> ?PR?_DELAY?UTILITY + +--> ?PR?_VAL_READ?MAIN + +--> ?PR?_BCD2BIN?MAIN + +--> ?PR?_WRITE_EEPROM?EEPROM + +--> ?PR?_READ_EEPROM?EEPROM + +--> ?PR?_BLINK?MAIN + +--> ?PR?_INCDEC?MAIN + +--> ?CO?MAIN + +?PR?SYS_PARAMTS?MAIN ----- ----- 005BH 0001H ----- ----- + +--> ?PR?READ_VALUES?MAIN + +--> ?PR?_DISP?SER_DISP + +--> ?PR?_READ_RTC?EEPROM + +--> ?PR?_DELAY?UTILITY + +--> ?PR?_BLINK?MAIN + +--> ?PR?_INCDEC?MAIN + +--> ?PR?_WRITE_RTC?EEPROM + +--> ?PR?_BIN2BCD?MAIN + +--> ?PR?_VAL_READ?MAIN + +--> ?PR?_BCD2BIN?MAIN + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 8 + + + +?PR?SELECT_MENU?MAIN ----- ----- 005AH 0001H ----- ----- + +--> ?PR?CLR_DISP?SER_DISP + +--> ?PR?_BLINK?MAIN + +--> ?PR?_INCDEC?MAIN + +--> ?PR?RST_WDT?UTILITY + +--> ?PR?_DISP?SER_DISP + +--> ?PR?_DELAY?UTILITY + +--> ?PR?SYS_PARAMTS?MAIN + +--> ?PR?SETTINGS?MAIN + +--> ?PR?CAL?MAIN + +--> ?PR?CAL_RST?MAIN + +--> ?PR?LOAD_EEP_DEFAULTS?MAIN + +--> ?PR?DISPLAY_CURRENT_CUMULATIVE?MAIN + +--> ?PR?DISPLAY_CURRENT_BATCH?MAIN + +--> ?PR?DISPLAY_TOTAL_BATCH?MAIN + +--> ?PR?CLEAR_BATCH_CUMULATIVE?MAIN + +?PR?CAL_RST?MAIN ----- ----- ----- ----- ----- ----- + +--> ?PR?_DISP?SER_DISP + +--> ?PR?_DELAY?UTILITY + +--> ?PR?CLR_DISP?SER_DISP + +--> ?PR?_WRITE_EEPROM?EEPROM + +--> ?PR?READ_VALUES?MAIN + +?PR?DISPLAY_CURRENT_CUMULATIVE?MAIN ----- ----- 005BH 0002H ----- ----- + +--> ?PR?_READ_RTC?EEPROM + +--> ?PR?_DELAY?UTILITY + +--> ?PR?_DISP?SER_DISP + +--> ?PR?_BLINK?MAIN + +--> ?PR?_INCDEC?MAIN + +--> ?PR?_BCD2INT?UTILITY + +--> ?PR?_RTC_READLONG?EEPROM + +--> ?PR?_BIN2BCD?MAIN + +?PR?_RTC_READLONG?EEPROM ----- ----- 005DH 0001H 000AH 0010H + +--> ?PR?_READ_RTC?EEPROM + +?PR?DISPLAY_CURRENT_BATCH?MAIN ----- ----- 005BH 0002H ----- ----- + +--> ?PR?_READ_RTC?EEPROM + +--> ?PR?_DELAY?UTILITY + +--> ?PR?_DISP?SER_DISP + +--> ?PR?_BLINK?MAIN + +--> ?PR?_INCDEC?MAIN + +--> ?PR?_BCD2INT?UTILITY + +--> ?PR?_BIN2BCD?MAIN + +?PR?DISPLAY_TOTAL_BATCH?MAIN ----- ----- ----- ----- ----- ----- + +--> ?PR?_READ_RTC?EEPROM + +--> ?PR?_DISP?SER_DISP + +--> ?PR?_BATCH2BCD?SER_DISP + +--> ?PR?_DELAY?UTILITY + +?PR?_BATCH2BCD?SER_DISP ----- ----- 005BH 0004H ----- ----- + +--> ?PR?RST_WDT?UTILITY + +--> ?PR?DISPLAY?SER_DISP + + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 9 + + +?PR?CLEAR_BATCH_CUMULATIVE?MAIN ----- ----- ----- ----- ----- ----- + +--> ?PR?_DISP?SER_DISP + +--> ?PR?_BLINK?MAIN + +--> ?PR?_RTC_WRITELONG?EEPROM + +--> ?PR?_WRITE_RTC?EEPROM + +?PR?_RTC_WRITELONG?EEPROM ----- ----- 005BH 0005H 000AH 0004H + +--> ?PR?_WRITE_RTC?EEPROM + +?PR?DISPLAY_TOTAL_CUMULATIVE?MAIN ----- ----- ----- ----- ----- ----- + +--> ?PR?_RTC_READLONG?EEPROM + +--> ?PR?_LONG2BCD?SER_DISP + +--> ?PR?_DELAY?UTILITY + +?PR?_LONG2BCD?SER_DISP ----- ----- 005AH 0006H ----- ----- + +--> ?PR?RST_WDT?UTILITY + +--> ?PR?DISPLAY?SER_DISP + +?PR?CLEAR_CURRENT_CUMULATIVE_BATCH?MAIN ----- ----- ----- ----- ----- ----- + +--> ?PR?_DISP?SER_DISP + +--> ?PR?_BLINK?MAIN + +--> ?PR?_RTC_WRITELONG?EEPROM + +--> ?PR?_WRITE_RTC?EEPROM + +?PR?CHECK_SWITCH?MAIN ----- ----- 0058H 0002H ----- ----- + +--> ?PR?READ_VALUES?MAIN + +--> ?PR?_DISP?SER_DISP + +--> ?PR?_DELAY?UTILITY + +--> ?PR?READ_KEYPAD?4X4_KEY + +--> ?PR?_READ_RTC?EEPROM + +--> ?PR?RST_WDT?UTILITY + +--> ?PR?PROCESS?MAIN + +?PR?CHECK_VALUES?MAIN ----- ----- ----- ----- ----- ----- + +--> ?PR?_DELAY?UTILITY + +--> ?PR?_READ_RTC?EEPROM + +--> ?PR?_WRITE_RTC?EEPROM + +--> ?PR?_RTC_READLONG?EEPROM + +--> ?PR?_RTC_WRITELONG?EEPROM + +--> ?PR?_DISP?SER_DISP + +?PR?DISPLAY_VALUE?MAIN ----- ----- 0058H 0002H ----- ----- + +--> ?PR?DISPLAY?SER_DISP + + + +SYMBOL TABLE OF MODULE: Tin_fill_4x4_key_36Recipe_ad7780_55WD_default (MAIN) + + VALUE TYPE NAME + ---------------------------------- + + ------- MODULE MAIN + C:0000H SYMBOL _ICE_DUMMY_ + C:3235H PUBLIC clear_current_cumulative_batch + B:0020H.0 PUBLIC process_flag + D:0090H PUBLIC P1 + B:0020H.1 PUBLIC grwt_ok + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 10 + + + D:00A0H PUBLIC P2 + C:40CFH PUBLIC process + I:006FH PUBLIC batch + C:4879H PUBLIC timer1_isr + I:0071H PUBLIC KeyPressed + B:00A8H.7 PUBLIC EA + C:4015H PUBLIC filter + C:3BE6H PUBLIC display_current_cumulative + D:00A8H PUBLIC IE + D:0026H PUBLIC hold_counter + B:0090H.3 PUBLIC waled + C:47FDH PUBLIC pass_F1 + B:0020H.2 PUBLIC rd_ok + I:0072H PUBLIC batch_count + C:47FFH PUBLIC pass_F2 + C:4801H PUBLIC pass_F3 + C:20CCH PUBLIC read_values + C:4790H PUBLIC _blink + C:4803H PUBLIC pass_F4 + C:3AE7H PUBLIC recipe_menu + C:49D0H PUBLIC disp_check + C:4805H PUBLIC pass_F5 + C:4807H PUBLIC pass_F6 + C:4809H PUBLIC pass_F7 + C:3788H PUBLIC clear_batch_cumulative + C:480BH PUBLIC pass_F8 + C:4914H PUBLIC _bin2bcd + C:482FH PUBLIC _bcd2bin + C:480DH PUBLIC pass_F9 + D:00B8H PUBLIC IP + C:275CH PUBLIC select_menu + B:0020H.3 PUBLIC shift_flag + C:4BCEH PUBLIC add_values + C:47F5H PUBLIC pswd10 + C:47F7H PUBLIC pswd11 + I:0074H PUBLIC start_delay + C:47F9H PUBLIC pswd12 + C:47FBH PUBLIC pswd13 + C:34FAH PUBLIC main + B:0020H.4 PUBLIC help_flag + I:0075H PUBLIC div_factor + C:3CE5H PUBLIC display_total_cumulative + B:0020H.5 PUBLIC tare_flag + D:002AH PUBLIC Adc_Value_LSB + D:002BH PUBLIC Adc_Value_MSB + C:48C2H PUBLIC calibrate + B:0020H.6 PUBLIC cal_flag + B:0020H.7 PUBLIC start_flag + I:0076H PUBLIC filter_val + D:002CH PUBLIC disp_data + I:0078H PUBLIC bset + D:0034H PUBLIC scale_val + I:007AH PUBLIC htar + I:007CH PUBLIC ffd + B:0090H.0 PUBLIC start + C:3060H PUBLIC cal + I:007EH PUBLIC mul_factor + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 11 + + + B:0021H.0 PUBLIC wait_flag + B:0021H.1 PUBLIC drop_flag + B:0021H.2 PUBLIC aco + D:0036H PUBLIC add_adc + D:0098H PUBLIC SCON + I:007FH PUBLIC ltar + D:003AH PUBLIC temp_data + C:39D9H PUBLIC cal_find + D:0089H PUBLIC TMOD + D:0088H PUBLIC TCON + C:4AD7H PUBLIC init + C:08BEH PUBLIC menu + D:0042H PUBLIC temp + B:0021H.3 PUBLIC esc_flag + I:0081H PUBLIC EEPROM_block + B:0021H.4 PUBLIC start_status + B:0021H.5 PUBLIC Instant_fill_enable + B:0021H.6 PUBLIC fill_start + C:4B33H PUBLIC zero_track + B:0021H.7 PUBLIC Adc_Data_Ready + I:0082H PUBLIC start_count + C:2415H PUBLIC sys_paramts + I:0083H PUBLIC disp_count + I:0084H PUBLIC avg + I:0085H PUBLIC nfl + C:480FH PUBLIC pass_F10 + B:0022H.0 PUBLIC busy_flag + I:0087H PUBLIC mas + C:4458H PUBLIC _val_read + I:0088H PUBLIC start_disp + B:0022H.1 PUBLIC zset_flag + B:0022H.2 PUBLIC start_wait_flag + B:0022H.3 PUBLIC grwt + I:008AH PUBLIC cumulative + C:4599H PUBLIC tare_chk + D:0046H PUBLIC temp_tare + I:008EH PUBLIC zset + B:0022H.4 PUBLIC ff_flag + B:0022H.5 PUBLIC ed + I:0090H PUBLIC cf + C:33A0H PUBLIC display_current_batch + I:0092H PUBLIC ztwc + C:4811H PUBLIC rng_array + I:0093H PUBLIC res + B:0022H.6 PUBLIC set_enter_flag + B:0090H.2 PUBLIC ff + C:43DAH PUBLIC pwd + D:008CH PUBLIC TH0 + B:0022H.7 PUBLIC auto_start + B:00A8H.0 PUBLIC EX0 + B:0088H.0 PUBLIC IT0 + D:008DH PUBLIC TH1 + I:0094H PUBLIC adc_val + C:2E59H PUBLIC self_test + D:0048H PUBLIC help_val + D:008AH PUBLIC TL0 + B:0023H.0 PUBLIC dp_flag + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 12 + + + I:0096H PUBLIC add_cnt + D:008BH PUBLIC TL1 + I:0097H PUBLIC ztc + D:004AH PUBLIC tare_val + B:0023H.1 PUBLIC adc_err + B:0023H.2 PUBLIC wa_flag + I:0098H PUBLIC tare_cnt + B:0023H.3 PUBLIC adc_pol + I:0099H PUBLIC cal_val + C:4665H PUBLIC adcint0_isr + I:009BH PUBLIC disp_val + B:0088H.6 PUBLIC TR1 + B:0023H.4 PUBLIC tare_pol + I:009DH PUBLIC wait_val + I:009EH PUBLIC temp_val + C:3F5AH PUBLIC defaults + B:0023H.5 PUBLIC c_flag + B:0023H.6 PUBLIC disp_pol + I:00A0H PUBLIC bin_val + I:00A2H PUBLIC cfd1 + C:4B86H PUBLIC average + I:00A4H PUBLIC cfd2 + I:00A6H PUBLIC drop_ctr + I:00A8H PUBLIC wait_ctr + I:00AAH PUBLIC test_loc + C:001EH PUBLIC check_keypad + I:00ABH PUBLIC prev_val + I:00B5H PUBLIC temp_pwd + B:0090H.7 PUBLIC cal_en + I:00B9H PUBLIC avg_cnt + C:364DH PUBLIC display_total_batch + D:004CH PUBLIC temp1 + C:472FH PUBLIC _incdec + B:0023H.7 PUBLIC autotare + D:0050H PUBLIC temp2 + I:00BAH PUBLIC function + C:417DH PUBLIC cal_rst + I:00BBH PUBLIC rng_val + I:00BCH PUBLIC on_time + C:47E3H PUBLIC pswd1 + C:47E5H PUBLIC pswd2 + I:00BEH PUBLIC t + C:47E7H PUBLIC pswd3 + I:00BFH PUBLIC drop_wait_val + C:47E9H PUBLIC pswd4 + C:47EBH PUBLIC pswd5 + C:10BDH PUBLIC check_values + C:47EDH PUBLIC pswd6 + C:1752H PUBLIC settings + B:0024H.0 PUBLIC cf1_flag + I:00C0H PUBLIC fillset + C:47EFH PUBLIC pswd7 + C:1D79H PUBLIC check_switch + B:0024H.1 PUBLIC cf2_flag + B:0024H.2 PUBLIC ave_ok + C:47F1H PUBLIC pswd8 + B:0024H.3 PUBLIC wt_ach + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 13 + + + D:0054H PUBLIC Adc_Value_MLSB + C:47F3H PUBLIC pswd9 + I:00C2H PUBLIC dp_val + B:0090H.4 PUBLIC cf1 + B:0024H.4 PUBLIC bset_enable + B:0024H.5 PUBLIC recipe + B:0090H.1 PUBLIC cf2 + C:38C3H PUBLIC display_value + D:0055H PUBLIC Status_Bits + C:2C14H PUBLIC load_eep_defaults + B:0024H.6 PUBLIC Adc_Status_bit73 + ------- PROC MAIN + C:34FAH LINE# 194 + C:34FAH LINE# 195 + C:34FAH LINE# 196 + C:34FDH LINE# 197 + C:3500H LINE# 201 + C:3508H LINE# 203 + C:350AH LINE# 204 + C:3535H LINE# 205 + C:3538H LINE# 207 + C:353BH LINE# 208 + C:353DH LINE# 209 + C:3546H LINE# 210 + C:354FH LINE# 211 + C:354FH LINE# 212 + C:357AH LINE# 216 + C:3595H LINE# 222 + C:359BH LINE# 224 + C:359BH LINE# 225 + C:35C6H LINE# 226 + C:35C9H LINE# 227 + C:35D0H LINE# 228 + C:35D0H LINE# 229 + C:35D0H LINE# 232 + C:35D3H LINE# 237 + C:35D6H LINE# 239 + C:35D9H LINE# 240 + C:35D9H LINE# 241 + C:35DCH LINE# 242 + C:35DFH LINE# 243 + C:35E2H LINE# 244 + C:35E4H LINE# 245 + C:360FH LINE# 246 + C:3616H LINE# 247 + C:3619H LINE# 248 + C:3619H LINE# 249 + C:361BH LINE# 251 + C:361BH LINE# 252 + C:361BH LINE# 267 + C:361EH LINE# 269 + C:3625H LINE# 271 + C:3628H LINE# 272 + C:362BH LINE# 273 + C:362EH LINE# 274 + C:3631H LINE# 275 + C:3634H LINE# 276 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 14 + + + C:363AH LINE# 277 + C:3647H LINE# 281 + C:364BH LINE# 283 + ------- ENDPROC MAIN + ------- PROC INIT + C:4AD7H LINE# 286 + C:4AD7H LINE# 287 + C:4AD7H LINE# 299 + C:4ADDH LINE# 300 + C:4AE0H LINE# 301 + C:4AE3H LINE# 302 + C:4AE5H LINE# 303 + C:4AE8H LINE# 304 + C:4AEBH LINE# 305 + C:4AEEH LINE# 306 + C:4AF1H LINE# 307 + C:4AF4H LINE# 308 + C:4AF6H LINE# 314 + C:4AF8H LINE# 315 + C:4AFAH LINE# 316 + C:4AFCH LINE# 319 + C:4AFEH LINE# 320 + C:4B00H LINE# 321 + C:4B02H LINE# 322 + C:4B04H LINE# 323 + ------- ENDPROC INIT + ------- PROC ADCINT0_ISR + C:4665H LINE# 325 + C:4682H LINE# 327 + C:4684H LINE# 330 + C:4687H LINE# 334 + C:4689H LINE# 336 + C:468CH LINE# 337 + C:468CH LINE# 338 + C:468EH LINE# 339 + C:4691H LINE# 340 + C:4694H LINE# 341 + C:469DH LINE# 342 + C:469DH LINE# 343 + C:46A1H LINE# 344 + C:46A4H LINE# 345 + C:46AAH LINE# 347 + C:46AAH LINE# 348 + C:46AAH LINE# 349 + C:46ACH LINE# 350 + ------- ENDPROC ADCINT0_ISR + ------- PROC TIMER1_ISR + C:4879H LINE# 353 + C:4896H LINE# 355 + C:4898H LINE# 356 + C:489FH LINE# 357 + C:48A2H LINE# 359 + C:48A5H LINE# 360 + C:48A7H LINE# 361 + ------- ENDPROC TIMER1_ISR + ------- PROC READ_VALUES + ------- DO + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 15 + + + D:005DH SYMBOL dat + ------- ENDDO + C:20CCH LINE# 364 + C:20CCH LINE# 365 + C:20CCH LINE# 369 + C:20CEH LINE# 371 + C:20D5H LINE# 372 + C:20DEH LINE# 373 + C:20E0H LINE# 375 + C:20E7H LINE# 376 + C:20F0H LINE# 377 + C:20F2H LINE# 379 + C:20F9H LINE# 380 + C:2102H LINE# 381 + C:2104H LINE# 384 + C:210EH LINE# 385 + C:2117H LINE# 387 + C:211EH LINE# 388 + C:2127H LINE# 389 + C:2129H LINE# 391 + C:2132H LINE# 393 + C:2139H LINE# 394 + C:2142H LINE# 395 + C:2144H LINE# 396 + C:2168H LINE# 397 + C:216BH LINE# 399 + C:2182H LINE# 400 + C:2199H LINE# 401 + C:21B0H LINE# 402 + C:21C5H LINE# 404 + C:21C8H LINE# 405 + C:21DCH LINE# 407 + C:2205H LINE# 409 + C:2231H LINE# 410 + C:225DH LINE# 411 + C:2289H LINE# 412 + C:22B5H LINE# 413 + C:22E1H LINE# 414 + C:22EEH LINE# 415 + C:22F6H LINE# 416 + C:22F8H LINE# 418 + C:22FCH LINE# 420 + C:231CH LINE# 421 + C:233CH LINE# 423 + C:2345H LINE# 424 + C:234EH LINE# 425 + C:2357H LINE# 426 + C:2360H LINE# 427 + C:2369H LINE# 429 + C:2372H LINE# 430 + C:237DH LINE# 431 + C:2380H LINE# 432 + C:2396H LINE# 433 + C:23A9H LINE# 434 + C:23D9H LINE# 437 + C:23E2H LINE# 438 + C:23EBH LINE# 440 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 16 + + + C:23FBH LINE# 447 + C:240DH LINE# 448 + C:2412H LINE# 450 + C:2414H LINE# 451 + ------- ENDPROC READ_VALUES + ------- PROC SELF_TEST + ------- DO + D:0058H SYMBOL dat + D:0059H SYMBOL i + B:0025H.0 SYMBOL aok + ------- ENDDO + C:2E59H LINE# 453 + C:2E59H LINE# 454 + C:2E59H LINE# 456 + C:2E5BH LINE# 458 + C:2E86H LINE# 459 + C:2E8DH LINE# 462 + C:2EB8H LINE# 463 + C:2EBFH LINE# 464 + C:2EC6H LINE# 465 + C:2ECDH LINE# 466 + C:2EEEH LINE# 468 + C:2EEEH LINE# 469 + C:2F19H LINE# 471 + C:2F19H LINE# 472 + C:2F20H LINE# 475 + C:2F4BH LINE# 476 + C:2F52H LINE# 477 + C:2F59H LINE# 478 + C:2F60H LINE# 479 + C:2F81H LINE# 481 + C:2F81H LINE# 482 + C:2FACH LINE# 484 + C:2FACH LINE# 485 + C:2FB3H LINE# 488 + C:2FDEH LINE# 490 + C:2FE0H LINE# 491 + C:2FE3H LINE# 492 + C:2FE3H LINE# 493 + C:2FE6H LINE# 494 + C:2FE6H LINE# 495 + C:2FE8H LINE# 496 + C:2FEAH LINE# 497 + C:2FEAH LINE# 498 + C:2FF1H LINE# 499 + C:2FFAH LINE# 500 + C:2FFDH LINE# 501 + C:2FFDH LINE# 502 + C:3028H LINE# 503 + C:302AH LINE# 504 + C:302CH LINE# 506 + C:302CH LINE# 507 + C:3057H LINE# 508 + C:3059H LINE# 509 + C:3059H LINE# 510 + ------- ENDPROC SELF_TEST + ------- PROC DISP_CHECK + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 17 + + + ------- DO + D:0058H SYMBOL i + ------- ENDDO + C:49D0H LINE# 513 + C:49D0H LINE# 514 + C:49D0H LINE# 516 + C:49D3H LINE# 517 + C:49D3H LINE# 518 + C:49FAH LINE# 519 + C:4A01H LINE# 520 + C:4A0CH LINE# 521 + ------- ENDPROC DISP_CHECK + ------- PROC DEFAULTS + C:3F5AH LINE# 523 + C:3F5AH LINE# 524 + C:3F5AH LINE# 525 + C:3F61H LINE# 528 + C:3F68H LINE# 529 + C:3F6FH LINE# 530 + C:3F75H LINE# 531 + C:3F7BH LINE# 532 + C:3F81H LINE# 533 + C:3F86H LINE# 534 + C:3F88H LINE# 535 + C:3F8CH LINE# 536 + C:3F98H LINE# 542 + C:3F9CH LINE# 543 + C:3FA0H LINE# 544 + C:3FA4H LINE# 545 + C:3FA8H LINE# 546 + C:3FACH LINE# 548 + C:3FC2H LINE# 549 + C:3FD5H LINE# 551 + C:4005H LINE# 557 + C:4009H LINE# 558 + C:400DH LINE# 559 + C:4014H LINE# 560 + ------- ENDPROC DEFAULTS + ------- PROC LOAD_EEP_DEFAULTS + ------- DO + D:005BH SYMBOL rcpe + D:005CH SYMBOL dat + ------- ENDDO + C:2C14H LINE# 562 + C:2C14H LINE# 563 + C:2C14H LINE# 564 + C:2C1AH LINE# 565 + C:2C3EH LINE# 566 + C:2C45H LINE# 567 + C:2C48H LINE# 568 + C:2C73H LINE# 569 + C:2C7CH LINE# 570 + C:2C83H LINE# 572 + C:2C86H LINE# 573 + C:2C86H LINE# 574 + C:2C9DH LINE# 575 + C:2CB7H LINE# 576 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 18 + + + C:2CD1H LINE# 577 + C:2CE9H LINE# 579 + C:2CF6H LINE# 580 + C:2D04H LINE# 581 + C:2D13H LINE# 582 + C:2D22H LINE# 583 + C:2D31H LINE# 584 + C:2D40H LINE# 585 + C:2D4FH LINE# 586 + C:2D5EH LINE# 587 + C:2D6DH LINE# 588 + C:2D7CH LINE# 589 + C:2D8BH LINE# 590 + C:2D9AH LINE# 591 + C:2DA7H LINE# 592 + C:2DAAH LINE# 593 + C:2DADH LINE# 594 + C:2DB9H LINE# 596 + C:2DBDH LINE# 598 + C:2DC6H LINE# 599 + C:2DCFH LINE# 601 + C:2DD8H LINE# 602 + C:2DE1H LINE# 603 + C:2DEAH LINE# 604 + C:2DF3H LINE# 605 + C:2DFCH LINE# 606 + C:2E05H LINE# 611 + C:2E0EH LINE# 612 + C:2E17H LINE# 613 + C:2E20H LINE# 615 + C:2E27H LINE# 616 + C:2E2EH LINE# 617 + C:2E35H LINE# 618 + C:2E3CH LINE# 619 + C:2E43H LINE# 620 + C:2E4CH LINE# 621 + C:2E53H LINE# 623 + C:2E56H LINE# 624 + ------- ENDPROC LOAD_EEP_DEFAULTS + ------- PROC ADD_VALUES + C:4BCEH LINE# 627 + C:4BCEH LINE# 628 + C:4BCEH LINE# 629 + C:4BECH LINE# 630 + ------- ENDPROC ADD_VALUES + ------- PROC AVERAGE + C:4B86H LINE# 632 + C:4B86H LINE# 633 + C:4B86H LINE# 634 + C:4BA0H LINE# 635 + C:4BA9H LINE# 636 + ------- ENDPROC AVERAGE + ------- PROC FILTER + ------- DO + D:0056H SYMBOL i + B:0024H.7 SYMBOL ave_ok + ------- ENDDO + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 19 + + + C:4015H LINE# 638 + C:4015H LINE# 639 + C:4015H LINE# 641 + C:4017H LINE# 643 + C:4035H LINE# 644 + C:4043H LINE# 646 + C:4046H LINE# 647 + C:4046H LINE# 648 + C:406DH LINE# 649 + C:4076H LINE# 651 + C:4079H LINE# 652 + C:4079H LINE# 653 + C:4082H LINE# 654 + C:40AEH LINE# 655 + C:40C7H LINE# 656 + C:40CEH LINE# 657 + C:40CEH LINE# 658 + ------- ENDPROC FILTER + ------- PROC PROCESS + C:40CFH LINE# 660 + C:40CFH LINE# 661 + C:40CFH LINE# 666 + C:40D8H LINE# 667 + C:40DBH LINE# 668 + C:40DEH LINE# 669 + C:40E1H LINE# 670 + C:40E4H LINE# 671 + C:40E4H LINE# 672 + C:40E7H LINE# 673 + C:40EAH LINE# 674 + C:40EAH LINE# 675 + C:40F9H LINE# 676 + C:40F9H LINE# 677 + C:40FBH LINE# 678 + C:40FEH LINE# 679 + C:4100H LINE# 680 + C:412BH LINE# 681 + C:4135H LINE# 682 + C:4137H LINE# 683 + C:4139H LINE# 684 + C:413BH LINE# 686 + C:413EH LINE# 687 + C:413EH LINE# 688 + C:4140H LINE# 689 + C:4143H LINE# 690 + C:4145H LINE# 691 + C:4170H LINE# 692 + C:417AH LINE# 693 + C:417CH LINE# 694 + C:417CH LINE# 695 + ------- ENDPROC PROCESS + ------- PROC TARE_CHK + C:4599H LINE# 697 + C:4599H LINE# 698 + C:4599H LINE# 699 + C:459CH LINE# 700 + C:459CH LINE# 701 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 20 + + + C:45A2H LINE# 702 + C:45A6H LINE# 703 + C:45AFH LINE# 704 + C:45AFH LINE# 705 + C:45B1H LINE# 706 + C:45B3H LINE# 707 + C:45B3H LINE# 708 + C:45B3H LINE# 712 + C:45BBH LINE# 713 + C:45BBH LINE# 714 + C:45C8H LINE# 715 + C:45CCH LINE# 716 + C:45CDH LINE# 718 + C:45CDH LINE# 719 + C:45D8H LINE# 720 + C:45D8H LINE# 721 + C:45DCH LINE# 722 + C:45EAH LINE# 723 + C:45EBH LINE# 725 + C:45EBH LINE# 726 + C:45F0H LINE# 727 + C:45FEH LINE# 728 + C:45FEH LINE# 729 + C:45FEH LINE# 742 + ------- ENDPROC TARE_CHK + ------- PROC ZERO_TRACK + C:4B33H LINE# 744 + C:4B33H LINE# 745 + C:4B33H LINE# 746 + C:4B47H LINE# 747 + C:4B4BH LINE# 749 + C:4B53H LINE# 750 + C:4B53H LINE# 751 + C:4B59H LINE# 752 + C:4B5DH LINE# 753 + C:4B5FH LINE# 754 + C:4B5FH LINE# 755 + ------- ENDPROC ZERO_TRACK + C:490BH SYMBOL L?0774 + C:490DH SYMBOL L?0775 + ------- PROC L?0773 + ------- ENDPROC L?0773 + C:490BH SYMBOL L?0774 + C:490DH SYMBOL L?0775 + ------- PROC _BIN2BCD + D:005DH SYMBOL value + D:0003H SYMBOL no + ------- DO + D:0002H SYMBOL i + ------- ENDDO + C:4914H LINE# 757 + C:491AH LINE# 758 + C:491AH LINE# 761 + C:492AH LINE# 762 + C:492AH LINE# 763 + C:493BH LINE# 764 + C:494AH LINE# 765 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 21 + + + C:494DH LINE# 766 + ------- ENDPROC _BIN2BCD + ------- PROC DISPLAY_VALUE + ------- DO + D:0058H SYMBOL value + D:0003H SYMBOL i + ------- ENDDO + C:38C3H LINE# 769 + C:38C3H LINE# 770 + C:38C3H LINE# 777 + C:38E0H LINE# 778 + C:38E2H LINE# 779 + C:38E2H LINE# 780 + C:38F3H LINE# 781 + C:3902H LINE# 782 + C:3906H LINE# 784 + C:390DH LINE# 785 + C:3913H LINE# 787 + C:3921H LINE# 789 + C:3938H LINE# 790 + C:3938H LINE# 791 + C:393BH LINE# 792 + C:393DH LINE# 793 + C:3940H LINE# 794 + C:3942H LINE# 795 + C:3942H LINE# 796 + C:3946H LINE# 797 + C:3946H LINE# 798 + C:3949H LINE# 799 + C:394CH LINE# 800 + C:394FH LINE# 801 + C:3952H LINE# 802 + C:3952H LINE# 804 + C:3955H LINE# 805 + C:3955H LINE# 806 + C:3958H LINE# 807 + C:395BH LINE# 808 + C:395BH LINE# 809 + C:395DH LINE# 810 + C:3960H LINE# 811 + C:3960H LINE# 812 + C:3963H LINE# 813 + C:3966H LINE# 814 + C:3966H LINE# 815 + C:3968H LINE# 816 + C:396BH LINE# 817 + C:396BH LINE# 818 + C:396EH LINE# 819 + C:3971H LINE# 820 + C:3971H LINE# 821 + C:3973H LINE# 822 + C:3979H LINE# 823 + C:3979H LINE# 824 + C:397CH LINE# 825 + C:397FH LINE# 826 + C:397FH LINE# 827 + C:3981H LINE# 828 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 22 + + + C:3984H LINE# 829 + C:3984H LINE# 830 + C:398AH LINE# 831 + C:398AH LINE# 832 + C:398DH LINE# 833 + C:3990H LINE# 834 + C:3993H LINE# 835 + C:3995H LINE# 837 + C:3995H LINE# 838 + C:3998H LINE# 839 + C:399BH LINE# 840 + C:399BH LINE# 841 + C:399BH LINE# 842 + C:399DH LINE# 844 + C:399DH LINE# 845 + C:39A0H LINE# 846 + C:39A0H LINE# 847 + C:39A3H LINE# 848 + C:39A6H LINE# 849 + C:39A9H LINE# 850 + C:39ABH LINE# 852 + C:39ABH LINE# 855 + C:39B4H LINE# 856 + C:39B4H LINE# 857 + C:39B7H LINE# 858 + C:39BFH LINE# 860 + C:39C2H LINE# 861 + C:39C4H LINE# 863 + C:39C4H LINE# 864 + C:39CCH LINE# 865 + C:39D3H LINE# 866 + C:39D6H LINE# 868 + C:39D6H LINE# 869 + C:39D6H LINE# 870 + C:39D6H LINE# 871 + ------- ENDPROC DISPLAY_VALUE + ------- PROC CHECK_KEYPAD + ------- DO + D:0058H SYMBOL sdat + D:0059H SYMBOL b + C:05FFH SYMBOL rtn + ------- ENDDO + C:001EH LINE# 874 + C:001EH LINE# 875 + C:001EH LINE# 876 + C:0023H LINE# 881 + C:0039H LINE# 883 + C:0039H LINE# 884 + C:003BH LINE# 885 + C:003EH LINE# 886 + C:0041H LINE# 887 + C:0044H LINE# 888 + C:004FH LINE# 895 + C:0097H LINE# 898 + C:00B7H LINE# 901 + C:00D7H LINE# 902 + C:00F7H LINE# 903 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 23 + + + C:0117H LINE# 904 + C:0137H LINE# 905 + C:0157H LINE# 906 + C:0177H LINE# 907 + C:0197H LINE# 908 + C:01B7H LINE# 909 + C:01D7H LINE# 910 + C:01F7H LINE# 911 + C:021CH LINE# 912 + C:0241H LINE# 913 + C:0266H LINE# 914 + C:028BH LINE# 915 + C:02B0H LINE# 916 + C:02D5H LINE# 917 + C:02F9H LINE# 918 + C:031AH LINE# 919 + C:033BH LINE# 920 + C:0364H LINE# 922 + C:038FH LINE# 923 + C:0396H LINE# 924 + C:0399H LINE# 925 + C:039BH LINE# 926 + C:039BH LINE# 927 + C:039EH LINE# 933 + C:03A8H LINE# 935 + C:03A8H LINE# 936 + C:03CCH LINE# 940 + C:03DBH LINE# 942 + C:03DDH LINE# 943 + C:03DDH LINE# 949 + C:03F3H LINE# 951 + C:03F3H LINE# 952 + C:03F5H LINE# 953 + C:03FBH LINE# 954 + C:03FBH LINE# 955 + C:041AH LINE# 956 + C:041DH LINE# 957 + C:0424H LINE# 958 + C:0429H LINE# 959 + C:0437H LINE# 961 + C:0464H LINE# 962 + C:0464H LINE# 963 + C:048FH LINE# 964 + C:0496H LINE# 965 + C:0499H LINE# 966 + C:049BH LINE# 968 + C:049BH LINE# 969 + C:049DH LINE# 970 + C:04CCH LINE# 971 + C:04D4H LINE# 972 + C:04DDH LINE# 973 + C:04DDH LINE# 974 + C:04DDH LINE# 975 + C:04DDH LINE# 981 + C:04E9H LINE# 983 + C:04E9H LINE# 984 + C:04EBH LINE# 988 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 24 + + + C:04F1H LINE# 990 + C:04FAH LINE# 991 + C:04FAH LINE# 997 + C:0506H LINE# 999 + C:0506H LINE# 1003 + C:050CH LINE# 1005 + C:0515H LINE# 1006 + C:0517H LINE# 1007 + C:051AH LINE# 1008 + C:051AH LINE# 1014 + C:0536H LINE# 1016 + C:0536H LINE# 1017 + C:0538H LINE# 1018 + C:053AH LINE# 1019 + C:055EH LINE# 1020 + C:0581H LINE# 1021 + C:0586H LINE# 1022 + C:058DH LINE# 1023 + C:0592H LINE# 1024 + C:059EH LINE# 1029 + C:05A9H LINE# 1035 + C:05AEH LINE# 1038 + C:05AEH LINE# 1039 + C:05B7H LINE# 1040 + C:05C0H LINE# 1042 + C:05C9H LINE# 1043 + C:05D2H LINE# 1044 + C:05D2H LINE# 1045 + C:05D4H LINE# 1049 + C:05DAH LINE# 1051 + C:05E3H LINE# 1052 + C:05E3H LINE# 1060 + C:05FFH LINE# 1062 + C:05FFH LINE# 1063 + C:05FFH LINE# 1064 + C:0608H LINE# 1065 + C:060AH LINE# 1066 + C:0611H LINE# 1067 + C:0649H LINE# 1069 + C:0650H LINE# 1070 + C:0653H LINE# 1072 + C:0655H LINE# 1076 + C:0668H LINE# 1078 + C:0668H LINE# 1081 + C:0673H LINE# 1082 + C:0681H LINE# 1085 + C:0690H LINE# 1086 + C:0696H LINE# 1091 + C:06A2H LINE# 1093 + C:06A2H LINE# 1094 + C:06A4H LINE# 1097 + C:06AEH LINE# 1099 + C:06B2H LINE# 1101 + C:06B2H LINE# 1104 + C:06EEH LINE# 1106 + C:06F5H LINE# 1107 + C:0703H LINE# 1108 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 25 + + + C:0721H LINE# 1109 + C:072FH LINE# 1110 + C:074FH LINE# 1111 + C:075DH LINE# 1112 + C:077DH LINE# 1113 + C:078BH LINE# 1114 + C:07BBH LINE# 1115 + C:07BEH LINE# 1116 + C:07C1H LINE# 1120 + C:07C8H LINE# 1122 + C:07C8H LINE# 1123 + C:07D6H LINE# 1124 + C:07D6H LINE# 1125 + C:0801H LINE# 1126 + C:0808H LINE# 1127 + C:080BH LINE# 1128 + C:080EH LINE# 1129 + C:080EH LINE# 1131 + C:080EH LINE# 1132 + C:0815H LINE# 1133 + C:081EH LINE# 1134 + C:0821H LINE# 1135 + C:0825H LINE# 1136 + C:0825H LINE# 1137 + C:0827H LINE# 1141 + C:082DH LINE# 1143 + C:0836H LINE# 1144 + C:0836H LINE# 1150 + C:0846H LINE# 1152 + C:0846H LINE# 1153 + C:0848H LINE# 1154 + C:0868H LINE# 1155 + C:0893H LINE# 1156 + C:089FH LINE# 1157 + C:08A6H LINE# 1158 + C:08A8H LINE# 1159 + C:08A8H LINE# 1165 + C:08BAH LINE# 1167 + C:08BAH LINE# 1168 + C:08BDH LINE# 1169 + C:08BDH LINE# 1170 + ------- ENDPROC CHECK_KEYPAD + ------- PROC CHECK_SWITCH + ------- DO + D:0058H SYMBOL dat + D:0059H SYMBOL stop + C:1D86H SYMBOL bgn + C:1F9EH SYMBOL srt + ------- ENDDO + C:1D79H LINE# 1172 + C:1D79H LINE# 1173 + C:1D79H LINE# 1174 + C:1D7EH LINE# 1176 + C:1D86H LINE# 1177 + C:1D86H LINE# 1182 + C:1D99H LINE# 1184 + C:1D99H LINE# 1185 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 26 + + + C:1DAEH LINE# 1187 + C:1DC6H LINE# 1188 + C:1DC6H LINE# 1190 + C:1DC8H LINE# 1191 + C:1DF3H LINE# 1192 + C:1DF5H LINE# 1193 + C:1DF7H LINE# 1194 + C:1DF9H LINE# 1195 + C:1DFBH LINE# 1196 + C:1DFDH LINE# 1197 + C:1DFFH LINE# 1198 + C:1E01H LINE# 1199 + C:1E03H LINE# 1200 + C:1E05H LINE# 1201 + C:1E07H LINE# 1202 + C:1E0DH LINE# 1204 + C:1E1AH LINE# 1205 + C:1E1EH LINE# 1206 + C:1E26H LINE# 1208 + C:1E28H LINE# 1210 + C:1E2AH LINE# 1211 + C:1E4EH LINE# 1212 + C:1E55H LINE# 1213 + C:1E57H LINE# 1216 + C:1E5FH LINE# 1217 + C:1E68H LINE# 1218 + C:1E68H LINE# 1220 + C:1E69H LINE# 1222 + C:1E69H LINE# 1223 + C:1E72H LINE# 1228 + C:1E7BH LINE# 1229 + C:1E7BH LINE# 1233 + C:1E7DH LINE# 1234 + C:1E80H LINE# 1235 + C:1E80H LINE# 1236 + C:1E83H LINE# 1238 + C:1EA6H LINE# 1240 + C:1EB5H LINE# 1241 + C:1EB5H LINE# 1243 + C:1EB5H LINE# 1244 + C:1EB8H LINE# 1246 + C:1EB8H LINE# 1249 + C:1EBAH LINE# 1250 + C:1EBCH LINE# 1251 + C:1EBFH LINE# 1252 + C:1EBFH LINE# 1253 + C:1EBFH LINE# 1256 + C:1EC8H LINE# 1257 + C:1EC8H LINE# 1258 + C:1EE5H LINE# 1259 + C:1EE5H LINE# 1260 + C:1EF1H LINE# 1261 + C:1F04H LINE# 1262 + C:1F08H LINE# 1263 + C:1F1FH LINE# 1264 + C:1F1FH LINE# 1265 + C:1F23H LINE# 1266 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 27 + + + C:1F25H LINE# 1267 + C:1F25H LINE# 1268 + C:1F25H LINE# 1269 + C:1F25H LINE# 1271 + C:1F37H LINE# 1272 + C:1F37H LINE# 1273 + C:1F3AH LINE# 1274 + C:1F5DH LINE# 1276 + C:1F6CH LINE# 1277 + C:1F6CH LINE# 1279 + C:1F97H LINE# 1280 + C:1F9EH LINE# 1282 + C:1F9EH LINE# 1285 + C:1FD2H LINE# 1286 + C:1FD2H LINE# 1287 + C:1FD5H LINE# 1288 + C:1FD7H LINE# 1289 + C:2002H LINE# 1290 + C:2009H LINE# 1291 + C:200BH LINE# 1293 + C:200DH LINE# 1294 + C:2010H LINE# 1295 + C:2010H LINE# 1297 + C:2010H LINE# 1298 + C:2030H LINE# 1299 + C:2030H LINE# 1300 + C:2032H LINE# 1301 + C:2038H LINE# 1302 + C:203EH LINE# 1303 + C:2040H LINE# 1304 + C:2046H LINE# 1305 + C:2046H LINE# 1306 + C:2048H LINE# 1307 + C:204EH LINE# 1308 + C:2050H LINE# 1309 + C:2052H LINE# 1311 + C:2055H LINE# 1313 + C:2058H LINE# 1314 + C:2058H LINE# 1315 + C:205AH LINE# 1316 + C:205CH LINE# 1317 + C:205EH LINE# 1318 + C:2065H LINE# 1319 + C:2067H LINE# 1320 + C:206EH LINE# 1321 + C:2070H LINE# 1322 + C:2077H LINE# 1323 + C:2079H LINE# 1324 + C:207BH LINE# 1325 + C:207DH LINE# 1326 + C:207FH LINE# 1328 + C:2088H LINE# 1329 + C:208CH LINE# 1330 + C:2094H LINE# 1331 + C:2095H LINE# 1333 + C:2095H LINE# 1334 + C:2097H LINE# 1335 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 28 + + + C:20C2H LINE# 1336 + C:20C9H LINE# 1337 + C:20CBH LINE# 1338 + C:20CBH LINE# 1339 + C:20CBH LINE# 1340 + C:20CBH LINE# 1341 + C:20CBH LINE# 1342 + ------- ENDPROC CHECK_SWITCH + ------- PROC CHECK_VALUES + C:10BDH LINE# 1344 + C:10BDH LINE# 1345 + C:10BDH LINE# 1346 + C:10C3H LINE# 1347 + C:10C3H LINE# 1348 + C:10CCH LINE# 1349 + C:10CCH LINE# 1350 + C:10DCH LINE# 1351 + C:10DCH LINE# 1352 + C:10DEH LINE# 1357 + C:10E0H LINE# 1358 + C:10E0H LINE# 1359 + C:10EAH LINE# 1360 + C:10EAH LINE# 1361 + C:10EDH LINE# 1362 + C:10EDH LINE# 1364 + C:10F5H LINE# 1365 + C:10F9H LINE# 1366 + C:1101H LINE# 1368 + C:1101H LINE# 1369 + C:1103H LINE# 1370 + C:1105H LINE# 1371 + C:1107H LINE# 1372 + C:1107H LINE# 1373 + C:111DH LINE# 1374 + C:111DH LINE# 1375 + C:111FH LINE# 1376 + C:1121H LINE# 1377 + C:1121H LINE# 1378 + C:1121H LINE# 1380 + C:1124H LINE# 1381 + C:1124H LINE# 1382 + C:112CH LINE# 1385 + C:113FH LINE# 1386 + C:113FH LINE# 1387 + C:1143H LINE# 1388 + C:1145H LINE# 1389 + C:1147H LINE# 1390 + C:1147H LINE# 1391 + C:1147H LINE# 1393 + C:1153H LINE# 1394 + C:1153H LINE# 1405 + C:116DH LINE# 1406 + C:116DH LINE# 1407 + C:116FH LINE# 1408 + C:1171H LINE# 1409 + C:1174H LINE# 1410 + C:117EH LINE# 1411 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 29 + + + C:117EH LINE# 1412 + C:1186H LINE# 1414 + C:119CH LINE# 1415 + C:119CH LINE# 1416 + C:11A0H LINE# 1417 + C:11A2H LINE# 1418 + C:11ACH LINE# 1419 + C:11AEH LINE# 1420 + C:11AEH LINE# 1421 + C:11B1H LINE# 1423 + C:11B1H LINE# 1424 + C:11B3H LINE# 1425 + C:11B5H LINE# 1426 + C:11B7H LINE# 1427 + C:11BDH LINE# 1428 + C:11BFH LINE# 1429 + C:11C1H LINE# 1430 + C:11C3H LINE# 1431 + C:11C5H LINE# 1432 + C:11C7H LINE# 1433 + C:11C9H LINE# 1434 + C:11CBH LINE# 1435 + C:11CFH LINE# 1436 + C:11D1H LINE# 1438 + C:11DEH LINE# 1439 + C:11E2H LINE# 1440 + C:11EAH LINE# 1442 + C:120AH LINE# 1443 + C:1211H LINE# 1444 + C:121AH LINE# 1445 + C:1223H LINE# 1447 + C:122DH LINE# 1448 + C:122DH LINE# 1449 + C:1237H LINE# 1450 + C:1270H LINE# 1451 + C:128CH LINE# 1453 + C:129EH LINE# 1455 + C:12BEH LINE# 1456 + C:12C5H LINE# 1457 + C:12CEH LINE# 1458 + C:12D4H LINE# 1459 + C:12D7H LINE# 1460 + C:12E1H LINE# 1461 + C:12E1H LINE# 1462 + C:12EBH LINE# 1463 + C:1324H LINE# 1464 + C:1340H LINE# 1466 + C:1352H LINE# 1468 + C:1372H LINE# 1469 + C:1379H LINE# 1470 + C:1382H LINE# 1471 + C:1388H LINE# 1472 + C:138BH LINE# 1473 + C:1395H LINE# 1474 + C:1395H LINE# 1475 + C:139FH LINE# 1476 + C:13D8H LINE# 1477 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 30 + + + C:13F4H LINE# 1479 + C:1406H LINE# 1481 + C:1426H LINE# 1482 + C:142DH LINE# 1483 + C:1436H LINE# 1484 + C:143CH LINE# 1485 + C:143FH LINE# 1486 + C:1449H LINE# 1487 + C:1449H LINE# 1488 + C:1453H LINE# 1489 + C:148CH LINE# 1490 + C:14A8H LINE# 1492 + C:14BAH LINE# 1494 + C:14DAH LINE# 1495 + C:14E1H LINE# 1496 + C:14EAH LINE# 1497 + C:14F0H LINE# 1498 + C:14F3H LINE# 1499 + C:14FDH LINE# 1500 + C:14FDH LINE# 1501 + C:1507H LINE# 1502 + C:1540H LINE# 1503 + C:155CH LINE# 1505 + C:156EH LINE# 1507 + C:158EH LINE# 1508 + C:1595H LINE# 1509 + C:159EH LINE# 1510 + C:15A4H LINE# 1511 + C:15A7H LINE# 1512 + C:15BCH LINE# 1513 + C:15BCH LINE# 1514 + C:15C6H LINE# 1515 + C:15FFH LINE# 1516 + C:161BH LINE# 1518 + C:162DH LINE# 1520 + C:164DH LINE# 1521 + C:1654H LINE# 1522 + C:165DH LINE# 1523 + C:1666H LINE# 1524 + C:1666H LINE# 1525 + C:1666H LINE# 1526 + C:1666H LINE# 1528 + C:166FH LINE# 1529 + C:166FH LINE# 1530 + C:1677H LINE# 1531 + C:168AH LINE# 1532 + C:168AH LINE# 1533 + C:168CH LINE# 1534 + C:1692H LINE# 1535 + C:1696H LINE# 1536 + C:1696H LINE# 1537 + C:1696H LINE# 1539 + C:16A8H LINE# 1540 + C:16A8H LINE# 1541 + C:16B8H LINE# 1542 + C:16C6H LINE# 1543 + C:16D9H LINE# 1544 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 31 + + + C:16D9H LINE# 1545 + C:16DDH LINE# 1546 + C:16DFH LINE# 1548 + C:1703H LINE# 1550 + C:1705H LINE# 1555 + C:170CH LINE# 1557 + C:1717H LINE# 1558 + C:1717H LINE# 1559 + C:1717H LINE# 1562 + C:172AH LINE# 1563 + C:172AH LINE# 1564 + C:172CH LINE# 1565 + C:172EH LINE# 1566 + C:1734H LINE# 1567 + C:1741H LINE# 1569 + C:1745H LINE# 1570 + C:174DH LINE# 1571 + C:174FH LINE# 1572 + C:1751H LINE# 1573 + C:1751H LINE# 1574 + C:1751H LINE# 1575 + ------- ENDPROC CHECK_VALUES + ------- PROC PWD + ------- DO + D:005AH SYMBOL b + ------- ENDDO + C:43DAH LINE# 1577 + C:43DAH LINE# 1578 + C:43DAH LINE# 1579 + C:43DDH LINE# 1581 + C:43E1H LINE# 1582 + C:4407H LINE# 1584 + C:440AH LINE# 1588 + C:4411H LINE# 1590 + C:4411H LINE# 1591 + C:441CH LINE# 1592 + C:442AH LINE# 1596 + C:4436H LINE# 1598 + C:4436H LINE# 1599 + C:4438H LINE# 1600 + C:4442H LINE# 1603 + C:4446H LINE# 1605 + C:4446H LINE# 1612 + C:4448H LINE# 1616 + C:444EH LINE# 1618 + C:4457H LINE# 1619 + ------- ENDPROC PWD + ------- PROC _VAL_READ + D:005DH SYMBOL a + ------- DO + D:005EH SYMBOL b + ------- ENDDO + C:4458H LINE# 1621 + C:445AH LINE# 1622 + C:445AH LINE# 1624 + C:4461H LINE# 1629 + C:4473H LINE# 1631 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 32 + + + C:4473H LINE# 1632 + C:447EH LINE# 1633 + C:448CH LINE# 1638 + C:4498H LINE# 1640 + C:4498H LINE# 1641 + C:449AH LINE# 1642 + C:44A7H LINE# 1644 + C:44ABH LINE# 1646 + C:44ABH LINE# 1653 + C:44ADH LINE# 1657 + C:44B3H LINE# 1659 + C:44B3H LINE# 1663 + C:44B9H LINE# 1665 + C:44C2H LINE# 1666 + C:44C4H LINE# 1667 + C:44C5H LINE# 1668 + C:44C7H LINE# 1672 + ------- ENDPROC _VAL_READ + C:4788H SYMBOL L?0771 + C:478CH SYMBOL L?0772 + ------- PROC L?0770 + ------- ENDPROC L?0770 + C:4788H SYMBOL L?0771 + C:478CH SYMBOL L?0772 + ------- PROC _BLINK + D:005FH SYMBOL start + D:0061H SYMBOL no + ------- DO + D:0007H SYMBOL k + ------- ENDDO + C:4790H LINE# 1674 + C:4798H LINE# 1675 + C:4798H LINE# 1678 + C:47A3H LINE# 1679 + C:47C4H LINE# 1680 + C:47C7H LINE# 1681 + C:47CEH LINE# 1682 + C:47D9H LINE# 1683 + C:47DCH LINE# 1684 + ------- ENDPROC _BLINK + ------- PROC RECIPE_MENU + ------- DO + D:005AH SYMBOL b + C:3AECH SYMBOL err_rtn + ------- ENDDO + C:3AE7H LINE# 1687 + C:3AE7H LINE# 1688 + C:3AE7H LINE# 1690 + C:3AEAH LINE# 1691 + C:3AECH LINE# 1692 + C:3AECH LINE# 1693 + C:3AF5H LINE# 1695 + C:3B2BH LINE# 1696 + C:3B2EH LINE# 1700 + C:3B3BH LINE# 1702 + C:3B3BH LINE# 1703 + C:3B46H LINE# 1704 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 33 + + + C:3B54H LINE# 1709 + C:3B60H LINE# 1711 + C:3B60H LINE# 1712 + C:3B62H LINE# 1713 + C:3B6CH LINE# 1716 + C:3B70H LINE# 1718 + C:3B70H LINE# 1722 + C:3B77H LINE# 1730 + C:3B77H LINE# 1734 + C:3B7EH LINE# 1736 + C:3B7EH LINE# 1737 + C:3B8DH LINE# 1738 + C:3B93H LINE# 1739 + C:3B9AH LINE# 1740 + C:3B9AH LINE# 1741 + C:3BC5H LINE# 1742 + C:3BCCH LINE# 1743 + C:3BCFH LINE# 1744 + C:3BCFH LINE# 1745 + C:3BD6H LINE# 1746 + C:3BD6H LINE# 1750 + C:3BDCH LINE# 1752 + C:3BE5H LINE# 1753 + ------- ENDPROC RECIPE_MENU + ------- PROC MENU + ------- DO + D:005AH SYMBOL dat + B:0025H.0 SYMBOL err_flag + D:005BH SYMBOL temp + ------- ENDDO + C:08BEH LINE# 1755 + C:08BEH LINE# 1756 + C:08BEH LINE# 1758 + C:08C0H LINE# 1761 + C:08C3H LINE# 1762 + C:08C5H LINE# 1763 + C:08C7H LINE# 1765 + C:08DCH LINE# 1766 + C:08EEH LINE# 1767 + C:0900H LINE# 1768 + C:0910H LINE# 1771 + C:0910H LINE# 1772 + C:0934H LINE# 1774 + C:0964H LINE# 1775 + C:0967H LINE# 1776 + C:096EH LINE# 1777 + C:0973H LINE# 1778 + C:0979H LINE# 1783 + C:0983H LINE# 1785 + C:0983H LINE# 1786 + C:098CH LINE# 1787 + C:09B1H LINE# 1788 + C:09B1H LINE# 1789 + C:09B3H LINE# 1790 + C:09DEH LINE# 1791 + C:09E5H LINE# 1792 + C:09E7H LINE# 1794 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 34 + + + C:09E7H LINE# 1795 + C:09EEH LINE# 1796 + C:0A01H LINE# 1797 + C:0A14H LINE# 1798 + C:0A27H LINE# 1799 + C:0A38H LINE# 1801 + C:0A45H LINE# 1802 + C:0A53H LINE# 1803 + C:0A55H LINE# 1804 + C:0A55H LINE# 1805 + C:0A55H LINE# 1806 + C:0A5BH LINE# 1851 + C:0A5BH LINE# 1852 + C:0A81H LINE# 1854 + C:0AB3H LINE# 1857 + C:0ABFH LINE# 1858 + C:0AC6H LINE# 1861 + C:0ACBH LINE# 1862 + C:0AD1H LINE# 1867 + C:0ADBH LINE# 1869 + C:0ADBH LINE# 1872 + C:0AE4H LINE# 1874 + C:0AF0H LINE# 1875 + C:0AF0H LINE# 1876 + C:0AF2H LINE# 1877 + C:0B1DH LINE# 1878 + C:0B24H LINE# 1879 + C:0B26H LINE# 1881 + C:0B26H LINE# 1883 + C:0B2DH LINE# 1884 + C:0B40H LINE# 1885 + C:0B53H LINE# 1886 + C:0B66H LINE# 1887 + C:0B77H LINE# 1889 + C:0B86H LINE# 1890 + C:0B95H LINE# 1891 + C:0B97H LINE# 1892 + C:0B97H LINE# 1893 + C:0B97H LINE# 1894 + C:0B9DH LINE# 1902 + C:0B9DH LINE# 1903 + C:0BC3H LINE# 1905 + C:0BF5H LINE# 1906 + C:0C01H LINE# 1907 + C:0C08H LINE# 1908 + C:0C0DH LINE# 1909 + C:0C13H LINE# 1914 + C:0C1DH LINE# 1916 + C:0C1DH LINE# 1917 + C:0C26H LINE# 1919 + C:0C3BH LINE# 1920 + C:0C3BH LINE# 1921 + C:0C3DH LINE# 1922 + C:0C68H LINE# 1923 + C:0C6FH LINE# 1924 + C:0C71H LINE# 1926 + C:0C71H LINE# 1927 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 35 + + + C:0C78H LINE# 1928 + C:0C8BH LINE# 1929 + C:0C9EH LINE# 1930 + C:0CB1H LINE# 1931 + C:0CC2H LINE# 1933 + C:0CD1H LINE# 1934 + C:0CE0H LINE# 1935 + C:0CE2H LINE# 1936 + C:0CE2H LINE# 1937 + C:0CE2H LINE# 1938 + C:0CE8H LINE# 1941 + C:0CE8H LINE# 1942 + C:0D0EH LINE# 1944 + C:0D40H LINE# 1945 + C:0D45H LINE# 1946 + C:0D4CH LINE# 1947 + C:0D51H LINE# 1948 + C:0D57H LINE# 1953 + C:0D61H LINE# 1955 + C:0D61H LINE# 1956 + C:0D6AH LINE# 1958 + C:0D98H LINE# 1959 + C:0D98H LINE# 1960 + C:0D9AH LINE# 1961 + C:0DC5H LINE# 1962 + C:0DCCH LINE# 1963 + C:0DCEH LINE# 1965 + C:0DCEH LINE# 1966 + C:0DD5H LINE# 1967 + C:0DE8H LINE# 1968 + C:0DFBH LINE# 1969 + C:0E0EH LINE# 1970 + C:0E1FH LINE# 1972 + C:0E2EH LINE# 1973 + C:0E3DH LINE# 1974 + C:0E3FH LINE# 1975 + C:0E3FH LINE# 1976 + C:0E3FH LINE# 1977 + C:0E45H LINE# 1980 + C:0E45H LINE# 1981 + C:0E6BH LINE# 1983 + C:0E9DH LINE# 1984 + C:0EA9H LINE# 1985 + C:0EB0H LINE# 1986 + C:0EB5H LINE# 1987 + C:0EBBH LINE# 1992 + C:0EC5H LINE# 1994 + C:0EC5H LINE# 1995 + C:0ECEH LINE# 1996 + C:0EDAH LINE# 1997 + C:0EDAH LINE# 1998 + C:0EDCH LINE# 1999 + C:0F07H LINE# 2000 + C:0F0EH LINE# 2001 + C:0F10H LINE# 2003 + C:0F10H LINE# 2004 + C:0F17H LINE# 2005 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 36 + + + C:0F2AH LINE# 2006 + C:0F3DH LINE# 2007 + C:0F50H LINE# 2008 + C:0F61H LINE# 2010 + C:0F70H LINE# 2011 + C:0F7FH LINE# 2012 + C:0F81H LINE# 2013 + C:0F81H LINE# 2014 + C:0F81H LINE# 2015 + C:0F87H LINE# 2016 + C:0F89H LINE# 2018 + C:0FB6H LINE# 2020 + C:0FEEH LINE# 2021 + C:0FF5H LINE# 2022 + C:0FFDH LINE# 2023 + C:1000H LINE# 2027 + C:100DH LINE# 2029 + C:100DH LINE# 2030 + C:1010H LINE# 2031 + C:101BH LINE# 2032 + C:1026H LINE# 2033 + C:102BH LINE# 2034 + C:102DH LINE# 2039 + C:1034H LINE# 2041 + C:1034H LINE# 2042 + C:104BH LINE# 2043 + C:1062H LINE# 2044 + C:1079H LINE# 2045 + C:1094H LINE# 2046 + C:1094H LINE# 2047 + C:10A3H LINE# 2048 + C:10A5H LINE# 2050 + C:10ACH LINE# 2051 + C:10B9H LINE# 2052 + C:10BCH LINE# 2053 + ------- ENDPROC MENU + ------- PROC SETTINGS + ------- DO + D:005BH SYMBOL dat + C:1D61H SYMBOL end + ------- ENDDO + C:1752H LINE# 2055 + C:1752H LINE# 2056 + C:1752H LINE# 2058 + C:1755H LINE# 2059 + C:1759H LINE# 2060 + C:175BH LINE# 2062 + C:1760H LINE# 2063 + C:179FH LINE# 2064 + C:17ABH LINE# 2065 + C:17B2H LINE# 2066 + C:17B7H LINE# 2067 + C:17BDH LINE# 2068 + C:17C6H LINE# 2072 + C:17CCH LINE# 2074 + C:17CCH LINE# 2075 + C:17D5H LINE# 2076 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 37 + + + C:17D5H LINE# 2079 + C:17DCH LINE# 2080 + C:181DH LINE# 2081 + C:1829H LINE# 2082 + C:1830H LINE# 2083 + C:1835H LINE# 2084 + C:183BH LINE# 2085 + C:1844H LINE# 2090 + C:184FH LINE# 2096 + C:1853H LINE# 2098 + C:1853H LINE# 2099 + C:185CH LINE# 2100 + C:185CH LINE# 2103 + C:1863H LINE# 2104 + C:18A4H LINE# 2105 + C:18B0H LINE# 2106 + C:18B7H LINE# 2107 + C:18BCH LINE# 2108 + C:18C2H LINE# 2109 + C:18C9H LINE# 2114 + C:18D4H LINE# 2120 + C:18D8H LINE# 2122 + C:18D8H LINE# 2123 + C:18DFH LINE# 2124 + C:18DFH LINE# 2126 + C:1902H LINE# 2127 + C:190EH LINE# 2128 + C:1915H LINE# 2131 + C:191AH LINE# 2132 + C:1926H LINE# 2134 + C:192CH LINE# 2138 + C:1932H LINE# 2140 + C:1932H LINE# 2141 + C:193BH LINE# 2142 + C:1944H LINE# 2143 + C:1944H LINE# 2145 + C:1971H LINE# 2146 + C:1978H LINE# 2150 + C:198AH LINE# 2152 + C:198AH LINE# 2153 + C:198DH LINE# 2154 + C:199CH LINE# 2155 + C:199EH LINE# 2156 + C:19A0H LINE# 2160 + C:19ABH LINE# 2166 + C:19AFH LINE# 2168 + C:19AFH LINE# 2169 + C:19B8H LINE# 2170 + C:19C5H LINE# 2171 + C:19C5H LINE# 2173 + C:19C8H LINE# 2174 + C:19C8H LINE# 2175 + C:19F1H LINE# 2177 + C:19F4H LINE# 2178 + C:19F4H LINE# 2181 + C:1A1AH LINE# 2182 + C:1A34H LINE# 2183 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 38 + + + C:1A3BH LINE# 2187 + C:1A4DH LINE# 2189 + C:1A4DH LINE# 2190 + C:1A54H LINE# 2193 + C:1A5DH LINE# 2196 + C:1A63H LINE# 2197 + C:1A63H LINE# 2198 + C:1A66H LINE# 2201 + C:1A6EH LINE# 2202 + C:1A6EH LINE# 2210 + C:1A88H LINE# 2211 + C:1A8AH LINE# 2215 + C:1A95H LINE# 2221 + C:1A99H LINE# 2223 + C:1A99H LINE# 2224 + C:1AA2H LINE# 2225 + C:1AA2H LINE# 2227 + C:1ADAH LINE# 2228 + C:1AE1H LINE# 2229 + C:1AE7H LINE# 2230 + C:1AEDH LINE# 2231 + C:1AF4H LINE# 2235 + C:1B06H LINE# 2237 + C:1B06H LINE# 2238 + C:1B11H LINE# 2239 + C:1B1CH LINE# 2242 + C:1B22H LINE# 2243 + C:1B22H LINE# 2244 + C:1B24H LINE# 2245 + C:1B30H LINE# 2246 + C:1B30H LINE# 2253 + C:1B34H LINE# 2254 + C:1B3BH LINE# 2255 + C:1B43H LINE# 2256 + C:1B4EH LINE# 2257 + C:1B55H LINE# 2258 + C:1B57H LINE# 2262 + C:1B62H LINE# 2268 + C:1B66H LINE# 2270 + C:1B66H LINE# 2271 + C:1B6FH LINE# 2272 + C:1B6FH LINE# 2274 + C:1B85H LINE# 2275 + C:1B98H LINE# 2276 + C:1BC8H LINE# 2278 + C:1BF5H LINE# 2279 + C:1BFCH LINE# 2283 + C:1C0EH LINE# 2285 + C:1C0EH LINE# 2286 + C:1C11H LINE# 2287 + C:1C20H LINE# 2290 + C:1C26H LINE# 2291 + C:1C26H LINE# 2292 + C:1C29H LINE# 2293 + C:1C31H LINE# 2294 + C:1C31H LINE# 2301 + C:1C36H LINE# 2302 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 39 + + + C:1C38H LINE# 2306 + C:1C43H LINE# 2312 + C:1C47H LINE# 2314 + C:1C47H LINE# 2315 + C:1C50H LINE# 2316 + C:1C50H LINE# 2318 + C:1C7DH LINE# 2319 + C:1C84H LINE# 2323 + C:1C96H LINE# 2325 + C:1C96H LINE# 2326 + C:1C99H LINE# 2327 + C:1CA8H LINE# 2330 + C:1CAEH LINE# 2331 + C:1CAEH LINE# 2332 + C:1CB1H LINE# 2333 + C:1CB9H LINE# 2334 + C:1CB9H LINE# 2341 + C:1CBEH LINE# 2342 + C:1CC0H LINE# 2346 + C:1CCBH LINE# 2352 + C:1CCFH LINE# 2354 + C:1CCFH LINE# 2355 + C:1CD8H LINE# 2356 + C:1CD8H LINE# 2358 + C:1CDAH LINE# 2359 + C:1D07H LINE# 2360 + C:1D0EH LINE# 2364 + C:1D20H LINE# 2366 + C:1D20H LINE# 2367 + C:1D23H LINE# 2368 + C:1D32H LINE# 2371 + C:1D38H LINE# 2372 + C:1D38H LINE# 2373 + C:1D3BH LINE# 2374 + C:1D43H LINE# 2375 + C:1D43H LINE# 2382 + C:1D48H LINE# 2383 + C:1D4AH LINE# 2387 + C:1D52H LINE# 2393 + C:1D56H LINE# 2395 + C:1D56H LINE# 2396 + C:1D5FH LINE# 2397 + C:1D5FH LINE# 2398 + C:1D61H LINE# 2400 + C:1D61H LINE# 2401 + C:1D68H LINE# 2402 + C:1D75H LINE# 2403 + C:1D78H LINE# 2404 + ------- ENDPROC SETTINGS + ------- PROC SYS_PARAMTS + ------- DO + D:005BH SYMBOL dat + ------- ENDDO + C:2415H LINE# 2406 + C:2415H LINE# 2407 + C:2415H LINE# 2409 + C:2418H LINE# 2410 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 40 + + + C:241AH LINE# 2411 + C:241CH LINE# 2414 + C:2447H LINE# 2415 + C:244EH LINE# 2416 + C:2455H LINE# 2419 + C:245DH LINE# 2420 + C:245FH LINE# 2424 + C:2471H LINE# 2426 + C:2471H LINE# 2427 + C:2474H LINE# 2428 + C:247FH LINE# 2429 + C:248AH LINE# 2430 + C:2492H LINE# 2431 + C:2494H LINE# 2435 + C:249FH LINE# 2441 + C:24A3H LINE# 2443 + C:24A3H LINE# 2444 + C:24AAH LINE# 2445 + C:24AAH LINE# 2447 + C:24D5H LINE# 2448 + C:24DCH LINE# 2449 + C:24E3H LINE# 2452 + C:24EBH LINE# 2453 + C:24EDH LINE# 2457 + C:24FFH LINE# 2459 + C:24FFH LINE# 2460 + C:2502H LINE# 2461 + C:250DH LINE# 2462 + C:2518H LINE# 2463 + C:2520H LINE# 2464 + C:2522H LINE# 2468 + C:252DH LINE# 2474 + C:2531H LINE# 2476 + C:2531H LINE# 2477 + C:2538H LINE# 2478 + C:2538H LINE# 2481 + C:2563H LINE# 2482 + C:256CH LINE# 2483 + C:2573H LINE# 2484 + C:257AH LINE# 2485 + C:257FH LINE# 2486 + C:2585H LINE# 2487 + C:258EH LINE# 2492 + C:2599H LINE# 2498 + C:259DH LINE# 2500 + C:259DH LINE# 2501 + C:25A6H LINE# 2502 + C:25A6H LINE# 2504 + C:25D1H LINE# 2505 + C:25D8H LINE# 2506 + C:25DFH LINE# 2509 + C:25E7H LINE# 2510 + C:25E9H LINE# 2514 + C:25FBH LINE# 2516 + C:25FBH LINE# 2517 + C:25FEH LINE# 2518 + C:2609H LINE# 2519 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 41 + + + C:2614H LINE# 2520 + C:261CH LINE# 2521 + C:261EH LINE# 2525 + C:2629H LINE# 2531 + C:262DH LINE# 2533 + C:262DH LINE# 2534 + C:2634H LINE# 2535 + C:2634H LINE# 2537 + C:265FH LINE# 2538 + C:2666H LINE# 2539 + C:266DH LINE# 2542 + C:2675H LINE# 2543 + C:2677H LINE# 2547 + C:2689H LINE# 2549 + C:2689H LINE# 2550 + C:268CH LINE# 2551 + C:2697H LINE# 2552 + C:26A2H LINE# 2553 + C:26AAH LINE# 2554 + C:26ACH LINE# 2558 + C:26B7H LINE# 2564 + C:26BBH LINE# 2566 + C:26BBH LINE# 2567 + C:26C2H LINE# 2568 + C:26C2H LINE# 2570 + C:26EDH LINE# 2571 + C:26F4H LINE# 2572 + C:26FBH LINE# 2575 + C:2703H LINE# 2576 + C:2705H LINE# 2580 + C:2717H LINE# 2582 + C:2717H LINE# 2583 + C:271AH LINE# 2584 + C:2725H LINE# 2585 + C:2730H LINE# 2586 + C:2738H LINE# 2587 + C:273AH LINE# 2591 + C:2742H LINE# 2597 + C:2746H LINE# 2599 + C:2746H LINE# 2600 + C:274DH LINE# 2601 + C:274DH LINE# 2604 + C:2756H LINE# 2605 + C:2759H LINE# 2606 + C:275BH LINE# 2607 + ------- ENDPROC SYS_PARAMTS + ------- PROC _BCD2BIN + D:0003H SYMBOL no + ------- DO + D:005DH SYMBOL bin_val + D:0082H SYMBOL mul + D:0002H SYMBOL i + ------- ENDDO + C:482FH LINE# 2653 + C:4831H LINE# 2654 + C:4831H LINE# 2655 + C:4834H LINE# 2657 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 42 + + + C:4839H LINE# 2658 + C:4849H LINE# 2659 + C:4849H LINE# 2660 + C:4862H LINE# 2661 + C:4871H LINE# 2662 + C:4874H LINE# 2663 + C:4878H LINE# 2664 + ------- ENDPROC _BCD2BIN + C:4728H SYMBOL L?0777 + C:4729H SYMBOL L?0778 + ------- PROC L?0776 + ------- ENDPROC L?0776 + C:4728H SYMBOL L?0777 + C:4729H SYMBOL L?0778 + ------- PROC _INCDEC + D:0007H SYMBOL name + D:0001H SYMBOL max + D:0003H SYMBOL min + C:472FH LINE# 2666 + C:4731H LINE# 2667 + C:4731H LINE# 2671 + C:4738H LINE# 2673 + C:4738H LINE# 2674 + C:4739H LINE# 2675 + C:4746H LINE# 2676 + C:4747H LINE# 2680 + C:474BH LINE# 2682 + C:474BH LINE# 2683 + C:474CH LINE# 2684 + C:4759H LINE# 2685 + C:475AH LINE# 2688 + C:4781H LINE# 2689 + C:4781H LINE# 2690 + C:4785H LINE# 2691 + C:4787H LINE# 2692 + C:4787H LINE# 2694 + C:4787H LINE# 2695 + ------- ENDPROC _INCDEC + ------- PROC CAL + ------- DO + D:005BH SYMBOL j + ------- ENDDO + C:3060H LINE# 2697 + C:3060H LINE# 2698 + C:3060H LINE# 2701 + C:3063H LINE# 2702 + C:3063H LINE# 2703 + C:308EH LINE# 2705 + C:308EH LINE# 2708 + C:30B9H LINE# 2709 + C:30C0H LINE# 2710 + C:30EBH LINE# 2711 + C:30F1H LINE# 2715 + C:30FEH LINE# 2717 + C:3107H LINE# 2722 + C:310DH LINE# 2724 + C:310DH LINE# 2729 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 43 + + + C:311FH LINE# 2732 + C:311FH LINE# 2736 + C:312EH LINE# 2739 + C:3159H LINE# 2740 + C:315BH LINE# 2741 + C:315DH LINE# 2742 + C:315FH LINE# 2743 + C:3162H LINE# 2744 + C:3164H LINE# 2746 + C:3167H LINE# 2747 + C:3175H LINE# 2748 + C:3177H LINE# 2749 + C:317AH LINE# 2750 + C:317AH LINE# 2751 + C:3192H LINE# 2752 + C:31A4H LINE# 2753 + C:31ABH LINE# 2754 + C:31ADH LINE# 2758 + C:31BAH LINE# 2760 + C:31BAH LINE# 2761 + C:31C5H LINE# 2762 + C:31D3H LINE# 2767 + C:31DFH LINE# 2769 + C:31DFH LINE# 2770 + C:31E1H LINE# 2771 + C:31EBH LINE# 2772 + C:31EBH LINE# 2779 + C:31EDH LINE# 2783 + C:31F3H LINE# 2785 + C:31F3H LINE# 2789 + C:31FAH LINE# 2791 + C:3202H LINE# 2793 + C:3202H LINE# 2797 + C:3208H LINE# 2799 + C:3211H LINE# 2800 + C:3213H LINE# 2801 + C:321FH LINE# 2802 + C:322BH LINE# 2803 + C:3232H LINE# 2804 + C:3234H LINE# 2805 + ------- ENDPROC CAL + ------- PROC CAL_FIND + C:39D9H LINE# 2807 + C:39D9H LINE# 2808 + C:39D9H LINE# 2809 + C:39DFH LINE# 2810 + C:39DFH LINE# 2811 + C:39E1H LINE# 2812 + C:39F4H LINE# 2813 + C:3A04H LINE# 2815 + C:3A1EH LINE# 2816 + C:3A30H LINE# 2818 + C:3A37H LINE# 2819 + C:3A37H LINE# 2820 + C:3A5CH LINE# 2821 + C:3A63H LINE# 2823 + C:3A67H LINE# 2824 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 44 + + + C:3A70H LINE# 2825 + C:3A79H LINE# 2826 + C:3AA4H LINE# 2827 + C:3AABH LINE# 2828 + C:3AAEH LINE# 2829 + C:3AAEH LINE# 2831 + C:3AAEH LINE# 2832 + C:3AD9H LINE# 2833 + C:3AE0H LINE# 2834 + C:3AE3H LINE# 2835 + C:3AE6H LINE# 2836 + C:3AE6H LINE# 2837 + C:3AE6H LINE# 2838 + ------- ENDPROC CAL_FIND + ------- PROC CALIBRATE + C:48C2H LINE# 2840 + C:48C2H LINE# 2841 + C:48C2H LINE# 2842 + C:48D2H LINE# 2843 + C:48E2H LINE# 2844 + C:4903H LINE# 2845 + C:490AH LINE# 2847 + ------- ENDPROC CALIBRATE + ------- PROC CAL_RST + C:417DH LINE# 2849 + C:417DH LINE# 2850 + C:417DH LINE# 2851 + C:4180H LINE# 2852 + C:4180H LINE# 2853 + C:41ABH LINE# 2855 + C:41ABH LINE# 2858 + C:41D6H LINE# 2862 + C:41E3H LINE# 2864 + C:41ECH LINE# 2869 + C:41F2H LINE# 2871 + C:41F2H LINE# 2875 + C:4201H LINE# 2878 + C:4201H LINE# 2882 + C:4207H LINE# 2884 + C:4210H LINE# 2885 + C:4213H LINE# 2886 + C:4217H LINE# 2887 + C:421EH LINE# 2888 + C:4225H LINE# 2889 + C:4228H LINE# 2890 + ------- ENDPROC CAL_RST + ------- PROC SELECT_MENU + ------- DO + D:005AH SYMBOL no + ------- ENDDO + C:275CH LINE# 2892 + C:275CH LINE# 2893 + C:275CH LINE# 2894 + C:275FH LINE# 2895 + C:2762H LINE# 2899 + C:2775H LINE# 2901 + C:2775H LINE# 2902 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 45 + + + C:277FH LINE# 2904 + C:278AH LINE# 2905 + C:278DH LINE# 2906 + C:27BEH LINE# 2907 + C:27BEH LINE# 2908 + C:27BEH LINE# 2909 + C:27E6H LINE# 2910 + C:27E9H LINE# 2911 + C:27E9H LINE# 2912 + C:2811H LINE# 2913 + C:2814H LINE# 2914 + C:2814H LINE# 2915 + C:283CH LINE# 2916 + C:283FH LINE# 2917 + C:283FH LINE# 2918 + C:2867H LINE# 2919 + C:286AH LINE# 2920 + C:286AH LINE# 2921 + C:2892H LINE# 2922 + C:2895H LINE# 2923 + C:2895H LINE# 2924 + C:28BDH LINE# 2925 + C:28C0H LINE# 2926 + C:28C0H LINE# 2927 + C:28E8H LINE# 2928 + C:28EBH LINE# 2929 + C:28EBH LINE# 2930 + C:2913H LINE# 2931 + C:2915H LINE# 2932 + C:2915H LINE# 2933 + C:2940H LINE# 2934 + C:2947H LINE# 2935 + C:2972H LINE# 2936 + C:2975H LINE# 2937 + C:2975H LINE# 2938 + C:2975H LINE# 2942 + C:297CH LINE# 2944 + C:29ADH LINE# 2945 + C:29ADH LINE# 2947 + C:29ADH LINE# 2948 + C:29B0H LINE# 2949 + C:29B3H LINE# 2950 + C:29B3H LINE# 2951 + C:29B3H LINE# 2952 + C:29B6H LINE# 2953 + C:29B6H LINE# 2954 + C:29B6H LINE# 2955 + C:29B9H LINE# 2956 + C:29B9H LINE# 2957 + C:29B9H LINE# 2958 + C:29BCH LINE# 2959 + C:29BCH LINE# 2960 + C:29BCH LINE# 2961 + C:29BFH LINE# 2962 + C:29BFH LINE# 2963 + C:29BFH LINE# 2964 + C:29C2H LINE# 2965 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 46 + + + C:29C2H LINE# 2966 + C:29C2H LINE# 2967 + C:29C5H LINE# 2968 + C:29C5H LINE# 2969 + C:29C5H LINE# 2970 + C:29C8H LINE# 2971 + C:29C8H LINE# 2972 + C:29C8H LINE# 2973 + C:29CBH LINE# 2974 + C:29CBH LINE# 2975 + C:29CBH LINE# 2976 + ------- ENDPROC SELECT_MENU + ------- PROC DISPLAY_TOTAL_CUMULATIVE + C:3CE5H LINE# 2978 + C:3CE5H LINE# 2979 + C:3CE5H LINE# 2980 + C:3CEEH LINE# 2981 + C:3CF0H LINE# 2982 + C:3D9FH LINE# 2984 + C:3DAAH LINE# 2988 + C:3DB7H LINE# 2990 + C:3DC0H LINE# 2991 + ------- ENDPROC DISPLAY_TOTAL_CUMULATIVE + ------- PROC DISPLAY_TOTAL_BATCH + C:364DH LINE# 2993 + C:364DH LINE# 2994 + C:364DH LINE# 2995 + C:373AH LINE# 3002 + C:3765H LINE# 3003 + C:3771H LINE# 3007 + C:377EH LINE# 3009 + C:3787H LINE# 3010 + ------- ENDPROC DISPLAY_TOTAL_BATCH + ------- PROC DISPLAY_CURRENT_CUMULATIVE + ------- DO + D:005BH SYMBOL sdat + D:005CH SYMBOL b + ------- ENDDO + C:3BE6H LINE# 3012 + C:3BE6H LINE# 3013 + C:3BE6H LINE# 3014 + C:3BECH LINE# 3016 + C:3BF5H LINE# 3017 + C:3BF7H LINE# 3018 + C:3C01H LINE# 3019 + C:3C06H LINE# 3024 + C:3C0CH LINE# 3026 + C:3C15H LINE# 3027 + C:3C40H LINE# 3028 + C:3C47H LINE# 3030 + C:3C4AH LINE# 3031 + C:3C4CH LINE# 3035 + C:3C61H LINE# 3037 + C:3C61H LINE# 3038 + C:3C6CH LINE# 3039 + C:3C81H LINE# 3041 + C:3C85H LINE# 3042 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 47 + + + C:3C8CH LINE# 3044 + C:3C91H LINE# 3045 + C:3C95H LINE# 3046 + C:3C9AH LINE# 3047 + C:3C9EH LINE# 3048 + C:3CA3H LINE# 3049 + C:3CA7H LINE# 3050 + C:3CACH LINE# 3051 + C:3CB0H LINE# 3052 + C:3CB5H LINE# 3053 + C:3CB9H LINE# 3054 + C:3CBEH LINE# 3055 + C:3CC8H LINE# 3059 + C:3CD2H LINE# 3060 + C:3CD5H LINE# 3064 + C:3CDBH LINE# 3066 + C:3CE4H LINE# 3099 + ------- ENDPROC DISPLAY_CURRENT_CUMULATIVE + ------- PROC DISPLAY_CURRENT_BATCH + ------- DO + D:005BH SYMBOL sdat + D:005CH SYMBOL b + ------- ENDDO + C:33A0H LINE# 3101 + C:33A0H LINE# 3102 + C:33A0H LINE# 3103 + C:33A6H LINE# 3104 + C:33AFH LINE# 3105 + C:33B1H LINE# 3106 + C:33BBH LINE# 3107 + C:33C0H LINE# 3112 + C:33C6H LINE# 3114 + C:33CFH LINE# 3117 + C:33FBH LINE# 3118 + C:3402H LINE# 3119 + C:3405H LINE# 3121 + C:3407H LINE# 3125 + C:3422H LINE# 3127 + C:3422H LINE# 3128 + C:342DH LINE# 3129 + C:3442H LINE# 3131 + C:3446H LINE# 3132 + C:344DH LINE# 3134 + C:3452H LINE# 3135 + C:3463H LINE# 3136 + C:3468H LINE# 3137 + C:3479H LINE# 3138 + C:347EH LINE# 3139 + C:348FH LINE# 3140 + C:3494H LINE# 3141 + C:34A5H LINE# 3142 + C:34AAH LINE# 3143 + C:34BBH LINE# 3144 + C:34C0H LINE# 3145 + C:34E0H LINE# 3148 + C:34E5H LINE# 3149 + C:34E8H LINE# 3153 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 48 + + + C:34F7H LINE# 3155 + C:34F9H LINE# 3156 + ------- ENDPROC DISPLAY_CURRENT_BATCH + ------- PROC CLEAR_CURRENT_CUMULATIVE_BATCH + C:3235H LINE# 3192 + C:3235H LINE# 3193 + C:3235H LINE# 3194 + C:3260H LINE# 3198 + C:3272H LINE# 3200 + C:3272H LINE# 3201 + C:327CH LINE# 3202 + C:327EH LINE# 3206 + C:3288H LINE# 3208 + C:3288H LINE# 3209 + C:3291H LINE# 3210 + C:3297H LINE# 3211 + C:329EH LINE# 3212 + C:329EH LINE# 3213 + C:32B0H LINE# 3214 + C:32B9H LINE# 3215 + C:32BFH LINE# 3216 + C:32C2H LINE# 3217 + C:32C9H LINE# 3218 + C:32C9H LINE# 3219 + C:32DBH LINE# 3220 + C:32E4H LINE# 3221 + C:32EAH LINE# 3222 + C:32EDH LINE# 3223 + C:32F4H LINE# 3224 + C:32F4H LINE# 3225 + C:3306H LINE# 3226 + C:330FH LINE# 3227 + C:3315H LINE# 3228 + C:3318H LINE# 3229 + C:331FH LINE# 3230 + C:331FH LINE# 3231 + C:3331H LINE# 3232 + C:333AH LINE# 3233 + C:3340H LINE# 3234 + C:3342H LINE# 3235 + C:3349H LINE# 3236 + C:3349H LINE# 3237 + C:335BH LINE# 3238 + C:3364H LINE# 3239 + C:336AH LINE# 3240 + C:336CH LINE# 3241 + C:337BH LINE# 3242 + C:337BH LINE# 3243 + C:338DH LINE# 3244 + C:3396H LINE# 3245 + C:339FH LINE# 3246 + C:339FH LINE# 3247 + C:339FH LINE# 3248 + ------- ENDPROC CLEAR_CURRENT_CUMULATIVE_BATCH + ------- PROC CLEAR_BATCH_CUMULATIVE + C:3788H LINE# 3250 + C:3788H LINE# 3251 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 49 + + + C:3788H LINE# 3252 + C:37B3H LINE# 3256 + C:37C5H LINE# 3258 + C:37C5H LINE# 3259 + C:37CFH LINE# 3260 + C:37D1H LINE# 3264 + C:37DBH LINE# 3266 + C:37DBH LINE# 3267 + C:37E4H LINE# 3268 + C:37EAH LINE# 3270 + C:37FCH LINE# 3271 + C:3805H LINE# 3272 + C:380EH LINE# 3274 + C:3820H LINE# 3275 + C:3829H LINE# 3276 + C:3832H LINE# 3278 + C:3844H LINE# 3279 + C:384DH LINE# 3280 + C:3856H LINE# 3282 + C:3868H LINE# 3283 + C:3871H LINE# 3284 + C:387AH LINE# 3286 + C:388CH LINE# 3287 + C:3895H LINE# 3288 + C:389EH LINE# 3290 + C:38B0H LINE# 3291 + C:38B9H LINE# 3292 + C:38C2H LINE# 3293 + C:38C2H LINE# 3294 + ------- ENDPROC CLEAR_BATCH_CUMULATIVE + ------- ENDMOD MAIN + + ------- MODULE SER_DISP + C:0000H SYMBOL _ICE_DUMMY_ + C:4A45H PUBLIC h_7 + C:4950H PUBLIC display_name + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + B:00A8H.7 PUBLIC EA + D:00A8H PUBLIC IE + C:4229H PUBLIC _long2bcd + D:00B8H PUBLIC IP + C:4A64H PUBLIC filltronics + C:4C60H PUBLIC _disp + D:0098H PUBLIC SCON + D:0088H PUBLIC TCON + B:00A0H.7 PUBLIC ser_data + C:4C45H PUBLIC clr_disp + C:45FFH PUBLIC _batch2bcd + B:00A0H.6 PUBLIC ser_clk + D:00C8H PUBLIC T2CON + C:46C7H PUBLIC display + D:00D0H PUBLIC PSW + ------- PROC DISPLAY + ------- DO + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 50 + + + D:006CH SYMBOL i + D:006DH SYMBOL j + D:006EH SYMBOL temp + ------- ENDDO + C:46C7H LINE# 51 + C:46C7H LINE# 52 + C:46C7H LINE# 55 + C:46C9H LINE# 56 + C:46CCH LINE# 57 + C:46CCH LINE# 58 + C:46E6H LINE# 59 + C:46F2H LINE# 60 + C:46F5H LINE# 61 + C:46F5H LINE# 62 + C:46FEH LINE# 63 + C:4700H LINE# 65 + C:4702H LINE# 66 + C:4703H LINE# 67 + C:4704H LINE# 68 + C:4705H LINE# 69 + C:4707H LINE# 71 + C:470DH LINE# 72 + C:470EH LINE# 73 + C:470FH LINE# 74 + C:4710H LINE# 76 + C:4713H LINE# 77 + C:471CH LINE# 78 + C:4725H LINE# 80 + C:4727H LINE# 81 + ------- ENDPROC DISPLAY + ------- PROC _DISP + D:0007H SYMBOL i1 + D:0004H SYMBOL i2 + D:0002H SYMBOL i3 + D:0062H SYMBOL i4 + D:0064H SYMBOL i5 + D:0066H SYMBOL i6 + D:0068H SYMBOL i7 + D:006AH SYMBOL i8 + C:4C60H LINE# 83 + C:4C60H LINE# 84 + C:4C60H LINE# 85 + C:4C62H LINE# 86 + C:4C64H LINE# 87 + C:4C66H LINE# 88 + C:4C69H LINE# 89 + C:4C6CH LINE# 90 + C:4C6FH LINE# 91 + C:4C72H LINE# 92 + C:4C75H LINE# 93 + ------- ENDPROC _DISP + ------- PROC CLR_DISP + C:4C45H LINE# 96 + C:4C45H LINE# 97 + C:4C45H LINE# 98 + C:4C48H LINE# 99 + C:4C4BH LINE# 100 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 51 + + + C:4C4EH LINE# 101 + C:4C51H LINE# 102 + C:4C54H LINE# 103 + C:4C57H LINE# 104 + C:4C5AH LINE# 105 + C:4C5DH LINE# 106 + ------- ENDPROC CLR_DISP + ------- PROC _LONG2BCD + D:005AH SYMBOL value + D:005EH SYMBOL no + ------- DO + D:005FH SYMBOL i + ------- ENDDO + C:4229H LINE# 109 + C:4231H LINE# 110 + C:4231H LINE# 113 + C:4244H LINE# 114 + C:4244H LINE# 115 + C:425EH LINE# 116 + C:4290H LINE# 117 + C:42A9H LINE# 118 + C:42ACH LINE# 119 + C:42B0H LINE# 120 + C:42C0H LINE# 121 + ------- ENDPROC _LONG2BCD + ------- PROC _BATCH2BCD + D:005BH SYMBOL value + D:005DH SYMBOL no + ------- DO + D:005EH SYMBOL i + ------- ENDDO + C:45FFH LINE# 124 + C:4605H LINE# 125 + C:4605H LINE# 128 + C:4618H LINE# 129 + C:4618H LINE# 130 + C:462AH LINE# 131 + C:4643H LINE# 132 + C:4652H LINE# 133 + C:4655H LINE# 134 + C:4659H LINE# 135 + C:465CH LINE# 136 + C:465FH LINE# 137 + C:4662H LINE# 138 + ------- ENDPROC _BATCH2BCD + ------- PROC DISPLAY_NAME + ------- DO + D:0058H SYMBOL i + D:0007H SYMBOL j + ------- ENDDO + C:4950H LINE# 141 + C:4950H LINE# 142 + C:4950H LINE# 145 + C:4953H LINE# 146 + C:4953H LINE# 147 + C:4968H LINE# 148 + C:496FH LINE# 149 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 52 + + + C:4981H LINE# 150 + C:4984H LINE# 151 + C:498FH LINE# 152 + ------- ENDPROC DISPLAY_NAME + ------- ENDMOD SER_DISP + + ------- MODULE UTILITY + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + C:4CC1H PUBLIC rst_wdt + D:00A8H PUBLIC IE + C:4A77H PUBLIC _delay + D:00B8H PUBLIC IP + C:4C8AH PUBLIC _bcd2int + D:0098H PUBLIC SCON + D:0088H PUBLIC TCON + D:00A6H PUBLIC wdt + D:00C8H PUBLIC T2CON + C:4990H PUBLIC _arr_cmp + C:4C29H PUBLIC _arr_cpy + D:00D0H PUBLIC PSW + ------- PROC _DELAY + D:0063H SYMBOL del + ------- DO + D:0065H SYMBOL j + D:0006H SYMBOL i + ------- ENDDO + C:4A77H LINE# 18 + C:4A7BH LINE# 19 + C:4A7BH LINE# 22 + C:4A8BH LINE# 23 + C:4A8BH LINE# 24 + C:4A99H LINE# 25 + C:4A9CH LINE# 26 + C:4AA6H LINE# 27 + ------- ENDPROC _DELAY + ------- PROC _ARR_CMP + D:005AH SYMBOL arr1 + D:005DH SYMBOL arr2 + D:0060H SYMBOL len + ------- DO + B:0025H.0 SYMBOL b + D:0007H SYMBOL a + ------- ENDDO + C:4990H LINE# 29 + C:4996H LINE# 30 + C:4996H LINE# 31 + C:4998H LINE# 33 + C:49A8H LINE# 34 + C:49A8H LINE# 35 + C:49CAH LINE# 36 + C:49CDH LINE# 37 + C:49CFH LINE# 38 + ------- ENDPROC _ARR_CMP + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 53 + + + ------- PROC _ARR_CPY + D:0001H SYMBOL dest + D:0005H SYMBOL src + D:0002H SYMBOL len + ------- DO + D:0007H SYMBOL a + ------- ENDDO + C:4C29H LINE# 40 + C:4C2BH LINE# 41 + C:4C2BH LINE# 43 + C:4C39H LINE# 44 + C:4C39H LINE# 45 + C:4C3FH LINE# 46 + C:4C41H LINE# 47 + C:4C44H LINE# 48 + ------- ENDPROC _ARR_CPY + ------- PROC RST_WDT + C:4CC1H LINE# 50 + C:4CC1H LINE# 51 + C:4CC1H LINE# 52 + C:4CC4H LINE# 53 + C:4CC7H LINE# 54 + ------- ENDPROC RST_WDT + ------- PROC _BCD2INT + D:0007H SYMBOL bcd + C:4C8AH LINE# 56 + C:4C8AH LINE# 57 + C:4C8AH LINE# 58 + C:4C98H LINE# 59 + ------- ENDPROC _BCD2INT + ------- ENDMOD UTILITY + + ------- MODULE EEPROM + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + C:4A0DH PUBLIC _read_eeprom + C:44C8H PUBLIC _RTC_Writelong + D:00A8H PUBLIC IE + D:00B8H PUBLIC IP + C:4C0CH PUBLIC read_data + C:4B05H PUBLIC _write_eeprom + C:4BEDH PUBLIC _write_data + C:000EH PUBLIC ack + C:4C99H PUBLIC start + D:0098H PUBLIC SCON + D:0088H PUBLIC TCON + B:00B0H.6 PUBLIC sda + B:00B0H.7 PUBLIC scl + C:4CA8H PUBLIC stop + D:00C8H PUBLIC T2CON + C:4B60H PUBLIC _read_RTC + C:4BAAH PUBLIC _write_RTC + D:00D0H PUBLIC PSW + C:3E9DH PUBLIC _RTC_Readlong + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 54 + + + ------- PROC _WRITE_EEPROM + D:005DH SYMBOL wa + D:005EH SYMBOL wd + C:4B05H LINE# 27 + C:4B09H LINE# 28 + C:4B09H LINE# 29 + C:4B0CH LINE# 30 + C:4B0FH LINE# 32 + C:4B16H LINE# 33 + C:4B19H LINE# 34 + C:4B1EH LINE# 35 + C:4B21H LINE# 36 + C:4B26H LINE# 37 + C:4B29H LINE# 38 + C:4B2CH LINE# 39 + ------- ENDPROC _WRITE_EEPROM + ------- PROC _READ_EEPROM + D:005EH SYMBOL wa + ------- DO + D:005FH SYMBOL d1 + ------- ENDDO + C:4A0DH LINE# 42 + C:4A0FH LINE# 43 + C:4A0FH LINE# 46 + C:4A12H LINE# 47 + C:4A15H LINE# 49 + C:4A1CH LINE# 50 + C:4A1FH LINE# 51 + C:4A24H LINE# 52 + C:4A27H LINE# 53 + C:4A2AH LINE# 55 + C:4A32H LINE# 56 + C:4A35H LINE# 57 + C:4A3AH LINE# 58 + C:4A3CH LINE# 59 + C:4A3FH LINE# 60 + C:4A42H LINE# 61 + C:4A44H LINE# 62 + ------- ENDPROC _READ_EEPROM + ------- PROC START + C:4C99H LINE# 64 + C:4C99H LINE# 65 + C:4C99H LINE# 66 + C:4C9BH LINE# 67 + C:4C9DH LINE# 68 + C:4CA0H LINE# 69 + C:4CA2H LINE# 70 + C:4CA5H LINE# 71 + C:4CA7H LINE# 72 + ------- ENDPROC START + ------- PROC STOP + C:4CA8H LINE# 74 + C:4CA8H LINE# 75 + C:4CA8H LINE# 76 + C:4CAAH LINE# 77 + C:4CADH LINE# 78 + C:4CAFH LINE# 79 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 55 + + + C:4CB2H LINE# 80 + C:4CB4H LINE# 81 + ------- ENDPROC STOP + ------- PROC _WRITE_DATA + D:0007H SYMBOL d + ------- DO + D:0006H SYMBOL i + ------- ENDDO + C:4BEDH LINE# 83 + C:4BEDH LINE# 84 + C:4BEDH LINE# 86 + C:4BEFH LINE# 87 + C:4BEFH LINE# 88 + C:4BF7H LINE# 89 + C:4BF9H LINE# 90 + C:4BFCH LINE# 91 + C:4BFEH LINE# 92 + C:4C01H LINE# 93 + C:4C03H LINE# 94 + C:4C07H LINE# 95 + C:4C0BH LINE# 96 + ------- ENDPROC _WRITE_DATA + ------- PROC READ_DATA + ------- DO + D:0006H SYMBOL i + D:0007H SYMBOL d2 + ------- ENDDO + C:4C0CH LINE# 98 + C:4C0CH LINE# 99 + C:4C0CH LINE# 101 + C:4C0EH LINE# 102 + C:4C0FH LINE# 103 + C:4C0FH LINE# 104 + C:4C13H LINE# 105 + C:4C15H LINE# 106 + C:4C18H LINE# 107 + C:4C1AH LINE# 108 + C:4C22H LINE# 109 + C:4C22H LINE# 110 + C:4C26H LINE# 111 + C:4C28H LINE# 112 + C:4C28H LINE# 113 + ------- ENDPROC READ_DATA + ------- PROC L?0022 + ------- ENDPROC L?0022 + ------- PROC ACK + C:000EH LINE# 115 + C:000EH LINE# 116 + C:000EH LINE# 117 + C:0010H LINE# 118 + C:0013H LINE# 119 + C:0015H LINE# 120 + C:0018H LINE# 121 + C:001AH LINE# 122 + ------- ENDPROC ACK + ------- PROC _WRITE_RTC + D:0060H SYMBOL wa + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 56 + + + D:0061H SYMBOL wd + C:4BAAH LINE# 124 + C:4BAEH LINE# 125 + C:4BAEH LINE# 126 + C:4BB1H LINE# 127 + C:4BB1H LINE# 128 + C:4BB1H LINE# 129 + C:4BB4H LINE# 130 + C:4BB9H LINE# 131 + C:4BBCH LINE# 132 + C:4BC1H LINE# 133 + C:4BC4H LINE# 134 + C:4BC7H LINE# 135 + ------- ENDPROC _WRITE_RTC + ------- PROC _READ_RTC + D:005EH SYMBOL wa + ------- DO + D:0007H SYMBOL d1 + ------- ENDDO + C:4B60H LINE# 138 + C:4B62H LINE# 139 + C:4B62H LINE# 142 + C:4B65H LINE# 143 + C:4B65H LINE# 144 + C:4B65H LINE# 145 + C:4B68H LINE# 146 + C:4B6DH LINE# 147 + C:4B70H LINE# 148 + C:4B73H LINE# 149 + C:4B78H LINE# 150 + C:4B7BH LINE# 151 + C:4B7EH LINE# 152 + C:4B80H LINE# 153 + C:4B83H LINE# 154 + ------- ENDPROC _READ_RTC + ------- PROC _RTC_WRITELONG + D:005BH SYMBOL address + D:005CH SYMBOL value + ------- DO + I:000AH SYMBOL four + I:000BH SYMBOL three + I:000CH SYMBOL two + I:000DH SYMBOL one + ------- ENDDO + C:44C8H LINE# 160 + C:44CAH LINE# 161 + C:44CAH LINE# 164 + C:44D2H LINE# 165 + C:44E4H LINE# 166 + C:44F6H LINE# 167 + C:4507H LINE# 170 + C:450EH LINE# 171 + C:4519H LINE# 172 + C:4525H LINE# 173 + ------- ENDPROC _RTC_WRITELONG + ------- PROC _RTC_READLONG + D:005DH SYMBOL address + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 57 + + + ------- DO + I:000AH SYMBOL four + I:000EH SYMBOL three + I:0012H SYMBOL two + I:0016H SYMBOL one + ------- ENDDO + C:3E9DH LINE# 178 + C:3E9FH LINE# 179 + C:3E9FH LINE# 181 + C:3EABH LINE# 182 + C:3EBBH LINE# 183 + C:3ECCH LINE# 184 + C:3EDDH LINE# 187 + C:3F59H LINE# 188 + ------- ENDPROC _RTC_READLONG + ------- ENDMOD EEPROM + + ------- MODULE 4X4_KEY + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + B:0080H.0 PUBLIC R1 + B:0080H.1 PUBLIC R2 + B:0080H.2 PUBLIC R3 + B:0080H.3 PUBLIC R4 + C:434FH PUBLIC Read_Keypad + B:0080H.4 PUBLIC C1 + B:0080H.5 PUBLIC C2 + B:0080H.6 PUBLIC C3 + B:0080H.7 PUBLIC C4 + ------- PROC READ_KEYPAD + C:434FH LINE# 20 + C:434FH LINE# 21 + C:434FH LINE# 22 + C:4351H LINE# 23 + C:4353H LINE# 24 + C:4355H LINE# 25 + C:4357H LINE# 26 + C:4359H LINE# 27 + C:435BH LINE# 28 + C:435DH LINE# 29 + C:435FH LINE# 35 + C:4365H LINE# 36 + C:436BH LINE# 37 + C:4371H LINE# 38 + C:4377H LINE# 39 + C:4379H LINE# 40 + C:437BH LINE# 41 + C:437DH LINE# 42 + C:437FH LINE# 48 + C:4385H LINE# 49 + C:438BH LINE# 50 + C:4391H LINE# 51 + C:4397H LINE# 52 + C:4399H LINE# 53 + C:439BH LINE# 54 + C:439DH LINE# 55 + C:439FH LINE# 61 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 58 + + + C:43A5H LINE# 62 + C:43ABH LINE# 63 + C:43B1H LINE# 64 + C:43B7H LINE# 65 + C:43B9H LINE# 66 + C:43BBH LINE# 67 + C:43BDH LINE# 68 + C:43BFH LINE# 74 + C:43C5H LINE# 75 + C:43CBH LINE# 76 + C:43D1H LINE# 77 + C:43D7H LINE# 79 + C:43D9H LINE# 80 + ------- ENDPROC READ_KEYPAD + ------- ENDMOD 4X4_KEY + + ------- MODULE ADC_AD7780 + C:0000H SYMBOL _ICE_DUMMY_ + D:0080H PUBLIC P0 + D:0090H PUBLIC P1 + D:00A0H PUBLIC P2 + D:00B0H PUBLIC P3 + D:00A8H PUBLIC IE + B:00B0H.4 PUBLIC PDRST + D:00B8H PUBLIC IP + C:4AA7H PUBLIC Read_Adc_AD7780 + C:4531H PUBLIC Get_Adc_Result_AD7780 + D:0098H PUBLIC SCON + D:0088H PUBLIC TCON + B:00B0H.3 PUBLIC clk + B:00B0H.2 PUBLIC dout + B:00A8H.0 PUBLIC EX0 + D:00C8H PUBLIC T2CON + D:0008H PUBLIC Adc_Value + D:00D0H PUBLIC PSW + C:4CB5H PUBLIC init_adc_AD7780 + ------- PROC INIT_ADC_AD7780 + C:4CB5H LINE# 33 + C:4CB5H LINE# 34 + C:4CB5H LINE# 35 + C:4CB7H LINE# 36 + C:4CBEH LINE# 37 + C:4CC0H LINE# 38 + ------- ENDPROC INIT_ADC_AD7780 + ------- PROC READ_ADC_AD7780 + ------- DO + D:0056H SYMBOL dat + D:0057H SYMBOL i + ------- ENDDO + C:4AA7H LINE# 40 + C:4AA7H LINE# 41 + C:4AA7H LINE# 42 + C:4AAAH LINE# 44 + C:4AACH LINE# 45 + C:4AACH LINE# 46 + C:4AB2H LINE# 47 + C:4AB4H LINE# 48 + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 59 + + + C:4AB7H LINE# 49 + C:4AB9H LINE# 50 + C:4ABCH LINE# 51 + C:4AC4H LINE# 52 + C:4AC4H LINE# 53 + C:4AC7H LINE# 54 + C:4AD2H LINE# 55 + C:4AD4H LINE# 56 + C:4AD6H LINE# 57 + ------- ENDPROC READ_ADC_AD7780 + ------- PROC GET_ADC_RESULT_AD7780 + C:4531H LINE# 59 + C:4531H LINE# 60 + C:4531H LINE# 61 + C:4534H LINE# 62 + C:4534H LINE# 63 + C:4539H LINE# 64 + C:453EH LINE# 65 + C:4543H LINE# 67 + C:454CH LINE# 68 + C:454EH LINE# 70 + C:455FH LINE# 71 + C:4570H LINE# 72 + C:457CH LINE# 73 + C:457FH LINE# 74 + C:4584H LINE# 75 + C:4586H LINE# 76 + C:4588H LINE# 77 + C:4588H LINE# 78 + C:458DH LINE# 79 + C:458DH LINE# 80 + C:4594H LINE# 82 + C:4596H LINE# 83 + C:4598H LINE# 84 + C:4598H LINE# 85 + ------- ENDPROC GET_ADC_RESULT_AD7780 + ------- ENDMOD ADC_AD7780 + + ------- MODULE ADC_HX711 + C:0000H SYMBOL _ICE_DUMMY_ + ------- ENDMOD ADC_HX711 + + ------- MODULE ?C?SCDIV + C:29CCH PUBLIC ?C?SCDIV + ------- ENDMOD ?C?SCDIV + + ------- MODULE ?C?CLDOPTR + C:29EEH PUBLIC ?C?CLDOPTR + ------- ENDMOD ?C?CLDOPTR + + ------- MODULE ?C?IMUL + C:2A1BH PUBLIC ?C?IMUL + ------- ENDMOD ?C?IMUL + + ------- MODULE ?C?UIDIV + C:2A2DH PUBLIC ?C?UIDIV + ------- ENDMOD ?C?UIDIV + BL51 BANKED LINKER/LOCATER V6.22.4.0 07/10/2026 17:02:32 PAGE 60 + + + + ------- MODULE ?C?LMUL + C:2A82H PUBLIC ?C?LMUL + ------- ENDMOD ?C?LMUL + + ------- MODULE ?C?ULDIV + C:2B0DH PUBLIC ?C?ULDIV + ------- ENDMOD ?C?ULDIV + + ------- MODULE ?C?ULCMP + C:2B9FH PUBLIC ?C?ULCMP + ------- ENDMOD ?C?ULCMP + + ------- MODULE ?C?ULSHR + C:2BB0H PUBLIC ?C?ULSHR + ------- ENDMOD ?C?ULSHR + + ------- MODULE ?C?LSHL + C:2BC3H PUBLIC ?C?LSHL + ------- ENDMOD ?C?LSHL + + ------- MODULE ?C?LLDIDATA + C:2BD6H PUBLIC ?C?LLDIDATA + ------- ENDMOD ?C?LLDIDATA + + ------- MODULE ?C?LLDIDATA0 + C:2BE2H PUBLIC ?C?LLDIDATA0 + ------- ENDMOD ?C?LLDIDATA0 + + ------- MODULE ?C?LSTIDATA + C:2BEFH PUBLIC ?C?LSTIDATA + ------- ENDMOD ?C?LSTIDATA + + ------- MODULE ?C?LSTKIDATA + C:2BFBH PUBLIC ?C?LSTKIDATA + ------- ENDMOD ?C?LSTKIDATA + + ------- MODULE ABS + C:4C78H PUBLIC _abs + ------- ENDMOD ABS + +Program Size: data=189.1 xdata=0 code=19656 +LINK/LOCATE RUN COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/Tin_fill_4x4_key_36Recipe_ad7780_55WD_default.hex b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/Tin_fill_4x4_key_36Recipe_ad7780_55WD_default.hex new file mode 100644 index 0000000..3174dbf --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/Tin_fill_4x4_key_36Recipe_ad7780_55WD_default.hex @@ -0,0 +1,1303 @@ +:1047E3000306060301090901020808020505010180 +:1047F3000202070706060303040401000200030084 +:1048030004000500060007000800090009090A045E +:10481300020A10080A180C0A20100A2C160A402053 +:0C4823000A542A0A68320A68340A683E07 +:103DC10001810001C20401920001980001BB0001C0 +:103DD100840001B90A01960001AA1201BA01019DEC +:103DE1000101BF0102A8000002A60000018200013A +:103DF100745001830002C0000002900000027C00A8 +:103E01000002850000028E0000027A0000027F009D +:103E110000024A0000029B000002940000027600AA +:103E2100000AAB0000000000000000000002880052 +:103E3100000299271002BC0064043600000000044F +:103E41002600000000048A00000000026F0000024A +:103E510078000002720000C11BC10AC11CC118C157 +:103E61001DC123C111C195C109C107C110C105C13E +:103E710006C10BC11AC108C100C120C121C114C1B1 +:103E81009FC10EC119C125C113C117C124C101C1EF +:0B3E910012C103C10DC116C102C10C1B +:1034FA00124AD7124CC17871E6B44302C21FC218ED +:10350A0075620075631175640075651175660075DD +:10351A006711756800756911756A00756B117B1101 +:10352A007A007D117C007F11124C601249501220E2 +:10353A00CCC218E4FF124A0D78BEEFF678AAE66FFD +:10354A0070030235D075620075630A75640075658B +:10355A001B756600756716756800756914756A00CB +:10356A00756B057B0F7A007D0E7C007F0D124C6017 +:10357A007871E6FF64446013EF6442600EEF6441C1 +:10358A0060097F027E00124A7780E57871E6B444CA +:10359A003575620075630A75640075650D75660098 +:1035AA00756701756800756918756A00756B097B1E +:1035BA00177A007D167C007F11124C60122C147F42 +:1035CA00F47E01124A77124CB5124C45301F401254 +:1035DA0049D0122E59124C45D20575620075630AFC +:1035EA0075640075651375660075670E75680075F4 +:1035FA006911756A00756B117B147A007D117C0064 +:10360A007F11124C607FE87E03124A77124C45D232 +:10361A00181240CF12434F7871A60712001E121DCE +:10362A0079124CC11210BD78830620041020050DB2 +:10363A00E6D3940240071238C3E47883F6787176A9 +:03364A007880CEB7 +:104AD70075A0FF7590FF75891DE4F58CF58A7588BB +:104AE7005575A88975B801758DFC758B66F598C2E3 +:0E4AF70088D2A8D2AFC294C291C292C29322BA +:030003000246654D +:10466500C0E0C0F0C083C082C0D075D000C000C01B +:1046750001C002C003C004C005C006C007D20F12A6 +:104685004531D20A30021EC202124BCE7896067907 +:1046950096E7C378B996400D78967600124B86203A +:1046A5000703124015D2A8D007D006D005D004D0F4 +:1046B50003D002D001D000D0D0D082D083D0F0D0AA +:0246C500E032E1 +:03001B000248791F +:10487900C0E0C0F0C083C082C0D075D000C000C005 +:1048890001C002C003C004C005C006C007C28E1221 +:10489900434F7871A607758B66758D32D28ED00716 +:1048A900D006D005D004D003D002D001D000D0D09A +:0948B900D082D083D0F0D0E032AF +:1020CC00C20C7F09124B608F5DE55DB40104D21721 +:1020DC008002C2177F0B124B608F5DE55DB401046B +:1020EC00D2258002C2257F0E124B608F5DE55DB458 +:1020FC000104D20D8002C20D2025077D017F08123C +:10210C004BAA7F08124B6078BAA6077F0C124B6063 +:10211C008F5DE55DB40104D2138002C2137F0A12F5 +:10212C004B607874A6077F36124B608F5DE55DB40B +:10213C000104D2248002C2247F34124B60EF75F06C +:10214C0064A4FFAEF0C006C0077F35124B60EFFDF4 +:10215C00D0E02D7879F6D0E0340018F6124CC17826 +:10216C00BAE6FFD39400400EEFD39409500878815F +:10217C0076A08F5D8043EFD394094011EFD3941276 +:10218C00500B788176A2EF24F7F55D802CEFD39479 +:10219C00124011EFD3941B500B788176A4EF24EEF0 +:1021AC00F55D8015EFD3941B400FEFD394245009A9 +:1021BC00788176A6EF24E5F55D300D147F39124B4E +:1021CC0060EF7F00FEC006C0077F3A124B60801B99 +:1021DC00E55DC454F0FF124A0DEF7F00FEC006C04F +:1021EC0007E55DC454F004FF124A0DEFFDD0E02D5D +:1021FC0078C1F6D0E0340018F6E55DC454F0240242 +:10220C00FF124A0DEF7F00FEC006C007E55DC45407 +:10221C00F02403FF124A0DEFFDD0E02D7891F6D09B +:10222C00E0340018F6E55DC454F02404FF124A0DA6 +:10223C00EF7F00FEC006C007E55DC454F02405FF27 +:10224C00124A0DEFFDD0E02D787DF6D0E034001869 +:10225C00F6E55DC454F02406FF124A0DEF7F00FE34 +:10226C00C006C007E55DC454F02407FF124A0DEF09 +:10227C00FDD0E02D7886F6D0E0340018F6E55DC48C +:10228C0054F02408FF124A0DEF7F00FEC006C00771 +:10229C00E55DC454F02409FF124A0DEFFDD0E02D8A +:1022AC00787BF6D0E0340018F6E55DC454F0240ACF +:1022BC00FF124A0DEF7F00FEC006C007E55DC45457 +:1022CC00F0240BFF124A0DEFFDD0E02D7880F6D0F4 +:1022DC00E0340018F6E55DC454F0240CFF124A0DEE +:1022EC008F5DE55D7004C2158002D215788176A0F1 +:1022FC007F01124A0DEF7F00FEC006C0077F02125D +:10230C004A0DEFFDD0E02D789AF6D0E0340018F6A7 +:10231C007F03124A0DEF7F00FEC006C0077F041238 +:10232C004A0DEFFDD0E02D788FF6D0E0340018F692 +:10233C007F05124A0D78BBA6077F06124A0D7893CB +:10234C00A6077F07124A0D7887A6077F08124A0D49 +:10235C007897A6077F09124A0D78C2A6077F0A1242 +:10236C004A0D7884EFF6C3740A9F75F003A478B90C +:10237C00F6124CC178BBE6FF75F003A42411F5826C +:10238C00E43448F583E4937875F6EF75F003A424F0 +:10239C0012F582E43448F583E493787EF678BBE654 +:1023AC0075F003A42413F582E43448F583E493FF19 +:1023BC007E007C037DE8122A1BAC06AD077893E601 +:1023CC0075F009A4AEF02DF549EC3EF5487F0B12E3 +:1023DC004A0D789DA6077F0C124A0D78BFA6077F81 +:1023EC000D124A0DEF75F00AA478BCA6F008F6C3DE +:1023FC0079C1E7787D96FF19E7189678A2F608A6BA +:08240C000708F608A607C2123A +:0124140022A5 +:102E5900C22875620075630F75640075651475661F +:102E69000075670E756800756905756A00756B14DC +:102E79007B167A007D0E7C007F05124C607FF47E04 +:102E890001124A7775620075631A756400756517D2 +:102E990075660075671375680075691C756A007534 +:102EA9006B117B0E7A007D1A7C007F11124C607FBA +:102EB900F47E01124A77E4FF124A0D8F58E55878DB +:102EC900AA667021F56275630CF56475650CF56683 +:102ED90075670EF568756905F56A756B057B1BFAEB +:102EE9007D05FC802675620075630A756400756549 +:102EF90001756600756716756800756911756A0050 +:102F0900756B117B0F7A007D117C007F11124C606B +:102F19007FF47E01124A7775620075631475640047 +:102F290075650C75660075671175680075691175A9 +:102F39006A00756B117B137A007D117C007F111279 +:102F49004C607FF47E01124A777F0F124B608F58D5 +:102F5900E55878AA667021F56275630CF5647565A4 +:102F69000CF56675670EF568756905F56A756B0583 +:102F79007B1BFA7D05FC802675620075630A756402 +:102F890000756501756600756716756800756911C4 +:102F9900756A00756B117B0F7A007D117C007F11BA +:102FA900124C607FF47E01124A7775620075630DD9 +:102FB90075640075650C756600756711756800752F +:102FC9006911756A00756B117B0A7A007D117C00A5 +:102FD9007F11124C60C20AE4F559300A04C20AD2C0 +:102FE900287F047E00124A770559E559C394FF40AA +:102FF900E930282F75620075630C75640075650CDE +:1030090075660075670E756800756905756A0075DE +:103019006B057B1B7A007D057C007F11124C60C219 +:1030290019802D75620075630A75640075650175EF +:103039006600756716756800756911756A00756BA4 +:10304900117B0F7A007D117C007F11124C60D2191F +:073059007FF47E01024A77BB +:1049D000E4F558E558FB3395E0FAAD03FCAF58EF2A +:1049E0003395E0F5628F63F5648F65F5668F67F543 +:1049F000688F69F56A8F6B124C607FC87E00124A1F +:0C4A0000770558C3E5586480948A40C7CD +:014A0C002287 +:103F5A0078C076030876E8789076000876C8787C88 +:103F6A007600087632E47885F608F6788EF60876D2 +:103F7A000A787AF6087664787FF608F6D215788495 +:103F8A007609C3740A940975F003A478B9F678BB64 +:103F9A00760178937605788776017897760178C2E4 +:103FAA00760478BBE6FF75F003A42411F582E434A5 +:103FBA0048F583E4937875F6EF75F003A42412F5B7 +:103FCA0082E43448F583E493787EF678BBE675F0AC +:103FDA0003A42413F582E43448F583E493FF7E00B6 +:103FEA007C037DE8122A1BAC06AD077893E675F0D0 +:103FFA0009A4AEF02DF549EC3EF548789D76037894 +:0B400A00BF760278BC760008761E220C +:102C1400E4F55B755C01F56275630AF56475651B23 +:102C2400F566756716F568756914F56A756B057B45 +:102C34000FFA7D0EFC7F0D124C607FB87E0B124A9A +:102C440077123F5A75620075630D756400756501EE +:102C5400756600756718756800756909756A007589 +:102C64006B107B0A7A007D177C007F16124C60780B +:102C7400AAE6FDE4FF124B057D017F08124BAA75FD +:102C84005B01E55BD394004010E55BD394095009E4 +:102C9400788176A0855B5C804CE55BD39409401316 +:102CA400E55BD39412500C788176A2E55B24F7F5AA +:102CB4005C8032E55BD394124013E55BD3941B50E4 +:102CC4000C788176A4E55B24EEF55C8018E55BD393 +:102CD400941B4011E55BD39424500A788176A6E5D1 +:102CE4005B24E5F55CE55CC454F0FF78C0E6FD12B6 +:102CF4004B05E55CC454F004FF78C1E6FD124B05B6 +:102D0400E55CC454F02402FF7890E6FD124B05E51F +:102D14005CC454F02403FF7891E6FD124B05E55C96 +:102D2400C454F02404FF787CE6FD124B05E55CC432 +:102D340054F02405FF787DE6FD124B05E55CC45490 +:102D4400F02406FF7885E6FD124B05E55CC454F0DB +:102D54002407FF7886E6FD124B05E55CC454F02495 +:102D640008FF787AE6FD124B05E55CC454F02409AB +:102D7400FF787BE6FD124B05E55CC454F0240AFFA2 +:102D8400787FE6FD124B05E55CC454F0240BFF7814 +:102D940080E6FD124B05E55CC454F0240CFF7D0174 +:102DA400124B05124788124CC1055BE55BD3942492 +:102DB4005003022C86788176A0788EE6FD7F03127C +:102DC4004B05788FE6FD7F04124B0578BBE6FD7F4B +:102DD40005124B057893E6FD7F06124B057887E6CE +:102DE400FD7F07124B057897E6FD7F08124B0578A7 +:102DF400C2E6FD7F09124B057884E6FD7F0A124B7B +:102E040005789DE6FD7F0B124B0578BFE6FD7F0C30 +:102E1400124B0578BDE6FD7F0D124B05E4FD7F09DD +:102E2400124BAAE4FD7F0B124BAAE4FD7F0C124B5C +:102E3400AA7D377F0A124BAAE4FD7F36124BAA788B +:102E4400AAE6FD7F0F124BAAE4FD7F0E124BAA12D5 +:052E540020CC024C45FA +:104BCE007894E6FE08E6FFE4FCFDE5392FF539E5BD +:0F4BDE00383EF538ED3537F537EC3536F53622FC +:104B860078B9E6FBE4FAF9F8AF39AE38AD37AC36AA +:104B9600122B0D7876A60608A607E4F539F538F542 +:044BA60037F5362287 +:10401500D227755604E55625E024A9F8E6FE08E6FC +:10402500FFE55625E024ABF8A60608A607D556E514 +:104035007876E6FE08E6FF78ABA60608A607E4F55F +:1040450056E55625E024AEF9E55625E024ACF8C33F +:10405500E697FF18E61997FE124C78D3EF9405EE14 +:10406500648094804002C2270556E556C3940440F7 +:10407500D0302755E4F545F544F543F542F556E5C9 +:104085005625E024ABF8E6FE08E6FFE4FCFDE54531 +:104095002FF545E5443EF544ED3543F543EC354212 +:1040A500F5420556E556B405D6AF45AE44AD43AC2D +:1040B50042E47B05FAF9F8122B0D8F458E448D43AA +:0940C5008C427876A60608A607D5 +:0140CE0022CF +:1040CF007876E6F53408E6F535124599124CC112AB +:1040DF004B33201D061239D91248C2D3789CE6956E +:1040EF004918E695484043301F40C218124CC1D2C0 +:1040FF000475620075630E7564007565167566004C +:10410F00756712756800756911756A00756B117B9B +:10411F00157A007D117C007F11124C607D087C00A8 +:10412F00E4FFFE124790D2188002C20430193EC23B +:10413F0018124CC1D20475620075630C756400755A +:10414F00651175660075670E756800756913756A78 +:10415F0000756B137B0D7A007D0A7C007F11124C6A +:0E416F00607D087C00E4FFFE124790D218220B +:1045990030051785344A85354BA21B921C7898063D +:1045A900E6D394034004C205E4F6A21C301B01B310 +:1045B9005012E535254B789CF6E534354A18F6A2B4 +:1045C9001B921E22D3E535954BE534954A4013A23B +:1045D9001B921EC3E535954B789CF6E534954A1830 +:1045E900F622A21BB3921EC3E54B9535789CF6E5DE +:0645F9004A953418F62279 +:104B33007897E6FFD3789CE69F18E69400500578B3 +:104B430092068004E47892F67892E6D39403400CBC +:0D4B530085344A85354BA21B921CE4F622E6 +:09490B0078C0E6FE08E6FF7D0518 +:064914008E5D8F5EAB0515 +:10491A007A07C374089BC36480F8EA6480984023CA +:10492A00AE5DAF5E7C007D0A122A2D742C2AF8A691 +:10493A0005AE5DAF5E7C007D0A122A2D8E5D8F5E0C +:06494A001A80CF0246C7EF +:1038C3007893E6FB789BE6FE08E6FFAD037C0012E7 +:1038D3002A2DAD037C00122A1B8E588F597B07AE0D +:1038E30058AF597C007D0A122A2D742C2BF8A6059B +:1038F300AE58AF597C007D0A122A2D8E588F591B62 +:10390300BB02DCE52F7003752F11301E03752F10DA +:103913007893E6FFE5338FF0848FF0A4F533E6FF69 +:103923007887E68FF0A4FF789BE6FC08E6FDD39F3B +:10393300EC95F0500AE4F533F532752F11C21EED04 +:103943004C700C752C11752D11752E11752F1130AE +:103953002008752C0C752D018062302108752C0C04 +:10396300752D028057301408752C0F752D0F804C60 +:1039730030120B201A08752C0A752D05800F301A8A +:103983001930130E30010B752C19752D1D752E145E +:103993008041752C05752D0A802220250B752C136B +:1039A300752D0D752E1C802B78BAE6FFD394095024 +:1039B30010752C0FEF75F00A8485F02D752E11808C +:1039C30012EF75F00A8485F02DEF75F00A84F52C5B +:0639D300752E0F0246C72D +:10001E00E4F558F55930030302039B7871E6644109 +:10002E00600302039B30000302039BC218124CC1F3 +:10003E001243DA124CC17FB57D327B027A00124C2C +:10004E0029755D00755E00755FB57560007561029E +:10005E007BFF7A4779E3124990502E302503123AEE +:10006E00E77871E6B442107871E6644260030208E4 +:10007E00BD7658D21880F01208BE2025030208BDA6 +:10008E007871E6B442D502038F755D00755E00751A +:10009E005FB57560007561027BFF7A4779E512499D +:1000AE0090500612306002038F755D00755E00750C +:1000BE005FB57560007561027BFF7A4779E9124979 +:1000CE0090500612175202038F755D00755E007513 +:1000DE005FB57560007561027BFF7A4779EB124957 +:1000EE0090500612241502038F755D00755E007523 +:1000FE005FB57560007561027BFF7A4779ED124935 +:10010E00905006122C1402038F755D00755E0075FB +:10011E005FB57560007561027BFF7A4779EF124912 +:10012E0090500612275C02038F755D00755E007598 +:10013E005FB57560007561027BFF7A4779F11249F0 +:10014E00905006123CE502038F755D00755E0075DA +:10015E005FB57560007561027BFF7A4779F31249CE +:10016E009050061233A002038F755D00755E007508 +:10017E005FB57560007561027BFF7A4779F51249AC +:10018E0090500612323502038F755D00755E007554 +:10019E005FB57560007561027BFF7A4779F712498A +:1001AE00905006123BE602038F755D00755E00757A +:1001BE005FB57560007561027BFF7A4779F9124968 +:1001CE0090500612378802038F755D00755E0075BC +:1001DE005FB57560007561027BFF7A4779FB124946 +:1001EE0090500612364D02038F755D00755E0075D8 +:1001FE005FB57560007561027BFF7A4779FD124924 +:10020E0090500B20250302038F7D0102035A755D6A +:10021E0000755E00755FB57560007561027BFF7AD3 +:10022E004779FF124990500B20250302038F7D0260 +:10023E0002035A755D00755E00755FB575600075D9 +:10024E0061027BFF7A487901124990500B202503F9 +:10025E0002038F7D0302035A755D00755E00755FA4 +:10026E00B57560007561027BFF7A4879031249907B +:10027E00500B20250302038F7D0402035A755D0087 +:10028E00755E00755FB57560007561027BFF7A481B +:10029E007905124990500B20250302038F7D05022C +:1002AE00035A755D00755E00755FB575600075610A +:1002BE00027BFF7A487907124990500B20250302E2 +:1002CE00038F7D0602035A755D00755E00755FB57E +:1002DE007560007561027BFF7A487909124990506A +:1002EE000A20250302038F7D078061755D00755E10 +:1002FE0000755FB57560007561027BFF7A48790BFA +:10030E0012499050073025797D088040755D007543 +:10031E005E00755FB57560007561027BFF7A487986 +:10032E000D12499050073025587D09801F755D00CC +:10033E00755E00755FB57560007561027BFF7A486A +:10034E00790F124990500F3025377D0A7F08124BD6 +:10035E00AA1208BE802B7562007563137564007552 +:10036E006513756600756717756800756913756A8C +:10037E0000756B117B0E7A007D117C007F11124C83 +:10038E00607FE87E03124A77124C45D218124CC198 +:10039E007871E664437038200035F562756310F5A8 +:1003AE0064756510F566756710F568756910F56A00 +:1003BE00756B107B11FA7D11FC7F11124C607871F8 +:1003CE00E6B443097F027E00124A7780F1D20530EF +:1003DE0003030204DD7871E6642360030204DD305A +:1003EE0000030204DDC203200D030204DDF562F5F5 +:1003FE0063F564F565F566F567F568F569F56AF513 +:10040E006B7B16FA7D01FC7F0F124C6012490B7F3D +:10041E00F47E01124A777F051244587F0512482F49 +:10042E00E48F458E44F543F54278BBE675F003A4A0 +:10043E002413F582E43448F583E493FF7E007C03B5 +:10044E007DE8122A1BE4FCFDAB45AA44A943A84251 +:10045E00D3122B9F40377562007563137564007558 +:10046E006513756600756717756800756913756A8B +:10047E0000756B117B0E7A007D117C007F11124C82 +:10048E00607FE87E03124A77124C458042C20C7898 +:10049E0093E6FBE4FAF9F8AF45AE44AD43AC421235 +:1004AE002B0DC004A905AA06AB077893E6FFE4FC62 +:1004BE00FDFED000122A8278C0A60608A60718E60E +:1004CE00FD7F39124BAA78C1E6FD7F3A124BAA780E +:1004DE0071E6B42A17200014200311D2037871E6B6 +:1004EE00B42A097F027E00124A7780F130031D780C +:1004FE0071E6B441172000147871E6B441097F0209 +:10050E007E00124A7780F1C20312241520030302E3 +:10051E0005E37871E6644460030205E330000302EC +:10052E0005E32024030205E3C203C218F5627563D6 +:10053E0014F564756511F566756711F568756911C1 +:10054E00F56A756B117B0EFA7D05FC7F0B124C6004 +:10055E007F34124B60EF7F00FEC006C0077F35125E +:10056E004B60EFFDD0E02DFFD0E03400FE7878F642 +:10057E0008EFF67D041249147FF47E01124A777F4C +:10058E00041244587F0412482F7878A60608A6074E +:10059E007871E6FF644270030208BDEF6444702474 +:1005AE007878E6FD7F34124BAA7879E6FD7F351216 +:1005BE004BAA7878E6FD7F37124BAA7879E6FD7F55 +:1005CE0038124BAAD2187871E6B444097F027E0025 +:1005DE00124A7780F17871E6644260030208363081 +:1005EE000003020836202503020836300C030208E9 +:1005FE00367F08124B6078BAEFF6C203C3940150EF +:10060E0002760178BAE6FE75F00A84FFEE75F00AFE +:10061E0084E5F0FD7C0075620075631175640075EC +:10062E006511756600756711756800756911756AD3 +:10063E0000756B117B0F7A00124C607FF47E0112F5 +:10064E004A77755901D2187871E6FF644470030237 +:10065E0007C1EF644170030207C1AF597E007D01EF +:10066E007C00124790742C2559124728742C25595A +:10067E00F8A607E52C540FC454F0FFE52D540F2FA8 +:10068E00F558FF124C8A8F587871E6FF6453600458 +:10069E00EFB443100559E559D394014003E4F559DD +:1006AE0078717658E558D394244035756200756399 +:1006BE0013756400756517756600756713756800A8 +:1006CE00756911756A00756B117B137A007D0E7C4E +:1006DE00007F11124C607FF47E01124A7775582408 +:1006EE007F647E00124A77E558D394004025E55882 +:1006FE00D39409501E788176A0E558C454F0FF12A9 +:10070E004A0DEF7F00FEC006C007E558C454F00442 +:10071E000207A9E558D394094027E558D3941250FF +:10072E0020788176A2E55824F7C454F0FF124A0DC2 +:10073E00EF7F00FEC006C007E558C454F024718058 +:10074E005AE558D394124027E558D3941B5020787D +:10075E008176A4E55824EEC454F0FF124A0DEF7FC3 +:10076E0000FEC006C007E558C454F024E1802CE515 +:10077E0058D3941B4037E558D39424503078817663 +:10078E00A6E55824E5C454F0FF124A0DEF7F00FE93 +:10079E00C006C007E558C454F02451FF124A0DEFAD +:1007AE00FDD0E02D78C1F6D0E0340018F612490BDA +:1007BE000206557871E66444705FE558D394245070 +:1007CE0007E558C39401503875620075631375645C +:1007DE000075651775660075671375680075691184 +:1007EE00756A00756B117B137A007D0E7C007F118C +:1007FE00124C607FF47E01124A777558240205FF71 +:10080E00AD587F08124BAA7F08124B6078BAA60724 +:10081E001220CC7FF47E01800A7871E6B444097F01 +:10082E00027E00124A7780F130036F7871E66423FE +:10083E007068200065302462C2187F37124B60EF5B +:10084E007F00FEC006C0077F38124B60EFFDD0E080 +:10085E002D7873F6D0E0340018F6756200756314C7 +:10086E00756400756511756600756711756800759C +:10087E006911756A00756B117B187A007D0C7C000E +:10088E007F0B124C607872E6FE08E6FF7D0412497B +:10089E00147FB87E0B124A77D2182003127871E6B5 +:0F08AE00B4230C200009200D063024031233A0C0 +:0108BD002218 +:101D7900E4F558F5593016051220CCC2162007068D +:101D8900200C03021E697871E664426003021E6931 +:101D9900E5292401F529E43528F528E43527F5272F +:101DA900E43526F526E47FB07E04FDFCAB29AA289C +:101DB900A927A826C3122B9F50030220CBC218754E +:101DC900620075631375640075651475660075673F +:101DD90011756800756911756A00756B117B177A41 +:101DE900007D0B7C007F0A124C60C292C294C291A2 +:101DF900C293C220C221C214C21AC207C2098546AF +:101E09004A85474BC3740A78849675F003A478B958 +:101E1900F6E47896F6F539F538F537F536C200C2A5 +:101E29000CF562756313F564756514F56675670ECF +:101E3900F56875690DF56A756B117B17FA7D0BFCF1 +:101E49007F0A124C607FD07E07124A77D21812435C +:101E59004FEF644260F8E4F529F528F527F52622C5 +:101E6900E4F529F528F527F52630174A20004720FB +:101E79000C44D21220903F1220CC3024207F3712FC +:101E89004B60EF7F00FEC006C0077F38124B60EF42 +:101E9900FDD0E02D7873F6D0E0340018F6C37873DE +:101EA900E6940118E694005006302403021F6CC220 +:101EB90012D20C021F9E301763200060300C5D782F +:101EC9009BE6FE08E6FFD3787B96EE1896504DC345 +:101ED900EF788096EE18964043201E407882E6708F +:101EE900077888A60608A6077989E7789C667004AA +:101EF90019E7186670057882068004E47882F67816 +:101F090074E675F004A4FF7882E6C39FE5F0648067 +:101F1900F87480984006E47882F68079309003025C +:101F290020CB3000030220CB301E030220CB12202D +:101F3900CC3024207F37124B60EF7F00FEC006C0F3 +:101F4900077F38124B60EFFDD0E02D7873F6D0E0B3 +:101F5900340018F6C37873E6940118E694005035F6 +:101F690030243275620075630E75640075651375EA +:101F79006600756713756800756911756A00756B78 +:101F8900117B117A007D117C007F0B124C607FE878 +:101F99007E03024A77787CE6FE08E6FFC378C1969D +:101FA900EE18965024C37886E69F18E69E501AC309 +:101FB900798FE778C19619E71896500DC37980E7AC +:101FC900787B9619E71896403E124CC1C218756283 +:101FD9000075631175640075650E75660075671384 +:101FE900756800756913756A00756B117B147A0041 +:101FF9007D0E7C007F05124C607FF47E01124A77CA +:10200900D218C20C021D8630152D789BE6FE08E613 +:10201900FFD3787B96EE1896501DC3EF788096EE25 +:1020290018964013201E10D20E854A46854B4785C7 +:10203900344A85354B801220150D201E0AD20E8593 +:102049004A46854B478002C20E1240CF300E3DC230 +:102059000ED207D2007F647E00124A77D2927F3275 +:102069007E00124A77D2917F327E00124A77D2944B +:10207900D220D221D214C3740A78849679B9F7E4AC +:102089007896F6F539F538F537F53622C2187562BE +:102099000075630E75640075651175660075670EC8 +:1020A900756800756913756A00756B137B137A007F +:1020B9007D0A7C007F14124C607FF47E01124A77FE +:0220C900D2182B +:0120CB0022F2 +:1010BD0020000302175130075B200958201E557878 +:1010CD009BE6FE08E6FFC378A396EE18964004C291 +:1010DD0094C220C3EF78A596EE1896401D302114CA +:1010ED00740A78849679B9F7E47896F6F539F53877 +:1010FD00F537F536C294C291C221799CE7788626E0 +:10110D00FF19E71836FEC3EF78C196EE1896400426 +:10111D00C292D20830082378A906E6187001067825 +:10112D009DE675F064A4FFC378A9E69F18E695F0D7 +:10113D004008E4F608F6D209C20820090302166633 +:10114D00301E03021666799CE7788626FF19E7188C +:10115D0036FE78C0E6FC08E6FDC3EF9DEE9C500719 +:10116D00D292C209021666C3789CE69D18E69C5081 +:10117D003378A706E61870010678BFE675F064A40B +:10118D00FFC378A7E69F18E695F05003021666E4B4 +:10119D00F608F6D29278BCE6FE08E6FF124A77C250 +:1011AD0092021666D293D21AC207E478A6F608F612 +:1011BD00C209C294C220C291C221C292C21408F6C1 +:1011CD0008F6C208C3740A78849675F003A478B93A +:1011DD00F6E47896F6F539F538F537F5367F3712AA +:1011ED004B60EF7F00FEC006C0077F38124B60EFEB +:1011FD00FDD0E02D7873F6D0E0340018F608E61631 +:10120D00187001167872E6FD7F37124BAA7873E6D7 +:10121D00FD7F38124BAA78BAE6640160030212D73B +:10122D007F1A123E9D788A122BEF788A122BE2C01C +:10123D0000C0037893E6FB789BE6FE08E6FFAD035E +:10124D007C00122A2DAD037C00122A1BE4FDD00375 +:10125D00D000EB2FFFEA3EFEED39FDEC38FC788A2D +:10126D00122BEF7FFF7EE07DF57C05788A122BE255 +:10127D00D3122B9F4009788A122BFB0000000078B7 +:10128D008A122BD68F5F8E5E8D5D8C5C7F1A124419 +:10129D00C87F10124B60EF7F00FEC006C0077F11A4 +:1012AD00124B60EFFDD0E02D7870F6D0E0340018D1 +:1012BD00F60806E618700106786FE6FD7F10124BF2 +:1012CD00AA7870E6FD7F1102166378BAE6640260B3 +:1012DD000302138B7F1E123E9D788A122BEF788AA4 +:1012ED00122BE2C000C0037893E6FB789BE6FE0864 +:1012FD00E6FFAD037C00122A2DAD037C00122A1BE4 +:10130D00E4FDD003D000EB2FFFEA3EFEED39FDECFE +:10131D0038FC788A122BEF7FFF7EE07DF57C057817 +:10132D008A122BE2D3122B9F4009788A122BFB00D5 +:10133D00000000788A122BD68F5F8E5E8D5D8C5CDF +:10134D007F1E1244C87F12124B60EF7F00FEC00655 +:10135D00C0077F13124B60EFFDD0E02D7870F6D0F3 +:10136D00E0340018F60806E618700106786FE6FD01 +:10137D007F12124BAA7870E6FD7F1302166378BABE +:10138D00E66403600302143F7F22123E9D788A12A9 +:10139D002BEF788A122BE2C000C0037893E6FB781E +:1013AD009BE6FE08E6FFAD037C00122A2DAD037C03 +:1013BD0000122A1BE4FDD003D000EB2FFFEA3EFE06 +:1013CD00ED39FDEC38FC788A122BEF7FFF7EE07D46 +:1013DD00F57C05788A122BE2D3122B9F4009788A6F +:1013ED00122BFB00000000788A122BD68F5F8E5EC9 +:1013FD008D5D8C5C7F221244C87F14124B60EF7F91 +:10140D0000FEC006C0077F15124B60EFFDD0E02D2A +:10141D007870F6D0E0340018F60806E6187001066C +:10142D00786FE6FD7F14124BAA7870E6FD7F1502EA +:10143D00166378BAE6640460030214F37F26123E45 +:10144D009D788A122BEF788A122BE2C000C00378A8 +:10145D0093E6FB789BE6FE08E6FFAD037C00122ABF +:10146D002DAD037C00122A1BE4FDD003D000EB2F21 +:10147D00FFEA3EFEED39FDEC38FC788A122BEF7F4A +:10148D00FF7EE07DF57C05788A122BE2D3122B9F2F +:10149D004009788A122BFB00000000788A122BD6A7 +:1014AD008F5F8E5E8D5D8C5C7F261244C87F161219 +:1014BD004B60EF7F00FEC006C0077F17124B60EF39 +:1014CD00FDD0E02D7870F6D0E0340018F60806E671 +:1014DD0018700106786FE6FD7F16124BAA7870E63C +:1014ED00FD7F1702166378BAE6640560030215A73F +:1014FD007F2A123E9D788A122BEF788A122BE2C03A +:10150D0000C0037893E6FB789BE6FE08E6FFAD038B +:10151D007C00122A2DAD037C00122A1BE4FDD003A2 +:10152D00D000EB2FFFEA3EFEED39FDEC38FC788A5A +:10153D00122BEF7FFF7EE07DF57C05788A122BE282 +:10154D00D3122B9F4009788A122BFB0000000078E4 +:10155D008A122BD68F5F8E5E8D5D8C5C7F2A124436 +:10156D00C87F18124B60EF7F00FEC006C0077F19C1 +:10157D00124B60EFFDD0E02D7870F6D0E0340018FE +:10158D00F60806E618700106786FE6FD7F18124B17 +:10159D00AA7870E6FD7F1902166378BAE6FFC39448 +:1015AD00065003021666EFD3942440030216667F9D +:1015BD0030123E9D788A122BEF788A122BE2C000F2 +:1015CD00C0037893E6FB789BE6FE08E6FFAD037C4F +:1015DD0000122A2DAD037C00122A1BE4FDD003D08E +:1015ED0000EB2FFFEA3EFEED39FDEC38FC788A1258 +:1015FD002BEF7FFF7EE07DF57C05788A122BE2D301 +:10160D00122B9F4009788A122BFB00000000788A6C +:10161D00122BD68F5F8E5E8D5D8C5C7F301244C831 +:10162D007F2E124B60EF7F00FEC006C0077F2F128A +:10163D004B60EFFDD0E02D7870F6D0E0340018F659 +:10164D000806E618700106786FE6FD7F2E124BAA8C +:10165D007870E6FD7F2F124BAA301A2D30132A20F9 +:10166D00012778A906E618700106789DE675F03C0D +:10167D00A4FFC378A9E69F18E695F0400CD201852A +:10168D00464A85474BE4F608F6C37873E69401188D +:10169D00E694005075302472301A6F30130D3001FE +:1016AD000A78A906E618701106800E20130B20018A +:1016BD000878A906E618700106789DE675F032A443 +:1016CD00FFC378A9E69F18E695F0403EE4F608F6CC +:1016DD00C218F56275630EF564756513F566756769 +:1016ED0013F568756911F56A756B117B11FA7D112A +:1016FD00FC7F0B124C60C20C7871E66444600B7F6A +:10170D00147E00124A77D21880EED3799CE7788F39 +:10171D009619E718964003301E2A301A27C293C235 +:10172D001A85464A85474BC3740A78849675F0032B +:10173D00A478B9F6E47896F6F539F538F537F53637 +:05174D00C200C20122F0 +:1043DA00755A067871765875620075630E756400B1 +:1043EA00756511756600756711E4F568F569F56A12 +:1043FA00F56B7B0DFA7D17FC7F0C124C60124CC1D9 +:10440A007871E664446037AF5A7E007D017C001201 +:10441A004790742C255A124728742C255AF8A60757 +:10442A007871E6FF64536004EFB443D4055AE55A41 +:10443A00D394074003755A067871765880C278710A +:0D444A00E6B444097F027E00124A7780F13B +:014457002242 +:024458008F5D76 +:10445A00C37408955DF55E7871E6FF64446044EFC5 +:10446A006441603FEF6442603AAF5E7E007D017C4A +:10447A0000124790742C255E124728742C255EF88A +:10448A00A6077871E6FF64536004EFB443C9055E7A +:10449A00E55ED3940740067408955DF55E787176FB +:1044AA005880B47871E6B442127871E6B442097F52 +:0D44BA00027E00124A7780F1D20B22C20B65 +:0144C70022D2 +:084788007D017F077C007E002B +:084790008E5F8F608C618D6269 +:104798007F3A7D2C7B087A00124C29AF60E56025B2 +:1047A80062FDE55F3561FCEFC39DEC6480F87480C1 +:1047B800985009742C2FF876110F80E11246C77FA4 +:1047C800967E00124A777F2C7D3A7B087A00124C3D +:0B47D800291246C77F967E00024A7738 +:103AE700755A07C2187F08124B6078BAA607756225 +:103AF7000075630175640075651275660075670E5C +:103B0700E6FF75F00A84756800F569EF75F00A84B9 +:103B1700AFF0756A008F6B7B0C7A007D0E7C007F9F +:103B270013124C60124CC17871E6FF64446041EF98 +:103B37006442603CAF5A7E007D017C00124790745E +:103B47002C255A124728742C255AF8A6077871E6AF +:103B5700FF64536004EFB44310055AE55AD3940742 +:103B67004003755A06787176587871E6B442B822E0 +:103B77007871E664447058E532540FC454F0FFE599 +:103B870033540F2FF55AFF124C8A8F5AE55AD394A4 +:103B97002440357562007563137564007565177584 +:103BA7006600756713756800756911756A00756B2E +:103BB700117B137A007D0E7C007F11124C607FF41D +:103BC7007E01124A77023AECAD5A7F08124BAA7867 +:0E3BD70071E6B444097F027E00124A7780F145 +:013BE50022BD +:1008BE00C2281220CCD218D21678BAE6FFD39400F2 +:1008CE00400CEFD394095006788176A08034EFD394 +:1008DE009409400CEFD394125006788176A28022B0 +:1008EE00EFD39412400CEFD3941B5006788176A46C +:1008FE008010EFD3941B400AEFD3942450047881D8 +:10090E0076A6202521756200756311E4F564F56500 +:10091E00F566F567F568F569F56AF56B7B16FA7D90 +:10092E0001FC7F0F802D78BAE6FE75F00A84FFEE8B +:10093E0075F00A84E5F0FD7C00756200756311E4C4 +:10094E00F564F565F566F567F568F569F56AF56BB5 +:10095E007B0FFA124C6012490B7FF47E01124A771C +:10096E007F05124458300B030210BC7871E66444C4 +:10097E006003020A557F0512482F8E5B8F5C78BB91 +:10098E00E675F003A42413F582E43448F583E4936A +:10099E00FF7E007C037DE8122A1BD3E55C9FE55B9E +:1009AE009E4036D2287562007563137564007565B6 +:1009BE0017756600756713756800756911756A009D +:1009CE00756B117B137A007D0E7C007F11124C60CB +:1009DE007FF47E01124A77806E78C0A65B08A65C13 +:1009EE0078BAE6FFD39400400AEFD3940950048FEF +:1009FE005A8037EFD39409400DEFD394125007EF7E +:100A0E0024F7F55A8024EFD39412400DEFD3941BA4 +:100A1E005007EF24EEF55A8011EFD3941B400BEFE5 +:100A2E00D394245005EF24E5F55AE55AC454F0FF4B +:100A3E0078C0E6FD124B05E55AC454F004FF78C1A8 +:100A4E00E6FD124B05C2283028030209102025238B +:100A5E00756200756311756400756511E4F566F5D0 +:100A6E0067F568F569F56AF56B7B11FA7D0FFC7F0A +:100A7E000F802F78BAE6FE75F00A84FFEE75F00A45 +:100A8E0084E5F0FD7C007562007563117564007578 +:100A9E006511E4F566F567F568F569F56AF56B7B42 +:100AAE000DFA124C60787CE6FE08E6FF7D041249D2 +:100ABE00147FF47E01124A777F04124458300B03E0 +:100ACE000210BC7871E664446003020B977F041237 +:100ADE00482F8E5B8F5CC3E55C78C196E55B1896FC +:100AEE004036D228756200756313756400756517FC +:100AFE00756600756713756800756911756A0075FE +:100B0E006B117B137A007D0E7C007F11124C607F7F +:100B1E00F47E01124A778071787CA65B08A65C7819 +:100B2E00BAE6FFD39400400AEFD3940950048F5ACB +:100B3E008037EFD39409400DEFD394125007EF2472 +:100B4E00F7F55A8024EFD39412400DEFD3941B5037 +:100B5E0007EF24EEF55A8011EFD3941B400BEFD321 +:100B6E0094245005EF24E5F55AE55AC454F02404B4 +:100B7E00FF787CE6FD124B05E55AC454F02405FFC0 +:100B8E00787DE6FD124B05C228302803020A5B2051 +:100B9E002523756200756311756400756511E4F5A2 +:100BAE0066F567F568F569F56AF56B7B16FA7D0FE4 +:100BBE00FC7F18802F78BAE6FE75F00A84FFEE757A +:100BCE00F00A84E5F0FD7C007562007563117564B2 +:100BDE0000756511E4F566F567F568F569F56AF572 +:100BEE006B7B18FA124C607885E6FE08E6FF7D03F3 +:100BFE001249147FF47E01124A777F031244583053 +:100C0E000B030210BC7871E664446003020CE27FB1 +:100C1E000312482F8E5B8F5CE55C787D26FFE55BCB +:100C2E001836FED3EF78C196EE18964036D2287558 +:100C3E0062007563137564007565177566007567D8 +:100C4E0013756800756911756A00756B117B137ADF +:100C5E00007D0E7C007F11124C607FF47E01124AE3 +:100C6E007780717885A65B08A65C78BAE6FFD39488 +:100C7E0000400AEFD3940950048F5A8037EFD39473 +:100C8E0009400DEFD394125007EF24F7F55A802444 +:100C9E00EFD39412400DEFD3941B5007EF24EEF5D3 +:100CAE005A8011EFD3941B400BEFD394245005EFD1 +:100CBE0024E5F55AE55AC454F02406FF7885E6FD7E +:100CCE00124B05E55AC454F02407FF7886E6FD1250 +:100CDE004B05C228302803020B9D20252375620088 +:100CEE00756311756400756511E4F566F567F56851 +:100CFE00F569F56AF56B7B13FA7D14FC7F15802F71 +:100D0E0078BAE6FE75F00A84FFEE75F00A84E5F017 +:100D1E00FD7C00756200756311756400756511E4E4 +:100D2E00F566F567F568F569F56AF56B7B15FA12E8 +:100D3E004C60787A12490D7FF47E01124A777F0556 +:100D4E00124458300B030210BC7871E66444600301 +:100D5E00020E3F7F0512482F8E5B8F5C78BBE675C7 +:100D6E00F003A42413F582E43448F583E493FF7E64 +:100D7E00007C037DE8122A1BE55C78C126FDE55B4D +:100D8E001836FCD3ED9FEC9E4036D2287562007566 +:100D9E00631375640075651775660075671375685E +:100DAE0000756911756A00756B117B137A007D0EE3 +:100DBE007C007F11124C607FF47E01124A778071A5 +:100DCE00787AA65B08A65C78BAE6FFD39400400A50 +:100DDE00EFD3940950048F5A8037EFD39409400D06 +:100DEE00EFD394125007EF24F7F55A8024EFD394E3 +:100DFE0012400DEFD3941B5007EF24EEF55A8011DD +:100E0E00EFD3941B400BEFD394245005EF24E5F55C +:100E1E005AE55AC454F02408FF787AE6FD124B05C1 +:100E2E00E55AC454F02409FF787BE6FD124B05C247 +:100E3E0028302803020CE820252375620075631103 +:100E4E00756400756511E4F566F567F568F569F585 +:100E5E006AF56B7B13FA7D14FC7F16802F78BAE649 +:100E6E00FE75F00A84FFEE75F00A84E5F0FD7C0055 +:100E7E00756200756311756400756511E4F566F5AC +:100E8E0067F568F569F56AF56B7B16FA124C6078B2 +:100E9E007FE6FE08E6FF7D031249147FF47E011201 +:100EAE004A777F03124458300B030210BC7871E668 +:100EBE0064446003020F817F0312482F8E5B8F5CA8 +:100ECE00C3E55C787B96E55B18964036D228756252 +:100EDE000075631375640075651775660075671385 +:100EEE00756800756911756A00756B117B137A0050 +:100EFE007D0E7C007F11124C607FF47E01124A77CA +:100F0E008071787FA65B08A65C78BAE6FFD3940062 +:100F1E00400AEFD3940950048F5A8037EFD39409C7 +:100F2E00400DEFD394125007EF24F7F55A8024EFBB +:100F3E00D39412400DEFD3941B5007EF24EEF55AC5 +:100F4E008011EFD3941B400BEFD394245005EF2464 +:100F5E00E5F55AE55AC454F0240AFF787FE6FD12EF +:100F6E004B05E55AC454F0240BFF7880E6FD124B76 +:100F7E0005C228302803020E45C21820252A7562A4 +:100F8E0000756314756400756513756600756711D9 +:100F9E00756800756911756A00756B117B117A00A1 +:100FAE007D147C007F0A803578BAE6FE75F00A84DF +:100FBE00FFEE75F00A84E5F0FD7C00756200756346 +:100FCE001175640075651175660075671175680099 +:100FDE00756911756A00756B117B0A7A00124C6087 +:100FEE007FF47E01124A77201505E4F55A800375C9 +:100FFE005A017871E6FF64416025EF644460201267 +:10100E004788E4FB7D01AF5A12472F8F5AE55A707D +:10101E000775330DC21580DA75330ED21580D3786D +:10102E0071E66444706078BAE6FFD39400400EEF28 +:10103E00D394095008EFC454F0240C804378BAE6D8 +:10104E00FFD39409400EEFD394125008EFC454F01E +:10105E00247C802C78BAE6FFD39412400EEFD39402 +:10106E001B5008EFC454F024EC801578BAE6FFD379 +:10107E00941B4012EFD39424500CEFC454F0245C14 +:10108E00FFAD5A124B057871E6B444097F147E0009 +:10109E00124A7780F1D218E4FF124A0D8F5A78AABD +:0E10AE00E6FD655A6005E4FF124B051220CCEA +:0110BC002211 +:101752001220CC788176A0D216789DE6F55B756270 +:101762000075630D75640075651675660075671101 +:1017720075F00A1229CCFF3395E0F5688F69E55BB5 +:1017820075F00A1229CCAFF0EF3395E0F56A8F6B52 +:101792007B107A007D0A7C007F05124C60AF5BEF04 +:1017A2003395E0FE7D021249147FF47E01124A77DE +:1017B2007F02124458300B03021D787F0212482F19 +:1017C200789DA6077871E6B44409789DE6FD7F0B03 +:1017D200124B057F0C124A0D8F5B75620075630D0B +:1017E200756400756516756600756711E55B75F0C1 +:1017F2000A1229CCFF3395E0F5688F69E55B75F035 +:101802000A1229CCAFF0EF3395E0F56A8F6B7B12A9 +:101812007A007D137C007F0D124C60AF5BEF339535 +:10182200E0FE7D021249147FF47E01124A777F02A4 +:10183200124458300B03021D787F0212482F78BFE2 +:10184200A6077871E6FF64427003021D78EFB44484 +:101852000978BFE6FD7F0C124B057F0D124A0D8FF2 +:101862005B75620075630175640075651A756600C3 +:1018720075670EE55B75F00A1229CCFF3395E0F52A +:10188200688F69E55B75F00A1229CCAFF0EF3395EA +:10189200E0F56A8F6B7B147A007D187C00E4FF12FE +:1018A2004C60AF5BEF3395E0FE7D021249147FF48A +:1018B2007E01124A777F02124458300B03021D78D0 +:1018C2007F0212482F8F5B7871E6FF644270030239 +:1018D2001D78EFB44407AD5B7F0D124B05756200B6 +:1018E20075630E756400756514E4F566F567F56851 +:1018F200F569F56AF56B7B05FA7D10FCFF124C6009 +:10190200788EE6FE08E6FF7D031249147FF47E011D +:10191200124A777F031244587F0312482F788EA60B +:101922000608A607300B03021D787871E6B444124C +:10193200788EE6FD7F03124B05788FE6FD7F041259 +:101942004B057562007563117564007565117566E6 +:10195200007567117568007569117884E6756A000B +:10196200F56B7B0D7A007D127C007F05124C607F47 +:10197200F47E01124A777871E6FF64446020EF64D6 +:1019820041601BEF644260161247887884E6FF7B51 +:10199200017D0912472F7884EFF6F53380D87871EC +:1019A200E6FF64427003021D78EFB444167884E6C1 +:1019B200FD7F0A124B05C3740A78849675F003A45E +:1019C20078B9F630972C75620075631475640075EA +:1019D200650E75660075670C756800756914756A21 +:1019E20000756B0DE4FBFA7D13FC7F12124C600252 +:1019F2001D6175620075630A75640075651275660E +:101A020000756711E4F568F569F56AF56B7B0CFA08 +:101A12007D10FC7F05124C6078BBE675F003A424B0 +:101A220013F582E43448F583E493FF7E007D0212CD +:101A320049147FF47E01124A777871E6FF644460AC +:101A420047EF64416042EF6442603D7D027F0612CF +:101A5200478C78BB12472978BBA6077871E6B44356 +:101A62000B78BB06E6D394094002E4F678BBE67530 +:101A7200F003A42413F582E43448F583E493FF7E53 +:101A8200007D0212491480B17871E6FF644270034E +:101A9200021D78EFB4440978BBE6FD7F05124B05C1 +:101AA2007562007563117564007565117566007560 +:101AB20067117893E6FF75F00A84756800F569EF9F +:101AC20075F00A84AFF0756A008F6B7B057A007D32 +:101AD2000E7C007F13124C607FF47E01124A7778ED +:101AE20093E6FFF55BB40503755B03EFB40A03E409 +:101AF200F55B7871E6FF6444605BEF64416056EF2A +:101B0200644260517D027C007F067E00124790E4B1 +:101B1200FB7D03AF5B12472F8F5B7871E6B4430EF8 +:101B2200055BD3E55B648094834003E4F55B7893C3 +:101B3200A65BE55BB403027605E55B7004789376F9 +:101B42000A7893E6FF75F00A8485F033EF75F00AA0 +:101B520084F532809D7871E6FF64427003021D783D +:101B6200EFB444097893E6FD7F06124B0578BBE695 +:101B7200FF75F003A42411F582E43448F583E4935D +:101B82007875F6EF75F003A42412F582E43448F573 +:101B920083E493787EF678BBE675F003A42413F50C +:101BA20082E43448F583E493FF7E007C037DE812EF +:101BB2002A1BAC06AD077893E675F009A4AEF02DAA +:101BC200F549EC3EF5487562007563117564007560 +:101BD20065117566007567117568007569117887FA +:101BE200E6756A00F56B7B057A007D0A7C007F1A38 +:101BF200124C607FF47E01124A777871E6FF6444EA +:101C02006034EF6441602FEF6442602A12478878A3 +:101C120087E6FFE4FB7D0512472F7887A6077871D8 +:101C2200E6B4430B788706E6D394054002E4F678DF +:101C320087E6F53380C47871E6FF64427003021DC3 +:101C420078EFB444097887E6FD7F07124B05756289 +:101C52000075631375640075650A75660075670C17 +:101C62007568007569117897E6756A00F56B7B14E3 +:101C72007A007D107C00E4FF124C607FF47E01123A +:101C82004A777871E6FF64446034EF6441602FEF75 +:101C92006442602A1247887897E6FFE4FB7D0512CA +:101CA200472F7897A6077871E6B4430B789706E634 +:101CB200D394054002E4F67897E6F53380C4787150 +:101CC200E6FF64427003021D78EFB444097897E698 +:101CD200FD7F08124B05D218756200756311756499 +:101CE2000075651175660075671175680075691173 +:101CF20078C2E6756A00F56B7B0C7A007D0E7C007B +:101D02007F0D124C607FF47E01124A777871E6FFF4 +:101D120064446034EF6441602FEF6442602A1247EA +:101D22008878C2E6FF7B037D0712472F78C2A60799 +:101D32007871E6B4430B78C206E6D3940740027684 +:101D42000378C2E6F53380C47871E6FF6442602608 +:101D5200EFB4440978C2E6FD7F09124B05C218E4CC +:101D6200FF124A0D8F5B78AAE6FD655B6005E4FF12 +:061D7200124B051220CC0B +:011D78002248 +:102415001220CCC218D2167562007563147564005B +:1024250075651875660075671475680075691175A9 +:102435006A00756B117B057A007D187C007F01129F +:102445004C607F0E124B608F5B7FF47E01124A77E2 +:10245500E55B7004C20D8002D20D7871E6FF64441D +:10246500602DEF64416028EF64426023124788E4E1 +:10247500FB7D01AF5B12472F8F5BE55B7007753303 +:102485000DC20D80D5755B0175330ED20D80CB78ED +:1024950071E6FF6442700302275BEFB44407AD5B4E +:1024A5007F0E124BAA75620075630575640075652C +:1024B50011756600756711756800756911756A0093 +:1024C500756B117B147A007D1B7C007F0A124C60B2 +:1024D5007F09124B608F5B7FF47E01124A77E55BC3 +:1024E5007004C2178002D2177871E6FF6444602D2C +:1024F500EF64416028EF64426023124788E4FB7D66 +:1025050001AF5B12472F8F5BE55B700775330DC21B +:102515001780D5755B0175330ED21780CB7871E6C0 +:10252500FF6442700302275BEFB44407AD5B7F098C +:10253500124BAA75620075630D7564007565167595 +:102545006600756711756800756911756A00756BA8 +:10255500117B057A007D147C007F0A124C607F0A8E +:10256500124B607874EFF67E007D021249147FF4F9 +:102575007E01124A777F02124458300B0302275B13 +:102585007F0212482F7874A6077871E6FF644270BF +:102595000302275BEFB444097874E6FD7F0A124B0A +:1025A500AA7562007563017564007565127566002C +:1025B50075670E756800756911756A00756B117B15 +:1025C5000C7A007D0E7C007F13124C607F0B124B42 +:1025D500608F5B7FF47E01124A77E55B7004C2254C +:1025E5008002D2257871E6FF6444602DEF64416076 +:1025F50028EF64426023124788E4FB7D01AF5B123C +:10260500472F8F5BE55B700775330DC22580D57548 +:102615005B0175330ED22580CB7871E6FF6442707D +:102625000302275BEFB44407AD5B7F0B124BAA7522 +:1026350062007563147564007565107566007567CD +:102645000F756800756911756A00756B117B0E7AD7 +:10265500007D057C007F0B124C607F36124B608F2E +:102665005B7FF47E01124A77E55B7004C224800229 +:10267500D2247871E6FF6444602DEF64416028EF51 +:1026850064426023124788E4FB7D01AF5B12472F4C +:102695008F5BE55B700775330DC22480D5755B01D3 +:1026A50075330ED22480CB7871E6FF644270030245 +:1026B500275BEFB44407AD5B7F36124BAA7562000A +:1026C5007563147564007565117566007567117518 +:1026D5006800756911756A00756B117B1D7A007D3F +:1026E500137C007F19124C607F0C124B608F5B7F4F +:1026F500F47E01124A77E55B7004C2138002D2139F +:102705007871E6FF6444602DEF64416028EF644210 +:102715006023124788E4FB7D01AF5B12472F8F5B77 +:10272500E55B700775330DC21380D5755B01753395 +:102735000ED21380CB7871E6FF64426019EFB44482 +:1027450007AD5B7F0C124BAA78AAE6FD7F0F124BF3 +:06275500AA1220CCD218EC +:01275B00225B +:02482F00AB07D5 +:10483100900001E4F55DF55E7A07C374089BC364DB +:1048410080F8EA648098402B742C2AF8E6FF7E00F9 +:10485100AD82AC83122A1BEF255EF55EEE355DF568 +:104861005D7C007D0AAF82AE83122A1B8E838F820C +:074871001A80C7AE5DAF5EC7 +:01487800221D +:07472800F8E6FFE4FB7D0948 +:10472F00A9057871E6FEB42A0F0FD3E96480F8EF7C +:10473F006480984043AF0322EEB4230F1FC3EB6492 +:10474F0080F8EF6480985030AF0122EBFD3395E095 +:10475F00FC7871E6FBC39DEC6480F8748098401878 +:10476F00E9FD3395E0FCD3EB9DEC6480F874809801 +:09477F0050067871E6FF76532222 +:1030600030972B7562007563117564007565167570 +:10307000660075671775680075690C756A00756B71 +:10308000117B0A7A007D0C7C007F11024C60756216 +:103090000075630C75640075650A756600756716C2 +:1030A000756800756911756A00756B117B117A007E +:1030B0007D117C007F11124C607FE87E03124A77FD +:1030C0007562007563017564007565197566007534 +:1030D0006715756800756914756A00756B117B0E4C +:1030E0007A007D1D7C007F11124C607FE87E03809A +:1030F000117871E6FF6444600EEF644260097F025C +:103100007E00124A7780EA7871E6B442127871E65E +:10311000644260030232347F02FE124A7780EE7806 +:1031200071E6B444097F027E00124A7780F175622D +:10313000007563117564007565117566007567111A +:10314000756800756911756A00756B117B167A00D8 +:103150007D0A7C007F0C124C60D218D21DC2053053 +:103160000AFDC20A1240CF789BE6FE08E6FF789E71 +:10317000A60608A607C21D755B07789EE6FA08E654 +:10318000FB7C007D0AFFAE02122A2D742C255BF811 +:10319000A6057C007D0AAF03AE02122A2D789EA6FA +:1031A0000608A607155BE55BB402CF803B7871E6A5 +:1031B000FF64446038EF64426033AF5B7E007D01A2 +:1031C0007C00124790742C255B124728742C255BD9 +:1031D000F8A6077871E6FF64536004EFB443CE05A8 +:1031E0005BE55BD3940740C5755B0380C07871E6EF +:1031F000B4420F7871E66442703A7F02FE124A7759 +:1032000080F17871E6B444097F027E00124A77802B +:10321000F1D2067F0512482F78A0A60608A60778E7 +:1032200093E6FF78A17004740A8001EF26F618E493 +:0432300036F6C21894 +:013234002277 +:1039D900200603023AE6C20678A0E6FA08E6FBFFEB +:1039E900AE02E48F4F8E4EF54DF54C789BE6FE08FE +:1039F900E6FFE48F538E52F551F55018E6FE08E6BE +:103A0900FFD39BEE9A400EEF78A196799FF7EE18B7 +:103A19009619F78012C379A1E7789C96FF19E718E0 +:103A290096789EF608A607789FE618466077E47FA1 +:103A3900107E27FDFCAB4FAA4EA94DA84C122A8235 +:103A4900AB53AA52A951A850122B0D8F458E448D04 +:103A5900438C427899A60608A607788176A07899BA +:103A6900E6FD7F01124B05789AE6FD7F02124B05B0 +:103A790075620075630C75640075650C7566007573 +:103A8900670E756800756905756A00756B057B1B9E +:103A99007A007D057C007F11124C607FE87E03125D +:103AA9004A77024C4575620075630A75640075654D +:103AB90001756600756716756800756911756A0084 +:103AC900756B117B0F7A007D117C007F11124C60A0 +:0E3AD9007FE87E03124A77124C451248C22243 +:1048C200789BE6FE08E6FFE48F4F8E4EF54DF54CE1 +:1048D2007899E6FE08E6FFE48F538E52F551F550C3 +:1048E200AD51AC50AB4FAA4EA94DA84C122A82E44E +:1048F2007B107A27F9F8122B0D8F458E448D438C4D +:0949020042789BA60608A60722D4 +:10417D0030972B7562007563117564007565167542 +:10418D00660075671775680075690C756A00756B43 +:10419D00117B0A7A007D0C7C007F11024C607562E8 +:1041AD000075630575640075650E75660075671499 +:1041BD00756800756911756A00756B117B0E7A0053 +:1041CD007D137C007F11124C607871E6FF644460B2 +:1041DD000EEF644260097F027E00124A7780EA7812 +:1041ED0071E6B4420F7871E66442702F7F02FE12C1 +:1041FD004A7780F17871E6B444097F027E00124A55 +:10420D007780F1124C45788176A07D277F01124B86 +:0C421D00057D107F02124B051220CC2200 +:10275C00755A01124C457871E6FF644470030229E6 +:10276C0075EF644270030229757D087C00E4FFFE5E +:10277C001247907B017D09AF5A12472F8F5A124C8A +:10278C00C1E55A14B4090050CD9027A375F003A4E9 +:10279C00C58325F0C583730227BE0227E9022814DE +:1027AC0002283F02286A0228950228C00228EB0260 +:1027BC00291575620075631175640075651275666F +:1027CC000075670A756800756913756A00756B0A80 +:1027DC007B167A007D017C007F0F02296F756200E9 +:1027EC0075631175640075650575660075670E7502 +:1027FC006800756914756A00756B117B167A007D1B +:10280C000C7C007F0502296F756200756316756478 +:10281C00007565117566007567117568007569112D +:10282C00756A00756B117B0A7A007D0C7C007F1138 +:10283C0002296F75620075631175640075651375F7 +:10284C006600756705756800756914756A00756BA7 +:10285C00117B167A007D0A7C007F0C02296F756251 +:10286C000075630A75640075651B756600756716DF +:10287C00756800756914756A00756B057B0F7A00B5 +:10288C007D0E7C007F0D02296F75620075631B75D0 +:10289C00640075651675660075670A75680075695C +:1028AC0014756A00756B0E7B1A7A007D1B7C007F99 +:1028BC000C02296F75620075630C756400756515E3 +:1028CC00756600756711756800756911756A007514 +:1028DC006B117B147A007D0A7C007F0B02296F75CB +:1028EC00620075630C756400756515756600756717 +:1028FC0014756800756917756A00756B147B147A0A +:10290C00007D0A7C007F0B805A756200756315751B +:10291C00640075651175660075670C7568007569DE +:10292C001B756A00756B1A7B147A007D0A7C007F1C +:10293C000B124C607FF47E01124A7775620075634E +:10294C000A75640075651375660075671175680006 +:10295C00756911756A00756B117B0E7A007D167C9A +:10296C00007F0C124C600227627871E66442604F63 +:10297C00E55A14B40900504790299275F003A4C588 +:10298C008325F0C583730229AD0229B30229B6024F +:10299C0029B90229BC0229BF0229C20229C5022970 +:1029AC00C8122415024CC102175202306002417D3C +:0F29BC00022C14023BE60233A002364D1237887C +:0129CB0022E9 +:103CE500788A122BFB00000000D2187F1E123E9D21 +:103CF500C004C005C006C0077F1A123E9DD003D080 +:103D050002D001D000EF2BFFEE3AFEED39FDEC3885 +:103D1500FCC004C005C006C0077F22123E9DD0032B +:103D2500D002D001D000EF2BFFEE3AFEED39FDECCD +:103D350038FCC004C005C006C0077F26123E9DD0D2 +:103D450003D002D001D000EF2BFFEE3AFEED39FD96 +:103D5500EC38FCC004C005C006C0077F2A123E9D92 +:103D6500D003D002D001D000EF2BFFEE3AFEED39A3 +:103D7500FDEC38FCC004C005C006C0077F30123E0C +:103D85009DD003D002D001D000EF2BFFEE3AFEED1F +:103D950039FDEC38FC788A122BEF788A122BD67510 +:103DA5005E081242297871E6FF6444600EEF6442B2 +:0C3DB50060097F027E00124A7780EA223B +:10364D007F12124B60EF7F00FEC006C0077F131282 +:10365D004B60EFFDD0E02DFFD0E03400FEC006C082 +:10366D00077F10124B60EF7F00FEC006C0077F1171 +:10367D00124B60EFFDD0E02DFDD0E03400FCD0E02A +:10368D002DFFD0E03CFEC006C0077F14124B60EF4B +:10369D007F00FEC006C0077F15124B60EFFDD0E026 +:1036AD002DFDD0E03400FCD0E02DFFD0E03CFEC07D +:1036BD0006C0077F16124B60EF7F00FEC006C007E5 +:1036CD007F17124B60EFFDD0E02DFDD0E03400FCF4 +:1036DD00D0E02DFFD0E03CFEC006C0077F18124B96 +:1036ED0060EF7F00FEC006C0077F19124B60EFFD33 +:1036FD00D0E02DFDD0E03400FCD0E02DFFD0E03C3B +:10370D00FEC006C0077F2E124B60EF7F00FEC00685 +:10371D00C0077F2F124B60EFFDD0E02DFDD0E034C0 +:10372D0000FCD0E02D7870F6D0E03C18F675620004 +:10373D007563117564007565117566007567117592 +:10374D006800756911756A00756B117B117A007DC2 +:10375D00117C007F11124C60786FE6FE08E6FF7D4C +:10376D00051245FF7871E6FF6444600EEF64426018 +:0B377D00097F027E00124A7780EA22DA +:103BE600755B01E4F55C7F08124B6078BAEFF6C2AC +:103BF60003D394064005755B01800578BAE6F55B4C +:103C06007871E6B444097F027E00124A7780F17526 +:103C160062007563117564007565117566007567D8 +:103C260011756800756911756A00756B117B117ADB +:103C3600007D0C7C00AF5B124C607FF47E01124A63 +:103C460077E4F55CD2187871E6FF64447003023CB1 +:103C5600D5EF64416079EF64426074AF5C7E007DAD +:103C6600017C00124790742C255CF8E6FF7B017DF1 +:103C76000612472F742C255CF8A607E52CF55BAFDA +:103C86005B124C8A8F5BE55BB401047F1A802BE5DF +:103C96005BB402047F1E8022E55BB403047F2280AE +:103CA60019E55BB404047F268010E55BB405047F48 +:103CB6002A8007E55BB4060A7F30123E9D788A1299 +:103CC6002BEF788A122BD67D06124914023C4C78CB +:0E3CD60071E6B444097F027E00124A7780F145 +:013CE40022BD +:1033A000755B01E4F55C7F08124B6078BAEFF6C2FA +:1033B00003D394064005755B01800578BAE6F55B9A +:1033C0007871E6B444097F027E00124A7780F1E505 +:1033D0005BFD7C0075620075631175640075651195 +:1033E000756600756711756800756911756A0075F5 +:1033F0006B117B1E7A007F0B124C607FF47E0112F2 +:103400004A77755C01C2187871E6FF644470030264 +:1034100034E8EF644170030234E8EF644270030261 +:1034200034E8AF5C7E007D017C00124790742C254F +:103430005CF8E6FF7B017D0612472F742C255CF8B3 +:10344000A607E52DF55BAF5B124C8A8F5BE55BB49D +:1034500001117F10124B60EF7F00FEC006C0077F96 +:1034600011806CE55BB402117F12124B60EF7F009C +:10347000FEC006C0077F138056E55BB403117F14BE +:10348000124B60EF7F00FEC006C0077F158040E54D +:103490005BB404117F16124B60EF7F00FEC006C0C4 +:1034A000077F17802AE55BB405117F18124B60EF88 +:1034B0007F00FEC006C0077F198014E55BB40620BC +:1034C0007F2E124B60EF7F00FEC006C0077F2F12D9 +:1034D0004B60EFFDD0E02D7870F6D0E0340018F6A8 +:1034E000786F12490D0234077871E6B444097F02FF +:0934F0007E00124A7780F1D21827 +:0134F90022B0 +:1032350075620075630E75640075650A75660075BF +:103245006713756800756911756A00756B117B16D2 +:103255007A007D0C7C007F11124C607871E6FF646A +:10326500436016EF64416011EF6442600C7D087C99 +:1032750000E4FFFE12479080E27871E66443600344 +:1032850002339F788A122BFB00000000E4786FF66A +:1032950008F678BAE664017024788A122BD68F5F17 +:1032A5008E5E8D5D8C5C7F1A1244C8786FE6FD7F5B +:1032B50010124BAA7870E6FD7F1102339C78BAE6AE +:1032C50064027024788A122BD68F5F8E5E8D5D8C9A +:1032D5005C7F1E1244C8786FE6FD7F12124BAA78F8 +:1032E50070E6FD7F1302339C78BAE6640370247898 +:1032F5008A122BD68F5F8E5E8D5D8C5C7F22124489 +:10330500C8786FE6FD7F14124BAA7870E6FD7F152D +:1033150002339C78BAE664047023788A122BD68F20 +:103325005F8E5E8D5D8C5C7F261244C8786FE6FDEE +:103335007F16124BAA7870E6FD7F17805A78BAE699 +:1033450064057023788A122BD68F5F8E5E8D5D8C17 +:103355005C7F2A1244C8786FE6FD7F18124BAA7865 +:1033650070E6FD7F19803078BAE6FFC39406402ADF +:10337500EFD394245024788A122BD68F5F8E5E8DDE +:103385005D8C5C7F301244C8786FE6FD7F2E124B52 +:0B339500AA7870E6FD7F2F124BAA22E1 +:1037880075620075630E75640075650A7566007567 +:103798006713756800756911756A00756B117B167A +:1037A8007A007D0C7C007F11124C607871E6FF6412 +:1037B800436016EF64416011EF6442600C7D087C41 +:1037C80000E4FFFE12479080E27871E664436003EC +:1037D8000238C2788A122BFB00000000E4786FF6EA +:1037E80008F6788A122BD68F5F8E5E8D5D8C5C7F93 +:1037F8001A1244C8786FE6FD7F10124BAA7870E65B +:10380800FD7F11124BAA788A122BD68F5F8E5E8DA0 +:103818005D8C5C7F1E1244C8786FE6FD7F12124BE8 +:10382800AA7870E6FD7F13124BAA788A122BD68FDE +:103838005F8E5E8D5D8C5C7F221244C8786FE6FDDA +:103848007F14124BAA7870E6FD7F15124BAA788A6E +:10385800122BD68F5F8E5E8D5D8C5C7F261244C8DE +:10386800786FE6FD7F16124BAA7870E6FD7F171277 +:103878004BAA788A122BD68F5F8E5E8D5D8C5C7F0B +:103888002A1244C8786FE6FD7F18124BAA7870E6B2 +:10389800FD7F19124BAA788A122BD68F5F8E5E8D08 +:1038A8005D8C5C7F301244C8786FE6FD7F2E124B2A +:0B38B800AA7870E6FD7F2F124BAA22B9 +:104A4500C0F9A4B0999282F880908883C6A1868E19 +:104A5500BFFF8CAF8789C7A3ABC2AAC19195F60FDB +:104A650001161614131718010C0511111111111146 +:024A750011111D +:1046C700C2AFE4F56CE56C78C266701330181074ED +:1046D7002C256CF8E6904A4593547FF56E800C7450 +:1046E7002C256CF8E6904A4593F56EE4F56DE56E7A +:1046F70030E704D2A78002C2A7D2A6000000C2A654 +:10470700E56E25E0F56E000000124CC1056DE56D04 +:10471700D3940740D9056CE56CC3940840A7D2AF82 +:01472700226F +:104C60008F2C8D2D8B2E85632F8565308567318543 +:084C70006932856B330246C76F +:104C4500752C11752D11752E11752F117530117566 +:0B4C550031117532117533110246C792 +:084229008F5D8E5C8D5B8C5AE9 +:10423100755F07C37408955EC36480F8E55F6480A9 +:1042410098406CE47B0AFAF9F8AF5DAE5CAD5BAC0B +:104251005A122B0DAF03742C255FF8A607E4FFFE5D +:10426100FDFCAB5DAA5CA95BA85AC3122B9F701F12 +:1042710078C2E6FFAD5FED3395E0FCC3ED9F74803E +:10428100F86C98500A742C255FF8E670027611AF2D +:104291005DAE5CAD5BAC5AE47B0AFAF9F8122B0D0A +:1042A1008F5D8E5C8D5B8C5A124CC1155F8084E5ED +:1042B1002CB4110BE52DB41106752C0C752D1B02B8 +:0242C10046C7EE +:0645FF008E5B8F5C8D5DF8 +:10460500755E07C37408955DC36480F8E55E6480D4 +:10461500984041AE5BAF5C7C007D0A122A2D742C5C +:10462500255EF8A605E55C455B7013C3E55E648011 +:104635009487500A742C255EF8E670027611AE5BFD +:10464500AF5C7C007D0A122A2D8E5B8F5C124CC1FB +:10465500155E80AF752C0B752D0A752E140246C795 +:10495000E4F558AF58EF3395E0FE74642FF5827498 +:104960004A3EF583E493F5347FC87E00124A77E42B +:10497000FF742D2FF8E6FE742C2FF8A6060FBF0843 +:0F498000F01246C70558C3E5586480949340C4AD +:01498F002205 +:044A77008E638F6457 +:104A7B00E4F565F566C3E5669564E5659563501BDE +:104A8B00E4FFFE0FBF00010EEF64694E70F5124C90 +:0B4A9B00C10566E56670DE056580DA87 +:014AA60022ED +:064990008B5A8A5B895C72 +:10499600D228E4FFEFC39561E5606480F8748098DF +:1049A6005025AB5DAA5EA95F8F827583001229EE42 +:1049B600FEAB5AAA5BA95C8F827583001229EE6E44 +:0949C6006002C2280F80CDA22876 +:0149CF0022C5 +:024C2900A907D9 +:104C2B00E4FFEFC39BEA6480F8748098500BA805EF +:094C3B00E6A801F6090D0F80E95D +:014C4400224D +:074CC10075A61E75A6E12295 +:0F4C8A00EFC4540F75F00AA4FEEF540F2EFF2253 +:104B05008F5D8D5E124CC1124C997881E6FF124B78 +:104B1500ED12000EAF5D124BED12000EAF5E124BA3 +:0E4B2500ED12000E124CA87F147E00024A779B +:024A0D008F5EBA +:104A0F00124CC1124C997881E6FF124BED12000E39 +:104A1F00AF5E124BED12000E124C997881E604FF37 +:104A2F00124BED12000E124C0C8F5FD2B612000E0D +:054A3F00124CA8AF5F5E +:014A4400224F +:0F4C9900D2B6D2B7000000C2B6000000C2B722E8 +:0D4CA800C2B6000000D2B7000000D2B62254 +:104BED00E4FEEF30E704D2B68002C2B6000000D278 +:0E4BFD00B7000000C2B7EF25E0FF0EBE08E4CF +:014C0B002286 +:104C0C00E4FFFEEF25E0FFC2B7000000D2B730B6DC +:0C4C1C000543070180000EBE08E9C2B786 +:014C28002269 +:08000600124C997FD0124BED62 +:0D000E00D2B6000000D2B7000000C2B72239 +:104BAA008F608D61124CC1120006AF60124BED127C +:104BBA00000EAF61124BED12000E124CA87F147E4C +:044BCA0000024A7724 +:024B60008F5E66 +:104B6200124CC1120006AF5E124BED12000E124C37 +:104B7200997FD1124BED12000E124C0CD2B61200DC +:044B82000E024CA82B +:0244C8008F5B08 +:1044CA00E55FFF780AEFF6FBAF5FAE5EAD5DAC5C11 +:1044DA007808122BB0E4780BA607AF5FAE5EAD5D2D +:1044EA00AC5C7810122BB0E4780CA607AF5FAE5E16 +:1044FA00AD5DAC5C7818122BB0780DA607AD03AF92 +:10450A005B124BAAE55B04FF780BE6FD124BAAE5AA +:10451A005B2402FF780CE6FD124BAAE55B2403FF3D +:07452A00780DE6FD024BAA2B +:023E9D008F5D37 +:103E9F00124B60E4FCFDFE780A122BEFE55D04FF88 +:103EAF00124B60E4FCFDFE780E122BEFE55D240251 +:103EBF00FF124B60E4FCFDFE7812122BEFE55D2440 +:103ECF0003FF124B60E4FCFDFE7816122BEF780E09 +:103EDF00122BD67808122BC3E4FDFCC004C005C01A +:103EEF0006C007780A122BD6D003D002D001D0001B +:103EFF00EF2BFFE43AFEE439FDE438FCC004C005C3 +:103F0F00C006C0077812122BD67810122BC3E4FC10 +:103F1F00D003D002D001D000EB2FFFEA3EFEE93DE7 +:103F2F00FDEC38FCC004C005C006C0077816122B84 +:103F3F00D67818122BC3D003D002D001D000EB2FAC +:0A3F4F00FFEA3EFEE93DFDE83CFC00 +:013F59002245 +:10434F00D284D285D286D287C280D281D282D283C2 +:10435F002084037F01222085037F02222086037F92 +:10436F0003222087037F4122D280C281D282D2834F +:10437F002084037F04222085037F05222086037F6C +:10438F0006222087037F4222D280D281C282D2832B +:10439F002084037F07222085037F08222086037F46 +:1043AF0009222087037F4322D280D281D282C28307 +:1043BF002084037F2A222085037F00222086037F0B +:0B43CF0023222087037F44227F7822F6 +:0C4CB500C2B47F057E00124A77D2B42200 +:104AA700E4F556F557E55625E0F556D2B300000074 +:104AB700C2B300000030B2054356018000124CC15A +:0F4AC7000557C3E5576480948840DAD2B3AF56E1 +:014AD60022BD +:10453100300F54124AA78F2B124AA78F54124AA741 +:104541008F2AE52B30E704C21B8002D21BE55425DC +:10455100E025E0FFE52AC4131354032FF52AE52BC8 +:1045610025E025E0FFE554C4131354032FF52BFE7A +:104571007C00E4252AF509EC3EF508124CC1124AEB +:10458100A78F55C20FD2A8E555B4490B7894A60858 +:0845910008A609D226D202227D +:030000000242C3F6 +:0C42C300787FE4F6D8FD7581C202430A42 +:1029CC00C2D530F707B2D563F0FF05F030E70CB293 +:1029DC00D5F4048463F0FF05F080018430D502F453 +:0229EC000422C3 +:1029EE00BB010CE58229F582E5833AF583E022509E +:1029FE0006E92582F8E622BBFE06E92582F8E222E8 +:0D2A0E00E58229F582E5833AF583E4932201 +:102A1B00EF8DF0A4A8F0CF8CF0A428CE8DF0A42ECF +:022A2B00FE2289 +:102A2D00BC000BBE0029EF8DF084FFADF022E4CC8D +:102A3D00F875F008EF2FFFEE33FEEC33FCEE9DEC56 +:102A4D00984005FCEE9DFE0FD5F0E9E4CEFD22ED9C +:102A5D00F8F5F0EE8420D21CFEADF075F008EF2FE6 +:102A6D00FFED33FD4007985006D5F0F222C398FDD7 +:052A7D000FD5F0EA2274 +:102A8200E88FF0A4CC8BF0A42CFCE98EF0A42CFCF3 +:102A92008AF0EDA42CFCEA8EF0A4CDA8F08BF0A471 +:102AA2002DCC3825F0FDE98FF0A42CCD35F0FCEBD0 +:102AB2008EF0A4FEA9F0EB8FF0A4CFC5F02ECD3995 +:0F2AC200FEE43CFCEAA42DCE35F0FDE43CFC2202 +:102AD10075F008758200EF2FFFEE33FECD33CDCCBC +:102AE10033CCC58233C5829BED9AEC99E58298403F +:102AF1000CF582EE9BFEED9AFDEC99FC0FD5F0D61C +:102B0100E4CEFBE4CDFAE4CCF9A88222B800C1B945 +:102B11000059BA002DEC8BF084CFCECDFCE5F0CB83 +:102B2100F97818EF2FFFEE33FEED33FDEC33FCEBBC +:102B310033FB10D703994004EB99FB0FD8E5E4F977 +:102B4100FA227818EF2FFFEE33FEED33FDEC33FC64 +:102B5100C933C910D7059BE99A4007EC9BFCE99A58 +:102B6100F90FD8E0E4C9FAE4CCFB2275F010EF2F9D +:102B7100FFEE33FEED33FDCC33CCC833C810D7079D +:102B81009BEC9AE899400AED9BFDEC9AFCE899F8D8 +:0E2B91000FD5F0DAE4CDFBE4CCFAE4C8F9226B +:102B9F00EB9FF5F0EA9E42F0E99D42F0E89C45F08C +:012BAF002203 +:102BB000E8600FECC313FCED13FDEE13FEEF13FF03 +:032BC000D8F12227 +:102BC300E8600FEFC333FFEE33FEED33FDEC33FC70 +:032BD300D8F12214 +:0C2BD600E6FC08E6FD08E6FE08E6FF222B +:0D2BE200E6FB08E6F908E6FA08E6CBF82263 +:0C2BEF00ECF608EDF608EEF608EFF62212 +:102BFB00D083D082E493F608740193F608740293A1 +:092C0B00F608740393F6740473D7 +:104C7800C3EE6480948040028007C3E49FFFE49EF3 +:024C8800FE220A +:1042CF000234FAE493A3F8E493A34003F68001F2D7 +:1042DF0008DFF48029E493A3F85407240CC8C333F0 +:1042EF00C4540F4420C8834004F456800146F6DFBF +:1042FF00E4800B0102040810204080903DC1E47E51 +:10430F00019360BCA3FF543F30E509541FFEE493B3 +:10431F00A360010ECF54C025E060A840B8E493A37A +:10432F00FAE493A3F8E493A3C8C582C8CAC583CAA5 +:10433F00F0A3C8C582C8CAC583CADFE9DEE780BE5D +:013E9C000025 +:00000001FF diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/Tin_fill_4x4_key_36Recipe_ad7780_55WD_default.lnp b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/Tin_fill_4x4_key_36Recipe_ad7780_55WD_default.lnp new file mode 100644 index 0000000..495cd94 --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/Tin_fill_4x4_key_36Recipe_ad7780_55WD_default.lnp @@ -0,0 +1,9 @@ +"main.obj", +"ser_disp.obj", +"utility.obj", +"eeprom.obj", +"4x4_key.obj", +"ADC_AD7780.obj", +"ADC_HX711.obj" +TO "Tin_fill_4x4_key_36Recipe_ad7780_55WD_default" +RAMSIZE(256) diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/Tin_fill_4x4_key_36Recipe_ad7780_55WD_default.plg b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/Tin_fill_4x4_key_36Recipe_ad7780_55WD_default.plg new file mode 100644 index 0000000..7c37742 --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/Tin_fill_4x4_key_36Recipe_ad7780_55WD_default.plg @@ -0,0 +1,35 @@ + + +
+

µVision Build Log

+

Project:

+C:\FILES\FILLTRONICS\2025 FILLTRONIC FINAL PROGRAMS\EMBEDED PROGRAMS 2025\C51 2025\Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2\fill.uvproj +Project File Date: 01/21/2026 + +

Output:

+compiling main.c... +main.c - 0 Error(s), 0 Warning(s). +Build target 'Target 1' +linking... +Program Size: data=189.1 xdata=0 code=19656 +creating hex file from "Tin_fill_4x4_key_36Recipe_ad7780_55WD_default"... +"Tin_fill_4x4_key_36Recipe_ad7780_55WD_default" - 0 Error(s), 0 Warning(s). +compiling main.c... +main.c - 0 Error(s), 0 Warning(s). +Build target 'Target 1' +linking... +Program Size: data=189.1 xdata=0 code=19656 +creating hex file from "Tin_fill_4x4_key_36Recipe_ad7780_55WD_default"... +"Tin_fill_4x4_key_36Recipe_ad7780_55WD_default" - 0 Error(s), 0 Warning(s). +Build target 'Target 1' +compiling main.c... +compiling ser_disp.c... +compiling utility.c... +compiling eeprom.c... +compiling 4x4_key.c... +compiling ADC_AD7780.C... +compiling ADC_HX711.C... +linking... +Program Size: data=189.1 xdata=0 code=19656 +creating hex file from "Tin_fill_4x4_key_36Recipe_ad7780_55WD_default"... +"Tin_fill_4x4_key_36Recipe_ad7780_55WD_default" - 0 Error(s), 0 Warning(s). diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/Tin_fill_4x4_key_36Recipe_ad7780_55WD_default_abort.hex b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/Tin_fill_4x4_key_36Recipe_ad7780_55WD_default_abort.hex new file mode 100644 index 0000000..8c89d6f --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/Tin_fill_4x4_key_36Recipe_ad7780_55WD_default_abort.hex @@ -0,0 +1,1303 @@ +:1047E3000306060301090901020808020505010180 +:1047F3000202070706060303040401000200030084 +:1048030004000500060007000800090009090A045E +:10481300020A10080A180C0A20100A2C160A402053 +:0C4823000A542A0A68320A68340A683E07 +:103DC10001810001C20401920001980001BB0001C0 +:103DD100840001B90A01960001AA1201BA01019DEC +:103DE1000101BF0102A8000002A60000018200013A +:103DF100745001830002C0000002900000027C00A8 +:103E01000002850000028E0000027A0000027F009D +:103E110000024A0000029B000002940000027600AA +:103E2100000AAB0000000000000000000002880052 +:103E3100000299271002BC0064043600000000044F +:103E41002600000000048A00000000026F0000024A +:103E510078000002720000C11BC10AC11CC118C157 +:103E61001DC123C111C195C109C107C110C105C13E +:103E710006C10BC11AC108C100C120C121C114C1B1 +:103E81009FC10EC119C125C113C117C124C101C1EF +:0B3E910012C103C10DC116C102C10C1B +:1034FA00124AD7124CC17871E6B44302C21FC218ED +:10350A0075620075631175640075651175660075DD +:10351A006711756800756911756A00756B117B1101 +:10352A007A007D117C007F11124C601249501220E2 +:10353A00CCC218E4FF124A0D78BEEFF678AAE66FFD +:10354A0070030235D075620075630A75640075658B +:10355A001B756600756716756800756914756A00CB +:10356A00756B057B0F7A007D0E7C007F0D124C6017 +:10357A007871E6FF64446013EF6442600EEF6441C1 +:10358A0060097F027E00124A7780E57871E6B444CA +:10359A003575620075630A75640075650D75660098 +:1035AA00756701756800756918756A00756B097B1E +:1035BA00177A007D167C007F11124C60122C147F42 +:1035CA00F47E01124A77124CB5124C45301F401254 +:1035DA0049D0122E59124C45D20575620075630AFC +:1035EA0075640075651375660075670E75680075F4 +:1035FA006911756A00756B117B147A007D117C0064 +:10360A007F11124C607FE87E03124A77124C45D232 +:10361A00181240CF12434F7871A60712001E121DCE +:10362A0079124CC11210BD78830620041020050DB2 +:10363A00E6D3940240071238C3E47883F6787176A9 +:03364A007880CEB7 +:104AD70075A0FF7590FF75891DE4F58CF58A7588BB +:104AE7005575A88975B801758DFC758B66F598C2E3 +:0E4AF70088D2A8D2AFC294C291C292C29322BA +:030003000246654D +:10466500C0E0C0F0C083C082C0D075D000C000C01B +:1046750001C002C003C004C005C006C007D20F12A6 +:104685004531D20A30021EC202124BCE7896067907 +:1046950096E7C378B996400D78967600124B86203A +:1046A5000703124015D2A8D007D006D005D004D0F4 +:1046B50003D002D001D000D0D0D082D083D0F0D0AA +:0246C500E032E1 +:03001B000248791F +:10487900C0E0C0F0C083C082C0D075D000C000C005 +:1048890001C002C003C004C005C006C007C28E1221 +:10489900434F7871A607758B66758D32D28ED00716 +:1048A900D006D005D004D003D002D001D000D0D09A +:0948B900D082D083D0F0D0E032AF +:1020CC00C20C7F09124B608F5DE55DB40104D21721 +:1020DC008002C2177F0B124B608F5DE55DB401046B +:1020EC00D2258002C2257F0E124B608F5DE55DB458 +:1020FC000104D20D8002C20D2025077D017F08123C +:10210C004BAA7F08124B6078BAA6077F0C124B6063 +:10211C008F5DE55DB40104D2138002C2137F0A12F5 +:10212C004B607874A6077F36124B608F5DE55DB40B +:10213C000104D2248002C2247F34124B60EF75F06C +:10214C0064A4FFAEF0C006C0077F35124B60EFFDF4 +:10215C00D0E02D7879F6D0E0340018F6124CC17826 +:10216C00BAE6FFD39400400EEFD39409500878815F +:10217C0076A08F5D8043EFD394094011EFD3941276 +:10218C00500B788176A2EF24F7F55D802CEFD39479 +:10219C00124011EFD3941B500B788176A4EF24EEF0 +:1021AC00F55D8015EFD3941B400FEFD394245009A9 +:1021BC00788176A6EF24E5F55D300D147F39124B4E +:1021CC0060EF7F00FEC006C0077F3A124B60801B99 +:1021DC00E55DC454F0FF124A0DEF7F00FEC006C04F +:1021EC0007E55DC454F004FF124A0DEFFDD0E02D5D +:1021FC0078C1F6D0E0340018F6E55DC454F0240242 +:10220C00FF124A0DEF7F00FEC006C007E55DC45407 +:10221C00F02403FF124A0DEFFDD0E02D7891F6D09B +:10222C00E0340018F6E55DC454F02404FF124A0DA6 +:10223C00EF7F00FEC006C007E55DC454F02405FF27 +:10224C00124A0DEFFDD0E02D787DF6D0E034001869 +:10225C00F6E55DC454F02406FF124A0DEF7F00FE34 +:10226C00C006C007E55DC454F02407FF124A0DEF09 +:10227C00FDD0E02D7886F6D0E0340018F6E55DC48C +:10228C0054F02408FF124A0DEF7F00FEC006C00771 +:10229C00E55DC454F02409FF124A0DEFFDD0E02D8A +:1022AC00787BF6D0E0340018F6E55DC454F0240ACF +:1022BC00FF124A0DEF7F00FEC006C007E55DC45457 +:1022CC00F0240BFF124A0DEFFDD0E02D7880F6D0F4 +:1022DC00E0340018F6E55DC454F0240CFF124A0DEE +:1022EC008F5DE55D7004C2158002D215788176A0F1 +:1022FC007F01124A0DEF7F00FEC006C0077F02125D +:10230C004A0DEFFDD0E02D789AF6D0E0340018F6A7 +:10231C007F03124A0DEF7F00FEC006C0077F041238 +:10232C004A0DEFFDD0E02D788FF6D0E0340018F692 +:10233C007F05124A0D78BBA6077F06124A0D7893CB +:10234C00A6077F07124A0D7887A6077F08124A0D49 +:10235C007897A6077F09124A0D78C2A6077F0A1242 +:10236C004A0D7884EFF6C3740A9F75F003A478B90C +:10237C00F6124CC178BBE6FF75F003A42411F5826C +:10238C00E43448F583E4937875F6EF75F003A424F0 +:10239C0012F582E43448F583E493787EF678BBE654 +:1023AC0075F003A42413F582E43448F583E493FF19 +:1023BC007E007C037DE8122A1BAC06AD077893E601 +:1023CC0075F009A4AEF02DF549EC3EF5487F0B12E3 +:1023DC004A0D789DA6077F0C124A0D78BFA6077F81 +:1023EC000D124A0DEF75F00AA478BCA6F008F6C3DE +:1023FC0079C1E7787D96FF19E7189678A2F608A6BA +:08240C000708F608A607C2123A +:0124140022A5 +:102E5900C22875620075630F75640075651475661F +:102E69000075670E756800756905756A00756B14DC +:102E79007B167A007D0E7C007F05124C607FF47E04 +:102E890001124A7775620075631A756400756517D2 +:102E990075660075671375680075691C756A007534 +:102EA9006B117B0E7A007D1A7C007F11124C607FBA +:102EB900F47E01124A77E4FF124A0D8F58E55878DB +:102EC900AA667021F56275630CF56475650CF56683 +:102ED90075670EF568756905F56A756B057B1BFAEB +:102EE9007D05FC802675620075630A756400756549 +:102EF90001756600756716756800756911756A0050 +:102F0900756B117B0F7A007D117C007F11124C606B +:102F19007FF47E01124A7775620075631475640047 +:102F290075650C75660075671175680075691175A9 +:102F39006A00756B117B137A007D117C007F111279 +:102F49004C607FF47E01124A777F0F124B608F58D5 +:102F5900E55878AA667021F56275630CF5647565A4 +:102F69000CF56675670EF568756905F56A756B0583 +:102F79007B1BFA7D05FC802675620075630A756402 +:102F890000756501756600756716756800756911C4 +:102F9900756A00756B117B0F7A007D117C007F11BA +:102FA900124C607FF47E01124A7775620075630DD9 +:102FB90075640075650C756600756711756800752F +:102FC9006911756A00756B117B0A7A007D117C00A5 +:102FD9007F11124C60C20AE4F559300A04C20AD2C0 +:102FE900287F047E00124A770559E559C394FF40AA +:102FF900E930282F75620075630C75640075650CDE +:1030090075660075670E756800756905756A0075DE +:103019006B057B1B7A007D057C007F11124C60C219 +:1030290019802D75620075630A75640075650175EF +:103039006600756716756800756911756A00756BA4 +:10304900117B0F7A007D117C007F11124C60D2191F +:073059007FF47E01024A77BB +:1049D000E4F558E558FB3395E0FAAD03FCAF58EF2A +:1049E0003395E0F5628F63F5648F65F5668F67F543 +:1049F000688F69F56A8F6B124C607FC87E00124A1F +:0C4A0000770558C3E5586480948A40C7CD +:014A0C002287 +:103F5A0078C076030876E8789076000876C8787C88 +:103F6A007600087632E47885F608F6788EF60876D2 +:103F7A000A787AF6087664787FF608F6D215788495 +:103F8A007609C3740A940975F003A478B9F678BB64 +:103F9A00760178937605788776017897760178C2E4 +:103FAA00760478BBE6FF75F003A42411F582E434A5 +:103FBA0048F583E4937875F6EF75F003A42412F5B7 +:103FCA0082E43448F583E493787EF678BBE675F0AC +:103FDA0003A42413F582E43448F583E493FF7E00B6 +:103FEA007C037DE8122A1BAC06AD077893E675F0D0 +:103FFA0009A4AEF02DF549EC3EF548789D76037894 +:0B400A00BF760278BC760008761E220C +:102C1400E4F55B755C01F56275630AF56475651B23 +:102C2400F566756716F568756914F56A756B057B45 +:102C34000FFA7D0EFC7F0D124C607FB87E0B124A9A +:102C440077123F5A75620075630D756400756501EE +:102C5400756600756718756800756909756A007589 +:102C64006B107B0A7A007D177C007F16124C60780B +:102C7400AAE6FDE4FF124B057D017F08124BAA75FD +:102C84005B01E55BD394004010E55BD394095009E4 +:102C9400788176A0855B5C804CE55BD39409401316 +:102CA400E55BD39412500C788176A2E55B24F7F5AA +:102CB4005C8032E55BD394124013E55BD3941B50E4 +:102CC4000C788176A4E55B24EEF55C8018E55BD393 +:102CD400941B4011E55BD39424500A788176A6E5D1 +:102CE4005B24E5F55CE55CC454F0FF78C0E6FD12B6 +:102CF4004B05E55CC454F004FF78C1E6FD124B05B6 +:102D0400E55CC454F02402FF7890E6FD124B05E51F +:102D14005CC454F02403FF7891E6FD124B05E55C96 +:102D2400C454F02404FF787CE6FD124B05E55CC432 +:102D340054F02405FF787DE6FD124B05E55CC45490 +:102D4400F02406FF7885E6FD124B05E55CC454F0DB +:102D54002407FF7886E6FD124B05E55CC454F02495 +:102D640008FF787AE6FD124B05E55CC454F02409AB +:102D7400FF787BE6FD124B05E55CC454F0240AFFA2 +:102D8400787FE6FD124B05E55CC454F0240BFF7814 +:102D940080E6FD124B05E55CC454F0240CFF7D0174 +:102DA400124B05124788124CC1055BE55BD3942492 +:102DB4005003022C86788176A0788EE6FD7F03127C +:102DC4004B05788FE6FD7F04124B0578BBE6FD7F4B +:102DD40005124B057893E6FD7F06124B057887E6CE +:102DE400FD7F07124B057897E6FD7F08124B0578A7 +:102DF400C2E6FD7F09124B057884E6FD7F0A124B7B +:102E040005789DE6FD7F0B124B0578BFE6FD7F0C30 +:102E1400124B0578BDE6FD7F0D124B05E4FD7F09DD +:102E2400124BAAE4FD7F0B124BAAE4FD7F0C124B5C +:102E3400AA7D377F0A124BAAE4FD7F36124BAA788B +:102E4400AAE6FD7F0F124BAAE4FD7F0E124BAA12D5 +:052E540020CC024C45FA +:104BCE007894E6FE08E6FFE4FCFDE5392FF539E5BD +:0F4BDE00383EF538ED3537F537EC3536F53622FC +:104B860078B9E6FBE4FAF9F8AF39AE38AD37AC36AA +:104B9600122B0D7876A60608A607E4F539F538F542 +:044BA60037F5362287 +:10401500D227755604E55625E024A9F8E6FE08E6FC +:10402500FFE55625E024ABF8A60608A607D556E514 +:104035007876E6FE08E6FF78ABA60608A607E4F55F +:1040450056E55625E024AEF9E55625E024ACF8C33F +:10405500E697FF18E61997FE124C78D3EF9405EE14 +:10406500648094804002C2270556E556C3940440F7 +:10407500D0302755E4F545F544F543F542F556E5C9 +:104085005625E024ABF8E6FE08E6FFE4FCFDE54531 +:104095002FF545E5443EF544ED3543F543EC354212 +:1040A500F5420556E556B405D6AF45AE44AD43AC2D +:1040B50042E47B05FAF9F8122B0D8F458E448D43AA +:0940C5008C427876A60608A607D5 +:0140CE0022CF +:1040CF007876E6F53408E6F535124599124CC112AB +:1040DF004B33201D061239D91248C2D3789CE6956E +:1040EF004918E695484043301F40C218124CC1D2C0 +:1040FF000475620075630E7564007565167566004C +:10410F00756712756800756911756A00756B117B9B +:10411F00157A007D117C007F11124C607D087C00A8 +:10412F00E4FFFE124790D2188002C20430193EC23B +:10413F0018124CC1D20475620075630C756400755A +:10414F00651175660075670E756800756913756A78 +:10415F0000756B137B0D7A007D0A7C007F11124C6A +:0E416F00607D087C00E4FFFE124790D218220B +:1045990030051785344A85354BA21B921C7898063D +:1045A900E6D394034004C205E4F6A21C301B01B310 +:1045B9005012E535254B789CF6E534354A18F6A2B4 +:1045C9001B921E22D3E535954BE534954A4013A23B +:1045D9001B921EC3E535954B789CF6E534954A1830 +:1045E900F622A21BB3921EC3E54B9535789CF6E5DE +:0645F9004A953418F62279 +:104B33007897E6FFD3789CE69F18E69400500578B3 +:104B430092068004E47892F67892E6D39403400CBC +:0D4B530085344A85354BA21B921CE4F622E6 +:09490B0078C0E6FE08E6FF7D0518 +:064914008E5D8F5EAB0515 +:10491A007A07C374089BC36480F8EA6480984023CA +:10492A00AE5DAF5E7C007D0A122A2D742C2AF8A691 +:10493A0005AE5DAF5E7C007D0A122A2D8E5D8F5E0C +:06494A001A80CF0246C7EF +:1038C3007893E6FB789BE6FE08E6FFAD037C0012E7 +:1038D3002A2DAD037C00122A1B8E588F597B07AE0D +:1038E30058AF597C007D0A122A2D742C2BF8A6059B +:1038F300AE58AF597C007D0A122A2D8E588F591B62 +:10390300BB02DCE52F7003752F11301E03752F10DA +:103913007893E6FFE5338FF0848FF0A4F533E6FF69 +:103923007887E68FF0A4FF789BE6FC08E6FDD39F3B +:10393300EC95F0500AE4F533F532752F11C21EED04 +:103943004C700C752C11752D11752E11752F1130AE +:103953002008752C0C752D018062302108752C0C04 +:10396300752D028057301408752C0F752D0F804C60 +:1039730030120B201A08752C0A752D05800F301A8A +:103983001930130E30010B752C19752D1D752E145E +:103993008041752C05752D0A802220250B752C136B +:1039A300752D0D752E1C802B78BAE6FFD394095024 +:1039B30010752C0FEF75F00A8485F02D752E11808C +:1039C30012EF75F00A8485F02DEF75F00A84F52C5B +:0639D300752E0F0246C72D +:10001E00E4F558F55930030302039B7871E6644109 +:10002E00600302039B30000302039BC218124CC1F3 +:10003E001243DA124CC17FB57D327B027A00124C2C +:10004E0029755D00755E00755FB57560007561029E +:10005E007BFF7A4779E3124990502E302503123AEE +:10006E00E77871E6B442107871E6644260030208E4 +:10007E00BD7658D21880F01208BE2025030208BDA6 +:10008E007871E6B442D502038F755D00755E00751A +:10009E005FB57560007561027BFF7A4779E512499D +:1000AE0090500612306002038F755D00755E00750C +:1000BE005FB57560007561027BFF7A4779E9124979 +:1000CE0090500612175202038F755D00755E007513 +:1000DE005FB57560007561027BFF7A4779EB124957 +:1000EE0090500612241502038F755D00755E007523 +:1000FE005FB57560007561027BFF7A4779ED124935 +:10010E00905006122C1402038F755D00755E0075FB +:10011E005FB57560007561027BFF7A4779EF124912 +:10012E0090500612275C02038F755D00755E007598 +:10013E005FB57560007561027BFF7A4779F11249F0 +:10014E00905006123CE502038F755D00755E0075DA +:10015E005FB57560007561027BFF7A4779F31249CE +:10016E009050061233A002038F755D00755E007508 +:10017E005FB57560007561027BFF7A4779F51249AC +:10018E0090500612323502038F755D00755E007554 +:10019E005FB57560007561027BFF7A4779F712498A +:1001AE00905006123BE602038F755D00755E00757A +:1001BE005FB57560007561027BFF7A4779F9124968 +:1001CE0090500612378802038F755D00755E0075BC +:1001DE005FB57560007561027BFF7A4779FB124946 +:1001EE0090500612364D02038F755D00755E0075D8 +:1001FE005FB57560007561027BFF7A4779FD124924 +:10020E0090500B20250302038F7D0102035A755D6A +:10021E0000755E00755FB57560007561027BFF7AD3 +:10022E004779FF124990500B20250302038F7D0260 +:10023E0002035A755D00755E00755FB575600075D9 +:10024E0061027BFF7A487901124990500B202503F9 +:10025E0002038F7D0302035A755D00755E00755FA4 +:10026E00B57560007561027BFF7A4879031249907B +:10027E00500B20250302038F7D0402035A755D0087 +:10028E00755E00755FB57560007561027BFF7A481B +:10029E007905124990500B20250302038F7D05022C +:1002AE00035A755D00755E00755FB575600075610A +:1002BE00027BFF7A487907124990500B20250302E2 +:1002CE00038F7D0602035A755D00755E00755FB57E +:1002DE007560007561027BFF7A487909124990506A +:1002EE000A20250302038F7D078061755D00755E10 +:1002FE0000755FB57560007561027BFF7A48790BFA +:10030E0012499050073025797D088040755D007543 +:10031E005E00755FB57560007561027BFF7A487986 +:10032E000D12499050073025587D09801F755D00CC +:10033E00755E00755FB57560007561027BFF7A486A +:10034E00790F124990500F3025377D0A7F08124BD6 +:10035E00AA1208BE802B7562007563137564007552 +:10036E006513756600756717756800756913756A8C +:10037E0000756B117B0E7A007D117C007F11124C83 +:10038E00607FE87E03124A77124C45D218124CC198 +:10039E007871E664437038200035F562756310F5A8 +:1003AE0064756510F566756710F568756910F56A00 +:1003BE00756B107B11FA7D11FC7F11124C607871F8 +:1003CE00E6B443097F027E00124A7780F1D20530EF +:1003DE0003030204DD7871E6642360030204DD305A +:1003EE0000030204DDC203200D030204DDF562F5F5 +:1003FE0063F564F565F566F567F568F569F56AF513 +:10040E006B7B16FA7D01FC7F0F124C6012490B7F3D +:10041E00F47E01124A777F051244587F0512482F49 +:10042E00E48F458E44F543F54278BBE675F003A4A0 +:10043E002413F582E43448F583E493FF7E007C03B5 +:10044E007DE8122A1BE4FCFDAB45AA44A943A84251 +:10045E00D3122B9F40377562007563137564007558 +:10046E006513756600756717756800756913756A8B +:10047E0000756B117B0E7A007D117C007F11124C82 +:10048E00607FE87E03124A77124C458042C20C7898 +:10049E0093E6FBE4FAF9F8AF45AE44AD43AC421235 +:1004AE002B0DC004A905AA06AB077893E6FFE4FC62 +:1004BE00FDFED000122A8278C0A60608A60718E60E +:1004CE00FD7F39124BAA78C1E6FD7F3A124BAA780E +:1004DE0071E6B42A17200014200311D2037871E6B6 +:1004EE00B42A097F027E00124A7780F130031D780C +:1004FE0071E6B441172000147871E6B441097F0209 +:10050E007E00124A7780F1C20312241520030302E3 +:10051E0005E37871E6644460030205E330000302EC +:10052E0005E32024030205E3C203C218F5627563D6 +:10053E0014F564756511F566756711F568756911C1 +:10054E00F56A756B117B0EFA7D05FC7F0B124C6004 +:10055E007F34124B60EF7F00FEC006C0077F35125E +:10056E004B60EFFDD0E02DFFD0E03400FE7878F642 +:10057E0008EFF67D041249147FF47E01124A777F4C +:10058E00041244587F0412482F7878A60608A6074E +:10059E007871E6FF644270030208BDEF6444702474 +:1005AE007878E6FD7F34124BAA7879E6FD7F351216 +:1005BE004BAA7878E6FD7F37124BAA7879E6FD7F55 +:1005CE0038124BAAD2187871E6B444097F027E0025 +:1005DE00124A7780F17871E6644260030208363081 +:1005EE000003020836202503020836300C030208E9 +:1005FE00367F08124B6078BAEFF6C203C3940150EF +:10060E0002760178BAE6FE75F00A84FFEE75F00AFE +:10061E0084E5F0FD7C0075620075631175640075EC +:10062E006511756600756711756800756911756AD3 +:10063E0000756B117B0F7A00124C607FF47E0112F5 +:10064E004A77755901D2187871E6FF644470030237 +:10065E0007C1EF644170030207C1AF597E007D01EF +:10066E007C00124790742C2559124728742C25595A +:10067E00F8A607E52C540FC454F0FFE52D540F2FA8 +:10068E00F558FF124C8A8F587871E6FF6453600458 +:10069E00EFB443100559E559D394014003E4F559DD +:1006AE0078717658E558D394244035756200756399 +:1006BE0013756400756517756600756713756800A8 +:1006CE00756911756A00756B117B137A007D0E7C4E +:1006DE00007F11124C607FF47E01124A7775582408 +:1006EE007F647E00124A77E558D394004025E55882 +:1006FE00D39409501E788176A0E558C454F0FF12A9 +:10070E004A0DEF7F00FEC006C007E558C454F00442 +:10071E000207A9E558D394094027E558D3941250FF +:10072E0020788176A2E55824F7C454F0FF124A0DC2 +:10073E00EF7F00FEC006C007E558C454F024718058 +:10074E005AE558D394124027E558D3941B5020787D +:10075E008176A4E55824EEC454F0FF124A0DEF7FC3 +:10076E0000FEC006C007E558C454F024E1802CE515 +:10077E0058D3941B4037E558D39424503078817663 +:10078E00A6E55824E5C454F0FF124A0DEF7F00FE93 +:10079E00C006C007E558C454F02451FF124A0DEFAD +:1007AE00FDD0E02D78C1F6D0E0340018F612490BDA +:1007BE000206557871E66444705FE558D394245070 +:1007CE0007E558C39401503875620075631375645C +:1007DE000075651775660075671375680075691184 +:1007EE00756A00756B117B137A007D0E7C007F118C +:1007FE00124C607FF47E01124A777558240205FF71 +:10080E00AD587F08124BAA7F08124B6078BAA60724 +:10081E001220CC7FF47E01800A7871E6B444097F01 +:10082E00027E00124A7780F130036F7871E66423FE +:10083E007068200065302462C2187F37124B60EF5B +:10084E007F00FEC006C0077F38124B60EFFDD0E080 +:10085E002D7873F6D0E0340018F6756200756314C7 +:10086E00756400756511756600756711756800759C +:10087E006911756A00756B117B187A007D0C7C000E +:10088E007F0B124C607872E6FE08E6FF7D0412497B +:10089E00147FB87E0B124A77D2182003127871E6B5 +:0F08AE00B4230C200009200D063024031233A0C0 +:0108BD002218 +:101D7900E4F558F5593016051220CCC2162007068D +:101D8900200C03021E697871E664426003021E6931 +:101D9900E5292401F529E43528F528E43527F5272F +:101DA900E43526F526E47FD07E07FDFCAB29AA2879 +:101DB900A927A826C3122B9F50030220CBC218754E +:101DC900620075631375640075651475660075673F +:101DD90011756800756911756A00756B117B177A41 +:101DE900007D0B7C007F0A124C60C292C294C291A2 +:101DF900C293C220C221C214C21AC207C2098546AF +:101E09004A85474BC3740A78849675F003A478B958 +:101E1900F6E47896F6F539F538F537F536C200C2A5 +:101E29000CF562756313F564756514F56675670ECF +:101E3900F56875690DF56A756B117B17FA7D0BFCF1 +:101E49007F0A124C607FD07E07124A77D21812435C +:101E59004FEF644260F8E4F529F528F527F52622C5 +:101E6900E4F529F528F527F52630174A20004720FB +:101E79000C44D21220903F1220CC3024207F3712FC +:101E89004B60EF7F00FEC006C0077F38124B60EF42 +:101E9900FDD0E02D7873F6D0E0340018F6C37873DE +:101EA900E6940118E694005006302403021F6CC220 +:101EB90012D20C021F9E301763200060300C5D782F +:101EC9009BE6FE08E6FFD3787B96EE1896504DC345 +:101ED900EF788096EE18964043201E407882E6708F +:101EE900077888A60608A6077989E7789C667004AA +:101EF90019E7186670057882068004E47882F67816 +:101F090074E675F004A4FF7882E6C39FE5F0648067 +:101F1900F87480984006E47882F68079309003025C +:101F290020CB3000030220CB301E030220CB12202D +:101F3900CC3024207F37124B60EF7F00FEC006C0F3 +:101F4900077F38124B60EFFDD0E02D7873F6D0E0B3 +:101F5900340018F6C37873E6940118E694005035F6 +:101F690030243275620075630E75640075651375EA +:101F79006600756713756800756911756A00756B78 +:101F8900117B117A007D117C007F0B124C607FE878 +:101F99007E03024A77787CE6FE08E6FFC378C1969D +:101FA900EE18965024C37886E69F18E69E501AC309 +:101FB900798FE778C19619E71896500DC37980E7AC +:101FC900787B9619E71896403E124CC1C218756283 +:101FD9000075631175640075650E75660075671384 +:101FE900756800756913756A00756B117B147A0041 +:101FF9007D0E7C007F05124C607FF47E01124A77CA +:10200900D218C20C021D8630152D789BE6FE08E613 +:10201900FFD3787B96EE1896501DC3EF788096EE25 +:1020290018964013201E10D20E854A46854B4785C7 +:10203900344A85354B801220150D201E0AD20E8593 +:102049004A46854B478002C20E1240CF300E3DC230 +:102059000ED207D2007F647E00124A77D2927F3275 +:102069007E00124A77D2917F327E00124A77D2944B +:10207900D220D221D214C3740A78849679B9F7E4AC +:102089007896F6F539F538F537F53622C2187562BE +:102099000075630E75640075651175660075670EC8 +:1020A900756800756913756A00756B137B137A007F +:1020B9007D0A7C007F14124C607FF47E01124A77FE +:0220C900D2182B +:0120CB0022F2 +:1010BD0020000302175130075B200958201E557878 +:1010CD009BE6FE08E6FFC378A396EE18964004C291 +:1010DD0094C220C3EF78A596EE1896401D302114CA +:1010ED00740A78849679B9F7E47896F6F539F53877 +:1010FD00F537F536C294C291C221799CE7788626E0 +:10110D00FF19E71836FEC3EF78C196EE1896400426 +:10111D00C292D20830082378A906E6187001067825 +:10112D009DE675F064A4FFC378A9E69F18E695F0D7 +:10113D004008E4F608F6D209C20820090302166633 +:10114D00301E03021666799CE7788626FF19E7188C +:10115D0036FE78C0E6FC08E6FDC3EF9DEE9C500719 +:10116D00D292C209021666C3789CE69D18E69C5081 +:10117D003378A706E61870010678BFE675F064A40B +:10118D00FFC378A7E69F18E695F05003021666E4B4 +:10119D00F608F6D29278BCE6FE08E6FF124A77C250 +:1011AD0092021666D293D21AC207E478A6F608F612 +:1011BD00C209C294C220C291C221C292C21408F6C1 +:1011CD0008F6C208C3740A78849675F003A478B93A +:1011DD00F6E47896F6F539F538F537F5367F3712AA +:1011ED004B60EF7F00FEC006C0077F38124B60EFEB +:1011FD00FDD0E02D7873F6D0E0340018F608E61631 +:10120D00187001167872E6FD7F37124BAA7873E6D7 +:10121D00FD7F38124BAA78BAE6640160030212D73B +:10122D007F1A123E9D788A122BEF788A122BE2C01C +:10123D0000C0037893E6FB789BE6FE08E6FFAD035E +:10124D007C00122A2DAD037C00122A1BE4FDD00375 +:10125D00D000EB2FFFEA3EFEED39FDEC38FC788A2D +:10126D00122BEF7FFF7EE07DF57C05788A122BE255 +:10127D00D3122B9F4009788A122BFB0000000078B7 +:10128D008A122BD68F5F8E5E8D5D8C5C7F1A124419 +:10129D00C87F10124B60EF7F00FEC006C0077F11A4 +:1012AD00124B60EFFDD0E02D7870F6D0E0340018D1 +:1012BD00F60806E618700106786FE6FD7F10124BF2 +:1012CD00AA7870E6FD7F1102166378BAE6640260B3 +:1012DD000302138B7F1E123E9D788A122BEF788AA4 +:1012ED00122BE2C000C0037893E6FB789BE6FE0864 +:1012FD00E6FFAD037C00122A2DAD037C00122A1BE4 +:10130D00E4FDD003D000EB2FFFEA3EFEED39FDECFE +:10131D0038FC788A122BEF7FFF7EE07DF57C057817 +:10132D008A122BE2D3122B9F4009788A122BFB00D5 +:10133D00000000788A122BD68F5F8E5E8D5D8C5CDF +:10134D007F1E1244C87F12124B60EF7F00FEC00655 +:10135D00C0077F13124B60EFFDD0E02D7870F6D0F3 +:10136D00E0340018F60806E618700106786FE6FD01 +:10137D007F12124BAA7870E6FD7F1302166378BABE +:10138D00E66403600302143F7F22123E9D788A12A9 +:10139D002BEF788A122BE2C000C0037893E6FB781E +:1013AD009BE6FE08E6FFAD037C00122A2DAD037C03 +:1013BD0000122A1BE4FDD003D000EB2FFFEA3EFE06 +:1013CD00ED39FDEC38FC788A122BEF7FFF7EE07D46 +:1013DD00F57C05788A122BE2D3122B9F4009788A6F +:1013ED00122BFB00000000788A122BD68F5F8E5EC9 +:1013FD008D5D8C5C7F221244C87F14124B60EF7F91 +:10140D0000FEC006C0077F15124B60EFFDD0E02D2A +:10141D007870F6D0E0340018F60806E6187001066C +:10142D00786FE6FD7F14124BAA7870E6FD7F1502EA +:10143D00166378BAE6640460030214F37F26123E45 +:10144D009D788A122BEF788A122BE2C000C00378A8 +:10145D0093E6FB789BE6FE08E6FFAD037C00122ABF +:10146D002DAD037C00122A1BE4FDD003D000EB2F21 +:10147D00FFEA3EFEED39FDEC38FC788A122BEF7F4A +:10148D00FF7EE07DF57C05788A122BE2D3122B9F2F +:10149D004009788A122BFB00000000788A122BD6A7 +:1014AD008F5F8E5E8D5D8C5C7F261244C87F161219 +:1014BD004B60EF7F00FEC006C0077F17124B60EF39 +:1014CD00FDD0E02D7870F6D0E0340018F60806E671 +:1014DD0018700106786FE6FD7F16124BAA7870E63C +:1014ED00FD7F1702166378BAE6640560030215A73F +:1014FD007F2A123E9D788A122BEF788A122BE2C03A +:10150D0000C0037893E6FB789BE6FE08E6FFAD038B +:10151D007C00122A2DAD037C00122A1BE4FDD003A2 +:10152D00D000EB2FFFEA3EFEED39FDEC38FC788A5A +:10153D00122BEF7FFF7EE07DF57C05788A122BE282 +:10154D00D3122B9F4009788A122BFB0000000078E4 +:10155D008A122BD68F5F8E5E8D5D8C5C7F2A124436 +:10156D00C87F18124B60EF7F00FEC006C0077F19C1 +:10157D00124B60EFFDD0E02D7870F6D0E0340018FE +:10158D00F60806E618700106786FE6FD7F18124B17 +:10159D00AA7870E6FD7F1902166378BAE6FFC39448 +:1015AD00065003021666EFD3942440030216667F9D +:1015BD0030123E9D788A122BEF788A122BE2C000F2 +:1015CD00C0037893E6FB789BE6FE08E6FFAD037C4F +:1015DD0000122A2DAD037C00122A1BE4FDD003D08E +:1015ED0000EB2FFFEA3EFEED39FDEC38FC788A1258 +:1015FD002BEF7FFF7EE07DF57C05788A122BE2D301 +:10160D00122B9F4009788A122BFB00000000788A6C +:10161D00122BD68F5F8E5E8D5D8C5C7F301244C831 +:10162D007F2E124B60EF7F00FEC006C0077F2F128A +:10163D004B60EFFDD0E02D7870F6D0E0340018F659 +:10164D000806E618700106786FE6FD7F2E124BAA8C +:10165D007870E6FD7F2F124BAA301A2D30132A20F9 +:10166D00012778A906E618700106789DE675F03C0D +:10167D00A4FFC378A9E69F18E695F0400CD201852A +:10168D00464A85474BE4F608F6C37873E69401188D +:10169D00E694005075302472301A6F30130D3001FE +:1016AD000A78A906E618701106800E20130B20018A +:1016BD000878A906E618700106789DE675F032A443 +:1016CD00FFC378A9E69F18E695F0403EE4F608F6CC +:1016DD00C218F56275630EF564756513F566756769 +:1016ED0013F568756911F56A756B117B11FA7D112A +:1016FD00FC7F0B124C60C20C7871E66444600B7F6A +:10170D00147E00124A77D21880EED3799CE7788F39 +:10171D009619E718964003301E2A301A27C293C235 +:10172D001A85464A85474BC3740A78849675F0032B +:10173D00A478B9F6E47896F6F539F538F537F53637 +:05174D00C200C20122F0 +:1043DA00755A067871765875620075630E756400B1 +:1043EA00756511756600756711E4F568F569F56A12 +:1043FA00F56B7B0DFA7D17FC7F0C124C60124CC1D9 +:10440A007871E664446037AF5A7E007D017C001201 +:10441A004790742C255A124728742C255AF8A60757 +:10442A007871E6FF64536004EFB443D4055AE55A41 +:10443A00D394074003755A067871765880C278710A +:0D444A00E6B444097F027E00124A7780F13B +:014457002242 +:024458008F5D76 +:10445A00C37408955DF55E7871E6FF64446044EFC5 +:10446A006441603FEF6442603AAF5E7E007D017C4A +:10447A0000124790742C255E124728742C255EF88A +:10448A00A6077871E6FF64536004EFB443C9055E7A +:10449A00E55ED3940740067408955DF55E787176FB +:1044AA005880B47871E6B442127871E6B442097F52 +:0D44BA00027E00124A7780F1D20B22C20B65 +:0144C70022D2 +:084788007D017F077C007E002B +:084790008E5F8F608C618D6269 +:104798007F3A7D2C7B087A00124C29AF60E56025B2 +:1047A80062FDE55F3561FCEFC39DEC6480F87480C1 +:1047B800985009742C2FF876110F80E11246C77FA4 +:1047C800967E00124A777F2C7D3A7B087A00124C3D +:0B47D800291246C77F967E00024A7738 +:103AE700755A07C2187F08124B6078BAA607756225 +:103AF7000075630175640075651275660075670E5C +:103B0700E6FF75F00A84756800F569EF75F00A84B9 +:103B1700AFF0756A008F6B7B0C7A007D0E7C007F9F +:103B270013124C60124CC17871E6FF64446041EF98 +:103B37006442603CAF5A7E007D017C00124790745E +:103B47002C255A124728742C255AF8A6077871E6AF +:103B5700FF64536004EFB44310055AE55AD3940742 +:103B67004003755A06787176587871E6B442B822E0 +:103B77007871E664447058E532540FC454F0FFE599 +:103B870033540F2FF55AFF124C8A8F5AE55AD394A4 +:103B97002440357562007563137564007565177584 +:103BA7006600756713756800756911756A00756B2E +:103BB700117B137A007D0E7C007F11124C607FF41D +:103BC7007E01124A77023AECAD5A7F08124BAA7867 +:0E3BD70071E6B444097F027E00124A7780F145 +:013BE50022BD +:1008BE00C2281220CCD218D21678BAE6FFD39400F2 +:1008CE00400CEFD394095006788176A08034EFD394 +:1008DE009409400CEFD394125006788176A28022B0 +:1008EE00EFD39412400CEFD3941B5006788176A46C +:1008FE008010EFD3941B400AEFD3942450047881D8 +:10090E0076A6202521756200756311E4F564F56500 +:10091E00F566F567F568F569F56AF56B7B16FA7D90 +:10092E0001FC7F0F802D78BAE6FE75F00A84FFEE8B +:10093E0075F00A84E5F0FD7C00756200756311E4C4 +:10094E00F564F565F566F567F568F569F56AF56BB5 +:10095E007B0FFA124C6012490B7FF47E01124A771C +:10096E007F05124458300B030210BC7871E66444C4 +:10097E006003020A557F0512482F8E5B8F5C78BB91 +:10098E00E675F003A42413F582E43448F583E4936A +:10099E00FF7E007C037DE8122A1BD3E55C9FE55B9E +:1009AE009E4036D2287562007563137564007565B6 +:1009BE0017756600756713756800756911756A009D +:1009CE00756B117B137A007D0E7C007F11124C60CB +:1009DE007FF47E01124A77806E78C0A65B08A65C13 +:1009EE0078BAE6FFD39400400AEFD3940950048FEF +:1009FE005A8037EFD39409400DEFD394125007EF7E +:100A0E0024F7F55A8024EFD39412400DEFD3941BA4 +:100A1E005007EF24EEF55A8011EFD3941B400BEFE5 +:100A2E00D394245005EF24E5F55AE55AC454F0FF4B +:100A3E0078C0E6FD124B05E55AC454F004FF78C1A8 +:100A4E00E6FD124B05C2283028030209102025238B +:100A5E00756200756311756400756511E4F566F5D0 +:100A6E0067F568F569F56AF56B7B11FA7D0FFC7F0A +:100A7E000F802F78BAE6FE75F00A84FFEE75F00A45 +:100A8E0084E5F0FD7C007562007563117564007578 +:100A9E006511E4F566F567F568F569F56AF56B7B42 +:100AAE000DFA124C60787CE6FE08E6FF7D041249D2 +:100ABE00147FF47E01124A777F04124458300B03E0 +:100ACE000210BC7871E664446003020B977F041237 +:100ADE00482F8E5B8F5CC3E55C78C196E55B1896FC +:100AEE004036D228756200756313756400756517FC +:100AFE00756600756713756800756911756A0075FE +:100B0E006B117B137A007D0E7C007F11124C607F7F +:100B1E00F47E01124A778071787CA65B08A65C7819 +:100B2E00BAE6FFD39400400AEFD3940950048F5ACB +:100B3E008037EFD39409400DEFD394125007EF2472 +:100B4E00F7F55A8024EFD39412400DEFD3941B5037 +:100B5E0007EF24EEF55A8011EFD3941B400BEFD321 +:100B6E0094245005EF24E5F55AE55AC454F02404B4 +:100B7E00FF787CE6FD124B05E55AC454F02405FFC0 +:100B8E00787DE6FD124B05C228302803020A5B2051 +:100B9E002523756200756311756400756511E4F5A2 +:100BAE0066F567F568F569F56AF56B7B16FA7D0FE4 +:100BBE00FC7F18802F78BAE6FE75F00A84FFEE757A +:100BCE00F00A84E5F0FD7C007562007563117564B2 +:100BDE0000756511E4F566F567F568F569F56AF572 +:100BEE006B7B18FA124C607885E6FE08E6FF7D03F3 +:100BFE001249147FF47E01124A777F031244583053 +:100C0E000B030210BC7871E664446003020CE27FB1 +:100C1E000312482F8E5B8F5CE55C787D26FFE55BCB +:100C2E001836FED3EF78C196EE18964036D2287558 +:100C3E0062007563137564007565177566007567D8 +:100C4E0013756800756911756A00756B117B137ADF +:100C5E00007D0E7C007F11124C607FF47E01124AE3 +:100C6E007780717885A65B08A65C78BAE6FFD39488 +:100C7E0000400AEFD3940950048F5A8037EFD39473 +:100C8E0009400DEFD394125007EF24F7F55A802444 +:100C9E00EFD39412400DEFD3941B5007EF24EEF5D3 +:100CAE005A8011EFD3941B400BEFD394245005EFD1 +:100CBE0024E5F55AE55AC454F02406FF7885E6FD7E +:100CCE00124B05E55AC454F02407FF7886E6FD1250 +:100CDE004B05C228302803020B9D20252375620088 +:100CEE00756311756400756511E4F566F567F56851 +:100CFE00F569F56AF56B7B13FA7D14FC7F15802F71 +:100D0E0078BAE6FE75F00A84FFEE75F00A84E5F017 +:100D1E00FD7C00756200756311756400756511E4E4 +:100D2E00F566F567F568F569F56AF56B7B15FA12E8 +:100D3E004C60787A12490D7FF47E01124A777F0556 +:100D4E00124458300B030210BC7871E66444600301 +:100D5E00020E3F7F0512482F8E5B8F5C78BBE675C7 +:100D6E00F003A42413F582E43448F583E493FF7E64 +:100D7E00007C037DE8122A1BE55C78C126FDE55B4D +:100D8E001836FCD3ED9FEC9E4036D2287562007566 +:100D9E00631375640075651775660075671375685E +:100DAE0000756911756A00756B117B137A007D0EE3 +:100DBE007C007F11124C607FF47E01124A778071A5 +:100DCE00787AA65B08A65C78BAE6FFD39400400A50 +:100DDE00EFD3940950048F5A8037EFD39409400D06 +:100DEE00EFD394125007EF24F7F55A8024EFD394E3 +:100DFE0012400DEFD3941B5007EF24EEF55A8011DD +:100E0E00EFD3941B400BEFD394245005EF24E5F55C +:100E1E005AE55AC454F02408FF787AE6FD124B05C1 +:100E2E00E55AC454F02409FF787BE6FD124B05C247 +:100E3E0028302803020CE820252375620075631103 +:100E4E00756400756511E4F566F567F568F569F585 +:100E5E006AF56B7B13FA7D14FC7F16802F78BAE649 +:100E6E00FE75F00A84FFEE75F00A84E5F0FD7C0055 +:100E7E00756200756311756400756511E4F566F5AC +:100E8E0067F568F569F56AF56B7B16FA124C6078B2 +:100E9E007FE6FE08E6FF7D031249147FF47E011201 +:100EAE004A777F03124458300B030210BC7871E668 +:100EBE0064446003020F817F0312482F8E5B8F5CA8 +:100ECE00C3E55C787B96E55B18964036D228756252 +:100EDE000075631375640075651775660075671385 +:100EEE00756800756911756A00756B117B137A0050 +:100EFE007D0E7C007F11124C607FF47E01124A77CA +:100F0E008071787FA65B08A65C78BAE6FFD3940062 +:100F1E00400AEFD3940950048F5A8037EFD39409C7 +:100F2E00400DEFD394125007EF24F7F55A8024EFBB +:100F3E00D39412400DEFD3941B5007EF24EEF55AC5 +:100F4E008011EFD3941B400BEFD394245005EF2464 +:100F5E00E5F55AE55AC454F0240AFF787FE6FD12EF +:100F6E004B05E55AC454F0240BFF7880E6FD124B76 +:100F7E0005C228302803020E45C21820252A7562A4 +:100F8E0000756314756400756513756600756711D9 +:100F9E00756800756911756A00756B117B117A00A1 +:100FAE007D147C007F0A803578BAE6FE75F00A84DF +:100FBE00FFEE75F00A84E5F0FD7C00756200756346 +:100FCE001175640075651175660075671175680099 +:100FDE00756911756A00756B117B0A7A00124C6087 +:100FEE007FF47E01124A77201505E4F55A800375C9 +:100FFE005A017871E6FF64416025EF644460201267 +:10100E004788E4FB7D01AF5A12472F8F5AE55A707D +:10101E000775330DC21580DA75330ED21580D3786D +:10102E0071E66444706078BAE6FFD39400400EEF28 +:10103E00D394095008EFC454F0240C804378BAE6D8 +:10104E00FFD39409400EEFD394125008EFC454F01E +:10105E00247C802C78BAE6FFD39412400EEFD39402 +:10106E001B5008EFC454F024EC801578BAE6FFD379 +:10107E00941B4012EFD39424500CEFC454F0245C14 +:10108E00FFAD5A124B057871E6B444097F147E0009 +:10109E00124A7780F1D218E4FF124A0D8F5A78AABD +:0E10AE00E6FD655A6005E4FF124B051220CCEA +:0110BC002211 +:101752001220CC788176A0D216789DE6F55B756270 +:101762000075630D75640075651675660075671101 +:1017720075F00A1229CCFF3395E0F5688F69E55BB5 +:1017820075F00A1229CCAFF0EF3395E0F56A8F6B52 +:101792007B107A007D0A7C007F05124C60AF5BEF04 +:1017A2003395E0FE7D021249147FF47E01124A77DE +:1017B2007F02124458300B03021D787F0212482F19 +:1017C200789DA6077871E6B44409789DE6FD7F0B03 +:1017D200124B057F0C124A0D8F5B75620075630D0B +:1017E200756400756516756600756711E55B75F0C1 +:1017F2000A1229CCFF3395E0F5688F69E55B75F035 +:101802000A1229CCAFF0EF3395E0F56A8F6B7B12A9 +:101812007A007D137C007F0D124C60AF5BEF339535 +:10182200E0FE7D021249147FF47E01124A777F02A4 +:10183200124458300B03021D787F0212482F78BFE2 +:10184200A6077871E6FF64427003021D78EFB44484 +:101852000978BFE6FD7F0C124B057F0D124A0D8FF2 +:101862005B75620075630175640075651A756600C3 +:1018720075670EE55B75F00A1229CCFF3395E0F52A +:10188200688F69E55B75F00A1229CCAFF0EF3395EA +:10189200E0F56A8F6B7B147A007D187C00E4FF12FE +:1018A2004C60AF5BEF3395E0FE7D021249147FF48A +:1018B2007E01124A777F02124458300B03021D78D0 +:1018C2007F0212482F8F5B7871E6FF644270030239 +:1018D2001D78EFB44407AD5B7F0D124B05756200B6 +:1018E20075630E756400756514E4F566F567F56851 +:1018F200F569F56AF56B7B05FA7D10FCFF124C6009 +:10190200788EE6FE08E6FF7D031249147FF47E011D +:10191200124A777F031244587F0312482F788EA60B +:101922000608A607300B03021D787871E6B444124C +:10193200788EE6FD7F03124B05788FE6FD7F041259 +:101942004B057562007563117564007565117566E6 +:10195200007567117568007569117884E6756A000B +:10196200F56B7B0D7A007D127C007F05124C607F47 +:10197200F47E01124A777871E6FF64446020EF64D6 +:1019820041601BEF644260161247887884E6FF7B51 +:10199200017D0912472F7884EFF6F53380D87871EC +:1019A200E6FF64427003021D78EFB444167884E6C1 +:1019B200FD7F0A124B05C3740A78849675F003A45E +:1019C20078B9F630972C75620075631475640075EA +:1019D200650E75660075670C756800756914756A21 +:1019E20000756B0DE4FBFA7D13FC7F12124C600252 +:1019F2001D6175620075630A75640075651275660E +:101A020000756711E4F568F569F56AF56B7B0CFA08 +:101A12007D10FC7F05124C6078BBE675F003A424B0 +:101A220013F582E43448F583E493FF7E007D0212CD +:101A320049147FF47E01124A777871E6FF644460AC +:101A420047EF64416042EF6442603D7D027F0612CF +:101A5200478C78BB12472978BBA6077871E6B44356 +:101A62000B78BB06E6D394094002E4F678BBE67530 +:101A7200F003A42413F582E43448F583E493FF7E53 +:101A8200007D0212491480B17871E6FF644270034E +:101A9200021D78EFB4440978BBE6FD7F05124B05C1 +:101AA2007562007563117564007565117566007560 +:101AB20067117893E6FF75F00A84756800F569EF9F +:101AC20075F00A84AFF0756A008F6B7B057A007D32 +:101AD2000E7C007F13124C607FF47E01124A7778ED +:101AE20093E6FFF55BB40503755B03EFB40A03E409 +:101AF200F55B7871E6FF6444605BEF64416056EF2A +:101B0200644260517D027C007F067E00124790E4B1 +:101B1200FB7D03AF5B12472F8F5B7871E6B4430EF8 +:101B2200055BD3E55B648094834003E4F55B7893C3 +:101B3200A65BE55BB403027605E55B7004789376F9 +:101B42000A7893E6FF75F00A8485F033EF75F00AA0 +:101B520084F532809D7871E6FF64427003021D783D +:101B6200EFB444097893E6FD7F06124B0578BBE695 +:101B7200FF75F003A42411F582E43448F583E4935D +:101B82007875F6EF75F003A42412F582E43448F573 +:101B920083E493787EF678BBE675F003A42413F50C +:101BA20082E43448F583E493FF7E007C037DE812EF +:101BB2002A1BAC06AD077893E675F009A4AEF02DAA +:101BC200F549EC3EF5487562007563117564007560 +:101BD20065117566007567117568007569117887FA +:101BE200E6756A00F56B7B057A007D0A7C007F1A38 +:101BF200124C607FF47E01124A777871E6FF6444EA +:101C02006034EF6441602FEF6442602A12478878A3 +:101C120087E6FFE4FB7D0512472F7887A6077871D8 +:101C2200E6B4430B788706E6D394054002E4F678DF +:101C320087E6F53380C47871E6FF64427003021DC3 +:101C420078EFB444097887E6FD7F07124B05756289 +:101C52000075631375640075650A75660075670C17 +:101C62007568007569117897E6756A00F56B7B14E3 +:101C72007A007D107C00E4FF124C607FF47E01123A +:101C82004A777871E6FF64446034EF6441602FEF75 +:101C92006442602A1247887897E6FFE4FB7D0512CA +:101CA200472F7897A6077871E6B4430B789706E634 +:101CB200D394054002E4F67897E6F53380C4787150 +:101CC200E6FF64427003021D78EFB444097897E698 +:101CD200FD7F08124B05D218756200756311756499 +:101CE2000075651175660075671175680075691173 +:101CF20078C2E6756A00F56B7B0C7A007D0E7C007B +:101D02007F0D124C607FF47E01124A777871E6FFF4 +:101D120064446034EF6441602FEF6442602A1247EA +:101D22008878C2E6FF7B037D0712472F78C2A60799 +:101D32007871E6B4430B78C206E6D3940740027684 +:101D42000378C2E6F53380C47871E6FF6442602608 +:101D5200EFB4440978C2E6FD7F09124B05C218E4CC +:101D6200FF124A0D8F5B78AAE6FD655B6005E4FF12 +:061D7200124B051220CC0B +:011D78002248 +:102415001220CCC218D2167562007563147564005B +:1024250075651875660075671475680075691175A9 +:102435006A00756B117B057A007D187C007F01129F +:102445004C607F0E124B608F5B7FF47E01124A77E2 +:10245500E55B7004C20D8002D20D7871E6FF64441D +:10246500602DEF64416028EF64426023124788E4E1 +:10247500FB7D01AF5B12472F8F5BE55B7007753303 +:102485000DC20D80D5755B0175330ED20D80CB78ED +:1024950071E6FF6442700302275BEFB44407AD5B4E +:1024A5007F0E124BAA75620075630575640075652C +:1024B50011756600756711756800756911756A0093 +:1024C500756B117B147A007D1B7C007F0A124C60B2 +:1024D5007F09124B608F5B7FF47E01124A77E55BC3 +:1024E5007004C2178002D2177871E6FF6444602D2C +:1024F500EF64416028EF64426023124788E4FB7D66 +:1025050001AF5B12472F8F5BE55B700775330DC21B +:102515001780D5755B0175330ED21780CB7871E6C0 +:10252500FF6442700302275BEFB44407AD5B7F098C +:10253500124BAA75620075630D7564007565167595 +:102545006600756711756800756911756A00756BA8 +:10255500117B057A007D147C007F0A124C607F0A8E +:10256500124B607874EFF67E007D021249147FF4F9 +:102575007E01124A777F02124458300B0302275B13 +:102585007F0212482F7874A6077871E6FF644270BF +:102595000302275BEFB444097874E6FD7F0A124B0A +:1025A500AA7562007563017564007565127566002C +:1025B50075670E756800756911756A00756B117B15 +:1025C5000C7A007D0E7C007F13124C607F0B124B42 +:1025D500608F5B7FF47E01124A77E55B7004C2254C +:1025E5008002D2257871E6FF6444602DEF64416076 +:1025F50028EF64426023124788E4FB7D01AF5B123C +:10260500472F8F5BE55B700775330DC22580D57548 +:102615005B0175330ED22580CB7871E6FF6442707D +:102625000302275BEFB44407AD5B7F0B124BAA7522 +:1026350062007563147564007565107566007567CD +:102645000F756800756911756A00756B117B0E7AD7 +:10265500007D057C007F0B124C607F36124B608F2E +:102665005B7FF47E01124A77E55B7004C224800229 +:10267500D2247871E6FF6444602DEF64416028EF51 +:1026850064426023124788E4FB7D01AF5B12472F4C +:102695008F5BE55B700775330DC22480D5755B01D3 +:1026A50075330ED22480CB7871E6FF644270030245 +:1026B500275BEFB44407AD5B7F36124BAA7562000A +:1026C5007563147564007565117566007567117518 +:1026D5006800756911756A00756B117B1D7A007D3F +:1026E500137C007F19124C607F0C124B608F5B7F4F +:1026F500F47E01124A77E55B7004C2138002D2139F +:102705007871E6FF6444602DEF64416028EF644210 +:102715006023124788E4FB7D01AF5B12472F8F5B77 +:10272500E55B700775330DC21380D5755B01753395 +:102735000ED21380CB7871E6FF64426019EFB44482 +:1027450007AD5B7F0C124BAA78AAE6FD7F0F124BF3 +:06275500AA1220CCD218EC +:01275B00225B +:02482F00AB07D5 +:10483100900001E4F55DF55E7A07C374089BC364DB +:1048410080F8EA648098402B742C2AF8E6FF7E00F9 +:10485100AD82AC83122A1BEF255EF55EEE355DF568 +:104861005D7C007D0AAF82AE83122A1B8E838F820C +:074871001A80C7AE5DAF5EC7 +:01487800221D +:07472800F8E6FFE4FB7D0948 +:10472F00A9057871E6FEB42A0F0FD3E96480F8EF7C +:10473F006480984043AF0322EEB4230F1FC3EB6492 +:10474F0080F8EF6480985030AF0122EBFD3395E095 +:10475F00FC7871E6FBC39DEC6480F8748098401878 +:10476F00E9FD3395E0FCD3EB9DEC6480F874809801 +:09477F0050067871E6FF76532222 +:1030600030972B7562007563117564007565167570 +:10307000660075671775680075690C756A00756B71 +:10308000117B0A7A007D0C7C007F11024C60756216 +:103090000075630C75640075650A756600756716C2 +:1030A000756800756911756A00756B117B117A007E +:1030B0007D117C007F11124C607FE87E03124A77FD +:1030C0007562007563017564007565197566007534 +:1030D0006715756800756914756A00756B117B0E4C +:1030E0007A007D1D7C007F11124C607FE87E03809A +:1030F000117871E6FF6444600EEF644260097F025C +:103100007E00124A7780EA7871E6B442127871E65E +:10311000644260030232347F02FE124A7780EE7806 +:1031200071E6B444097F027E00124A7780F175622D +:10313000007563117564007565117566007567111A +:10314000756800756911756A00756B117B167A00D8 +:103150007D0A7C007F0C124C60D218D21DC2053053 +:103160000AFDC20A1240CF789BE6FE08E6FF789E71 +:10317000A60608A607C21D755B07789EE6FA08E654 +:10318000FB7C007D0AFFAE02122A2D742C255BF811 +:10319000A6057C007D0AAF03AE02122A2D789EA6FA +:1031A0000608A607155BE55BB402CF803B7871E6A5 +:1031B000FF64446038EF64426033AF5B7E007D01A2 +:1031C0007C00124790742C255B124728742C255BD9 +:1031D000F8A6077871E6FF64536004EFB443CE05A8 +:1031E0005BE55BD3940740C5755B0380C07871E6EF +:1031F000B4420F7871E66442703A7F02FE124A7759 +:1032000080F17871E6B444097F027E00124A77802B +:10321000F1D2067F0512482F78A0A60608A60778E7 +:1032200093E6FF78A17004740A8001EF26F618E493 +:0432300036F6C21894 +:013234002277 +:1039D900200603023AE6C20678A0E6FA08E6FBFFEB +:1039E900AE02E48F4F8E4EF54DF54C789BE6FE08FE +:1039F900E6FFE48F538E52F551F55018E6FE08E6BE +:103A0900FFD39BEE9A400EEF78A196799FF7EE18B7 +:103A19009619F78012C379A1E7789C96FF19E718E0 +:103A290096789EF608A607789FE618466077E47FA1 +:103A3900107E27FDFCAB4FAA4EA94DA84C122A8235 +:103A4900AB53AA52A951A850122B0D8F458E448D04 +:103A5900438C427899A60608A607788176A07899BA +:103A6900E6FD7F01124B05789AE6FD7F02124B05B0 +:103A790075620075630C75640075650C7566007573 +:103A8900670E756800756905756A00756B057B1B9E +:103A99007A007D057C007F11124C607FE87E03125D +:103AA9004A77024C4575620075630A75640075654D +:103AB90001756600756716756800756911756A0084 +:103AC900756B117B0F7A007D117C007F11124C60A0 +:0E3AD9007FE87E03124A77124C451248C22243 +:1048C200789BE6FE08E6FFE48F4F8E4EF54DF54CE1 +:1048D2007899E6FE08E6FFE48F538E52F551F550C3 +:1048E200AD51AC50AB4FAA4EA94DA84C122A82E44E +:1048F2007B107A27F9F8122B0D8F458E448D438C4D +:0949020042789BA60608A60722D4 +:10417D0030972B7562007563117564007565167542 +:10418D00660075671775680075690C756A00756B43 +:10419D00117B0A7A007D0C7C007F11024C607562E8 +:1041AD000075630575640075650E75660075671499 +:1041BD00756800756911756A00756B117B0E7A0053 +:1041CD007D137C007F11124C607871E6FF644460B2 +:1041DD000EEF644260097F027E00124A7780EA7812 +:1041ED0071E6B4420F7871E66442702F7F02FE12C1 +:1041FD004A7780F17871E6B444097F027E00124A55 +:10420D007780F1124C45788176A07D277F01124B86 +:0C421D00057D107F02124B051220CC2200 +:10275C00755A01124C457871E6FF644470030229E6 +:10276C0075EF644270030229757D087C00E4FFFE5E +:10277C001247907B017D09AF5A12472F8F5A124C8A +:10278C00C1E55A14B4090050CD9027A375F003A4E9 +:10279C00C58325F0C583730227BE0227E9022814DE +:1027AC0002283F02286A0228950228C00228EB0260 +:1027BC00291575620075631175640075651275666F +:1027CC000075670A756800756913756A00756B0A80 +:1027DC007B167A007D017C007F0F02296F756200E9 +:1027EC0075631175640075650575660075670E7502 +:1027FC006800756914756A00756B117B167A007D1B +:10280C000C7C007F0502296F756200756316756478 +:10281C00007565117566007567117568007569112D +:10282C00756A00756B117B0A7A007D0C7C007F1138 +:10283C0002296F75620075631175640075651375F7 +:10284C006600756705756800756914756A00756BA7 +:10285C00117B167A007D0A7C007F0C02296F756251 +:10286C000075630A75640075651B756600756716DF +:10287C00756800756914756A00756B057B0F7A00B5 +:10288C007D0E7C007F0D02296F75620075631B75D0 +:10289C00640075651675660075670A75680075695C +:1028AC0014756A00756B0E7B1A7A007D1B7C007F99 +:1028BC000C02296F75620075630C756400756515E3 +:1028CC00756600756711756800756911756A007514 +:1028DC006B117B147A007D0A7C007F0B02296F75CB +:1028EC00620075630C756400756515756600756717 +:1028FC0014756800756917756A00756B147B147A0A +:10290C00007D0A7C007F0B805A756200756315751B +:10291C00640075651175660075670C7568007569DE +:10292C001B756A00756B1A7B147A007D0A7C007F1C +:10293C000B124C607FF47E01124A7775620075634E +:10294C000A75640075651375660075671175680006 +:10295C00756911756A00756B117B0E7A007D167C9A +:10296C00007F0C124C600227627871E66442604F63 +:10297C00E55A14B40900504790299275F003A4C588 +:10298C008325F0C583730229AD0229B30229B6024F +:10299C0029B90229BC0229BF0229C20229C5022970 +:1029AC00C8122415024CC102175202306002417D3C +:0F29BC00022C14023BE60233A002364D1237887C +:0129CB0022E9 +:103CE500788A122BFB00000000D2187F1E123E9D21 +:103CF500C004C005C006C0077F1A123E9DD003D080 +:103D050002D001D000EF2BFFEE3AFEED39FDEC3885 +:103D1500FCC004C005C006C0077F22123E9DD0032B +:103D2500D002D001D000EF2BFFEE3AFEED39FDECCD +:103D350038FCC004C005C006C0077F26123E9DD0D2 +:103D450003D002D001D000EF2BFFEE3AFEED39FD96 +:103D5500EC38FCC004C005C006C0077F2A123E9D92 +:103D6500D003D002D001D000EF2BFFEE3AFEED39A3 +:103D7500FDEC38FCC004C005C006C0077F30123E0C +:103D85009DD003D002D001D000EF2BFFEE3AFEED1F +:103D950039FDEC38FC788A122BEF788A122BD67510 +:103DA5005E081242297871E6FF6444600EEF6442B2 +:0C3DB50060097F027E00124A7780EA223B +:10364D007F12124B60EF7F00FEC006C0077F131282 +:10365D004B60EFFDD0E02DFFD0E03400FEC006C082 +:10366D00077F10124B60EF7F00FEC006C0077F1171 +:10367D00124B60EFFDD0E02DFDD0E03400FCD0E02A +:10368D002DFFD0E03CFEC006C0077F14124B60EF4B +:10369D007F00FEC006C0077F15124B60EFFDD0E026 +:1036AD002DFDD0E03400FCD0E02DFFD0E03CFEC07D +:1036BD0006C0077F16124B60EF7F00FEC006C007E5 +:1036CD007F17124B60EFFDD0E02DFDD0E03400FCF4 +:1036DD00D0E02DFFD0E03CFEC006C0077F18124B96 +:1036ED0060EF7F00FEC006C0077F19124B60EFFD33 +:1036FD00D0E02DFDD0E03400FCD0E02DFFD0E03C3B +:10370D00FEC006C0077F2E124B60EF7F00FEC00685 +:10371D00C0077F2F124B60EFFDD0E02DFDD0E034C0 +:10372D0000FCD0E02D7870F6D0E03C18F675620004 +:10373D007563117564007565117566007567117592 +:10374D006800756911756A00756B117B117A007DC2 +:10375D00117C007F11124C60786FE6FE08E6FF7D4C +:10376D00051245FF7871E6FF6444600EEF64426018 +:0B377D00097F027E00124A7780EA22DA +:103BE600755B01E4F55C7F08124B6078BAEFF6C2AC +:103BF60003D394064005755B01800578BAE6F55B4C +:103C06007871E6B444097F027E00124A7780F17526 +:103C160062007563117564007565117566007567D8 +:103C260011756800756911756A00756B117B117ADB +:103C3600007D0C7C00AF5B124C607FF47E01124A63 +:103C460077E4F55CD2187871E6FF64447003023CB1 +:103C5600D5EF64416079EF64426074AF5C7E007DAD +:103C6600017C00124790742C255CF8E6FF7B017DF1 +:103C76000612472F742C255CF8A607E52CF55BAFDA +:103C86005B124C8A8F5BE55BB401047F1A802BE5DF +:103C96005BB402047F1E8022E55BB403047F2280AE +:103CA60019E55BB404047F268010E55BB405047F48 +:103CB6002A8007E55BB4060A7F30123E9D788A1299 +:103CC6002BEF788A122BD67D06124914023C4C78CB +:0E3CD60071E6B444097F027E00124A7780F145 +:013CE40022BD +:1033A000755B01E4F55C7F08124B6078BAEFF6C2FA +:1033B00003D394064005755B01800578BAE6F55B9A +:1033C0007871E6B444097F027E00124A7780F1E505 +:1033D0005BFD7C0075620075631175640075651195 +:1033E000756600756711756800756911756A0075F5 +:1033F0006B117B1E7A007F0B124C607FF47E0112F2 +:103400004A77755C01C2187871E6FF644470030264 +:1034100034E8EF644170030234E8EF644270030261 +:1034200034E8AF5C7E007D017C00124790742C254F +:103430005CF8E6FF7B017D0612472F742C255CF8B3 +:10344000A607E52DF55BAF5B124C8A8F5BE55BB49D +:1034500001117F10124B60EF7F00FEC006C0077F96 +:1034600011806CE55BB402117F12124B60EF7F009C +:10347000FEC006C0077F138056E55BB403117F14BE +:10348000124B60EF7F00FEC006C0077F158040E54D +:103490005BB404117F16124B60EF7F00FEC006C0C4 +:1034A000077F17802AE55BB405117F18124B60EF88 +:1034B0007F00FEC006C0077F198014E55BB40620BC +:1034C0007F2E124B60EF7F00FEC006C0077F2F12D9 +:1034D0004B60EFFDD0E02D7870F6D0E0340018F6A8 +:1034E000786F12490D0234077871E6B444097F02FF +:0934F0007E00124A7780F1D21827 +:0134F90022B0 +:1032350075620075630E75640075650A75660075BF +:103245006713756800756911756A00756B117B16D2 +:103255007A007D0C7C007F11124C607871E6FF646A +:10326500436016EF64416011EF6442600C7D087C99 +:1032750000E4FFFE12479080E27871E66443600344 +:1032850002339F788A122BFB00000000E4786FF66A +:1032950008F678BAE664017024788A122BD68F5F17 +:1032A5008E5E8D5D8C5C7F1A1244C8786FE6FD7F5B +:1032B50010124BAA7870E6FD7F1102339C78BAE6AE +:1032C50064027024788A122BD68F5F8E5E8D5D8C9A +:1032D5005C7F1E1244C8786FE6FD7F12124BAA78F8 +:1032E50070E6FD7F1302339C78BAE6640370247898 +:1032F5008A122BD68F5F8E5E8D5D8C5C7F22124489 +:10330500C8786FE6FD7F14124BAA7870E6FD7F152D +:1033150002339C78BAE664047023788A122BD68F20 +:103325005F8E5E8D5D8C5C7F261244C8786FE6FDEE +:103335007F16124BAA7870E6FD7F17805A78BAE699 +:1033450064057023788A122BD68F5F8E5E8D5D8C17 +:103355005C7F2A1244C8786FE6FD7F18124BAA7865 +:1033650070E6FD7F19803078BAE6FFC39406402ADF +:10337500EFD394245024788A122BD68F5F8E5E8DDE +:103385005D8C5C7F301244C8786FE6FD7F2E124B52 +:0B339500AA7870E6FD7F2F124BAA22E1 +:1037880075620075630E75640075650A7566007567 +:103798006713756800756911756A00756B117B167A +:1037A8007A007D0C7C007F11124C607871E6FF6412 +:1037B800436016EF64416011EF6442600C7D087C41 +:1037C80000E4FFFE12479080E27871E664436003EC +:1037D8000238C2788A122BFB00000000E4786FF6EA +:1037E80008F6788A122BD68F5F8E5E8D5D8C5C7F93 +:1037F8001A1244C8786FE6FD7F10124BAA7870E65B +:10380800FD7F11124BAA788A122BD68F5F8E5E8DA0 +:103818005D8C5C7F1E1244C8786FE6FD7F12124BE8 +:10382800AA7870E6FD7F13124BAA788A122BD68FDE +:103838005F8E5E8D5D8C5C7F221244C8786FE6FDDA +:103848007F14124BAA7870E6FD7F15124BAA788A6E +:10385800122BD68F5F8E5E8D5D8C5C7F261244C8DE +:10386800786FE6FD7F16124BAA7870E6FD7F171277 +:103878004BAA788A122BD68F5F8E5E8D5D8C5C7F0B +:103888002A1244C8786FE6FD7F18124BAA7870E6B2 +:10389800FD7F19124BAA788A122BD68F5F8E5E8D08 +:1038A8005D8C5C7F301244C8786FE6FD7F2E124B2A +:0B38B800AA7870E6FD7F2F124BAA22B9 +:104A4500C0F9A4B0999282F880908883C6A1868E19 +:104A5500BFFF8CAF8789C7A3ABC2AAC19195F60FDB +:104A650001161614131718010C0511111111111146 +:024A750011111D +:1046C700C2AFE4F56CE56C78C266701330181074ED +:1046D7002C256CF8E6904A4593547FF56E800C7450 +:1046E7002C256CF8E6904A4593F56EE4F56DE56E7A +:1046F70030E704D2A78002C2A7D2A6000000C2A654 +:10470700E56E25E0F56E000000124CC1056DE56D04 +:10471700D3940740D9056CE56CC3940840A7D2AF82 +:01472700226F +:104C60008F2C8D2D8B2E85632F8565308567318543 +:084C70006932856B330246C76F +:104C4500752C11752D11752E11752F117530117566 +:0B4C550031117532117533110246C792 +:084229008F5D8E5C8D5B8C5AE9 +:10423100755F07C37408955EC36480F8E55F6480A9 +:1042410098406CE47B0AFAF9F8AF5DAE5CAD5BAC0B +:104251005A122B0DAF03742C255FF8A607E4FFFE5D +:10426100FDFCAB5DAA5CA95BA85AC3122B9F701F12 +:1042710078C2E6FFAD5FED3395E0FCC3ED9F74803E +:10428100F86C98500A742C255FF8E670027611AF2D +:104291005DAE5CAD5BAC5AE47B0AFAF9F8122B0D0A +:1042A1008F5D8E5C8D5B8C5A124CC1155F8084E5ED +:1042B1002CB4110BE52DB41106752C0C752D1B02B8 +:0242C10046C7EE +:0645FF008E5B8F5C8D5DF8 +:10460500755E07C37408955DC36480F8E55E6480D4 +:10461500984041AE5BAF5C7C007D0A122A2D742C5C +:10462500255EF8A605E55C455B7013C3E55E648011 +:104635009487500A742C255EF8E670027611AE5BFD +:10464500AF5C7C007D0A122A2D8E5B8F5C124CC1FB +:10465500155E80AF752C0B752D0A752E140246C795 +:10495000E4F558AF58EF3395E0FE74642FF5827498 +:104960004A3EF583E493F5347FC87E00124A77E42B +:10497000FF742D2FF8E6FE742C2FF8A6060FBF0843 +:0F498000F01246C70558C3E5586480949340C4AD +:01498F002205 +:044A77008E638F6457 +:104A7B00E4F565F566C3E5669564E5659563501BDE +:104A8B00E4FFFE0FBF00010EEF64694E70F5124C90 +:0B4A9B00C10566E56670DE056580DA87 +:014AA60022ED +:064990008B5A8A5B895C72 +:10499600D228E4FFEFC39561E5606480F8748098DF +:1049A6005025AB5DAA5EA95F8F827583001229EE42 +:1049B600FEAB5AAA5BA95C8F827583001229EE6E44 +:0949C6006002C2280F80CDA22876 +:0149CF0022C5 +:024C2900A907D9 +:104C2B00E4FFEFC39BEA6480F8748098500BA805EF +:094C3B00E6A801F6090D0F80E95D +:014C4400224D +:074CC10075A61E75A6E12295 +:0F4C8A00EFC4540F75F00AA4FEEF540F2EFF2253 +:104B05008F5D8D5E124CC1124C997881E6FF124B78 +:104B1500ED12000EAF5D124BED12000EAF5E124BA3 +:0E4B2500ED12000E124CA87F147E00024A779B +:024A0D008F5EBA +:104A0F00124CC1124C997881E6FF124BED12000E39 +:104A1F00AF5E124BED12000E124C997881E604FF37 +:104A2F00124BED12000E124C0C8F5FD2B612000E0D +:054A3F00124CA8AF5F5E +:014A4400224F +:0F4C9900D2B6D2B7000000C2B6000000C2B722E8 +:0D4CA800C2B6000000D2B7000000D2B62254 +:104BED00E4FEEF30E704D2B68002C2B6000000D278 +:0E4BFD00B7000000C2B7EF25E0FF0EBE08E4CF +:014C0B002286 +:104C0C00E4FFFEEF25E0FFC2B7000000D2B730B6DC +:0C4C1C000543070180000EBE08E9C2B786 +:014C28002269 +:08000600124C997FD0124BED62 +:0D000E00D2B6000000D2B7000000C2B72239 +:104BAA008F608D61124CC1120006AF60124BED127C +:104BBA00000EAF61124BED12000E124CA87F147E4C +:044BCA0000024A7724 +:024B60008F5E66 +:104B6200124CC1120006AF5E124BED12000E124C37 +:104B7200997FD1124BED12000E124C0CD2B61200DC +:044B82000E024CA82B +:0244C8008F5B08 +:1044CA00E55FFF780AEFF6FBAF5FAE5EAD5DAC5C11 +:1044DA007808122BB0E4780BA607AF5FAE5EAD5D2D +:1044EA00AC5C7810122BB0E4780CA607AF5FAE5E16 +:1044FA00AD5DAC5C7818122BB0780DA607AD03AF92 +:10450A005B124BAAE55B04FF780BE6FD124BAAE5AA +:10451A005B2402FF780CE6FD124BAAE55B2403FF3D +:07452A00780DE6FD024BAA2B +:023E9D008F5D37 +:103E9F00124B60E4FCFDFE780A122BEFE55D04FF88 +:103EAF00124B60E4FCFDFE780E122BEFE55D240251 +:103EBF00FF124B60E4FCFDFE7812122BEFE55D2440 +:103ECF0003FF124B60E4FCFDFE7816122BEF780E09 +:103EDF00122BD67808122BC3E4FDFCC004C005C01A +:103EEF0006C007780A122BD6D003D002D001D0001B +:103EFF00EF2BFFE43AFEE439FDE438FCC004C005C3 +:103F0F00C006C0077812122BD67810122BC3E4FC10 +:103F1F00D003D002D001D000EB2FFFEA3EFEE93DE7 +:103F2F00FDEC38FCC004C005C006C0077816122B84 +:103F3F00D67818122BC3D003D002D001D000EB2FAC +:0A3F4F00FFEA3EFEE93DFDE83CFC00 +:013F59002245 +:10434F00D284D285D286D287C280D281D282D283C2 +:10435F002084037F01222085037F02222086037F92 +:10436F0003222087037F4122D280C281D282D2834F +:10437F002084037F04222085037F05222086037F6C +:10438F0006222087037F4222D280D281C282D2832B +:10439F002084037F07222085037F08222086037F46 +:1043AF0009222087037F4322D280D281D282C28307 +:1043BF002084037F2A222085037F00222086037F0B +:0B43CF0023222087037F44227F7822F6 +:0C4CB500C2B47F057E00124A77D2B42200 +:104AA700E4F556F557E55625E0F556D2B300000074 +:104AB700C2B300000030B2054356018000124CC15A +:0F4AC7000557C3E5576480948840DAD2B3AF56E1 +:014AD60022BD +:10453100300F54124AA78F2B124AA78F54124AA741 +:104541008F2AE52B30E704C21B8002D21BE55425DC +:10455100E025E0FFE52AC4131354032FF52AE52BC8 +:1045610025E025E0FFE554C4131354032FF52BFE7A +:104571007C00E4252AF509EC3EF508124CC1124AEB +:10458100A78F55C20FD2A8E555B4490B7894A60858 +:0845910008A609D226D202227D +:030000000242C3F6 +:0C42C300787FE4F6D8FD7581C202430A42 +:1029CC00C2D530F707B2D563F0FF05F030E70CB293 +:1029DC00D5F4048463F0FF05F080018430D502F453 +:0229EC000422C3 +:1029EE00BB010CE58229F582E5833AF583E022509E +:1029FE0006E92582F8E622BBFE06E92582F8E222E8 +:0D2A0E00E58229F582E5833AF583E4932201 +:102A1B00EF8DF0A4A8F0CF8CF0A428CE8DF0A42ECF +:022A2B00FE2289 +:102A2D00BC000BBE0029EF8DF084FFADF022E4CC8D +:102A3D00F875F008EF2FFFEE33FEEC33FCEE9DEC56 +:102A4D00984005FCEE9DFE0FD5F0E9E4CEFD22ED9C +:102A5D00F8F5F0EE8420D21CFEADF075F008EF2FE6 +:102A6D00FFED33FD4007985006D5F0F222C398FDD7 +:052A7D000FD5F0EA2274 +:102A8200E88FF0A4CC8BF0A42CFCE98EF0A42CFCF3 +:102A92008AF0EDA42CFCEA8EF0A4CDA8F08BF0A471 +:102AA2002DCC3825F0FDE98FF0A42CCD35F0FCEBD0 +:102AB2008EF0A4FEA9F0EB8FF0A4CFC5F02ECD3995 +:0F2AC200FEE43CFCEAA42DCE35F0FDE43CFC2202 +:102AD10075F008758200EF2FFFEE33FECD33CDCCBC +:102AE10033CCC58233C5829BED9AEC99E58298403F +:102AF1000CF582EE9BFEED9AFDEC99FC0FD5F0D61C +:102B0100E4CEFBE4CDFAE4CCF9A88222B800C1B945 +:102B11000059BA002DEC8BF084CFCECDFCE5F0CB83 +:102B2100F97818EF2FFFEE33FEED33FDEC33FCEBBC +:102B310033FB10D703994004EB99FB0FD8E5E4F977 +:102B4100FA227818EF2FFFEE33FEED33FDEC33FC64 +:102B5100C933C910D7059BE99A4007EC9BFCE99A58 +:102B6100F90FD8E0E4C9FAE4CCFB2275F010EF2F9D +:102B7100FFEE33FEED33FDCC33CCC833C810D7079D +:102B81009BEC9AE899400AED9BFDEC9AFCE899F8D8 +:0E2B91000FD5F0DAE4CDFBE4CCFAE4C8F9226B +:102B9F00EB9FF5F0EA9E42F0E99D42F0E89C45F08C +:012BAF002203 +:102BB000E8600FECC313FCED13FDEE13FEEF13FF03 +:032BC000D8F12227 +:102BC300E8600FEFC333FFEE33FEED33FDEC33FC70 +:032BD300D8F12214 +:0C2BD600E6FC08E6FD08E6FE08E6FF222B +:0D2BE200E6FB08E6F908E6FA08E6CBF82263 +:0C2BEF00ECF608EDF608EEF608EFF62212 +:102BFB00D083D082E493F608740193F608740293A1 +:092C0B00F608740393F6740473D7 +:104C7800C3EE6480948040028007C3E49FFFE49EF3 +:024C8800FE220A +:1042CF000234FAE493A3F8E493A34003F68001F2D7 +:1042DF0008DFF48029E493A3F85407240CC8C333F0 +:1042EF00C4540F4420C8834004F456800146F6DFBF +:1042FF00E4800B0102040810204080903DC1E47E51 +:10430F00019360BCA3FF543F30E509541FFEE493B3 +:10431F00A360010ECF54C025E060A840B8E493A37A +:10432F00FAE493A3F8E493A3C8C582C8CAC583CAA5 +:10433F00F0A3C8C582C8CAC583CADFE9DEE780BE5D +:013E9C000025 +:00000001FF diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/desktop.ini b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/desktop.ini new file mode 100644 index 0000000..d9d3246 --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/desktop.ini @@ -0,0 +1,2 @@ +[.ShellClassInfo] +IconResource=C:\Program Files\Google\Drive File Stream\130.0.2.0\GoogleDriveFS.exe,27 diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/eeprom.LST b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/eeprom.LST new file mode 100644 index 0000000..c225072 --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/eeprom.LST @@ -0,0 +1,258 @@ +C51 COMPILER V9.60.7.0 EEPROM 07/10/2026 17:02:31 PAGE 1 + + +C51 COMPILER V9.60.7.0, COMPILATION OF MODULE EEPROM +OBJECT MODULE PLACED IN eeprom.OBJ +COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE eeprom.c BROWSE DEBUG OBJECTEXTEND + +line level source + + 1 // Reads from & writes to eeprom + 2 + 3 //#include + 4 //#include + 5 + 6 //#include + 7 #include + 8 + 9 #include + 10 #include + 11 #include + 12 + 13 #include + 14 #include + 15 //------------------------------------------------------------------------------ + 16 void start(void); + 17 void stop(void); + 18 void write_data(unsigned char d); + 19 unsigned char read_data(void); + 20 void ack(void); + 21 + 22 sbit sda=P3^6; + 23 sbit scl=P3^7; + 24 //------------------------------------------------------------------------- + 25 extern unsigned char idata EEPROM_block; + 26 //----------------------------------------------------------------------------- + 27 void write_eeprom(unsigned char wa,unsigned char wd) + 28 { + 29 1 rst_wdt(); + 30 1 start(); + 31 1 //write_data(0xA0); + 32 1 write_data(EEPROM_block); + 33 1 ack(); + 34 1 write_data(wa); // Write to EEPROM. + 35 1 ack(); // wa = word address & + 36 1 write_data(wd); // wd = data to be written. + 37 1 ack(); + 38 1 stop(); + 39 1 delay(20); + 40 1 } + 41 //----------------------------------------------------------------------------- + 42 unsigned char read_eeprom(unsigned char wa) + 43 { + 44 1 unsigned char d1; + 45 1 + 46 1 rst_wdt(); + 47 1 start(); + 48 1 //write_data(0xA0); // Read from eeprom. + 49 1 write_data(EEPROM_block); + 50 1 ack(); // returns the data. + 51 1 write_data(wa); + 52 1 ack(); + 53 1 start(); + 54 1 //write_data(0xA1); + 55 1 write_data(EEPROM_block+0x01); + C51 COMPILER V9.60.7.0 EEPROM 07/10/2026 17:02:31 PAGE 2 + + 56 1 ack(); + 57 1 d1=read_data(); + 58 1 sda = 1; + 59 1 ack(); + 60 1 stop(); + 61 1 return(d1); + 62 1 } + 63 //----------------------------------------------------------------------------- + 64 void start(void) + 65 { + 66 1 sda = 1; + 67 1 scl = 1; + 68 1 nop(); + 69 1 sda = 0; + 70 1 nop(); + 71 1 scl = 0; + 72 1 } + 73 //----------------------------------------------------------------------------- + 74 void stop(void) + 75 { + 76 1 sda = 0; + 77 1 nop(); + 78 1 scl = 1; + 79 1 nop(); + 80 1 sda = 1; + 81 1 } + 82 //----------------------------------------------------------------------------- + 83 void write_data(unsigned char d) + 84 { + 85 1 unsigned char i; + 86 1 for(i=0;i<8;i++) + 87 1 { + 88 2 if(d & 0x80) sda = 1; + 89 2 else sda = 0; + 90 2 nop(); + 91 2 scl = 1; + 92 2 nop(); + 93 2 scl = 0; + 94 2 d<<=1; + 95 2 } + 96 1 } + 97 //----------------------------------------------------------------------------- + 98 unsigned char read_data(void) + 99 { + 100 1 unsigned char i,d2; + 101 1 d2 = 0x00; + 102 1 for(i=0;i<8;i++) + 103 1 { + 104 2 d2<<=1; + 105 2 scl = 0; + 106 2 nop(); + 107 2 scl = 1; + 108 2 if(sda) d2 = d2 | 0x01; + 109 2 else d2 = d2 | 0x00; + 110 2 } + 111 1 scl = 0; + 112 1 return(d2); + 113 1 } + 114 //----------------------------------------------------------------------------- + 115 void ack(void) + 116 { + 117 1 sda = 1; + C51 COMPILER V9.60.7.0 EEPROM 07/10/2026 17:02:31 PAGE 3 + + 118 1 nop(); + 119 1 scl = 1; + 120 1 nop(); + 121 1 scl = 0; + 122 1 } + 123 //----------------------------------------------------------------------------- + 124 void write_RTC(unsigned char wa,unsigned char wd) + 125 { + 126 1 rst_wdt(); + 127 1 start(); + 128 1 write_data(0xD0); + 129 1 ack(); + 130 1 write_data(wa); // Write to RTC. + 131 1 ack(); // wa = word address & + 132 1 write_data(wd); // wd = data to be written. + 133 1 ack(); + 134 1 stop(); + 135 1 delay(20); + 136 1 } + 137 //----------------------------------------------------------------------------- + 138 unsigned char read_RTC(unsigned char wa) + 139 { + 140 1 unsigned char d1; + 141 1 + 142 1 rst_wdt(); + 143 1 start(); + 144 1 write_data(0xD0); // Read from RTC. + 145 1 ack(); // returns the data. + 146 1 write_data(wa); + 147 1 ack(); + 148 1 start(); + 149 1 write_data(0xD1); + 150 1 ack(); + 151 1 d1=read_data(); + 152 1 sda = 1; + 153 1 ack(); + 154 1 stop(); + 155 1 return(d1); + 156 1 } + 157 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 158 //This function will write a 4 byte (32bit) long to the eeprom at + 159 //the specified address to adress + 3. + 160 void RTC_Writelong(unsigned char address,unsigned long value) + 161 { + 162 1 //Decomposition from a long to 4 bytes by using bitshift. + 163 1 //One = Most significant -> Four = Least significant byte + 164 1 idata unsigned char four = (value & 0xFF); + 165 1 idata unsigned char three = ((value >> 8) & 0xFF); + 166 1 idata unsigned char two = ((value >> 16) & 0xFF); + 167 1 idata unsigned char one = ((value >> 24) & 0xFF); + 168 1 + 169 1 //Write the 4 bytes into the eeprom memory. + 170 1 write_RTC(address, four); + 171 1 write_RTC(address + 1, three); + 172 1 write_RTC(address + 2, two); + 173 1 write_RTC(address + 3, one); + 174 1 } + 175 //------------------------------------------------------------------------------ + 176 //This function will return a 4 byte (32bit) long from the eeprom + 177 //at the specified address to adress + 3. + 178 unsigned long RTC_Readlong(unsigned char address) + 179 { + C51 COMPILER V9.60.7.0 EEPROM 07/10/2026 17:02:31 PAGE 4 + + 180 1 //Read the 4 bytes from the eeprom memory. + 181 1 idata unsigned long four = read_RTC(address); + 182 1 idata unsigned long three = read_RTC(address + 1); + 183 1 idata unsigned long two = read_RTC(address + 2); + 184 1 idata unsigned long one = read_RTC(address + 3); + 185 1 + 186 1 //Return the recomposed long by using bitshift. + 187 1 return (((four << 0) & 0xFF) + ((three << 8) & 0xFFFF) + ((two << 16) & 0xFFFFFF) + ((one << 24) & 0xFFFFF + -FFF)); + 188 1 } + 189 //----------------------------------------------------------------------------------------- + 190 + 191 + 192 //=========================================================================================== + 193 //internal EEPROM usage + 194 //#include + 195 //#include + 196 + 197 /* + 198 * Return EEPROM Byte at address 'adr' + 199 */ + 200 /*unsigned char ReadEEPROM (unsigned int adr) { + 201 unsigned char v; + 202 + 203 WMCON |= EEMEN_; // enable EEPROM + 204 v = XBYTE[adr]; // read value + 205 WMCON &= ~EEMEN_; // disable EEPROM + 206 return (v); + 207 }*/ + 208 + 209 + 210 /* + 211 * Write EEPROM Byte 'val' at address 'adr' + 212 */ + 213 /*void WriteEEPROM (unsigned int adr, unsigned char val) { + 214 WMCON |= (EEMEN_ | EEMWE_); // enable EEPROM and set write bit + 215 XBYTE[adr] = val; // write value + 216 while ((WMCON & EERDY_) == 0); // wait until value programmed + 217 WMCON &= ~(EEMWE_ | EEMEN_); // disable EEPROM and write strobe + 218 }*/ + 219 + 220 /* + 221 unsigned char v; + 222 + 223 void main (void) { + 224 v = ReadEEPROM (0x200); // read EEPROM address 0x200 + 225 WriteEEPROM (0x200, 6); // write 6 to EEPROM address 0x200 + 226 while (1); + 227 }*/ + 228 //------------------------------------------------------------------ + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 579 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- 13 + IDATA SIZE = ---- 20 + BIT SIZE = ---- ---- +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/eeprom.OBJ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/eeprom.OBJ new file mode 100644 index 0000000..a9cae64 Binary files /dev/null and b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/eeprom.OBJ differ diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/eeprom.c b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/eeprom.c new file mode 100644 index 0000000..114ba61 --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/eeprom.c @@ -0,0 +1,228 @@ +// Reads from & writes to eeprom + +//#include +//#include + +//#include +#include + +#include +#include +#include + +#include +#include +//------------------------------------------------------------------------------ +void start(void); +void stop(void); +void write_data(unsigned char d); +unsigned char read_data(void); +void ack(void); + +sbit sda=P3^6; +sbit scl=P3^7; +//------------------------------------------------------------------------- +extern unsigned char idata EEPROM_block; +//----------------------------------------------------------------------------- +void write_eeprom(unsigned char wa,unsigned char wd) +{ + rst_wdt(); + start(); + //write_data(0xA0); + write_data(EEPROM_block); + ack(); + write_data(wa); // Write to EEPROM. + ack(); // wa = word address & + write_data(wd); // wd = data to be written. + ack(); + stop(); + delay(20); +} +//----------------------------------------------------------------------------- +unsigned char read_eeprom(unsigned char wa) +{ + unsigned char d1; + + rst_wdt(); + start(); + //write_data(0xA0); // Read from eeprom. + write_data(EEPROM_block); + ack(); // returns the data. + write_data(wa); + ack(); + start(); + //write_data(0xA1); + write_data(EEPROM_block+0x01); + ack(); + d1=read_data(); + sda = 1; + ack(); + stop(); + return(d1); +} +//----------------------------------------------------------------------------- +void start(void) +{ + sda = 1; + scl = 1; + nop(); + sda = 0; + nop(); + scl = 0; +} +//----------------------------------------------------------------------------- +void stop(void) +{ + sda = 0; + nop(); + scl = 1; + nop(); + sda = 1; +} +//----------------------------------------------------------------------------- +void write_data(unsigned char d) +{ + unsigned char i; + for(i=0;i<8;i++) + { + if(d & 0x80) sda = 1; + else sda = 0; + nop(); + scl = 1; + nop(); + scl = 0; + d<<=1; + } +} +//----------------------------------------------------------------------------- +unsigned char read_data(void) +{ + unsigned char i,d2; + d2 = 0x00; + for(i=0;i<8;i++) + { + d2<<=1; + scl = 0; + nop(); + scl = 1; + if(sda) d2 = d2 | 0x01; + else d2 = d2 | 0x00; + } + scl = 0; + return(d2); +} +//----------------------------------------------------------------------------- +void ack(void) +{ + sda = 1; + nop(); + scl = 1; + nop(); + scl = 0; +} +//----------------------------------------------------------------------------- +void write_RTC(unsigned char wa,unsigned char wd) +{ + rst_wdt(); + start(); + write_data(0xD0); + ack(); + write_data(wa); // Write to RTC. + ack(); // wa = word address & + write_data(wd); // wd = data to be written. + ack(); + stop(); + delay(20); +} +//----------------------------------------------------------------------------- +unsigned char read_RTC(unsigned char wa) +{ + unsigned char d1; + + rst_wdt(); + start(); + write_data(0xD0); // Read from RTC. + ack(); // returns the data. + write_data(wa); + ack(); + start(); + write_data(0xD1); + ack(); + d1=read_data(); + sda = 1; + ack(); + stop(); + return(d1); +} +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +//This function will write a 4 byte (32bit) long to the eeprom at +//the specified address to adress + 3. +void RTC_Writelong(unsigned char address,unsigned long value) +{ +//Decomposition from a long to 4 bytes by using bitshift. +//One = Most significant -> Four = Least significant byte +idata unsigned char four = (value & 0xFF); +idata unsigned char three = ((value >> 8) & 0xFF); +idata unsigned char two = ((value >> 16) & 0xFF); +idata unsigned char one = ((value >> 24) & 0xFF); + +//Write the 4 bytes into the eeprom memory. +write_RTC(address, four); +write_RTC(address + 1, three); +write_RTC(address + 2, two); +write_RTC(address + 3, one); +} +//------------------------------------------------------------------------------ +//This function will return a 4 byte (32bit) long from the eeprom +//at the specified address to adress + 3. +unsigned long RTC_Readlong(unsigned char address) +{ +//Read the 4 bytes from the eeprom memory. +idata unsigned long four = read_RTC(address); +idata unsigned long three = read_RTC(address + 1); +idata unsigned long two = read_RTC(address + 2); +idata unsigned long one = read_RTC(address + 3); + +//Return the recomposed long by using bitshift. +return (((four << 0) & 0xFF) + ((three << 8) & 0xFFFF) + ((two << 16) & 0xFFFFFF) + ((one << 24) & 0xFFFFFFFF)); +} +//----------------------------------------------------------------------------------------- + + +//=========================================================================================== +//internal EEPROM usage +//#include +//#include + +/* + * Return EEPROM Byte at address 'adr' + */ +/*unsigned char ReadEEPROM (unsigned int adr) { + unsigned char v; + + WMCON |= EEMEN_; // enable EEPROM + v = XBYTE[adr]; // read value + WMCON &= ~EEMEN_; // disable EEPROM + return (v); +}*/ + + +/* + * Write EEPROM Byte 'val' at address 'adr' + */ +/*void WriteEEPROM (unsigned int adr, unsigned char val) { + WMCON |= (EEMEN_ | EEMWE_); // enable EEPROM and set write bit + XBYTE[adr] = val; // write value + while ((WMCON & EERDY_) == 0); // wait until value programmed + WMCON &= ~(EEMWE_ | EEMEN_); // disable EEPROM and write strobe +}*/ + +/* +unsigned char v; + +void main (void) { + v = ReadEEPROM (0x200); // read EEPROM address 0x200 + WriteEEPROM (0x200, 6); // write 6 to EEPROM address 0x200 + while (1); +}*/ +//------------------------------------------------------------------ diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/eeprom.h b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/eeprom.h new file mode 100644 index 0000000..bfb5b3e --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/eeprom.h @@ -0,0 +1,72 @@ +#ifndef __EEPROM_H__ +#define __EEPROM_H__ +//------------------------------------------------------------------------------ +#define Block_0 0xA0 //'EEPROM Block 256 bytes in 24C08 +#define Block_1 0xA2 +#define Block_2 0xA4 +#define Block_3 0xA6 +//---------------------------------------------------------------------------- +#define EE_test_loc_Mem 0x00 //1 byte +#define EE_cal_val_Mem_MSB 0x01 //2 byte +#define EE_cal_val_Mem_LSB 0x02 +#define EE_zset_Mem_MSB 0x03 //2 byte +#define EE_zset_Mem_LSB 0x04 +#define EE_rng_val_Mem 0x05 //1 byte +#define EE_res_Mem 0x06 //1 byte +#define EE_mas_Mem 0x07 //1 byte +#define EE_ztc_Mem 0x08 //1 byte +#define EE_dp_val_mem 0x09 //1 byte +#define EE_avg_Mem 0x0A //1 byte +#define EE_wait_val_Mem 0x0B //1 byte +#define EE_drop_wait_val_Mem 0x0C //1 byte +#define EE_on_time_Mem 0x0D //1 byte +//----------------------------------------------------------------------------- + //08h–3Fh RAM 56 x 8 (DS1307) +#define RTC_MEM_current_recipe 0x08 //1 byte +#define RTC_MEM_Auto_start_enable 0x09 //1 byte +#define RTC_MEM_start_delay 0x0A //1 byte +#define RTC_MEM_recipe_enable 0x0B //1 byte +#define RTC_MEM_gross_weight_enable 0x0C //1 byte +//#define RTC_MEM_start_status 0x0D //1 byte +#define RTC_MEM_Instant_fill_enable 0x0E //1 byte +#define RTC_MEM_status 0x0F //1 byte + +#define RTC_MEM_F1_batch_MSB 0x10 //1 byte +#define RTC_MEM_F1_batch_LSB 0x11 //1 byte +#define RTC_MEM_F2_batch_MSB 0x12 //1 byte +#define RTC_MEM_F2_batch_LSB 0x13 //1 byte +#define RTC_MEM_F3_batch_MSB 0x14 //1 byte +#define RTC_MEM_F3_batch_LSB 0x15 //1 byte +#define RTC_MEM_F4_batch_MSB 0x16 //1 byte +#define RTC_MEM_F4_batch_LSB 0x17 //1 byte +#define RTC_MEM_F5_batch_MSB 0x18 //1 byte +#define RTC_MEM_F5_batch_LSB 0x19 //1 byte + +#define RTC_MEM_F1_cumulative 0x1A //4 byte +#define RTC_MEM_F2_cumulative 0x1E //4 byte +#define RTC_MEM_F3_cumulative 0x22 //4 byte +#define RTC_MEM_F4_cumulative 0x26 //4 byte +#define RTC_MEM_F5_cumulative 0x2A //4 byte + +#define RTC_MEM_F6_TO_F36_batch_MSB 0x2E //1 byte +#define RTC_MEM_F6_TO_F36_batch_LSB 0x2F //1 byte +#define RTC_MEM_F6_TO_F36_cumulative 0x30 //4 byte + +#define RTC_MEM_batch_set_MSB 0x34 //1 byte +#define RTC_MEM_batch_set_LSB 0x35 //1 byte +#define RTC_MEM_batch_set_enable 0x36 //1 byte + +#define RTC_MEM_batch_set_count_MSB 0x37 //1 byte +#define RTC_MEM_batch_set_count_LSB 0x38 //1 byte + +#define RTC_fillset_MSB 0x39 //1 byte +#define RTC_fillset_LSB 0x3A //1 byte +//------------------------------------------------------------------------------ +void write_eeprom(unsigned char wa,unsigned char wd); +unsigned char read_eeprom(unsigned char wa); +void write_RTC(unsigned char wa,unsigned char wd); +unsigned char read_RTC(unsigned char wa); +void RTC_Writelong(unsigned char address,unsigned long value); +unsigned long RTC_Readlong(unsigned char address); +//------------------------------------------------------------------------------- +#endif \ No newline at end of file diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/fill.uvopt b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/fill.uvopt new file mode 100644 index 0000000..61169d0 --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/fill.uvopt @@ -0,0 +1,1681 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x0 + MCS-51 + + 33000000 + + 1 + 1 + 1 + 0 + + + 0 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 0 + + S8051.DLL + + DP51.DLL + -pAT52 + S8051.DLL + + TP51.DLL + -pAT52 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 23 + 0 + 1157 + 1187 + 0 + .\main.c + main.c + + + 1 + 2 + 1 + 0 + 0 + 17 + 0 + 1 + 1 + 0 + .\ser_disp.c + ser_disp.c + + + 1 + 3 + 1 + 1 + 0 + 34 + 0 + 24 + 24 + 0 + .\utility.c + utility.c + + + 1 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\eeprom.c + eeprom.c + + + 1 + 5 + 1 + 0 + 0 + 38 + 0 + 43 + 43 + 0 + .\4x4_key.c + 4x4_key.c + + + 1 + 6 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\ADC_AD7780.C + ADC_AD7780.C + + + 1 + 7 + 1 + 0 + 0 + 55 + 0 + 0 + 0 + 0 + .\ADC_HX711.C + ADC_HX711.C + + + + + Documentation + 0 + 0 + 0 + + 2 + 8 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\Notes.txt + Notes.txt + + + + + C:\FILES\FILLTRONICS\2025 FILLTRONIC FINAL PROGRAMS\EMBEDED PROGRAMS 2025\C51 2025\Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2\utility.h + 1 + 5 + 0 + + 0 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + + + + Default + 1 + Build + 0 + + Default + 1 + + 59392 + 1 + File + 0 + + 0 + + 1 + 2 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 100 + 0 + 1 + 0 + + + 59398 + 2 + Build + 0 + + 0 + + 1 + 2 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 100 + 0 + 0 + 0 + + + 59399 + 3 + Debug + 0 + + 0 + + 1 + 2 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 100 + 0 + 1 + 0 + + + 197 + 4 + Build Output + 0 + + 0 + + 1 + 2 + 4 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 1 + 0 + 0 + + + 198 + 5 + Command + 197 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 1 + 1 + 0 + + + 199 + 6 + Find in Files + 197 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 38007 + 7 + Browse + 197 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1939 + 8 + UART #1 + 197 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1940 + 9 + UART #2 + 197 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1941 + 10 + UART #3 + 197 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1942 + 11 + UART #4 + 197 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1944 + 12 + Call Stack + 197 + + 197 + + 1 + 2 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 50 + 0 + 1 + 0 + + + 1507 + 13 + Call Stack + 1944 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 50 + 0 + 1 + 0 + + + 1935 + 14 + Locals + 1944 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 1 + 0 + + + 1936 + 15 + Watch 1 + 1944 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 1 + 0 + + + 1937 + 16 + Watch 2 + 1944 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1465 + 17 + Memory 1 + 1944 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 1 + 0 + + + 1466 + 18 + Memory 2 + 1944 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1467 + 19 + Memory 3 + 1944 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1468 + 20 + Memory 4 + 1944 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1506 + 21 + Symbols + 1944 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 1 + 0 + + + 1005 + 22 + Project + 0 + + 0 + + 1 + 2 + 1 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 1 + 0 + + + 109 + 23 + Books + 1005 + + 1005 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 195 + 24 + Functions + 1005 + + 1005 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 196 + 25 + Templates + 1005 + + 1005 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 38003 + 26 + Registers + 1005 + + 1005 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 1 + 1 + 0 + + + 35885 + 27 + not set + 0 + + 0 + + 1 + 2 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35886 + 28 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35887 + 29 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35888 + 30 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35889 + 31 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35890 + 32 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35891 + 33 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35892 + 34 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35893 + 35 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35894 + 36 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35895 + 37 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35896 + 38 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35897 + 39 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35898 + 40 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35899 + 41 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35900 + 42 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35901 + 43 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35902 + 44 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35903 + 45 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35904 + 46 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35905 + 47 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 203 + 48 + Disassembly + 0 + + 0 + + 1 + 2 + 3 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 1 + 0 + + + 1913 + 49 + Instruction Trace + 203 + + 203 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35824 + 50 + Logic Analyzer + 0 + + 0 + + 1 + 6 + 0 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 1 + 0 + 0 + 0 + + + 343 + 51 + Performance Analyzer + 203 + + 203 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 204 + 52 + Performance Analyzer + 203 + + 203 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 346 + 53 + Code Coverage + 203 + + 203 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + + + + 1 + 0 + + 100 + 0 + + + .\main.c + 23 + 1157 + 1187 + + + .\ser_disp.c + 17 + 1 + 1 + + + .\4x4_key.c + 38 + 43 + 43 + + + .\utility.c + 34 + 24 + 24 + + + utility.h + 1 + 1 + 5 + + + + + +
diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/fill.uvproj b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/fill.uvproj new file mode 100644 index 0000000..d9c61b0 --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/fill.uvproj @@ -0,0 +1,400 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x0 + MCS-51 + + + AT89C55WD + Atmel + IRAM(0-0xFF) IROM(0-0x4FFF) CLOCK(33000000) MODAT2 + + "LIB\STARTUP.A51" ("Standard 8051 Startup Code") + + 3414 + REGX55.H + + + + + + + + + + 0 + + + + Atmel\ + Atmel\ + + 0 + 0 + 0 + 0 + 1 + + .\ + Tin_fill_4x4_key_36Recipe_ad7780_55WD_default + 1 + 0 + 1 + 1 + 1 + .\ + 0 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + D:\VEN\CPGM\fill\Tin\h.bat fill + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 65535 + + + S8051.DLL + + DP51.DLL + -pAT52 + S8051.DLL + + TP51.DLL + -pAT52 + + + + 0 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + + + + + + + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + 0 + + + + + + + + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0xffff + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x5000 + + + 0 + 0x0 + 0x100 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 0 + 0 + 1 + 0 + 1 + 3 + 8 + 2 + 1 + 1 + 0 + 0 + + + + + + + + + 0 + 1 + 0 + 0 + + + + + + + + + 0 + 0 + 1 + 0 + 2 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Source Group 1 + + + main.c + 1 + .\main.c + + + ser_disp.c + 1 + .\ser_disp.c + + + utility.c + 1 + .\utility.c + + + eeprom.c + 1 + .\eeprom.c + + + 4x4_key.c + 1 + .\4x4_key.c + + + ADC_AD7780.C + 1 + .\ADC_AD7780.C + + + ADC_HX711.C + 1 + .\ADC_HX711.C + + + + + Documentation + + + Notes.txt + 5 + .\Notes.txt + + + + + + + +
diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/fill_uvopt.bak b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/fill_uvopt.bak new file mode 100644 index 0000000..174f896 --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/fill_uvopt.bak @@ -0,0 +1,1681 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj + *.lib + *.txt; *.h; *.inc + *.plm + *.cpp + + + + 0 + 0 + + + + Target 1 + 0x0 + MCS-51 + + 33000000 + + 1 + 1 + 1 + 0 + + + 0 + 65535 + 0 + 0 + 0 + + + 120 + 65 + 8 + .\ + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 0 + + S8051.DLL + + DP51.DLL + -pAT52 + S8051.DLL + + TP51.DLL + -pAT52 + + + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + + + + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + Source Group 1 + 1 + 0 + 0 + + 1 + 1 + 1 + 0 + 0 + 22 + 0 + 1157 + 1157 + 0 + .\main.c + main.c + + + 1 + 2 + 1 + 0 + 0 + 17 + 0 + 1 + 1 + 0 + .\ser_disp.c + ser_disp.c + + + 1 + 3 + 1 + 1 + 0 + 34 + 0 + 24 + 24 + 0 + .\utility.c + utility.c + + + 1 + 4 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\eeprom.c + eeprom.c + + + 1 + 5 + 1 + 0 + 0 + 38 + 0 + 43 + 43 + 0 + .\4x4_key.c + 4x4_key.c + + + 1 + 6 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\ADC_AD7780.C + ADC_AD7780.C + + + 1 + 7 + 1 + 0 + 0 + 55 + 0 + 0 + 0 + 0 + .\ADC_HX711.C + ADC_HX711.C + + + + + Documentation + 0 + 0 + 0 + + 2 + 8 + 5 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .\Notes.txt + Notes.txt + + + + + C:\FILES\FILLTRONICS\2025 FILLTRONIC FINAL PROGRAMS\EMBEDED PROGRAMS 2025\C51 2025\Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2\utility.h + 1 + 5 + 0 + + 0 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + + + + Default + 1 + Build + 0 + + Default + 1 + + 59392 + 1 + File + 0 + + 0 + + 1 + 2 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 100 + 0 + 1 + 0 + + + 59398 + 2 + Build + 0 + + 0 + + 1 + 2 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 100 + 0 + 0 + 0 + + + 59399 + 3 + Debug + 0 + + 0 + + 1 + 2 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 100 + 0 + 1 + 0 + + + 197 + 4 + Build Output + 0 + + 0 + + 1 + 2 + 4 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 1 + 0 + 0 + + + 198 + 5 + Command + 197 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 1 + 1 + 0 + + + 199 + 6 + Find in Files + 197 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 38007 + 7 + Browse + 197 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1939 + 8 + UART #1 + 197 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1940 + 9 + UART #2 + 197 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1941 + 10 + UART #3 + 197 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1942 + 11 + UART #4 + 197 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1944 + 12 + Call Stack + 197 + + 197 + + 1 + 2 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 50 + 0 + 1 + 0 + + + 1507 + 13 + Call Stack + 1944 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 50 + 0 + 1 + 0 + + + 1935 + 14 + Locals + 1944 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 1 + 0 + + + 1936 + 15 + Watch 1 + 1944 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 1 + 0 + + + 1937 + 16 + Watch 2 + 1944 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1465 + 17 + Memory 1 + 1944 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 1 + 0 + + + 1466 + 18 + Memory 2 + 1944 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1467 + 19 + Memory 3 + 1944 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1468 + 20 + Memory 4 + 1944 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 1506 + 21 + Symbols + 1944 + + 197 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 1 + 0 + + + 1005 + 22 + Project + 0 + + 0 + + 1 + 2 + 1 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 1 + 0 + + + 109 + 23 + Books + 1005 + + 1005 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 195 + 24 + Functions + 1005 + + 1005 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 196 + 25 + Templates + 1005 + + 1005 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 38003 + 26 + Registers + 1005 + + 1005 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 1 + 1 + 0 + + + 35885 + 27 + not set + 0 + + 0 + + 1 + 2 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35886 + 28 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35887 + 29 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35888 + 30 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35889 + 31 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35890 + 32 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35891 + 33 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35892 + 34 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35893 + 35 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35894 + 36 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35895 + 37 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35896 + 38 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35897 + 39 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35898 + 40 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35899 + 41 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35900 + 42 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35901 + 43 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35902 + 44 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35903 + 45 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35904 + 46 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35905 + 47 + not set + 35885 + + 35885 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 203 + 48 + Disassembly + 0 + + 0 + + 1 + 2 + 3 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 1 + 0 + + + 1913 + 49 + Instruction Trace + 203 + + 203 + + 1 + 4 + 2 + 0 + 0 + 0 + 600 + 210 + 0 + 0 + 600 + 250 + 100 + 0 + 0 + 0 + + + 35824 + 50 + Logic Analyzer + 0 + + 0 + + 1 + 6 + 0 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 1 + 0 + 0 + 0 + + + 343 + 51 + Performance Analyzer + 203 + + 203 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 204 + 52 + Performance Analyzer + 203 + + 203 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + 346 + 53 + Code Coverage + 203 + + 203 + + 1 + 4 + 2 + 0 + 0 + 0 + 210 + 600 + 0 + 0 + 250 + 600 + 100 + 0 + 0 + 0 + + + + + + 1 + 0 + + 100 + 0 + + + .\main.c + 22 + 1157 + 1157 + + + .\ser_disp.c + 17 + 1 + 1 + + + .\4x4_key.c + 38 + 43 + 43 + + + .\utility.c + 34 + 24 + 24 + + + utility.h + 1 + 1 + 5 + + + + + +
diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/fill_uvproj.bak b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/fill_uvproj.bak new file mode 100644 index 0000000..3744006 --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/fill_uvproj.bak @@ -0,0 +1,400 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + + Target 1 + 0x0 + MCS-51 + + + AT89C55WD + Atmel + IRAM(0-0xFF) IROM(0-0x4FFF) CLOCK(33000000) MODAT2 + + "LIB\STARTUP.A51" ("Standard 8051 Startup Code") + + 3414 + REGX55.H + + + + + + + + + + 0 + + + + Atmel\ + Atmel\ + + 0 + 0 + 0 + 0 + 1 + + .\ + Tin_fill_4x4_key_36Recipe_ad7780_55WD + 1 + 0 + 1 + 1 + 1 + .\ + 0 + 0 + 0 + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 0 + 0 + D:\VEN\CPGM\fill\Tin\h.bat fill + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 65535 + + + S8051.DLL + + DP51.DLL + -pAT52 + S8051.DLL + + TP51.DLL + -pAT52 + + + + 0 + 0 + 0 + 0 + 16 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + + + + + + + + + + + + + + + + + + + 1 + 0 + 0 + 0 + 0 + 0 + + + + + + + + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + 0 + 0x0 + 0xffff + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x5000 + + + 0 + 0x0 + 0x100 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + + + 0 + 0 + 1 + 0 + 1 + 3 + 8 + 2 + 1 + 1 + 0 + 0 + + + + + + + + + 0 + 1 + 0 + 0 + + + + + + + + + 0 + 0 + 1 + 0 + 2 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Source Group 1 + + + main.c + 1 + .\main.c + + + ser_disp.c + 1 + .\ser_disp.c + + + utility.c + 1 + .\utility.c + + + eeprom.c + 1 + .\eeprom.c + + + 4x4_key.c + 1 + .\4x4_key.c + + + ADC_AD7780.C + 1 + .\ADC_AD7780.C + + + ADC_HX711.C + 1 + .\ADC_HX711.C + + + + + Documentation + + + Notes.txt + 5 + .\Notes.txt + + + + + + + +
diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/keyboard4x4.c b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/keyboard4x4.c new file mode 100644 index 0000000..dcaf0b5 --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/keyboard4x4.c @@ -0,0 +1,52 @@ +//INCLUDE KEYBOARD HEADER FILE +#include +#include +#include + +//DECLARE GLOABL VARIABLE +//-------------------------------------------------------------------------------- +unsigned char find_col(unsigned char key) +{ + key_data &= 0x0f; + rst_wdt(); + if(key_data == 0x0d) + key++; + else if(key_data == 0x0b) + key +=2; + else if(key_data == 0x07) + key +=3; + return key; +} +//-------------------------------------------------------------------------------- +unsigned char get_data() +{ + unsigned char idata digit,time_out = 0; + unsigned char code a[] = "0123456789ABCD*#"; + //unsigned char code a[] = "123A456B789C*0#D"; + key_data = 0x0f; + + /*while(key_data != 0x0f); + delay(40); */ + while(key_data != 0x0f); + rst_wdt(); + while(key_data == 0x0f) + { + delay(KEY_DELAY); + if(time_out++ == MAX_TIME_OUT) + return 0; + } + //delay(20); + if((key_data = 0x7f) && MASK != 0x0f) + digit = find_col(0x00); + else if((key_data = 0xbf) && MASK != 0x0f) + digit = find_col(0x04); + else if((key_data = 0xdf) && MASK != 0x0f) + digit = find_col(0x08); + else if((key_data = 0xef) && MASK != 0x0f) + digit = find_col(0x0c); + + return a[digit]; +} +//----------------------------------------------------------------------------------- + + diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/keyboard4x4.h b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/keyboard4x4.h new file mode 100644 index 0000000..37faaef --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/keyboard4x4.h @@ -0,0 +1,25 @@ +#ifndef KEYBOARD4_4_H +#define KEYBOARD4_4_H + +#include + + +//USER DEFINED DATA TYPE +//typedef unsigned char ubyte; + + +//DEFINE PORTS/PINS +#define key_data P0 + +//DEFINE CONSTANT +//#define KEY_DELAY 100 +//#define MAX_TIME_OUT 100 +#define KEY_DELAY 1 +#define MAX_TIME_OUT 10 +#define MASK (key_data & 0x0f) + +//FUNCTION PROTOTYPES +unsigned char get_data(); +unsigned char find_col(unsigned char); + +#endif diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/main.LST b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/main.LST new file mode 100644 index 0000000..a3e1b82 --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/main.LST @@ -0,0 +1,3447 @@ +C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 1 + + +C51 COMPILER V9.60.7.0, COMPILATION OF MODULE MAIN +OBJECT MODULE PLACED IN main.OBJ +COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND + +line level source + + 1 //#pragma ot(9,size) + 2 //#pragma nointpromote + 3 + 4 //#include + 5 //#include + 6 + 7 #include + 8 #include //Library Header Files. + 9 #include + 10 #include + 11 #include + 12 #include + 13 //----------------------------------------------------------------------------- + 14 #include + 15 #include + 16 #include + 17 //#include + 18 //-------------------------------------------------------------------------- + 19 //define type of key board here + 20 //#define _6_key + 21 #define _4x4_key + 22 //-------------------------------------------------------------------------- + 23 //define type of ADC here + 24 #define _AD7780 + 25 //#define _HX711 + 26 //-------------------------------------------------------------------------- + 27 #ifdef _4x4_key + 28 #undef _6_key + 29 #endif + 30 #ifdef _6_key + #undef _4x4_key + #endif + 33 //--------------------------------------------------------------------------- + 34 #ifdef _4x4_key + 35 #include <4x4_key.h> + 36 #endif + 37 //---------------------------------------------------------------------------- + 38 #ifdef _AD7780 + 39 #include + 40 #endif + 41 #ifdef _HX711 + #include + #endif + 44 //----------------------------------------------------------------------------- + 45 void init(void); //Function declaration. + 46 void pwd(void); + 47 void blink(start,no); + 48 void menu(void); + 49 unsigned int bcd2bin(char no); + 50 void val_read(char a); + 51 void bin2bcd(unsigned int value,char no); + 52 void process(void); + 53 void tare_chk(void); + 54 void zero_track(void); + 55 void read_values(void); + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 2 + + 56 /*void time_date(void);*/ + 57 void display_value(void); + 58 void check_keypad(void); + 59 void check_switch(void); + 60 void check_values(void); + 61 /*void tare_entry(void); + 62 void print_values(void); + 63 void set_clear(void);*/ + 64 void filter(void); + 65 char incdec(char name,char max,char min); + 66 void cal(void); + 67 void cal_find(void); + 68 void calibrate(void); + 69 void cal_rst(void); + 70 void average(void); + 71 void add_values(void); + 72 void settings(void); + 73 void sys_paramts(void); + 74 void self_test(void); + 75 void defaults(void); + 76 void load_eep_defaults(void); + 77 void select_menu(void); + 78 void disp_check(void); + 79 void fill_count(void); + 80 void display_total_cumulative(void); + 81 void display_total_batch(void); + 82 void clear_current_cumulative_batch(void); + 83 void display_current_cumulative(void); + 84 void display_current_batch(void); + 85 void clear_batch_cumulative(void); + 86 void recipe_menu(void); + 87 //void memory_backup_restore(void); + 88 //--------------------------------------------- + 89 sbit start=P1^0; + 90 sbit cal_en=P1^7; //calibration lock + 91 //--------------------------------------------- + 92 #ifdef _6_key //6 key + sbit set = P2^0; + sbit incr = P2^1; + sbit decr = P2^2; + sbit tare = P2^3; + sbit enter= P2^4; + sbit mode = P2^5; + #endif + 100 + 101 #ifdef _4x4_key //16 key + 102 #define set 'A' + 103 #define tare 'C' + 104 #define enter 'D' + 105 #define mode 'B' + 106 //#define left '*' + 107 //#define right '#' + 108 #define incr '*' + 109 #define decr '#' + 110 #endif + 111 //-------------------------------------------- + 112 sbit cf1 =P1^4; + 113 sbit cf2 =P1^1; + 114 sbit ff =P1^2; + 115 sbit waled=P1^3; + 116 + 117 sbit v_down_rly =P1^5; + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 3 + + 118 sbit v_up_rly =P1^6; + 119 //--------------------Variable declaration,Char.-------------------------- + 120 unsigned char idata EEPROM_block = 0x00; + 121 + 122 unsigned char data temp_data[8],disp_data[8]; + 123 unsigned char idata temp_pwd[4],dp_val=4; + 124 + 125 unsigned char code pswd1[2]={3,6},pswd2[2]={6,3},pswd3[2]={1,9}; + 126 unsigned char code pswd4[2]={9,1},pswd5[2]={2,8},pswd6[2]={8,2}; + 127 unsigned char code pswd7[2]={5,5},pswd8[2]={1,1},pswd9[2]={2,2}; + 128 unsigned char code pswd10[2]={7,7},pswd11[2]={6,6},pswd12[2]={3,3},pswd13[2]={4,4}; + 129 unsigned char code pass_F1[2]={1,0},pass_F2[2]={2,0},pass_F3[2]={3,0},pass_F4[2]={4,0},pass_F5[2]={5,0}; + 130 unsigned char code pass_F6[2]={6,0},pass_F7[2]={7,0},pass_F8[2]={8,0},pass_F9[2]={9,0},pass_F10[2]={9,9}; + 131 //unsigned char data sec,min,hr,dt,mon,yr; + 132 //unsigned char data data_rd=0x40,ctr=0,active_cnt=10; + 133 unsigned char idata ztwc=0,res,tare_cnt=0,mul_factor,div_factor,ztc; + 134 unsigned char idata rng_val=0,mas,avg=0,t; + 135 unsigned char idata avg_cnt=10,add_cnt=0,test_loc=0x12,function=1; + 136 //unsigned char idata wait_val=1,drop_wait_val=1,drop_ctr=0,wait_ctr=0; + 137 unsigned char idata wait_val=1,drop_wait_val=1; + 138 unsigned int idata wait_ctr=0,drop_ctr=0; + 139 + 140 /*unsigned char code rng_array[7][3]={ + 141 10,16,8, + 142 10,24,12, + 143 10,32,16, + 144 10,44,22, + 145 10,64,32, + 146 10,84,42, + 147 10,104,52 }; */ + 148 + 149 unsigned char code rng_array[10][3]={ + 150 10,4,2, + 151 10,16,8, + 152 10,24,12, + 153 10,32,16, + 154 10,44,22, + 155 10,64,32, + 156 10,84,42, + 157 10,104,50, + 158 10,104,52, + 159 10,104,62 }; + 160 + 161 //unsigned char clk_lsb=0x60,clk_msb=0x18,gain=0x26; + 162 + 163 unsigned char data Adc_Value_LSB,Adc_Value_MSB,Adc_Value_MLSB,Status_Bits; + 164 + 165 unsigned char idata KeyPressed; + 166 unsigned char idata start_count=0x00,start_delay=0x50; + 167 unsigned char idata disp_count=0; + 168 //--------------------Variable declaration,Int.--------------------------- + 169 unsigned int idata fillset=0,cf=0,ffd=0,nfl=0,zset=0,htar=0,ltar=0; + 170 unsigned int idata cfd1,cfd2; + 171 unsigned int data tare_val=0,scale_val,help_val,temp_tare; + 172 unsigned int idata disp_val=0,adc_val=0,filter_val=0,prev_val[5]={0,0,0,0,0},start_disp=0; + 173 //unsigned int data prn_cap,prn_nett,prn_tare,prn_gross; + 174 unsigned int idata bin_val,cal_val=0x2710,temp_val,on_time=100; + 175 unsigned long int data temp,temp1,temp2,add_adc=0; + 176 + 177 unsigned long hold_counter = 0; + 178 + 179 unsigned long idata cumulative=0; + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 4 + + 180 unsigned int idata batch=0,bset=0; + 181 unsigned int idata batch_count=0; + 182 //--------------------Variable declaration,Bit.--------------------------- + 183 bit adc_pol=0,aco=0,tare_pol=0,disp_pol,dp_flag=0,c_flag=0; + 184 bit wt_ach=0,zset_flag=0,ed=1,drop_flag=0; + 185 bit start_flag=0,busy_flag=0,tare_flag=0,help_flag; + 186 bit cal_flag=0,ave_ok,esc_flag=0,wa_flag=0,wait_flag=0,process_flag=0; + 187 bit cf1_flag=0,cf2_flag=0,ff_flag=0,autotare=1,fill_start=0,adc_err=0; + 188 bit recipe=0,grwt=0,auto_start=0,bset_enable=0,grwt_ok=0; + 189 bit start_wait_flag=0,shift_flag=0,Instant_fill_enable=0; + 190 bit set_enter_flag=0,rd_ok=0,start_status=0; + 191 + 192 bit Adc_Data_Ready,Adc_Status_bit73; + 193 //-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=- + 194 void main(void) + 195 { + 196 1 init(); + 197 1 rst_wdt(); + 198 1 #ifdef _6_key + if(!tare) autotare=0; + #elif defined( _4x4_key ) + 201 1 if(KeyPressed == tare) autotare=0; + 202 1 #endif + 203 1 dp_flag=0; + 204 1 disp(0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11); + 205 1 display_name(); + 206 1 //delay(500); + 207 1 read_values(); + 208 1 dp_flag=0; + 209 1 t=read_eeprom(EE_test_loc_Mem); + 210 1 if(t != test_loc) + 211 1 { + 212 2 disp(0x0d,0x0e,0x0f,0x0a,0x1b,0x16,0x14,0x05); + 213 2 #ifdef _6_key + while(enter && mode && set && decr && incr){delay(2);} + #elif defined( _4x4_key ) + 216 2 while(KeyPressed != enter && KeyPressed != mode && KeyPressed != set) {delay(2);} + 217 2 #endif + 218 2 + 219 2 #ifdef _6_key + if(!enter) + #elif defined( _4x4_key ) + 222 2 if(KeyPressed == enter) + 223 2 #endif + 224 2 { + 225 3 disp(0x11,0x16,0x17,0x0a,0x0d,0x01,0x18,0x09); + 226 3 load_eep_defaults(); + 227 3 delay(500); + 228 3 } + 229 2 } + 230 1 //init_adc(); + 231 1 #ifdef _AD7780 + 232 1 init_adc_AD7780(); + 233 1 #elif defined( _HX711 ) + init_adc_HX711(); + #endif + 236 1 //delay(500); + 237 1 clr_disp(); + 238 1 + 239 1 if(autotare) + 240 1 { + 241 2 disp_check(); + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 5 + + 242 2 self_test(); + 243 2 clr_disp(); + 244 2 tare_flag=1; + 245 2 disp(0x11,0x11,0x14,0x0a,0x13,0x0e,0x11,0x11); + 246 2 delay(1000); + 247 2 clr_disp(); + 248 2 } + 249 1 dp_flag=1; + 250 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 251 1 while(1) + 252 1 { + 253 2 /*if(aco) + 254 2 { + 255 2 aco=0; + 256 2 //ctr=0; + 257 2 add_values(); + 258 2 add_cnt++; + 259 2 if(add_cnt >= avg_cnt) + 260 2 { + 261 2 add_cnt=0; + 262 2 average(); + 263 2 //filter(); + 264 2 //process(); + 265 2 } + 266 2 } */ + 267 2 process(); + 268 2 #ifdef _4x4_key + 269 2 KeyPressed=Read_Keypad(); + 270 2 #endif + 271 2 check_keypad(); + 272 2 check_switch(); + 273 2 rst_wdt(); + 274 2 check_values(); + 275 2 disp_count++; + 276 2 if(!help_flag && !tare_flag) + 277 2 {if(disp_count>2){display_value(); disp_count=0;}} + 278 2 //if(!help_flag && !tare_flag) display_value(); + 279 2 //delay(5); + 280 2 #ifdef _4x4_key + 281 2 KeyPressed='x'; + 282 2 #endif + 283 2 } + 284 1 } + 285 //========================================================================================= + 286 void init(void) + 287 { + 288 1 //#if defined(_6_key) + 289 1 #ifdef _6_key + P0=P1=P2=0xff; //when 6 key + TMOD=0x1D; + TH0=0x00; + TL0=0x00; + TCON=0x55; + IE=0x81; + IP=0x01; + SCON=0x00; + #elif defined( _4x4_key ) + 299 1 P1=P2=0xff; //when using 4x4 key + 300 1 TMOD=0x1D; + 301 1 TH0=0x00; + 302 1 TL0=0x00; + 303 1 TCON=0x55; + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 6 + + 304 1 IE=0x89; + 305 1 IP=0x01; + 306 1 TH1=0xFC; + 307 1 TL1=0x66; + 308 1 SCON=0x00; + 309 1 #endif + 310 1 + 311 1 //--------------------------------------------------------------------- + 312 1 //Following value Only when HX710/HX711 ADC used + 313 1 //IT0 = 1; // Configure interrupt 0 for falling edge on /INT0 (P3.2) + 314 1 IT0 = 0; // Configure interrupt 0 for low level triggered /INT0 (P3.2) + 315 1 EX0 = 1; // Enable EX0 Interrupt + 316 1 EA = 1; // Enable Global Interrupt Flag + 317 1 //--------------------------------------------------------------------- + 318 1 + 319 1 cf1=0; + 320 1 cf2=0; + 321 1 ff=0; + 322 1 waled=0; + 323 1 } + 324 //=============================================================================================== + 325 void adcint0_isr(void) interrupt 0 + 326 { + 327 1 Adc_Data_Ready=1; + 328 1 //Get_Adc_Result(); + 329 1 #ifdef _AD7780 + 330 1 Get_Adc_Result_AD7780(); + 331 1 #elif defined( _HX711 ) + Get_Adc_Result_HX711(); + #endif + 334 1 aco=1; + 335 1 + 336 1 if(rd_ok) + 337 1 { + 338 2 rd_ok=0; + 339 2 add_values(); + 340 2 add_cnt++; + 341 2 if(add_cnt >= avg_cnt) + 342 2 { + 343 3 add_cnt=0; + 344 3 average(); + 345 3 if(!start_flag)filter(); + 346 3 //process(); + 347 3 } + 348 2 } + 349 1 EX0 = 1; + 350 1 } + 351 //=============================================================================================== + 352 #ifdef _4x4_key + 353 void timer1_isr(void) interrupt 3 + 354 { + 355 1 TR1=0; + 356 1 KeyPressed=Read_Keypad(); + 357 1 TL1=0x66; + 358 1 //TH1=0xFc; + 359 1 TH1=0x32; + 360 1 TR1=1; + 361 1 } + 362 #endif + 363 //=============================================================================================== + 364 void read_values(void) + 365 { + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 7 + + 366 1 unsigned char dat; + 367 1 + 368 1 //write_RTC(RTC_MEM_start_status,0x00); //pause auto start when power failure + 369 1 start_status=0; + 370 1 + 371 1 dat=read_RTC(RTC_MEM_Auto_start_enable); //Auto start Enable / Disable. + 372 1 if(dat==1)auto_start=1; + 373 1 else auto_start=0; + 374 1 + 375 1 dat=read_RTC(RTC_MEM_recipe_enable); //Recipe enable/disabled + 376 1 if(dat==1)recipe=1; + 377 1 else recipe=0; + 378 1 + 379 1 dat=read_RTC(RTC_MEM_Instant_fill_enable); //instant fillset entry enabled/disabled + 380 1 if(dat==1)Instant_fill_enable=1; + 381 1 else Instant_fill_enable=0; + 382 1 + 383 1 //if(!recipe)function=1; + 384 1 if(!recipe)write_RTC(RTC_MEM_current_recipe,0x01); + 385 1 function = read_RTC(RTC_MEM_current_recipe); + 386 1 + 387 1 dat=read_RTC(RTC_MEM_gross_weight_enable); //Gross weight display enable/disable + 388 1 if(dat==1)grwt=1; + 389 1 else grwt=0; + 390 1 + 391 1 start_delay = read_RTC(RTC_MEM_start_delay); + 392 1 + 393 1 dat=read_RTC(RTC_MEM_batch_set_enable); //Batch filling set enabled/disabled + 394 1 if(dat==1)bset_enable=1; + 395 1 else bset_enable=0; + 396 1 bset=read_RTC(RTC_MEM_batch_set_MSB)*100 + read_RTC(RTC_MEM_batch_set_LSB); //batch set(no.of filling to + -be done) + 397 1 rst_wdt(); + 398 1 //------------------------------------------------------------------------------------ + 399 1 if(function>0 && function<=9) {EEPROM_block = Block_0;dat = function;} + 400 1 else if(function>9 && function<=18) {EEPROM_block = Block_1;dat=(function-9);} + 401 1 else if(function>18 && function<=27) {EEPROM_block = Block_2;dat=(function-18);} + 402 1 else if(function>27 && function<=36) {EEPROM_block = Block_3;dat=(function-27);} + 403 1 //-------------------------------------------------------------------------------------- + 404 1 if(Instant_fill_enable) //if instant fillset entry enabled + 405 1 fillset=read_RTC(RTC_fillset_MSB) *0x100 + read_RTC(RTC_fillset_LSB); + 406 1 else //if instant fillset entry disabled + 407 1 fillset=read_eeprom(0x10*dat) *0x100 + read_eeprom((0x10*dat)+0x01); + 408 1 + 409 1 cf=read_eeprom((0x10*dat)+0x02) *0x100 + read_eeprom((0x10*dat)+0x03); + 410 1 ffd=read_eeprom((0x10*dat)+0x04) *0x100 + read_eeprom((0x10*dat)+0x05); + 411 1 nfl=read_eeprom((0x10*dat)+0x06) *0x100 + read_eeprom((0x10*dat)+0x07); + 412 1 htar=read_eeprom((0x10*dat)+0x08) *0x100 + read_eeprom((0x10*dat)+0x09); + 413 1 ltar=read_eeprom((0x10*dat)+0x0A) *0x100 + read_eeprom((0x10*dat)+0x0B); + 414 1 dat=read_eeprom((0x10*dat)+0x0C); + 415 1 if(dat==0) ed=0; + 416 1 else ed=1; + 417 1 //----------------------------------------------------------------------- + 418 1 EEPROM_block = Block_0; //Following parameters in block0 of EEPROM + 419 1 + 420 1 cal_val=read_eeprom(EE_cal_val_Mem_MSB)*0x100 + read_eeprom(EE_cal_val_Mem_LSB); + 421 1 zset=read_eeprom(EE_zset_Mem_MSB)*0x100 + read_eeprom(EE_zset_Mem_LSB); + 422 1 + 423 1 rng_val=read_eeprom(EE_rng_val_Mem); + 424 1 res=read_eeprom(EE_res_Mem); + 425 1 mas=read_eeprom(EE_mas_Mem); + 426 1 ztc=read_eeprom(EE_ztc_Mem); + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 8 + + 427 1 dp_val=read_eeprom(EE_dp_val_mem); + 428 1 + 429 1 avg=read_eeprom(EE_avg_Mem); + 430 1 avg_cnt=3*(10-avg); + 431 1 rst_wdt(); + 432 1 div_factor=rng_array[rng_val][0]; + 433 1 mul_factor=rng_array[rng_val][1]; + 434 1 help_val=(rng_array[rng_val][2] * 1000) + (res * 9); + 435 1 //help_val=20090; + 436 1 + 437 1 wait_val=read_eeprom(EE_wait_val_Mem); + 438 1 drop_wait_val=read_eeprom(EE_drop_wait_val_Mem); + 439 1 //on_time=read_eeprom(EE_on_time_Mem) * 100; + 440 1 on_time=read_eeprom(EE_on_time_Mem) * 10; + 441 1 //---------------------------------------------------------------------- + 442 1 /*cfd1=fillset-ffd; + 443 1 cfd2=fillset-ffd; + 444 1 //ffd=fillset-ffd;*/ + 445 1 + 446 1 //cfd1=fillset-cf; + 447 1 cfd1=fillset-ffd; + 448 1 cfd2=fillset-ffd; + 449 1 + 450 1 start_wait_flag=0; + 451 1 } + 452 //============================================================================================= + 453 void self_test(void) + 454 { + 455 1 unsigned char dat,i; + 456 1 bit aok=0; + 457 1 + 458 1 disp(0x05,0x0e,0x16,0x0f,0x14,0x0e,0x05,0x14); + 459 1 delay(500); + 460 1 //-------------------------------------------- + 461 1 //EEPROM test + 462 1 disp(0x11,0x1a,0x0e,0x1a,0x17,0x13,0x1c,0x11); + 463 1 delay(500); + 464 1 dat=read_eeprom(EE_test_loc_Mem); + 465 1 if(dat==test_loc) + 466 1 disp(0x11,0x05,0x1b,0x0c,0x0c,0x0e,0x05,0x05); //"SUCCESS" + 467 1 else + 468 1 { + 469 2 disp(0x11,0x11,0x0f,0x0a,0x01,0x16,0x11,0x11); //"Fail" + 470 2 //defaults(); + 471 2 } + 472 1 delay(500); + 473 1 //-------------------------------------------- + 474 1 //RTC test + 475 1 disp(0x11,0x11,0x13,0x14,0x0C,0x11,0x11,0x11); + 476 1 delay(500); + 477 1 dat=read_RTC(RTC_MEM_status); + 478 1 if(dat==test_loc) + 479 1 disp(0x11,0x05,0x1b,0x0c,0x0c,0x0e,0x05,0x05); //"SUCCESS" + 480 1 else + 481 1 { + 482 2 disp(0x11,0x11,0x0f,0x0a,0x01,0x16,0x11,0x11); //"Fail" + 483 2 //defaults(); + 484 2 } + 485 1 delay(500); + 486 1 //--------------------------------------------- + 487 1 //ADC test + 488 1 disp(0x11,0x11,0x0a,0x0d,0x0c,0x11,0x11,0x11); + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 9 + + 489 1 //delay(1000); + 490 1 aco=0; + 491 1 for(i=0;i<255;i++) + 492 1 { + 493 2 if(aco) + 494 2 { + 495 3 aco=0; + 496 3 aok=1; + 497 3 } + 498 2 delay(4); + 499 2 } + 500 1 if(aok) + 501 1 { + 502 2 disp(0x11,0x05,0x1b,0x0c,0x0c,0x0e,0x05,0x05); //"SUCCESS" + 503 2 adc_err=0; + 504 2 } + 505 1 else + 506 1 { + 507 2 disp(0x11,0x11,0x0f,0x0a,0x01,0x16,0x11,0x11); //"Fail" + 508 2 adc_err=1; + 509 2 } + 510 1 delay(500); + 511 1 } + 512 //======================================================================================= + 513 void disp_check(void) + 514 { + 515 1 char i; + 516 1 for(i=0;i<10;i++) + 517 1 { + 518 2 disp(i,i,i,i,i,i,i,i); + 519 2 delay(200); + 520 2 } + 521 1 } + 522 //====================================================================================== + 523 void defaults(void) + 524 { + 525 1 fillset=1000; + 526 1 //cf=800; + 527 1 //ffd=950; + 528 1 cf=200; + 529 1 ffd=50; + 530 1 nfl=0; + 531 1 zset=10; + 532 1 htar=100; + 533 1 ltar=0; + 534 1 ed=1; + 535 1 avg=9; + 536 1 avg_cnt=3*(10-avg); + 537 1 + 538 1 // cal_val=0x2710; + 539 1 + 540 1 //RCAP2L=clk_array[spd]; + 541 1 + 542 1 rng_val=1; //2 for 20 Kg,4 for 50 Kg. + 543 1 res=05; + 544 1 mas=1; + 545 1 ztc=1; + 546 1 dp_val=4; + 547 1 + 548 1 div_factor=rng_array[rng_val][0]; + 549 1 mul_factor=rng_array[rng_val][1]; + 550 1 //help_val=20090; + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 10 + + 551 1 help_val=(rng_array[rng_val][2] * 1000) + (res * 9); + 552 1 + 553 1 /*cfd1=cf; + 554 1 cfd2=cf; + 555 1 ffd=cf;*/ + 556 1 + 557 1 wait_val=3; + 558 1 drop_wait_val=2; + 559 1 on_time=30; + 560 1 } + 561 //======================================================================================= + 562 void load_eep_defaults(void) + 563 { + 564 1 unsigned char rcpe=0,dat=0x01; + 565 1 disp(0x0d,0x0e,0x0f,0x0a,0x1b,0x16,0x14,0x05); + 566 1 delay(3000); + 567 1 defaults(); + 568 1 disp(0x16,0x17,0x0a,0x0d,0x01,0x18,0x09,0x10); + 569 1 write_eeprom(EE_test_loc_Mem,test_loc); + 570 1 write_RTC(RTC_MEM_current_recipe,0x01); + 571 1 //------------------------------------------------------------- + 572 1 for(rcpe=1;rcpe<=36;rcpe++) + 573 1 { + 574 2 if(rcpe>0 && rcpe<=9) {EEPROM_block = Block_0; dat=rcpe;} + 575 2 else if(rcpe>9 && rcpe<=18) {EEPROM_block = Block_1; dat=(rcpe-9);} + 576 2 else if(rcpe>18 && rcpe<=27) {EEPROM_block = Block_2; dat=(rcpe-18);} + 577 2 else if(rcpe>27 && rcpe<=36) {EEPROM_block = Block_3; dat=(rcpe-27);} + 578 2 + 579 2 write_eeprom((0x10*dat),fillset / 0x100); + 580 2 write_eeprom((0x10*dat)+0x01,fillset % 0x100); + 581 2 write_eeprom((0x10*dat)+0x02,cf / 0x100); + 582 2 write_eeprom((0x10*dat)+0x03,cf % 0x100); + 583 2 write_eeprom((0x10*dat)+0x04,ffd / 0x100); + 584 2 write_eeprom((0x10*dat)+0x05,ffd % 0x100); + 585 2 write_eeprom((0x10*dat)+0x06,nfl / 0x100); + 586 2 write_eeprom((0x10*dat)+0x07,nfl % 0x100); + 587 2 write_eeprom((0x10*dat)+0x08,htar / 0x100); + 588 2 write_eeprom((0x10*dat)+0x09,htar % 0x100); + 589 2 write_eeprom((0x10*dat)+0x0A,ltar / 0x100); + 590 2 write_eeprom((0x10*dat)+0x0B,ltar % 0x100); + 591 2 write_eeprom((0x10*dat)+0x0C,0x01); + 592 2 blink(7,1); + 593 2 rst_wdt(); + 594 2 } + 595 1 //-------------------------------------------------------------------- + 596 1 EEPROM_block = Block_0; //following values store in first 16 bytes of block0 + 597 1 + 598 1 write_eeprom(EE_zset_Mem_MSB,zset / 0x100); + 599 1 write_eeprom(EE_zset_Mem_LSB,zset % 0x100); + 600 1 + 601 1 write_eeprom(EE_rng_val_Mem,rng_val); + 602 1 write_eeprom(EE_res_Mem,res); + 603 1 write_eeprom(EE_mas_Mem,mas); + 604 1 write_eeprom(EE_ztc_Mem,ztc); + 605 1 write_eeprom(EE_dp_val_mem,dp_val); + 606 1 write_eeprom(EE_avg_Mem,avg); + 607 1 + 608 1 // write_eeprom(EE_cal_val_Mem_MSB,0x27); + 609 1 // write_eeprom((EE_cal_val_Mem_LSB),0x10); + 610 1 + 611 1 write_eeprom(EE_wait_val_Mem,wait_val); + 612 1 write_eeprom(EE_drop_wait_val_Mem,drop_wait_val); + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 11 + + 613 1 write_eeprom(EE_on_time_Mem,on_time); + 614 1 //---------------------------------------------------------------- + 615 1 write_RTC(RTC_MEM_Auto_start_enable,0x00); //Auto start disable + 616 1 write_RTC(RTC_MEM_recipe_enable,0x00); //Recipe disable + 617 1 write_RTC(RTC_MEM_gross_weight_enable,0x00); //Gross weight display disable + 618 1 write_RTC(RTC_MEM_start_delay,0x37); //Auto start delay + 619 1 write_RTC(RTC_MEM_batch_set_enable,0x00);//Batch filling disabled + 620 1 write_RTC(RTC_MEM_status,test_loc); //RTC_memory status + 621 1 write_RTC(RTC_MEM_Instant_fill_enable,0x00);//Instant filling disabled + 622 1 //---------------------------------------------------------------- + 623 1 read_values(); + 624 1 clr_disp(); + 625 1 } + 626 //======================================================================================= + 627 void add_values(void) + 628 { + 629 1 add_adc = add_adc + adc_val; + 630 1 } + 631 //======================================================================================= + 632 void average(void) + 633 { + 634 1 filter_val = add_adc / avg_cnt; + 635 1 add_adc=0; + 636 1 } + 637 //======================================================================================= + 638 void filter(void) + 639 { + 640 1 unsigned char i; + 641 1 bit ave_ok=1; + 642 1 + 643 1 for(i=4;i>0;i--) prev_val[i]=prev_val[i-1]; + 644 1 prev_val[0]=filter_val; + 645 1 + 646 1 for(i=0;i<4;i++) + 647 1 { + 648 2 if(abs(prev_val[i] - prev_val[i+1]) > 5) ave_ok=0; + 649 2 } + 650 1 + 651 1 if(ave_ok) + 652 1 { + 653 2 temp=0; + 654 2 for(i=0;i<5;i++) temp = temp + (long int)prev_val[i]; + 655 2 temp = temp / 0x05; + 656 2 filter_val = (unsigned int)temp; + 657 2 } + 658 1 } + 659 //====================================================================================== + 660 void process(void) + 661 { + 662 1 /*temp=(unsigned long int)filter_val * (unsigned long int)mul_factor; + 663 1 temp=temp / (unsigned long int)div_factor; + 664 1 temp=temp/10; + 665 1 scale_val = (unsigned int)temp;*/ + 666 1 scale_val = filter_val; + 667 1 tare_chk(); + 668 1 rst_wdt(); + 669 1 zero_track(); + 670 1 if(!c_flag) + 671 1 { + 672 2 cal_find(); + 673 2 calibrate(); + 674 2 } + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 12 + + 675 1 if(disp_val > help_val && autotare) + 676 1 { + 677 2 dp_flag=0; + 678 2 rst_wdt(); + 679 2 help_flag=1; + 680 2 disp(0x11,0x11,0x15,0x0e,0x16,0x12,0x11,0x11); //"Help" + 681 2 blink(0,8); + 682 2 dp_flag=1; + 683 2 } + 684 1 else help_flag=0; + 685 1 + 686 1 if(adc_err) + 687 1 { + 688 2 dp_flag=0; + 689 2 rst_wdt(); + 690 2 help_flag=1; + 691 2 disp(0x11,0x0a,0x0d,0x0c,0x11,0x0e,0x13,0x13); //"ADC err" + 692 2 blink(0,8); + 693 2 dp_flag=1; + 694 2 } + 695 1 } + 696 //==================================================================================== + 697 void tare_chk(void) + 698 { + 699 1 if(tare_flag) //tare switch.. + 700 1 { + 701 2 tare_val=scale_val; + 702 2 tare_pol=adc_pol; + 703 2 if(++tare_cnt>3) + 704 2 { + 705 3 tare_flag=0; + 706 3 tare_cnt=0; + 707 3 } + 708 2 } + 709 1 + 710 1 // Deducting tare value. + 711 1 + 712 1 if(tare_pol != adc_pol) + 713 1 { + 714 2 disp_val = scale_val + tare_val; + 715 2 disp_pol = adc_pol; + 716 2 } + 717 1 else + 718 1 { + 719 2 if(scale_val > tare_val) + 720 2 { + 721 3 disp_pol = adc_pol; + 722 3 disp_val = scale_val - tare_val; + 723 3 } + 724 2 else + 725 2 { + 726 3 disp_pol = ~(adc_pol); + 727 3 disp_val = tare_val - scale_val; + 728 3 } + 729 2 } + 730 1 + 731 1 /* if(scale_val >= tare_val) + 732 1 { + 733 1 disp_pol = 1; + 734 1 disp_val = scale_val - tare_val; + 735 1 } + 736 1 else + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 13 + + 737 1 { + 738 1 disp_pol = 0; + 739 1 disp_val = tare_val - scale_val; + 740 1 }*/ + 741 1 + 742 1 } + 743 //================================================================================== + 744 void zero_track(void) + 745 { + 746 1 if(disp_val <= ztc) ztwc++; + 747 1 else ztwc = 0; + 748 1 + 749 1 if(ztwc > 3) + 750 1 { + 751 2 tare_val = scale_val; + 752 2 tare_pol = adc_pol; + 753 2 ztwc = 0; + 754 2 } + 755 1 } + 756 //================================================================================= + 757 void bin2bcd(unsigned int value,char no) + 758 { + 759 1 char i; // Converts a bin value to bcd & display. + 760 1 // char no determines how many digits to be + 761 1 for(i=7;i>=(8-no);i--) // displayed. + 762 1 { + 763 2 disp_data[i]=value % 10; + 764 2 value=value / 10; + 765 2 } + 766 1 display(); + 767 1 } + 768 //================================================================================= + 769 void display_value(void) + 770 { + 771 1 unsigned int value; + 772 1 char i; // Converts a bin value to bcd & display. + 773 1 // char no determines how many digits to be + 774 1 // displayed. + 775 1 //disp_val=(disp_val/res)*res; + 776 1 //value=disp_val; + 777 1 value=(disp_val/res)*res; + 778 1 for(i=7;i>=3;i--) + 779 1 { + 780 2 disp_data[i]=value % 10; + 781 2 value=value / 10; + 782 2 } + 783 1 + 784 1 if(disp_data[3]==0x00)disp_data[3]=0x11; + 785 1 if(disp_pol) disp_data[3]=0x10; //"-" sign + 786 1 + 787 1 disp_data[7] = (disp_data[7] / res) * res; + 788 1 + 789 1 if(disp_val <= (mas * res)) + 790 1 { + 791 2 disp_data[7]=0x00; + 792 2 disp_data[6]=0x00; + 793 2 disp_data[3]=0x11; + 794 2 disp_pol=0; + 795 2 } + 796 1 if(disp_val==0x00) + 797 1 { + 798 2 disp_data[0]=0x11; + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 14 + + 799 2 disp_data[1]=0x11; + 800 2 disp_data[2]=0x11; + 801 2 disp_data[3]=0x11; + 802 2 } + 803 1 + 804 1 if(cf1_flag) + 805 1 { + 806 2 disp_data[0]=0x0c; + 807 2 disp_data[1]=0x01; // Display "CF1". + 808 2 disp_data[2]=0x11; + 809 2 } + 810 1 else if(cf2_flag) + 811 1 { + 812 2 disp_data[0]=0x0c; + 813 2 disp_data[1]=0x02; // Display "CF2". + 814 2 disp_data[2]=0x11; + 815 2 } + 816 1 else if(ff_flag) + 817 1 { + 818 2 disp_data[0]=0x0f; + 819 2 disp_data[1]=0x0f; + 820 2 disp_data[2]=0x11; // Display "FF". + 821 2 } + 822 1 else if(start_wait_flag && !wa_flag) + 823 1 { + 824 2 disp_data[0]=0x0A; + 825 2 disp_data[1]=0x05; // Display "ast". + 826 2 disp_data[2]=0x14; + 827 2 } + 828 1 else if(wa_flag) + 829 1 { + 830 2 if(grwt && grwt_ok) //Gross weight display + 831 2 { + 832 3 disp_data[0]=0x19; + 833 3 disp_data[1]=0x1D; // Display "Gross weight". + 834 3 disp_data[2]=0x14; + 835 3 } + 836 2 else + 837 2 { + 838 3 disp_data[0]=0x05; + 839 3 disp_data[1]=0x0a; // Display "SA". + 840 3 disp_data[2]=0x11; + 841 3 } + 842 2 } + 843 1 else + 844 1 { + 845 2 if(!recipe) + 846 2 { + 847 3 disp_data[0]=0x13; + 848 3 disp_data[1]=0x0d; // Display "RDY". + 849 3 disp_data[2]=0x1c; + 850 3 } + 851 2 else + 852 2 { + 853 3 //disp_data[1]=function; // Display "F1 ~ F5". + 854 3 //disp_data[2]=0x11; + 855 3 if(function<=9) + 856 3 { + 857 4 disp_data[0]=0x0F; //Display "F" + 858 4 disp_data[1]=function % 10; + 859 4 //disp_data[0]=function / 10; + 860 4 disp_data[2]=0x11; + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 15 + + 861 4 } + 862 3 else + 863 3 { + 864 4 disp_data[1]=function % 10; + 865 4 disp_data[0]=function / 10; + 866 4 disp_data[2]=0x0F; //Display "F" + 867 4 //disp_data[2]=0x1E; //Display "=" + 868 4 } + 869 3 } + 870 2 } + 871 1 display(); + 872 1 } + 873 //========================================================================================== + 874 void check_keypad(void) // Keypad checking routine. + 875 { + 876 1 unsigned char sdat=0,b=0; + 877 1 //----------------------------------------------------------------------- + 878 1 #ifdef _6_key + if(!shift_flag && !set && !process_flag) // SET key for value entry. + #elif defined( _4x4_key ) + 881 1 if(!shift_flag && KeyPressed==set && !process_flag) + 882 1 #endif + 883 1 { // Asks password,go to appropriate routines + 884 2 dp_flag=0; // on entry of password. + 885 2 rst_wdt(); + 886 2 pwd(); + 887 2 rst_wdt(); + 888 2 arr_cpy(&temp_pwd[0],&disp_data[6],2); + 889 2 // arr_cpy(&temp_pwd[0],&disp_data[4],4); + 890 2 //if(arr_cmp(pswd1,temp_pwd,4)&& !recipe) menu(); //Pswd. 36 (if recipe disabled) + 891 2 #ifdef _6_key + if(arr_cmp(pswd1,temp_pwd,2))do{if(recipe)recipe_menu(); if(!mode){while(!mode){dp_flag=1;}return;} menu + -();if(!recipe)return;}while(mode); + #elif defined( _4x4_key ) + 894 2 // if(arr_cmp(pswd1,temp_pwd,2))do{if(recipe)recipe_menu(); if(KeyPressed==mode){while(KeyPressed==mode){ + -dp_flag=1;}return;} menu();if(!recipe)return;}while(KeyPressed!=mode); + 895 2 if(arr_cmp(pswd1,temp_pwd,2))do{if(recipe)recipe_menu(); if(KeyPressed==mode){while(KeyPressed==mode){ K + -eyPressed = 'X'; dp_flag=1;}return;} menu();if(!recipe)return;}while(KeyPressed!=mode); + 896 2 + 897 2 #endif + 898 2 else if(arr_cmp(pswd2,temp_pwd,2)) cal(); //Pswd. 63 + 899 2 // else if(arr_cmp(pswd3,temp_pwd,2)) cal_rst(); //Pswd. 19 + 900 2 // else if(arr_cmp(pswd3,temp_pwd,2)) memory_backup_restore(); //Pswd. 19 + 901 2 else if(arr_cmp(pswd4,temp_pwd,2)) settings(); //Pswd. 91 + 902 2 else if(arr_cmp(pswd5,temp_pwd,2)) sys_paramts(); //Pswd. 28 + 903 2 else if(arr_cmp(pswd6,temp_pwd,2)) load_eep_defaults(); //Pswd. 82 + 904 2 else if(arr_cmp(pswd7,temp_pwd,2)) select_menu(); //Pswd. 55 + - + 905 2 else if(arr_cmp(pswd8,temp_pwd,2)) display_total_cumulative(); //Pswd. 11 + 906 2 else if(arr_cmp(pswd9,temp_pwd,2)) display_current_batch(); //Pswd. 22 + 907 2 else if(arr_cmp(pswd10,temp_pwd,2)) clear_current_cumulative_batch(); //Pswd. 77 + 908 2 else if(arr_cmp(pswd11,temp_pwd,2)) display_current_cumulative(); //Pswd. 66 + 909 2 else if(arr_cmp(pswd12,temp_pwd,2)) clear_batch_cumulative(); //Pswd. 33 + 910 2 else if(arr_cmp(pswd13,temp_pwd,2)) display_total_batch(); //Pswd. 44 + 911 2 else if(arr_cmp(pass_F1,temp_pwd,2)){if(recipe){write_RTC(RTC_MEM_current_recipe,0x01); menu();}} //P + -swd. 10 + 912 2 else if(arr_cmp(pass_F2,temp_pwd,2)){if(recipe){write_RTC(RTC_MEM_current_recipe,0x02); menu();}} //P + -swd. 20 + 913 2 else if(arr_cmp(pass_F3,temp_pwd,2)){if(recipe){write_RTC(RTC_MEM_current_recipe,0x03); menu();}} //P + -swd. 30 + 914 2 else if(arr_cmp(pass_F4,temp_pwd,2)){if(recipe){write_RTC(RTC_MEM_current_recipe,0x04); menu();}} //P + -swd. 40 + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 16 + + 915 2 else if(arr_cmp(pass_F5,temp_pwd,2)){if(recipe){write_RTC(RTC_MEM_current_recipe,0x05); menu();}} //P + -swd. 50 + 916 2 else if(arr_cmp(pass_F6,temp_pwd,2)){if(recipe){write_RTC(RTC_MEM_current_recipe,0x06); menu();}} //P + -swd. 60 + 917 2 else if(arr_cmp(pass_F7,temp_pwd,2)){if(recipe){write_RTC(RTC_MEM_current_recipe,0x07); menu();}} //P + -swd. 70 + 918 2 else if(arr_cmp(pass_F8,temp_pwd,2)){if(recipe){write_RTC(RTC_MEM_current_recipe,0x08); menu();}} //P + -swd. 80 + 919 2 else if(arr_cmp(pass_F9,temp_pwd,2)){if(recipe){write_RTC(RTC_MEM_current_recipe,0x09); menu();}} //P + -swd. 90 + 920 2 else if(arr_cmp(pass_F10,temp_pwd,2)){if(recipe){write_RTC(RTC_MEM_current_recipe,0x0A); menu();}} //Ps + -wd. 99 + 921 2 + 922 2 else disp(0x11,0x11,0x0e,0x13,0x13,0x17,0x13,0x11); //"error" + 923 2 delay(1000); // Don't check for SET & TARE sw while in start + 924 2 clr_disp(); // mode. + 925 2 dp_flag=1; + 926 2 } + 927 1 rst_wdt(); + 928 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 929 1 //tare switch pressed + 930 1 #ifdef _6_key + if(!tare && !process_flag) + #elif defined( _4x4_key ) + 933 1 if(KeyPressed == tare && !process_flag) + 934 1 #endif + 935 1 { + 936 2 disp(0x11,0x11,0x11,0x10,0x10,0x10,0x10,0x10); //"-----" + 937 2 #ifdef _6_key + while(!tare) {delay(2);} + #elif defined( _4x4_key )// {delay(2);} + 940 2 while(KeyPressed == tare) {delay(2);} + 941 2 #endif + 942 2 tare_flag=1; + 943 2 } + 944 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 945 1 //Instant fillset direct entry option + 946 1 #ifdef _6_key + if(!shift_flag && !decr && !process_flag) //fillset direct entry + #elif defined( _4x4_key ) + 949 1 if(!shift_flag && KeyPressed == decr && !process_flag) + 950 1 #endif + 951 1 { + 952 2 shift_flag=0; + 953 2 if(Instant_fill_enable) + 954 2 { + 955 3 disp(0x0F,0x01,0x16,0x00,0x00,0x00,0x00,0x00); + 956 3 bin2bcd(fillset,5); // Fill set + 957 3 delay(500); + 958 3 val_read(5); + 959 3 temp=bcd2bin(5); + 960 3 //if(t<=15000) + 961 3 if(temp > (rng_array[rng_val][2] * 1000) ) + 962 3 { + 963 4 disp(0x11,0x11,0x0e,0x13,0x13,0x17,0x13,0x11); + 964 4 delay(1000); + 965 4 clr_disp(); + 966 4 } + 967 3 else + 968 3 { + 969 4 start_status=0; //TO STOP AUTO START AND TO READ FULL VALUR FROM EEPROM + 970 4 fillset=(temp/res)*res; + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 17 + + 971 4 write_RTC(RTC_fillset_MSB,fillset/0x100); + 972 4 write_RTC(RTC_fillset_LSB,fillset%0x100); + 973 4 } + 974 3 } + 975 2 } + 976 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 977 1 //shift key pressed and press "set" or "enter" or "dec" key for short cut + 978 1 #ifdef _6_key + if(!incr && !process_flag && !shift_flag) + #elif defined( _4x4_key ) + 981 1 if(KeyPressed == incr && !process_flag && !shift_flag) + 982 1 #endif + 983 1 { + 984 2 shift_flag=1; + 985 2 #ifdef _6_key + while(!incr) + #elif defined( _4x4_key ) + 988 2 while(KeyPressed == incr) + 989 2 #endif + 990 2 {delay(2);} + 991 2 } + 992 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 993 1 //Shift and set key for Set fill parameters. + 994 1 #ifdef _6_key + if(shift_flag && !set && !process_flag) + #elif defined( _4x4_key ) + 997 1 if(shift_flag && KeyPressed == set && !process_flag) + 998 1 #endif + 999 1 { +1000 2 #ifdef _6_key + while(!set) + #elif defined( _4x4_key ) +1003 2 while(KeyPressed == set) +1004 2 #endif +1005 2 {delay(2);} +1006 2 shift_flag=0; +1007 2 sys_paramts(); +1008 2 } +1009 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +1010 1 //Set batch count to be filled. shift and enter +1011 1 #ifdef _6_key + if(shift_flag && !enter && !process_flag && bset_enable) + #elif defined( _4x4_key ) +1014 1 if(shift_flag && KeyPressed == enter && !process_flag && bset_enable) +1015 1 #endif +1016 1 { +1017 2 shift_flag=0; +1018 2 dp_flag=0; +1019 2 disp(0x0B,0x05,0x0E,0x14,0x11,0x11,0x11,0x11); //"bset" +1020 2 bset=read_RTC(RTC_MEM_batch_set_MSB)*0x100 + read_RTC(RTC_MEM_batch_set_LSB); +1021 2 bin2bcd(bset,4); +1022 2 delay(500); +1023 2 val_read(4); +1024 2 bset = bcd2bin(4); +1025 2 +1026 2 #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) +1029 2 if(KeyPressed == mode) return; +1030 2 #endif +1031 2 +1032 2 #ifdef _6_key + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 18 + + if(set) + #elif defined( _4x4_key ) +1035 2 if(KeyPressed == enter) +1036 2 //if(KeyPressed != set) +1037 2 #endif +1038 2 { +1039 3 write_RTC(RTC_MEM_batch_set_MSB,bset / 0x100); //bset value fixed memory +1040 3 write_RTC(RTC_MEM_batch_set_LSB,bset % 0x100); +1041 3 +1042 3 write_RTC(RTC_MEM_batch_set_count_MSB,bset / 0x100); //count down bset memory +1043 3 write_RTC(RTC_MEM_batch_set_count_LSB,bset % 0x100); +1044 3 } +1045 2 dp_flag=1; +1046 2 #ifdef _6_key + while(!enter) + #elif defined( _4x4_key ) +1049 2 while(KeyPressed == enter) +1050 2 #endif +1051 2 {delay(2);} +1052 2 } +1053 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +1054 1 //Recipe selection. Only mode key press +1055 1 #ifdef _6_key + //if(!mode && !process_flag && recipe) + if(!mode && !process_flag && recipe && !start_status) + #elif defined( _4x4_key ) +1059 1 //if(KeyPressed == mode && !process_flag && recipe) +1060 1 if(KeyPressed == mode && !process_flag && recipe && !start_status) +1061 1 #endif +1062 1 { +1063 2 rtn: +1064 2 function = read_RTC(RTC_MEM_current_recipe); +1065 2 shift_flag=0; +1066 2 if(function<1)function=1; +1067 2 disp(function/10,function%10,0x0F,0x11,0x11,0x11,0x11,0x11); +1068 2 //disp(function/10,function%10,0x1E,0x11,0x11,0x11,0x11,0x11); //"01=" +1069 2 delay(500); +1070 2 b=1; +1071 2 //b=0; +1072 2 dp_flag=1; +1073 2 #ifdef _6_key + while(enter && set) + #elif defined( _4x4_key ) +1076 2 while(KeyPressed != enter && KeyPressed != set) +1077 2 #endif +1078 2 { +1079 3 //blink(1,2); +1080 3 //disp_data[1]=incdec(disp_data[1],5,1); +1081 3 blink(b,1); +1082 3 disp_data[b]=incdec(disp_data[b],9,0); +1083 3 //dat = (char)bcd2bin(2); +1084 3 //sdat = ((disp_data[1] & 0x0F) << 4 ) + (disp_data[2] & 0x0F); +1085 3 sdat = ((disp_data[0] & 0x0F) << 4 ) + (disp_data[1] & 0x0F); +1086 3 sdat = bcd2int(sdat); +1087 3 +1088 3 #ifdef _6_key + if(!tare) + #elif defined( _4x4_key ) +1091 3 if(('S' == KeyPressed) || (KeyPressed == tare)) +1092 3 #endif +1093 3 { // blinking digit to right. +1094 4 b++; + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 19 + +1095 4 //if(b>7) b=8-2; +1096 4 //if(b>2) b=1; +1097 4 if(b>1) b=0; +1098 4 #ifdef _4x4_key +1099 4 KeyPressed = 'X'; //clear keyPressed +1100 4 #endif +1101 4 } +1102 3 #ifdef _4x4_key +1103 3 //if(sdat > 36){disp(0x11,0x0e,0x13,0x13,0x17,0x13,0x11,0x11);delay(500);sdat=1;goto rtn;} +1104 3 if(sdat > 36){disp(0x11,0x0e,0x13,0x13,0x17,0x13,0x11,0x11);delay(500);sdat=36;} //"error" +1105 3 #endif +1106 3 delay(100); +1107 3 if(sdat>0 && sdat<=9) +1108 3 {EEPROM_block = Block_0;fillset=read_eeprom((0x10*sdat)) *0x100 + read_eeprom((0x10*sdat)+0x01);} +1109 3 else if(sdat>9 && sdat<=18) +1110 3 {EEPROM_block = Block_1;fillset=read_eeprom(0x10*(sdat-9)) *0x100 + read_eeprom((0x10*(sdat-9))+0x + -01);} +1111 3 else if(sdat>18 && sdat<=27) +1112 3 {EEPROM_block = Block_2;fillset=read_eeprom(0x10*(sdat-18)) *0x100 + read_eeprom((0x10*(sdat-18))+ + -0x01);} +1113 3 else if(sdat>27 && sdat<=36) +1114 3 {EEPROM_block = Block_3;fillset=read_eeprom(0x10*(sdat-27)) *0x100 + read_eeprom((0x10*(sdat-27))+ + -0x01);} +1115 3 bin2bcd(fillset,5); // display selected receipe Fill set +1116 3 } +1117 2 #ifdef _6_key + if(!enter) + #elif defined( _4x4_key ) +1120 2 if(KeyPressed == enter) +1121 2 #endif +1122 2 { +1123 3 if(sdat>36 || sdat<1) +1124 3 { +1125 4 disp(0x11,0x0e,0x13,0x13,0x17,0x13,0x11,0x11); //"error" +1126 4 delay(500); +1127 4 sdat = 36; +1128 4 goto rtn; +1129 4 } +1130 3 else +1131 3 { +1132 4 write_RTC(RTC_MEM_current_recipe,(sdat*0x01)); +1133 4 function = read_RTC(RTC_MEM_current_recipe); +1134 4 read_values(); +1135 4 delay(500); +1136 4 } +1137 3 } +1138 2 #ifdef _6_key + while(!enter) + #elif defined( _4x4_key ) +1141 2 while(KeyPressed == enter) +1142 2 #endif +1143 2 {delay(2);} +1144 2 } +1145 1 //------------------------------------------------- +1146 1 // display batch_count left to be filled +1147 1 #ifdef _6_key + if(shift_flag && !decr && !process_flag && bset_enable) + #elif defined( _4x4_key ) +1150 1 if(shift_flag && KeyPressed == decr && !process_flag && bset_enable) +1151 1 #endif +1152 1 { +1153 2 dp_flag=0; + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 20 + +1154 2 batch_count=read_RTC(RTC_MEM_batch_set_count_MSB)*0x100 + read_RTC(RTC_MEM_batch_set_count_LSB); +1155 2 disp(0x0B,0x0C,0x18,0x14,0x11,0x11,0x11,0x11); //"bcnt" +1156 2 bin2bcd(batch_count,4); +1157 2 delay(3000); +1158 2 dp_flag=1; +1159 2 } +1160 1 //------------------------------------------------- +1161 1 // display current batch number filled +1162 1 #ifdef _6_key + if(!shift_flag && !decr && !process_flag && !Instant_fill_enable && bset_enable) + #elif defined( _4x4_key ) +1165 1 if(!shift_flag && KeyPressed == decr && !process_flag && !Instant_fill_enable && bset_enable) +1166 1 #endif +1167 1 { +1168 2 display_current_batch(); +1169 2 } +1170 1 } +1171 //======================================================================================================== + -====== +1172 void check_switch(void) +1173 { +1174 1 unsigned char dat=0,stop=0; +1175 1 +1176 1 if(set_enter_flag){read_values(); set_enter_flag=0;} //If entered any settings read all values +1177 1 bgn: +1178 1 //if(start_flag) // if filling or auto start +1179 1 #ifdef _6_key + if((start_flag || start_status) && (!mode)) + #elif defined( _4x4_key ) +1182 1 if((start_flag || start_status) && (KeyPressed==mode)) +1183 1 #endif +1184 1 { +1185 2 hold_counter++; +1186 2 +1187 2 if (hold_counter >= 1200) +1188 2 { +1189 3 +1190 3 dp_flag=0; +1191 3 disp(0x0A,0x0B,0x17,0x13,0x14,0x11,0x11,0x11); // "Abort" +1192 3 ff=0; +1193 3 cf1=0; +1194 3 cf2=0; +1195 3 waled=0; +1196 3 cf1_flag=0; +1197 3 cf2_flag=0; +1198 3 ff_flag=0; +1199 3 wa_flag=0; +1200 3 start_flag=0; +1201 3 drop_flag=0; +1202 3 tare_val=temp_tare; +1203 3 +1204 3 avg_cnt=3*(10-avg); +1205 3 add_cnt=0; +1206 3 add_adc=0; +1207 3 +1208 3 process_flag=0; +1209 3 //write_RTC(RTC_MEM_start_status,0x00); //pause auto start +1210 3 start_status=0; +1211 3 disp(0x0A,0x0B,0x17,0x13,0x14,0x0E,0x0D,0x11); // "Aborted" +1212 3 delay(2000); +1213 3 dp_flag=1; +1214 3 + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 21 + +1215 3 +1216 3 while (Read_Keypad() == mode); +1217 3 hold_counter = 0; // Reset counter for next press +1218 3 } +1219 2 +1220 2 } +1221 1 else // if not filling +1222 1 { +1223 2 hold_counter = 0; +1224 2 +1225 2 +1226 2 // Manual start Only first time after power on in auto mode +1227 2 //if(auto_start && !process_flag &&(read_RTC(RTC_MEM_start_status)==0x00)) +1228 2 if(auto_start && !process_flag && !start_status) +1229 2 { +1230 3 //dp_flag=0; +1231 3 //disp(0x11,0x05,0x14,0x0A,0x13,0x14,0x11,0x11); //start +1232 3 //blink(0,8); +1233 3 start_wait_flag=1; +1234 3 if(!start) // if start button pressed +1235 3 { +1236 4 read_values(); +1237 4 //start_wait_flag=0; +1238 4 if(bset_enable) {batch_count=read_RTC(RTC_MEM_batch_set_count_MSB)*0x100 + read_RTC(RTC_MEM_batch_ + -set_count_LSB);} +1239 4 +1240 4 if(batch_count<1 && bset_enable) +1241 4 { +1242 5 //disp(0x0B,0x0A,0x14,0x0C,0x15,0x11,0x17,0x13); // batch over +1243 5 disp(0x0B,0x11,0x11,0x0e,0x13,0x13,0x11,0x11); //b err +1244 5 delay(1000); +1245 5 return; +1246 5 } +1247 4 //else if(batch_count>0 && bset_enable) start_wait_flag=0; +1248 4 //write_RTC(RTC_MEM_start_status,0x01); +1249 4 start_wait_flag=0; +1250 4 start_status=1; +1251 4 goto srt; +1252 4 } +1253 3 } +1254 2 // continuous auto start(filling) in auto mode if started +1255 2 //if(auto_start && !process_flag && (read_RTC(RTC_MEM_start_status) == 0x01)) +1256 2 if(auto_start && !process_flag && start_status) +1257 2 { +1258 3 if((disp_val <= htar && disp_val >= ltar) && !disp_pol) +1259 3 { +1260 4 if(start_count == 0) start_disp = disp_val; +1261 4 if(start_disp == disp_val)start_count++; +1262 4 else start_count = 0; +1263 4 if(start_count >= start_delay*4) +1264 4 { +1265 5 start_count = 0; +1266 5 goto srt; +1267 5 } +1268 4 } +1269 3 } +1270 2 //Manual start +1271 2 if(!start && !process_flag && !disp_pol) // Checking of Start button. +1272 2 { +1273 3 read_values(); +1274 3 if(bset_enable) {batch_count=read_RTC(RTC_MEM_batch_set_count_MSB)*0x100 + read_RTC(RTC_MEM_batch_set_c + -ount_LSB);} + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 22 + +1275 3 +1276 3 if(batch_count<1 && bset_enable) +1277 3 { +1278 4 //disp(0x0B,0x0A,0x14,0x0C,0x15,0x11,0x17,0x13); // batch over +1279 4 disp(0x0B,0x11,0x11,0x0e,0x13,0x13,0x11,0x11); //b err +1280 4 delay(1000); +1281 4 return; +1282 4 } +1283 3 //srt: if(cf>=fillset || ffd>=fillset || nfl>=(fillset-ffd) || zset>=fillset || ltar>=htar) +1284 3 //srt:if(cf>=fillset || ffd>=cf || nfl>=ffd || zset>=fillset || ltar>=htar) +1285 3 srt:if(ffd>=fillset || nfl>=ffd || zset>=fillset || ltar>=htar) +1286 3 { +1287 4 rst_wdt(); +1288 4 dp_flag=0; +1289 4 disp(0x05,0x0e,0x14,0x11,0x0e,0x13,0x13,0x11); +1290 4 delay(500); +1291 4 dp_flag=1; +1292 4 //write_RTC(RTC_MEM_start_status,0x00);// Error in setting pause auto start +1293 4 start_status=0; +1294 4 goto bgn; +1295 4 } +1296 3 else +1297 3 { +1298 4 if(ed && (disp_val <= htar && disp_val >= ltar) && !disp_pol) +1299 4 { +1300 5 fill_start=1; // Condition for filling to be started. +1301 5 temp_tare=tare_val; // If in tare enable mode, store current +1302 5 tare_val=scale_val; // tare value in a temp loc and tare +1303 5 } // the display value. +1304 4 else if(!ed && !disp_pol) +1305 4 { +1306 5 fill_start=1; +1307 5 temp_tare=tare_val; +1308 5 } +1309 4 else fill_start=0; +1310 4 +1311 4 process(); //To calculate scale value using new tare value +1312 4 +1313 4 if(fill_start) +1314 4 { +1315 5 fill_start=0; +1316 5 start_flag=1; +1317 5 process_flag=1; +1318 5 delay(100); +1319 5 ff=1; +1320 5 delay(50); +1321 5 cf2=1; // Filling started.,CF1,CF2,FF all ON. +1322 5 delay(50); +1323 5 cf1=1; +1324 5 cf1_flag=1; +1325 5 cf2_flag=1; +1326 5 ff_flag=1; +1327 5 +1328 5 avg_cnt=1*(10-avg); +1329 5 add_cnt=0; // No averaging, since in course feed. +1330 5 add_adc=0; +1331 5 } +1332 4 else +1333 4 { +1334 5 dp_flag=0; +1335 5 disp(0x14,0x0a,0x13,0x0e,0x11,0x0e,0x13,0x13); +1336 5 delay(500); // Display tare error. + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 23 + +1337 5 dp_flag=1; +1338 5 } +1339 4 } +1340 3 } +1341 2 } +1342 1 } +1343 //======================================================================================= +1344 void check_values(void) +1345 { +1346 1 if(process_flag) +1347 1 { +1348 2 if(start_flag && !drop_flag && !disp_pol) +1349 2 { +1350 3 if(disp_val >= cfd1) //CF2 condition.(CF2 & FF ON, CF1 OFF) +1351 3 { +1352 4 cf1=0; // normal operation +1353 4 /*if(cf1_flag) +1354 4 { +1355 4 ff=0; +1356 4 }*/ +1357 4 cf1_flag=0; +1358 4 } +1359 3 if(disp_val >= cfd2) +1360 3 { // FF condition.(FF ON, CF1 & CF2 OFF) +1361 4 if(cf2_flag) +1362 4 { +1363 5 //avg_cnt=2*(10-avg); +1364 5 avg_cnt=1*(10-avg); +1365 5 add_cnt=0; // In FF 2 count averaging. +1366 5 add_adc=0; +1367 5 //ff=1; +1368 5 } +1369 4 cf1=0; +1370 4 cf2=0; // normal operation +1371 4 cf2_flag=0; +1372 4 } +1373 3 if((disp_val + nfl) >= fillset) +1374 3 { +1375 4 ff=0; +1376 4 wait_flag=1; +1377 4 } // Final value is reached.but, +1378 3 } +1379 2 +1380 2 if(wait_flag) // should wait for some time +1381 2 { // for liquid to be settled. +1382 3 wait_ctr++; +1383 3 //delay(10); //if necessary enable +1384 3 //if(wait_ctr >= wait_val*10) +1385 3 if(wait_ctr >= wait_val*100) +1386 3 { +1387 4 wait_ctr=0; +1388 4 drop_flag=1; +1389 4 wait_flag=0; +1390 4 } +1391 3 } +1392 2 +1393 2 if(drop_flag && !disp_pol) +1394 2 { +1395 3 /*if(disp_val < cfd2) // After waiting time if value is +1396 3 { // less than CF2 value,Turn ON CF2. +1397 3 cf1=0; +1398 3 cf1_flag=0; + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 24 + +1399 3 cf2=1; +1400 3 cf2_flag=1; +1401 3 ff=1; +1402 3 ff_flag=1; +1403 3 drop_flag=0; +1404 3 } */ +1405 3 if((disp_val + nfl) < fillset) // After waiting time if value is +1406 3 { // less than FF value,Turn ON FF. +1407 4 ff=1; +1408 4 drop_flag=0; +1409 4 } +1410 3 else if(disp_val < fillset) +1411 3 { +1412 4 drop_ctr++; +1413 4 //if(drop_ctr >= drop_wait_val) +1414 4 if(drop_ctr >= drop_wait_val*100) +1415 4 { +1416 5 drop_ctr=0; // Else, +1417 5 ff=1; // Final stage of filling. +1418 5 delay(on_time); // Proceeds drop by drop for accuracy. +1419 5 ff=0; +1420 5 } +1421 4 } +1422 3 else +1423 3 { +1424 4 waled=1; +1425 4 wa_flag=1; // Weight is acheived. +1426 4 start_flag=0; +1427 4 drop_ctr=0; +1428 4 drop_flag=0; +1429 4 cf1=0; +1430 4 cf1_flag=0; +1431 4 cf2=0; +1432 4 cf2_flag=0; +1433 4 ff=0; +1434 4 ff_flag=0; +1435 4 wait_ctr=0; +1436 4 wait_flag=0; +1437 4 +1438 4 avg_cnt=3*(10-avg); +1439 4 add_cnt=0; +1440 4 add_adc=0; +1441 4 //------------------------batch set-------------------------------------------------------------- +1442 4 batch_count=read_RTC(RTC_MEM_batch_set_count_MSB)*0x100 + read_RTC(RTC_MEM_batch_set_count_LSB); +1443 4 batch_count--; +1444 4 write_RTC(RTC_MEM_batch_set_count_MSB,batch_count / 0x100); +1445 4 write_RTC(RTC_MEM_batch_set_count_LSB,batch_count % 0x100); +1446 4 //------------------------------------------------------------------------------------------------ +1447 4 if(function == 1) +1448 4 { +1449 5 cumulative = RTC_Readlong(RTC_MEM_F1_cumulative); +1450 5 cumulative = cumulative + (unsigned long)((disp_val/res)*res); +1451 5 if(cumulative > 99999999) cumulative = 0; +1452 5 //if(cumulative > 0x5F5E0FF) cumulative = 0x00000000; +1453 5 RTC_Writelong(RTC_MEM_F1_cumulative,cumulative); +1454 5 +1455 5 batch=read_RTC(RTC_MEM_F1_batch_MSB)*0x100 + read_RTC(0x11); +1456 5 batch = batch + 1; +1457 5 write_RTC(RTC_MEM_F1_batch_MSB,batch / 0x100); +1458 5 write_RTC(RTC_MEM_F1_batch_LSB,batch % 0x100); +1459 5 } +1460 4 else if(function == 2) + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 25 + +1461 4 { +1462 5 cumulative = RTC_Readlong(RTC_MEM_F2_cumulative); +1463 5 cumulative = cumulative + (unsigned long)((disp_val/res)*res); +1464 5 if(cumulative > 99999999) cumulative = 0; +1465 5 //if(cumulative > 0x5F5E0FF) cumulative = 0x00000000; +1466 5 RTC_Writelong(RTC_MEM_F2_cumulative,cumulative); +1467 5 +1468 5 batch=read_RTC(RTC_MEM_F2_batch_MSB)*0x100 + read_RTC(RTC_MEM_F2_batch_LSB); +1469 5 batch = batch + 1; +1470 5 write_RTC(RTC_MEM_F2_batch_MSB,batch / 0x100); +1471 5 write_RTC(RTC_MEM_F2_batch_LSB,batch % 0x100); +1472 5 } +1473 4 else if(function == 3) +1474 4 { +1475 5 cumulative = RTC_Readlong(RTC_MEM_F3_cumulative); +1476 5 cumulative = cumulative + (unsigned long)((disp_val/res)*res); +1477 5 if(cumulative > 99999999) cumulative = 0; +1478 5 //if(cumulative > 0x5F5E0FF) cumulative = 0x00000000; +1479 5 RTC_Writelong(RTC_MEM_F3_cumulative,cumulative); +1480 5 +1481 5 batch=read_RTC(RTC_MEM_F3_batch_MSB)*0x100 + read_RTC(RTC_MEM_F3_batch_LSB); +1482 5 batch = batch + 1; +1483 5 write_RTC(RTC_MEM_F3_batch_MSB,batch / 0x100); +1484 5 write_RTC(RTC_MEM_F3_batch_LSB,batch % 0x100); +1485 5 } +1486 4 else if(function == 4) +1487 4 { +1488 5 cumulative = RTC_Readlong(RTC_MEM_F4_cumulative); +1489 5 cumulative = cumulative + (unsigned long)((disp_val/res)*res); +1490 5 if(cumulative > 99999999) cumulative = 0; +1491 5 //if(cumulative > 0x5F5E0FF) cumulative = 0x00000000; +1492 5 RTC_Writelong(RTC_MEM_F4_cumulative,cumulative); +1493 5 +1494 5 batch=read_RTC(RTC_MEM_F4_batch_MSB)*0x100 + read_RTC(RTC_MEM_F4_batch_LSB); +1495 5 batch = batch + 1; +1496 5 write_RTC(RTC_MEM_F4_batch_MSB,batch / 0x100); +1497 5 write_RTC(RTC_MEM_F4_batch_LSB,batch % 0x100); +1498 5 } +1499 4 else if(function == 5) +1500 4 { +1501 5 cumulative = RTC_Readlong(RTC_MEM_F5_cumulative); +1502 5 cumulative = cumulative + (unsigned long)((disp_val/res)*res); +1503 5 if(cumulative > 99999999) cumulative = 0; +1504 5 //if(cumulative > 0x5F5E0FF) cumulative = 0x00000000; +1505 5 RTC_Writelong(RTC_MEM_F5_cumulative,cumulative); +1506 5 +1507 5 batch=read_RTC(RTC_MEM_F5_batch_MSB)*0x100 + read_RTC(RTC_MEM_F5_batch_LSB); +1508 5 batch = batch + 1; +1509 5 write_RTC(RTC_MEM_F5_batch_MSB,batch / 0x100); +1510 5 write_RTC(RTC_MEM_F5_batch_LSB,batch % 0x100); +1511 5 } +1512 4 else if((function >= 6)&& (function <= 36)) +1513 4 { +1514 5 cumulative = RTC_Readlong(RTC_MEM_F6_TO_F36_cumulative); +1515 5 cumulative = cumulative + (unsigned long)((disp_val/res)*res); +1516 5 if(cumulative > 99999999) cumulative = 0; +1517 5 //if(cumulative > 0x5F5E0FF) cumulative = 0x00000000; +1518 5 RTC_Writelong(RTC_MEM_F6_TO_F36_cumulative,cumulative); +1519 5 +1520 5 batch=read_RTC(RTC_MEM_F6_TO_F36_batch_MSB)*0x100 + read_RTC(RTC_MEM_F6_TO_F36_batch_LSB); +1521 5 batch = batch + 1; +1522 5 write_RTC(RTC_MEM_F6_TO_F36_batch_MSB,batch / 0x100); + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 26 + +1523 5 write_RTC(RTC_MEM_F6_TO_F36_batch_LSB,batch % 0x100); +1524 5 } +1525 4 } +1526 3 } +1527 2 //----------------------------------------------------- +1528 2 if(wa_flag && grwt && !grwt_ok) // should wait for some time +1529 2 { // before gross weight display. +1530 3 wait_ctr++; +1531 3 if(wait_ctr >= wait_val*60) +1532 3 { +1533 4 grwt_ok=1; +1534 4 tare_val=temp_tare; +1535 4 wait_ctr=0; +1536 4 } +1537 3 } +1538 2 //------------------------------------------------------------- +1539 2 if(batch_count<1 && bset_enable && wa_flag) //Batch over if batch set enabled +1540 2 { +1541 3 if(grwt && grwt_ok)wait_ctr++; +1542 3 else if(!grwt && !grwt_ok)wait_ctr++; +1543 3 if(wait_ctr >= wait_val*50) +1544 3 { +1545 4 wait_ctr=0; +1546 4 dp_flag=0; +1547 4 //disp(0x0B,0x0A,0x14,0x0C,0x15,0x11,0x17,0x13); // batch over +1548 4 disp(0x0B,0x11,0x11,0x0e,0x13,0x13,0x11,0x11); //b err +1549 4 //write_RTC(RTC_MEM_start_status,0x00); //pause auto start when batch over +1550 4 start_status=0; +1551 4 +1552 4 #ifdef _6_key + while(enter) + #elif defined( _4x4_key ) +1555 4 while(KeyPressed != enter) +1556 4 #endif +1557 4 {delay(20); dp_flag=1;} +1558 4 } +1559 3 } +1560 2 //------------------------------------------------------------- +1561 2 // Can Removed. Resetting for next filling +1562 2 if(((disp_val <= zset) || disp_pol) && wa_flag) +1563 2 { +1564 3 waled=0; +1565 3 wa_flag=0; +1566 3 tare_val=temp_tare; +1567 3 avg_cnt=3*(10-avg); +1568 3 +1569 3 add_cnt=0; +1570 3 add_adc=0; +1571 3 process_flag=0; +1572 3 grwt_ok=0; +1573 3 } +1574 2 } +1575 1 } +1576 //======================================================================================= +1577 void pwd(void) +1578 { +1579 1 unsigned char b=6; +1580 1 //unsigned char b=4; +1581 1 KeyPressed = 'X'; +1582 1 disp(0x0c,0x17,0x0d,0x0e,0x11,0x11,0x00,0x00); +1583 1 //disp(0x0c,0x17,0x0d,0x0e,0x00,0x00,0x00,0x00); +1584 1 rst_wdt(); + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 27 + +1585 1 #ifdef _6_key + while(enter) // will overloop to back on reaching max. + #elif defined( _4x4_key ) +1588 1 while(KeyPressed != enter) +1589 1 #endif +1590 1 { +1591 2 blink(b,1); +1592 2 disp_data[b]=incdec(disp_data[b],9,0); +1593 2 #ifdef _6_key + if(!tare) // shift key is also checked which shifts + #elif defined( _4x4_key ) +1596 2 if(('S' == KeyPressed)||(KeyPressed == tare)) // blinking digit to right. +1597 2 #endif +1598 2 { +1599 3 b++; +1600 3 if(b>7)b=6; +1601 3 //if(b>7) b=4; +1602 3 #ifdef _4x4_key +1603 3 KeyPressed = 'X'; +1604 3 #endif +1605 3 } +1606 2 /*if(KeyPressed == left) +1607 2 { +1608 2 b--; +1609 2 if(b<4) b=7; +1610 2 KeyPressed = 'X'; //clear keyPressed +1611 2 }*/ +1612 2 } +1613 1 #ifdef _6_key + while(!enter) + #elif defined( _4x4_key ) +1616 1 while(KeyPressed == enter) +1617 1 #endif +1618 1 {delay(2);} +1619 1 } +1620 //============================================================================================= +1621 void val_read(char a) // Will read value which is entered. +1622 { +1623 1 unsigned char b; // Up to 'char a' characters from max to +1624 1 b=8-a; // back are read one by one. +1625 1 // current entry char will blink. +1626 1 #ifdef _6_key + while(enter && set && mode) // will overloop to back on reaching max. + #elif defined( _4x4_key ) +1629 1 while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) +1630 1 #endif +1631 1 { +1632 2 blink(b,1); +1633 2 disp_data[b]=incdec(disp_data[b],9,0); +1634 2 #ifdef _6_key + if(!tare) // shift key is also checked which shifts + #elif defined( _4x4_key ) +1637 2 //if(('S' == KeyPressed) || (KeyPressed == right)) +1638 2 if(('S' == KeyPressed) || (KeyPressed == tare)) +1639 2 #endif +1640 2 { // blinking digit to right. +1641 3 b++; +1642 3 if(b>7) b=8-a; +1643 3 #ifdef _4x4_key +1644 3 KeyPressed = 'X'; //clear keyPressed +1645 3 #endif +1646 3 } + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 28 + +1647 2 /*if(KeyPressed == left) +1648 2 { +1649 2 b--; +1650 2 if(b<(8-a)) b=7; +1651 2 KeyPressed = 'X'; //clear keyPressed +1652 2 }*/ +1653 2 } +1654 1 #ifdef _6_key + if(!mode) + #elif defined( _4x4_key ) +1657 1 if(KeyPressed == mode) +1658 1 #endif +1659 1 { +1660 2 #ifdef _6_key + while(!mode) + #elif defined( _4x4_key ) +1663 2 while(KeyPressed == mode) +1664 2 #endif +1665 2 {delay(2);} +1666 2 esc_flag=1; +1667 2 } +1668 1 else esc_flag=0; +1669 1 /*#ifdef _4x4_key +1670 1 KeyPressed = 'X'; // "keyPressed" clearing +1671 1 #endif */ +1672 1 } +1673 //========================================================================================== +1674 void blink(start,no) // Will create blinking display. +1675 { +1676 1 unsigned char k; // Blinking display will be from 'start' to +1677 1 // display numbered no. +1678 1 arr_cpy(&temp_data[0],&disp_data[0],8); +1679 1 for(k=start;k7)b=6; +1714 3 //if(b>7) b=4; +1715 3 #ifdef _4x4_key +1716 3 KeyPressed = 'X'; +1717 3 #endif +1718 3 } +1719 2 #ifdef _6_key + if(!mode)return; + #elif defined( _4x4_key ) +1722 2 if(KeyPressed == mode)return; +1723 2 #endif +1724 2 /*if(KeyPressed == left) +1725 2 { +1726 2 b--; +1727 2 if(b<4) b=7; +1728 2 KeyPressed = 'X'; //clear keyPressed +1729 2 }*/ +1730 2 } +1731 1 #ifdef _6_key + if(!enter) + #elif defined( _4x4_key ) +1734 1 if(KeyPressed == enter) +1735 1 #endif +1736 1 { +1737 2 b = ((disp_data[6] & 0x0F) << 4 ) + (disp_data[7] & 0x0F); +1738 2 b = bcd2int(b); +1739 2 if(b > 36) +1740 2 { +1741 3 disp(0x11,0x0e,0x13,0x13,0x17,0x13,0x11,0x11); +1742 3 delay(500); +1743 3 goto err_rtn; +1744 3 } +1745 2 write_RTC(RTC_MEM_current_recipe,b); +1746 2 } +1747 1 #ifdef _6_key + while(!enter) + #elif defined( _4x4_key ) +1750 1 while(KeyPressed==enter) +1751 1 #endif +1752 1 {delay(2);} +1753 1 } +1754 //============================================================================================ +1755 void menu(void) // Main menu entry. +1756 { +1757 1 char dat; +1758 1 bit err_flag=0; +1759 1 unsigned int temp; +1760 1 +1761 1 read_values(); +1762 1 dp_flag=1; +1763 1 set_enter_flag=1; +1764 1 +1765 1 if(function>0 && function<=9) {EEPROM_block = Block_0;} +1766 1 else if(function>9 && function<=18) {EEPROM_block = Block_1;} +1767 1 else if(function>18 && function<=27) {EEPROM_block = Block_2;} +1768 1 else if(function>27 && function<=36) {EEPROM_block = Block_3;} +1769 1 //-------------------------------------------------------------------- +1770 1 do + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 30 + +1771 1 { +1772 2 if(!recipe) disp(0x0F,0x01,0x16,0x11,0x00,0x00,0x00,0x00); +1773 2 //else disp(0x0F,function,0x11,0x11,0x00,0x00,0x00,0x00); +1774 2 else disp(function/10,function%10,0x0F,0x11,0x00,0x00,0x00,0x00); +1775 2 bin2bcd(fillset,5); // Fill set +1776 2 delay(500); +1777 2 val_read(5); +1778 2 if(esc_flag) return; +1779 2 #ifdef _6_key + if(set) + #elif defined( _4x4_key ) +1782 2 //if(KeyPressed != set) +1783 2 if(KeyPressed == enter) +1784 2 #endif +1785 2 { +1786 3 temp=bcd2bin(5); +1787 3 if(temp > (rng_array[rng_val][2] * 1000) ) +1788 3 { +1789 4 err_flag=1; +1790 4 disp(0x11,0x0e,0x13,0x13,0x17,0x13,0x11,0x11); +1791 4 delay(500); +1792 4 } +1793 3 else +1794 3 { +1795 4 fillset=temp; +1796 4 if(function>0 && function<=9)dat = function; +1797 4 else if(function>9 && function<=18) dat=(function-9); +1798 4 else if(function>18 && function<=27) dat=(function-18); +1799 4 else if(function>27 && function<=36) dat=(function-27); +1800 4 +1801 4 write_eeprom((0x10*dat),fillset/0x100); +1802 4 write_eeprom(((0x10*dat)+0x01),fillset%0x100); +1803 4 err_flag=0; +1804 4 } +1805 3 } +1806 2 } while(err_flag); +1807 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +1808 1 /*do +1809 1 { +1810 1 //disp(0x0C,0x0F,0x11,0x11,0x00,0x00,0x00,0x00); +1811 1 if(!recipe) disp(0x0C,0x0F,0x11,0x11,0x11,0x00,0x00,0x00); +1812 1 //else disp(0x0C,0x0F,function,0x11,0x11,0x00,0x00,0x00); // Course feed +1813 1 else disp(function/10,function%10,0x0C,0x11,0x11,0x00,0x00,0x00); // Course feed +1814 1 //cf=(fillset-cf); +1815 1 bin2bcd(cf,3); +1816 1 delay(500); +1817 1 val_read(3); +1818 1 if(esc_flag) return; +1819 1 #ifdef _6_key +1820 1 if(set) +1821 1 #elif defined( _4x4_key ) +1822 1 //if(KeyPressed != set) +1823 1 if(KeyPressed == enter) +1824 1 #endif +1825 1 { +1826 1 temp=bcd2bin(3); +1827 1 if(temp >= fillset) +1828 1 //if(temp >= fillset || (fillset-temp > ffd)) +1829 1 { +1830 1 err_flag=1; +1831 1 disp(0x11,0x0e,0x13,0x13,0x17,0x13,0x11,0x11); +1832 1 delay(500); + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 31 + +1833 1 } +1834 1 else +1835 1 { +1836 1 cf=temp; +1837 1 //cf=(fillset-temp); +1838 1 if(function>0 && function<=9)dat = function; +1839 1 else if(function>9 && function<=18) dat=(function-9); +1840 1 else if(function>18 && function<=27) dat=(function-18); +1841 1 else if(function>27 && function<=36) dat=(function-27); +1842 1 +1843 1 write_eeprom((0x10*dat)+0x02,cf / 0x100); +1844 1 write_eeprom((0x10*dat)+0x03,cf % 0x100); +1845 1 err_flag=0; +1846 1 } +1847 1 } +1848 1 } while(err_flag); */ +1849 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +1850 1 do +1851 1 { +1852 2 if(!recipe) disp(0x0F,0x0F,0x11,0x11,0x11,0x00,0x00,0x00); +1853 2 //else disp(0x0F,0x0F,function,0x11,0x11,0x00,0x00,0x00); +1854 2 else disp(function/10,function%10,0x0D,0x11,0x11,0x00,0x00,0x00); +1855 2 //ffd=(fillset-ffd); +1856 2 //14_02_24 bin2bcd(ffd,3); +1857 2 bin2bcd(ffd,4); +1858 2 delay(500); +1859 2 //val_read(5); +1860 2 //14_02_24 val_read(3); +1861 2 val_read(4); +1862 2 if(esc_flag) return; +1863 2 #ifdef _6_key + if(set) + #elif defined( _4x4_key ) +1866 2 //if(KeyPressed != set) +1867 2 if(KeyPressed == enter) +1868 2 #endif +1869 2 { +1870 3 //temp=bcd2bin(5); +1871 3 //14_02_24 temp=bcd2bin(3); +1872 3 temp=bcd2bin(4); +1873 3 //if((temp >= fillset) || (fillset-temp <= cf)) +1874 3 if(temp >= fillset) +1875 3 { +1876 4 err_flag=1; +1877 4 disp(0x11,0x0e,0x13,0x13,0x17,0x13,0x11,0x11); +1878 4 delay(500); +1879 4 } +1880 3 else +1881 3 { +1882 4 //ffd=(fillset-temp); +1883 4 ffd=temp; +1884 4 if(function>0 && function<=9)dat = function; +1885 4 else if(function>9 && function<=18) dat=(function-9); +1886 4 else if(function>18 && function<=27) dat=(function-18); +1887 4 else if(function>27 && function<=36) dat=(function-27); +1888 4 +1889 4 write_eeprom((0x10*dat)+0x04,ffd / 0x100); +1890 4 write_eeprom((0x10*dat)+0x05,ffd % 0x100); +1891 4 err_flag=0; +1892 4 } +1893 3 } +1894 2 } while(err_flag); + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 32 + +1895 1 +1896 1 /*cfd1=fillset-ffd; +1897 1 //cfd1=cf; +1898 1 cfd2=fillset-ffd; +1899 1 ffd=fillset-ffd;*/ +1900 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +1901 1 do +1902 1 { +1903 2 if(!recipe)disp(0x18,0x0F,0x16,0x11,0x11,0x00,0x00,0x00); +1904 2 //else disp(0x18,0x0F,function,0x11,0x11,0x00,0x00,0x00); +1905 2 else disp(function/10,function%10,0x18,0x11,0x11,0x00,0x00,0x00); +1906 2 bin2bcd(nfl,3); // Inflight +1907 2 delay(500); +1908 2 val_read(3); +1909 2 if(esc_flag) return; +1910 2 #ifdef _6_key + if(set) + #elif defined( _4x4_key ) +1913 2 //if(KeyPressed != set) +1914 2 if(KeyPressed == enter) +1915 2 #endif +1916 2 { +1917 3 temp=bcd2bin(3); +1918 3 //if(temp > fillset) +1919 3 if((temp+ffd) > fillset) +1920 3 { +1921 4 err_flag=1; +1922 4 disp(0x11,0x0e,0x13,0x13,0x17,0x13,0x11,0x11); +1923 4 delay(500); +1924 4 } +1925 3 else +1926 3 { +1927 4 nfl=temp; +1928 4 if(function>0 && function<=9)dat = function; +1929 4 else if(function>9 && function<=18) dat=(function-9); +1930 4 else if(function>18 && function<=27) dat=(function-18); +1931 4 else if(function>27 && function<=36) dat=(function-27); +1932 4 +1933 4 write_eeprom((0x10*dat)+0x06,nfl / 0x100); +1934 4 write_eeprom((0x10*dat)+0x07,nfl % 0x100); +1935 4 err_flag=0; +1936 4 } +1937 3 } +1938 2 } while(err_flag); +1939 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +1940 1 do +1941 1 { +1942 2 if(!recipe)disp(0x15,0x14,0x13,0x11,0x11,0x00,0x00,0x00); +1943 2 //else disp(0x15,function,0x11,0x11,0x11,0x00,0x00,0x00); +1944 2 else disp(function/10,function%10,0x15,0x11,0x11,0x00,0x00,0x00); +1945 2 bin2bcd(htar,5); // High tare +1946 2 delay(500); +1947 2 val_read(5); +1948 2 if(esc_flag) return; +1949 2 #ifdef _6_key + if(set) + #elif defined( _4x4_key ) +1952 2 //if(KeyPressed != set) +1953 2 if(KeyPressed == enter) +1954 2 #endif +1955 2 { +1956 3 temp=bcd2bin(5); + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 33 + +1957 3 //if(temp > (rng_array[rng_val][2] * 1000) ) +1958 3 if(temp+fillset > (rng_array[rng_val][2] * 1000) ) +1959 3 { +1960 4 err_flag=1; +1961 4 disp(0x11,0x0e,0x13,0x13,0x17,0x13,0x11,0x11); +1962 4 delay(500); +1963 4 } +1964 3 else +1965 3 { +1966 4 htar=temp; +1967 4 if(function>0 && function<=9)dat = function; +1968 4 else if(function>9 && function<=18) dat=(function-9); +1969 4 else if(function>18 && function<=27) dat=(function-18); +1970 4 else if(function>27 && function<=36) dat=(function-27); +1971 4 +1972 4 write_eeprom((0x10*dat)+0x08,htar / 0x100); +1973 4 write_eeprom((0x10*dat)+0x09,htar % 0x100); +1974 4 err_flag=0; +1975 4 } +1976 3 } +1977 2 }while(err_flag); +1978 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +1979 1 do +1980 1 { +1981 2 if(!recipe)disp(0x16,0x14,0x13,0x11,0x11,0x00,0x00,0x00); +1982 2 //else disp(0x16,function,0x11,0x11,0x11,0x00,0x00,0x00); +1983 2 else disp(function/10,function%10,0x16,0x11,0x11,0x00,0x00,0x00); +1984 2 bin2bcd(ltar,3); // Low tare +1985 2 delay(500); +1986 2 val_read(3); +1987 2 if(esc_flag) return; +1988 2 #ifdef _6_key + if(set) + #elif defined( _4x4_key ) +1991 2 //if(KeyPressed != set) +1992 2 if(KeyPressed == enter) +1993 2 #endif +1994 2 { +1995 3 temp=bcd2bin(3); +1996 3 if(temp >= htar) +1997 3 { +1998 4 err_flag=1; +1999 4 disp(0x11,0x0e,0x13,0x13,0x17,0x13,0x11,0x11); +2000 4 delay(500); +2001 4 } +2002 3 else +2003 3 { +2004 4 ltar=temp; +2005 4 if(function>0 && function<=9)dat = function; +2006 4 else if(function>9 && function<=18) dat=(function-9); +2007 4 else if(function>18 && function<=27) dat=(function-18); +2008 4 else if(function>27 && function<=36) dat=(function-27); +2009 4 +2010 4 write_eeprom((0x10*dat)+0x0A,ltar / 0x100); +2011 4 write_eeprom((0x10*dat)+0x0B,ltar % 0x100); +2012 4 err_flag=0; +2013 4 } +2014 3 } +2015 2 } while(err_flag); +2016 1 dp_flag=0; +2017 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2018 1 if(!recipe)disp(0x0a,0x14,0x11,0x14,0x13,0x11,0x11,0x11); + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 34 + +2019 1 //else disp(0x0a,function,0x11,0x11,0x11,0x11,0x11,0x11); +2020 1 else disp(function/10,function%10,0x0a,0x11,0x11,0x11,0x11,0x11); +2021 1 delay(500); +2022 1 if(!ed) dat=0; +2023 1 else dat=1; //Auto tare Enable / Disable. +2024 1 #ifdef _6_key + while(enter && set) + #elif defined( _4x4_key ) +2027 1 while(KeyPressed != set && KeyPressed != enter) +2028 1 #endif +2029 1 { +2030 2 blink(7,1); +2031 2 dat=incdec(dat,1,0); +2032 2 if(dat==0){ disp_data[7]=0x0d; ed=0;} +2033 2 else { disp_data[7]=0x0e; ed=1;} +2034 2 } +2035 1 #ifdef _6_key + if(set) + #elif defined( _4x4_key ) +2038 1 //if(KeyPressed != set) +2039 1 if(KeyPressed == enter) +2040 1 #endif +2041 1 { +2042 2 if(function>0 && function<=9)write_eeprom((0x10*function)+0x0C,dat); +2043 2 else if(function>9 && function<=18) write_eeprom(((0x10*(function-9))+0x0C),dat); +2044 2 else if(function>18 && function<=27) write_eeprom(((0x10*(function-18))+0x0C),dat); +2045 2 else if(function>27 && function<=36) write_eeprom(((0x10*(function-27))+0x0C),dat); +2046 2 } +2047 1 while(KeyPressed == enter){delay(20);} +2048 1 dp_flag=1; +2049 1 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +2050 1 dat=read_eeprom(EE_test_loc_Mem); +2051 1 if(dat != test_loc) write_eeprom(EE_test_loc_Mem, test_loc); +2052 1 read_values(); //loading new values +2053 1 } +2054 //=============================================================================================== +2055 void settings(void) +2056 { +2057 1 char dat; +2058 1 read_values(); +2059 1 EEPROM_block = Block_0; +2060 1 set_enter_flag=1; +2061 1 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +2062 1 dat=wait_val;// Time delay for showing 'SA' after the weight has crossed the Fillset value. +2063 1 disp(0x05,0x0A,0x10,0x0D,0x16,0x11,dat/10,dat%10); +2064 1 bin2bcd(dat,2); +2065 1 delay(500); +2066 1 val_read(2); +2067 1 if(esc_flag) return; +2068 1 wait_val = bcd2bin(2); +2069 1 #ifdef _6_key + if(set) + #elif defined( _4x4_key ) +2072 1 if(KeyPressed == enter) +2073 1 #endif +2074 1 { +2075 2 write_eeprom(EE_wait_val_Mem, wait_val); +2076 2 } +2077 1 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +2078 1 //dat=drop_wait_val/10; // The time delay between drops. +2079 1 dat=read_eeprom(EE_drop_wait_val_Mem); +2080 1 disp(0x0D,0x13,0x12,0x0D,0x16,0x11,dat/10,dat%10); + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 35 + +2081 1 bin2bcd(dat,2); +2082 1 delay(500); +2083 1 val_read(2); +2084 1 if(esc_flag) return; +2085 1 drop_wait_val = bcd2bin(2); +2086 1 +2087 1 #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) +2090 1 if(KeyPressed == mode) return; +2091 1 #endif +2092 1 +2093 1 #ifdef _6_key + if(set) + #elif defined( _4x4_key ) +2096 1 if(KeyPressed == enter) +2097 1 #endif +2098 1 { +2099 2 write_eeprom(EE_drop_wait_val_Mem, drop_wait_val); +2100 2 } +2101 1 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +2102 1 //dat=on_time/100; // The drop ON TIME. +2103 1 dat=read_eeprom(EE_on_time_Mem); +2104 1 disp(0x00,0x18,0x14,0x01,0x1a,0x0e,dat/10,dat%10); +2105 1 bin2bcd(dat,2); +2106 1 delay(500); +2107 1 val_read(2); +2108 1 if(esc_flag) return; +2109 1 dat = bcd2bin(2); +2110 1 +2111 1 #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) +2114 1 if(KeyPressed == mode) return; +2115 1 #endif +2116 1 +2117 1 #ifdef _6_key + if(set) + #elif defined( _4x4_key ) +2120 1 if(KeyPressed == enter) +2121 1 #endif +2122 1 { +2123 2 write_eeprom(EE_on_time_Mem, dat); +2124 2 } +2125 1 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +2126 1 disp(0x00,0x10,0x05,0x0E,0x14,0x00,0x00,0x00); +2127 1 bin2bcd(zset,3); // Zero set +2128 1 delay(500); +2129 1 //while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) +2130 1 //{ +2131 1 val_read(3); +2132 1 zset = bcd2bin(3); +2133 1 //} +2134 1 if(esc_flag) return; +2135 1 #ifdef _6_key + if(set) + #elif defined( _4x4_key ) +2138 1 if(KeyPressed == enter) +2139 1 #endif +2140 1 { +2141 2 write_eeprom(EE_zset_Mem_MSB,zset / 0x100); +2142 2 write_eeprom((EE_zset_Mem_LSB),zset % 0x100); + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 36 + +2143 2 } +2144 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2145 1 disp(0x05,0x12,0x0d,0x11,0x11,0x11,0x11,avg); +2146 1 delay(500); +2147 1 #ifdef _6_key + while(enter && set && mode) //speed(averaging). + #elif defined( _4x4_key ) +2150 1 while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) +2151 1 #endif +2152 1 { +2153 2 blink(7,1); +2154 2 avg=incdec(avg,9,1); +2155 2 disp_data[7]=avg; +2156 2 } +2157 1 #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) +2160 1 if(KeyPressed == mode) return; +2161 1 #endif +2162 1 +2163 1 #ifdef _6_key + if(set) + #elif defined( _4x4_key ) +2166 1 if(KeyPressed == enter) +2167 1 #endif +2168 1 { +2169 2 write_eeprom(EE_avg_Mem,avg); +2170 2 avg_cnt=3*(10-avg); +2171 2 } +2172 1 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +2173 1 if(cal_en) //calibration hardware lock to protect scale setting +2174 1 { +2175 2 disp(0x12,0x13,0x00,0x14,0x0E,0x0C,0x14,0x0D); +2176 2 //return; +2177 2 goto end; +2178 2 } +2179 1 else +2180 1 //-------------------------------------------------------------------- +2181 1 disp(0x05,0x10,0x0c,0x0a,0x12,0x11,0x00,0x00); +2182 1 bin2bcd(rng_array[rng_val][2],2); +2183 1 delay(500); +2184 1 #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) +2187 1 while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) +2188 1 #endif +2189 1 { +2190 2 blink(6,2); +2191 2 //rng_val=incdec(rng_val,6,0); +2192 2 //1 rng_val=incdec(rng_val,7,0); +2193 2 rng_val=incdec(rng_val,9,0); +2194 2 #ifdef _4x4_key +2195 2 //if(KeyPressed == right) +2196 2 if(KeyPressed == tare) +2197 2 { +2198 3 rng_val++; +2199 3 //if(rng_val>6) rng_val=0; +2200 3 // if(rng_val>7) rng_val=0; +2201 3 if(rng_val>9) rng_val=0; +2202 3 } +2203 2 #endif +2204 2 /*if(KeyPressed == left) + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 37 + +2205 2 { +2206 2 +2207 2 if(rng_val >= 1) rng_val--; +2208 2 else rng_val=4; +2209 2 }*/ +2210 2 bin2bcd(rng_array[rng_val][2],2); +2211 2 } +2212 1 #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) +2215 1 if(KeyPressed == mode) return; +2216 1 #endif +2217 1 +2218 1 #ifdef _6_key + if(set) + #elif defined( _4x4_key ) +2221 1 if(KeyPressed == enter) +2222 1 #endif +2223 1 { +2224 2 write_eeprom(EE_rng_val_Mem,rng_val); +2225 2 } +2226 1 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +2227 1 disp(0x13,0x0e,0x05,0x11,0x11,0x11,res/10,res%10); +2228 1 delay(500); +2229 1 dat=res; +2230 1 if(res==5) dat=3; +2231 1 if(res==10) dat=0; +2232 1 #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) +2235 1 while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) +2236 1 #endif +2237 1 { +2238 2 blink(6,2); +2239 2 dat=incdec(dat,3,0); +2240 2 #ifdef _4x4_key +2241 2 //if(KeyPressed == right) +2242 2 if(KeyPressed == tare) +2243 2 { +2244 3 dat++; +2245 3 if(dat>3) dat=0; +2246 3 } +2247 2 #endif +2248 2 /*if(KeyPressed == left) +2249 2 { +2250 2 if(dat >= 1)dat--; +2251 2 else dat = 3; +2252 2 }*/ +2253 2 res=dat; +2254 2 if(dat==3) res=5; +2255 2 if(dat==0) res=10; +2256 2 disp_data[7]=res%10; +2257 2 disp_data[6]=res/10; +2258 2 } +2259 1 #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) +2262 1 if(KeyPressed == mode) return; +2263 1 #endif +2264 1 +2265 1 #ifdef _6_key + if(set) + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 38 + + #elif defined( _4x4_key ) +2268 1 if(KeyPressed == enter) +2269 1 #endif +2270 1 { +2271 2 write_eeprom(EE_res_Mem,res); +2272 2 } +2273 1 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +2274 1 div_factor=rng_array[rng_val][0]; +2275 1 mul_factor=rng_array[rng_val][1]; +2276 1 help_val=(rng_array[rng_val][2] * 1000) + (res * 9); +2277 1 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +2278 1 disp(0x1a,0x0a,0x05,0x11,0x11,0x11,0x11,mas); +2279 1 delay(500); +2280 1 #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) +2283 1 while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) +2284 1 #endif +2285 1 { +2286 2 blink(7,1); +2287 2 mas=incdec(mas,5,0); +2288 2 #ifdef _4x4_key +2289 2 //if(KeyPressed == right) +2290 2 if(KeyPressed == tare) +2291 2 { +2292 3 mas++; +2293 3 if(mas>5) mas=0; +2294 3 } +2295 2 #endif +2296 2 /*if(KeyPressed == left) +2297 2 { +2298 2 if(mas >= 1)mas--; +2299 2 else mas=5; +2300 2 }*/ +2301 2 disp_data[7]=mas; +2302 2 } +2303 1 #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) +2306 1 if(KeyPressed == mode) return; +2307 1 #endif +2308 1 +2309 1 #ifdef _6_key + if(set) + #elif defined( _4x4_key ) +2312 1 if(KeyPressed == enter) +2313 1 #endif +2314 1 { +2315 2 write_eeprom(EE_mas_Mem,mas); +2316 2 } +2317 1 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +2318 1 disp(0x00,0x10,0x14,0x13,0x0A,0x0C,0x11,ztc); +2319 1 delay(500); +2320 1 #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) +2323 1 while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) +2324 1 #endif +2325 1 { +2326 2 blink(7,1); +2327 2 ztc=incdec(ztc,5,0); +2328 2 #ifdef _4x4_key + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 39 + +2329 2 //if(KeyPressed == right) +2330 2 if(KeyPressed == tare) +2331 2 { +2332 3 ztc++; +2333 3 if(ztc>5) ztc=0; +2334 3 } +2335 2 #endif +2336 2 /*if(KeyPressed == left) +2337 2 { +2338 2 if(ztc >= 1)ztc--; +2339 2 else ztc=5; +2340 2 }*/ +2341 2 disp_data[7]=ztc; +2342 2 } +2343 1 #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) +2346 1 if(KeyPressed == mode) return; +2347 1 #endif +2348 1 +2349 1 #ifdef _6_key + if(set) + #elif defined( _4x4_key ) +2352 1 if(KeyPressed == enter) +2353 1 #endif +2354 1 { +2355 2 write_eeprom(EE_ztc_Mem,ztc); +2356 2 } +2357 1 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +2358 1 dp_flag=1; +2359 1 disp(0x0D,0x0E,0x0C,0x11,0x11,0x11,0x11,dp_val); +2360 1 delay(500); +2361 1 #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) +2364 1 while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) +2365 1 #endif +2366 1 { +2367 2 blink(7,1); +2368 2 dp_val=incdec(dp_val,7,3); +2369 2 #ifdef _4x4_key +2370 2 //if(KeyPressed == right) +2371 2 if(KeyPressed == tare) +2372 2 { +2373 3 dp_val++; +2374 3 if(dp_val>7)dp_val=3; +2375 3 } +2376 2 #endif +2377 2 /*if(KeyPressed == left) +2378 2 { +2379 2 if(dp_val >= 3) dp_val--; +2380 2 else dp_val=7; +2381 2 }*/ +2382 2 disp_data[7]=dp_val; +2383 2 } +2384 1 #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) +2387 1 if(KeyPressed == mode) return; +2388 1 #endif +2389 1 +2390 1 #ifdef _6_key + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 40 + + if(set) + #elif defined( _4x4_key ) +2393 1 if(KeyPressed == enter) +2394 1 #endif +2395 1 { +2396 2 write_eeprom(EE_dp_val_mem,dp_val); +2397 2 } +2398 1 dp_flag=0; +2399 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2400 1 end: +2401 1 dat=read_eeprom(EE_test_loc_Mem); +2402 1 if(dat != test_loc) write_eeprom(EE_test_loc_Mem, test_loc); +2403 1 read_values(); +2404 1 } +2405 //============================================================================================ +2406 void sys_paramts(void) +2407 { +2408 1 char dat; +2409 1 read_values(); +2410 1 dp_flag=0; +2411 1 set_enter_flag=1; +2412 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2413 1 //Instant fillset entry Enable / Disable. +2414 1 disp(0x01,0x18,0x05,0x14,0x18,0x14,0x11,0x11); +2415 1 dat=read_RTC(RTC_MEM_Instant_fill_enable); +2416 1 delay(500); +2417 1 //if(dat==1)Instant_fill_enable=1; +2418 1 //else Instant_fill_enable=0; +2419 1 if(dat==0)Instant_fill_enable=0; +2420 1 else Instant_fill_enable=1; +2421 1 #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) +2424 1 while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) +2425 1 #endif +2426 1 { +2427 2 blink(7,1); +2428 2 dat=incdec(dat,1,0); +2429 2 if(dat==0){ disp_data[7]=0x0d; Instant_fill_enable=0;} +2430 2 else { dat=1; disp_data[7]=0x0e; Instant_fill_enable=1;} +2431 2 } +2432 1 #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) +2435 1 if(KeyPressed == mode) return; +2436 1 #endif +2437 1 +2438 1 #ifdef _6_key + if(!enter) + #elif defined( _4x4_key ) +2441 1 if(KeyPressed == enter) +2442 1 #endif +2443 1 { +2444 2 write_RTC(RTC_MEM_Instant_fill_enable,dat); +2445 2 } +2446 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2447 1 disp(0x0a,0x1B,0x14,0x05,0x11,0x11,0x11,0x11); //Auto start Enable / Disable. +2448 1 dat=read_RTC(RTC_MEM_Auto_start_enable); +2449 1 delay(500); +2450 1 //if(dat==1)auto_start=1; +2451 1 //else auto_start=0; +2452 1 if(dat==0)auto_start=0; + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 41 + +2453 1 else auto_start=1; +2454 1 #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) +2457 1 while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) +2458 1 #endif +2459 1 { +2460 2 blink(7,1); +2461 2 dat=incdec(dat,1,0); +2462 2 if(dat==0){ disp_data[7]=0x0d; auto_start=0;} +2463 2 else { dat=1; disp_data[7]=0x0e; auto_start=1;} +2464 2 } +2465 1 #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) +2468 1 if(KeyPressed == mode) return; +2469 1 #endif +2470 1 +2471 1 #ifdef _6_key + if(set) + #elif defined( _4x4_key ) +2474 1 if(KeyPressed == enter) +2475 1 #endif +2476 1 { +2477 2 write_RTC(RTC_MEM_Auto_start_enable,dat); +2478 2 } +2479 1 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +2480 1 //disp(0x0a,0x1B,0x14,0x00,0x05,0x11,0x11,0x11); //Auto start delay +2481 1 disp(0x0A,0x14,0x05,0x0D,0x16,0x11,0x11,0x11); +2482 1 start_delay=read_RTC(RTC_MEM_start_delay); +2483 1 bin2bcd(start_delay,2); +2484 1 delay(500); +2485 1 val_read(2); +2486 1 if(esc_flag) return; +2487 1 start_delay = (unsigned char)bcd2bin(2); +2488 1 +2489 1 #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) +2492 1 if(KeyPressed == mode) return; +2493 1 #endif +2494 1 +2495 1 #ifdef _6_key + if(set) + #elif defined( _4x4_key ) +2498 1 if(KeyPressed == enter) +2499 1 #endif +2500 1 { +2501 2 write_RTC(RTC_MEM_start_delay,start_delay); +2502 2 } +2503 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2504 1 disp(0x13,0x0E,0x0C,0x01,0x12,0x0E,0x11,0x11); //Recipe Enable/Disable +2505 1 dat=read_RTC(RTC_MEM_recipe_enable); +2506 1 delay(500); +2507 1 //if(dat==1)recipe=1; +2508 1 //else recipe=0; +2509 1 if(dat==0)recipe=0; +2510 1 else recipe=1; +2511 1 #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) +2514 1 while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 42 + +2515 1 #endif +2516 1 { +2517 2 blink(7,1); +2518 2 dat=incdec(dat,1,0); +2519 2 if(dat==0){ disp_data[7]=0x0d; recipe=0;} +2520 2 else { dat=1; disp_data[7]=0x0e; recipe=1;} +2521 2 } +2522 1 #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) +2525 1 if(KeyPressed == mode) return; +2526 1 #endif +2527 1 +2528 1 #ifdef _6_key + if(set) + #elif defined( _4x4_key ) +2531 1 if(KeyPressed == enter) +2532 1 #endif +2533 1 { +2534 2 write_RTC(RTC_MEM_recipe_enable,dat); +2535 2 } +2536 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2537 1 disp(0x0B,0x05,0x0E,0x14,0x10,0x0F,0x11,0x11); //Batch filling enable +2538 1 dat=read_RTC(RTC_MEM_batch_set_enable); +2539 1 delay(500); +2540 1 //if(dat==1)bset_enable=1; +2541 1 //else bset_enable=0; +2542 1 if(dat==0)bset_enable=0; +2543 1 else bset_enable=1; +2544 1 #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) +2547 1 while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) +2548 1 #endif +2549 1 { +2550 2 blink(7,1); +2551 2 dat=incdec(dat,1,0); +2552 2 if(dat==0){ disp_data[7]=0x0d; bset_enable=0;} +2553 2 else { dat=1; disp_data[7]=0x0e; bset_enable=1;} +2554 2 } +2555 1 #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) +2558 1 if(KeyPressed == mode) return; +2559 1 #endif +2560 1 +2561 1 #ifdef _6_key + if(set) + #elif defined( _4x4_key ) +2564 1 if(KeyPressed == enter) +2565 1 #endif +2566 1 { +2567 2 write_RTC(RTC_MEM_batch_set_enable,dat); +2568 2 } +2569 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2570 1 disp(0x19,0x13,0x1D,0x14,0x11,0x11,0x11,0x11); //Grows weight display Enable/Disable +2571 1 dat=read_RTC(RTC_MEM_gross_weight_enable); +2572 1 delay(500); +2573 1 //if(dat==1)grwt=1; +2574 1 //else grwt=0; +2575 1 if(dat==0)grwt=0; +2576 1 else grwt=1; + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 43 + +2577 1 #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) +2580 1 while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) +2581 1 #endif +2582 1 { +2583 2 blink(7,1); +2584 2 dat=incdec(dat,1,0); +2585 2 if(dat==0){ disp_data[7]=0x0d; grwt=0;} +2586 2 else { dat=1; disp_data[7]=0x0e; grwt=1;} +2587 2 } +2588 1 #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) +2591 1 if(KeyPressed == mode) return; +2592 1 #endif +2593 1 +2594 1 #ifdef _6_key + if(set) + #elif defined( _4x4_key ) +2597 1 if(KeyPressed == enter) +2598 1 #endif +2599 1 { +2600 2 write_RTC(RTC_MEM_gross_weight_enable,dat); +2601 2 } +2602 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2603 1 //write_eeprom(EE_test_loc_Mem,test_loc); //write status update +2604 1 write_RTC(RTC_MEM_status,test_loc); +2605 1 read_values(); //loading new values +2606 1 dp_flag=1; +2607 1 } +2608 //================================================================================================== +2609 /* +2610 void memory_backup_restore(void) +2611 { +2612 char no=1; +2613 clr_disp(); +2614 #ifdef _6_key +2615 while(enter && mode) +2616 #elif defined( _4x4_key ) +2617 while(KeyPressed != enter && KeyPressed != mode) +2618 #endif +2619 { +2620 blink(0,8); +2621 no=incdec(no,2,1); +2622 rst_wdt(); +2623 switch(no) +2624 { +2625 case 1: +2626 disp(0x1A,0x0C,0x11,0x14,0x17,0x11,0x0E,0x0E); +2627 break; +2628 case 2: +2629 disp(0x0E,0x0E,0x11,0x14,0x17,0x11,0x1A,0x0C); +2630 break; +2631 } +2632 } +2633 #ifdef _6_key +2634 if(!mode) return; +2635 #elif defined( _4x4_key ) +2636 if(KeyPressed == mode)return; +2637 #endif +2638 switch(no) + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 44 + +2639 { +2640 rst_wdt(); +2641 case 1: +2642 sectors_copy_to_EEPROM(BLK1_DST_ADDR, 0x00); +2643 break; +2644 case 2: +2645 EEPROM_copy_to_sectors(BLK1_DST_ADDR, 0x00); +2646 break; +2647 } +2648 delay(500); +2649 read_values(); //loading new values +2650 } +2651 */ +2652 //===================================================================================== +2653 unsigned int bcd2bin(char no) // Converts bcd in the display and +2654 { // returns the equ. int value. +2655 1 unsigned int bin_val,mul=1; // char no.,determines how much +2656 1 char i; // digits in the display should be +2657 1 bin_val=0x00; // converted. +2658 1 for(i=7;i>=(8-no);i--) +2659 1 { +2660 2 bin_val = bin_val + disp_data[i] * mul; +2661 2 mul = mul * 10; +2662 2 } +2663 1 return(bin_val); +2664 1 } +2665 //==================================================================================== +2666 char incdec(char name,char max,char min) +2667 { +2668 1 #ifdef _6_key + if(!incr) + #elif defined( _4x4_key ) +2671 1 if(KeyPressed == incr) +2672 1 #endif +2673 1 { +2674 2 name++; +2675 2 if(name>max)name=min; +2676 2 } +2677 1 #ifdef _6_key + if(!decr) + #elif defined( _4x4_key ) +2680 1 else if(KeyPressed == decr) +2681 1 #endif +2682 1 { +2683 2 name--; +2684 2 if(name= 0x00) && (KeyPressed <= 0x09)) +2688 1 else if((KeyPressed >= min) && (KeyPressed <= max)) +2689 1 { +2690 2 name = KeyPressed; +2691 2 KeyPressed = 'S'; //for shifting digit +2692 2 } +2693 1 #endif +2694 1 return(name); +2695 1 } +2696 //====================================================================================== +2697 void cal(void) +2698 { +2699 1 unsigned char j; +2700 1 + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 45 + +2701 1 if(cal_en) //calibration hardware lock +2702 1 { +2703 2 disp(0x11,0x0C,0x0A,0x11,0x16,0x17,0x0C,0x11); +2704 2 return; +2705 2 } +2706 1 else +2707 1 +2708 1 disp(0x11,0x11,0x11,0x0c,0x0a,0x16,0x11,0x11); +2709 1 delay(1000); +2710 1 disp(0x11,0x1d,0x0e,0x01,0x19,0x15,0x14,0x11); +2711 1 delay(1000); +2712 1 #ifdef _6_key + while(enter && mode) + #elif defined( _4x4_key ) +2715 1 while(KeyPressed != enter && KeyPressed != mode) +2716 1 #endif +2717 1 {delay(2);} +2718 1 +2719 1 #ifdef _6_key + if(!mode) + #elif defined( _4x4_key ) +2722 1 if(KeyPressed == mode) +2723 1 #endif +2724 1 { +2725 2 #ifdef _6_key + while(!mode) { delay(2);} + #elif defined( _4x4_key ) +2728 2 //while(KeyPressed == mode) {KeyPressed = 'X'; delay(2);} +2729 2 while(KeyPressed == mode){delay(2);} +2730 2 #endif +2731 2 return; +2732 2 } +2733 1 #ifdef _6_key + while(!enter){delay(2);} + #elif defined( _4x4_key ) +2736 1 while(KeyPressed == enter){delay(2);} +2737 1 #endif +2738 1 +2739 1 disp(0x0c,0x0a,0x16,0x11,0x11,0x11,0x11,0x11); +2740 1 dp_flag=1; +2741 1 c_flag=1; +2742 1 tare_flag=0; +2743 1 while(!aco); +2744 1 aco=0; +2745 1 //filter_val=adc_val; +2746 1 process(); +2747 1 temp_val = disp_val; +2748 1 c_flag=0; +2749 1 for(j=7;j>2;j--) +2750 1 { +2751 2 disp_data[j]=temp_val % 10; +2752 2 temp_val=temp_val / 10; +2753 2 } +2754 1 j=3; +2755 1 #ifdef _6_key + while(enter && mode) + #elif defined( _4x4_key ) +2758 1 while(KeyPressed != enter && KeyPressed != mode) +2759 1 #endif +2760 1 { +2761 2 blink(j,1); +2762 2 disp_data[j]=incdec(disp_data[j],9,0); + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 46 + +2763 2 #ifdef _6_key + if(!tare) + #elif defined( _4x4_key ) +2766 2 //if(('S' == KeyPressed) || (KeyPressed == right)) +2767 2 if(('S' == KeyPressed) || (KeyPressed == tare)) +2768 2 #endif +2769 2 { +2770 3 j++; +2771 3 if(j>7) j=3; +2772 3 } +2773 2 /*if(KeyPressed == left) +2774 2 { +2775 2 j--; +2776 2 if(j<3) j=7; +2777 2 }*/ +2778 2 +2779 2 } +2780 1 #ifdef _6_key + if(!mode) + #elif defined( _4x4_key ) +2783 1 if(KeyPressed == mode) +2784 1 #endif +2785 1 { +2786 2 #ifdef _6_key + while(!mode) + #elif defined( _4x4_key ) +2789 2 while(KeyPressed == mode) +2790 2 #endif +2791 2 {delay(2);} +2792 2 return; +2793 2 } +2794 1 #ifdef _6_key + while(!enter) + #elif defined( _4x4_key ) +2797 1 while(KeyPressed == enter) +2798 1 #endif +2799 1 {delay(2);} +2800 1 cal_flag=1; +2801 1 bin_val=bcd2bin(5); +2802 1 if(res==0)bin_val=bin_val + 10; +2803 1 else bin_val=bin_val + res; +2804 1 dp_flag=0; +2805 1 } +2806 //===================================================================================== +2807 void cal_find(void) +2808 { +2809 1 if(cal_flag) +2810 1 { +2811 2 cal_flag=0; +2812 2 temp1=(unsigned long int)bin_val; +2813 2 temp2=(unsigned long int)disp_val; +2814 2 +2815 2 if(disp_val > bin_val) temp_val = disp_val - bin_val; +2816 2 else temp_val = bin_val - disp_val; +2817 2 //if(temp_val <= (disp_val/10)) +2818 2 if(temp_val) +2819 2 { +2820 3 temp =(temp1 * 0x2710)/temp2; +2821 3 cal_val = (unsigned int)temp; +2822 3 //if((temp % temp2) > (temp2/2)) cal_val+=1; //it was enabled +2823 3 EEPROM_block = Block_0; //Following parameters in block0 of EEPROM +2824 3 write_eeprom(EE_cal_val_Mem_MSB,cal_val/0x100); + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 47 + +2825 3 write_eeprom((EE_cal_val_Mem_LSB),cal_val%0x100); +2826 3 disp(0x11,0x05,0x1b,0x0c,0x0c,0x0e,0x05,0x05); +2827 3 delay(1000); +2828 3 clr_disp(); +2829 3 } +2830 2 else +2831 2 { +2832 3 disp(0x11,0x11,0x0f,0x0a,0x01,0x16,0x11,0x11); +2833 3 delay(1000); +2834 3 clr_disp(); +2835 3 calibrate(); +2836 3 } +2837 2 } +2838 1 } +2839 //========================================================================================== +2840 void calibrate(void) +2841 { +2842 1 temp1=(unsigned long int)disp_val; +2843 1 temp2=(unsigned long int)cal_val; +2844 1 temp =(temp1 * temp2)/0x2710; +2845 1 disp_val = (unsigned int)temp; +2846 1 //if(((temp1*temp2) % 0x2710) > 0x1388) disp_val+=1; //It was enabled +2847 1 } +2848 //========================================================================================= +2849 void cal_rst(void) +2850 { +2851 1 if(cal_en) //calibration hardware lock +2852 1 { +2853 2 disp(0x11,0x0C,0x0A,0x11,0x16,0x17,0x0C,0x11); +2854 2 return; +2855 2 } +2856 1 else +2857 1 +2858 1 disp(0x11,0x13,0x0e,0x05,0x0e,0x14,0x11,0x11); +2859 1 #ifdef _6_key + while(enter && mode) + #elif defined( _4x4_key ) +2862 1 while((KeyPressed != enter) && (KeyPressed != mode)) +2863 1 #endif +2864 1 {delay(2);} +2865 1 +2866 1 #ifdef _6_key + if(!mode) + #elif defined( _4x4_key ) +2869 1 if(KeyPressed == mode) +2870 1 #endif +2871 1 { +2872 2 #ifdef _6_key + while(!mode) {delay(2);} + #elif defined( _4x4_key ) +2875 2 while(KeyPressed == mode) {delay(2);} +2876 2 #endif +2877 2 return; +2878 2 } +2879 1 #ifdef _6_key + while(!enter) + #elif defined( _4x4_key ) +2882 1 while(KeyPressed == enter) +2883 1 #endif +2884 1 {delay(2);} +2885 1 clr_disp(); +2886 1 EEPROM_block = Block_0; //Following parameters in block0 of EEPROM + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 48 + +2887 1 write_eeprom(EE_cal_val_Mem_MSB,0x27); +2888 1 write_eeprom((EE_cal_val_Mem_LSB),0x10); +2889 1 read_values(); +2890 1 } +2891 //======================================================================================= +2892 void select_menu(void) +2893 { +2894 1 char no=1; +2895 1 clr_disp(); +2896 1 #ifdef _6_key + while(enter && mode) + #elif defined( _4x4_key ) +2899 1 while(KeyPressed != enter && KeyPressed != mode) +2900 1 #endif +2901 1 { +2902 2 blink(0,8); +2903 2 //no=incdec(no,5,1); +2904 2 no=incdec(no,9,1); +2905 2 rst_wdt(); +2906 2 switch(no) +2907 2 { +2908 3 case 1: +2909 3 disp(0x0f,0x01,0x16,0x11,0x12,0x0a,0x13,0x0a); +2910 3 break; +2911 3 case 2: +2912 3 disp(0x05,0x0c,0x16,0x11,0x05,0x0e,0x14,0x11); +2913 3 break; +2914 3 case 3: +2915 3 disp(0x11,0x0c,0x0a,0x16,0x11,0x11,0x11,0x11); +2916 3 break; +2917 3 case 4: +2918 3 disp(0x0c,0x0a,0x16,0x11,0x13,0x05,0x14,0x11); +2919 3 break; +2920 3 case 5: +2921 3 disp(0x0d,0x0e,0x0f,0x0a,0x1b,0x16,0x14,0x05); +2922 3 break; +2923 3 case 6: +2924 3 disp(0x0C,0x1B,0x1A,0x1B,0x16,0x0A,0x14,0x0E); +2925 3 break; +2926 3 case 7: +2927 3 disp(0x0B,0x0A,0x14,0x0C,0x15,0x11,0x11,0x11); +2928 3 break; +2929 3 case 8: +2930 3 disp(0x0B,0x0A,0x14,0x0C,0x15,0x14,0x17,0x14); +2931 3 break; +2932 3 case 9: +2933 3 disp(0x0B,0x0A,0x14,0x15,0x11,0x0C,0x1B,0x1A); +2934 3 delay(500); +2935 3 disp(0x0C,0x16,0x0E,0x0A,0x13,0x11,0x11,0x11); +2936 3 break; +2937 3 } +2938 2 } +2939 1 #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) +2942 1 if(KeyPressed == mode)return; +2943 1 #endif +2944 1 switch(no) +2945 1 { +2946 2 // rst_wdt(); +2947 2 case 1: +2948 2 sys_paramts(); + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 49 + +2949 2 rst_wdt(); +2950 2 break; +2951 2 case 2: +2952 2 settings(); +2953 2 break; +2954 2 case 3: +2955 2 cal(); +2956 2 break; +2957 2 case 4: +2958 2 cal_rst(); +2959 2 break; +2960 2 case 5: +2961 2 load_eep_defaults(); +2962 2 break; +2963 2 case 6: +2964 2 display_current_cumulative(); +2965 2 break; +2966 2 case 7: +2967 2 display_current_batch(); +2968 2 break; +2969 2 case 8: +2970 2 display_total_batch(); +2971 2 break; +2972 2 case 9: +2973 2 clear_batch_cumulative(); +2974 2 break; +2975 2 } +2976 1 } +2977 //======================================================================================== +2978 void display_total_cumulative(void) +2979 { +2980 1 cumulative = 0; +2981 1 dp_flag=1; +2982 1 cumulative = RTC_Readlong(RTC_MEM_F1_cumulative) + RTC_Readlong(RTC_MEM_F2_cumulative) + RTC_Readlong(RT + -C_MEM_F3_cumulative)+ \ +2983 1 RTC_Readlong(RTC_MEM_F4_cumulative) + RTC_Readlong(RTC_MEM_F5_cumulative)+ RTC_Readlong(RTC + -_MEM_F6_TO_F36_cumulative); +2984 1 long2bcd(cumulative,8); +2985 1 #ifdef _6_key + while(enter && mode) + #elif defined( _4x4_key ) +2988 1 while(KeyPressed != enter && KeyPressed != mode) +2989 1 #endif +2990 1 {delay(2);} +2991 1 } +2992 //============================================================================================= +2993 void display_total_batch(void) +2994 { +2995 1 batch=(read_RTC(RTC_MEM_F1_batch_MSB)*0x100 + read_RTC(RTC_MEM_F1_batch_LSB))+ +2996 1 (read_RTC(RTC_MEM_F2_batch_MSB)*0x100 + read_RTC(RTC_MEM_F2_batch_LSB))+ +2997 1 (read_RTC(RTC_MEM_F3_batch_MSB)*0x100 + read_RTC(RTC_MEM_F3_batch_LSB))+ +2998 1 (read_RTC(RTC_MEM_F4_batch_MSB)*0x100 + read_RTC(RTC_MEM_F4_batch_LSB))+ +2999 1 (read_RTC(RTC_MEM_F5_batch_MSB)*0x100 + read_RTC(RTC_MEM_F5_batch_LSB))+ +3000 1 (read_RTC(RTC_MEM_F6_TO_F36_batch_MSB)*0x100 + read_RTC(RTC_MEM_F6_TO_F36_batch_LSB)); +3001 1 +3002 1 disp(0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11); +3003 1 batch2bcd(batch,5); +3004 1 #ifdef _6_key + while(enter && mode) + #elif defined( _4x4_key ) +3007 1 while(KeyPressed != enter && KeyPressed != mode) +3008 1 #endif + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 50 + +3009 1 {delay(2);} +3010 1 } +3011 //=========================================================================================== +3012 void display_current_cumulative(void) +3013 { +3014 1 unsigned char sdat=1,b=0; +3015 1 +3016 1 function = read_RTC(RTC_MEM_current_recipe); +3017 1 shift_flag=0; +3018 1 if(function>6)sdat=1; +3019 1 else sdat=function; +3020 1 +3021 1 #ifdef _6_key + while(!enter) + #elif defined( _4x4_key ) +3024 1 while(KeyPressed == enter) +3025 1 #endif +3026 1 {delay(2);} +3027 1 disp(sdat,0x0C,0x11,0x11,0x11,0x11,0x11,0x11); //"1C" +3028 1 delay(500); +3029 1 //b=1; +3030 1 b=0; //Digit from left one +3031 1 dp_flag=1; +3032 1 #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) +3035 1 while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) +3036 1 #endif +3037 1 { +3038 2 blink(b,1); +3039 2 disp_data[b]=incdec(disp_data[b],6,1); +3040 2 //sdat = ((disp_data[0] & 0x0F) << 4 ) + (disp_data[1] & 0x0F); +3041 2 sdat = (disp_data[0] & 0xFF); +3042 2 sdat = bcd2int(sdat); +3043 2 //delay(100); +3044 2 if(sdat==1) +3045 2 cumulative = RTC_Readlong(RTC_MEM_F1_cumulative); +3046 2 else if(sdat==2) +3047 2 cumulative = RTC_Readlong(RTC_MEM_F2_cumulative); +3048 2 else if(sdat==3) +3049 2 cumulative = RTC_Readlong(RTC_MEM_F3_cumulative); +3050 2 else if(sdat==4) +3051 2 cumulative = RTC_Readlong(RTC_MEM_F4_cumulative); +3052 2 else if(sdat==5) +3053 2 cumulative = RTC_Readlong(RTC_MEM_F5_cumulative); +3054 2 else if(sdat==6) +3055 2 cumulative = RTC_Readlong(RTC_MEM_F6_TO_F36_cumulative); +3056 2 +3057 2 //bin2bcd(batch,5); +3058 2 //long2bcd(cumulative,8); +3059 2 bin2bcd(cumulative,6); +3060 2 } +3061 1 #ifdef _6_key + while(!enter) + #elif defined( _4x4_key ) +3064 1 while(KeyPressed == enter) +3065 1 #endif +3066 1 {delay(2);} +3067 1 +3068 1 /*if(function==1) +3069 1 { +3070 1 cumulative = RTC_Readlong(RTC_MEM_F1_cumulative); + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 51 + +3071 1 } +3072 1 else if(function==2) +3073 1 { +3074 1 cumulative = RTC_Readlong(RTC_MEM_F2_cumulative); +3075 1 } +3076 1 else if(function==3) +3077 1 { +3078 1 cumulative = RTC_Readlong(RTC_MEM_F3_cumulative); +3079 1 } +3080 1 else if(function==4) +3081 1 { +3082 1 cumulative = RTC_Readlong(RTC_MEM_F4_cumulative); +3083 1 } +3084 1 else if(function==5) +3085 1 { +3086 1 cumulative = RTC_Readlong(RTC_MEM_F5_cumulative); +3087 1 } +3088 1 else if((function>=6) && (function<=36)) +3089 1 { +3090 1 cumulative = RTC_Readlong(RTC_MEM_F6_TO_F36_cumulative); +3091 1 } +3092 1 long2bcd(cumulative,8); +3093 1 #ifdef _6_key +3094 1 while(enter && mode) +3095 1 #elif defined( _4x4_key ) +3096 1 while(KeyPressed != enter && KeyPressed != mode) +3097 1 #endif +3098 1 {delay(2);} */ +3099 1 } +3100 //============================================================================================ +3101 void display_current_batch(void) +3102 { +3103 1 unsigned char sdat=1,b=0;; +3104 1 function = read_RTC(RTC_MEM_current_recipe); +3105 1 shift_flag=0; +3106 1 if(function>6)sdat=1; +3107 1 else sdat=function; +3108 1 +3109 1 #ifdef _6_key + while(!enter) + #elif defined( _4x4_key ) +3112 1 while(KeyPressed == enter) +3113 1 #endif +3114 1 {delay(2);} +3115 1 +3116 1 //disp(function/10,function%10,0x0F,0x11,0x11,0x11,0x11,0x11); +3117 1 disp(0x0B,sdat,0x1E,0x11,0x11,0x11,0x11,0x11); //"B1=" +3118 1 delay(500); +3119 1 b=1; +3120 1 //b=0; +3121 1 dp_flag=0; +3122 1 #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) +3125 1 while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) +3126 1 #endif +3127 1 { +3128 2 blink(b,1); +3129 2 disp_data[b]=incdec(disp_data[b],6,1); +3130 2 //sdat = ((disp_data[0] & 0x0F) << 4 ) + (disp_data[1] & 0x0F); +3131 2 sdat = (disp_data[1] & 0xFF); +3132 2 sdat = bcd2int(sdat); + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 52 + +3133 2 //delay(100); +3134 2 if(sdat==1) +3135 2 batch=read_RTC(RTC_MEM_F1_batch_MSB)*0x100 + read_RTC(RTC_MEM_F1_batch_LSB); +3136 2 else if(sdat==2) +3137 2 batch=read_RTC(RTC_MEM_F2_batch_MSB)*0x100 + read_RTC(RTC_MEM_F2_batch_LSB); +3138 2 else if(sdat==3) +3139 2 batch=read_RTC(RTC_MEM_F3_batch_MSB)*0x100 + read_RTC(RTC_MEM_F3_batch_LSB); +3140 2 else if(sdat==4) +3141 2 batch=read_RTC(RTC_MEM_F4_batch_MSB)*0x100 + read_RTC(RTC_MEM_F4_batch_LSB); +3142 2 else if(sdat==5) +3143 2 batch=read_RTC(RTC_MEM_F5_batch_MSB)*0x100 + read_RTC(RTC_MEM_F5_batch_LSB); +3144 2 else if(sdat==6) +3145 2 batch=read_RTC(RTC_MEM_F6_TO_F36_batch_MSB)*0x100 + read_RTC(RTC_MEM_F6_TO_F36_batch_LSB); +3146 2 +3147 2 //batch2bcd(batch,5); +3148 2 bin2bcd(batch,5); +3149 2 } +3150 1 #ifdef _6_key + while(!enter){delay(2);} + #elif defined( _4x4_key ) +3153 1 while(KeyPressed == enter) {delay(2);} +3154 1 #endif +3155 1 dp_flag=1; +3156 1 } +3157 //--------------------------------------------------------------------------- +3158 /*if(function==1) +3159 { +3160 batch=read_RTC(RTC_MEM_F1_batch_MSB)*0x100 + read_RTC(RTC_MEM_F1_batch_LSB); +3161 } +3162 else if(function==2) +3163 { +3164 batch=read_RTC(RTC_MEM_F2_batch_MSB)*0x100 + read_RTC(RTC_MEM_F2_batch_LSB); +3165 } +3166 else if(function==3) +3167 { +3168 batch=read_RTC(RTC_MEM_F3_batch_MSB)*0x100 + read_RTC(RTC_MEM_F3_batch_LSB); +3169 } +3170 else if(function==4) +3171 { +3172 batch=read_RTC(RTC_MEM_F4_batch_MSB)*0x100 + read_RTC(RTC_MEM_F4_batch_LSB); +3173 } +3174 else if(function==5) +3175 { +3176 batch=read_RTC(RTC_MEM_F5_batch_MSB)*0x100 + read_RTC(RTC_MEM_F5_batch_LSB); +3177 } +3178 else if((function>=6) && (function<=36)) +3179 { +3180 batch=read_RTC(RTC_MEM_F6_TO_F36_batch_MSB)*0x100 + read_RTC(RTC_MEM_F6_TO_F36_batch_LSB); +3181 } +3182 disp(0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11); +3183 batch2bcd(batch,5); +3184 #ifdef _6_key +3185 while(enter && mode) +3186 #elif defined( _4x4_key ) +3187 while(KeyPressed != enter && KeyPressed != mode) +3188 #endif +3189 {delay(2);} +3190 }*/ +3191 //=============================================================================================== +3192 void clear_current_cumulative_batch(void) +3193 { +3194 1 disp(0x11,0x0C,0x16,0x0E,0x0A,0x13,0x11,0x11); + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 53 + +3195 1 #ifdef _6_key + while(tare && set && mode) + #elif defined( _4x4_key ) +3198 1 while(KeyPressed != tare &&KeyPressed != set && KeyPressed != mode) +3199 1 #endif +3200 1 { +3201 2 blink(0,8); +3202 2 } +3203 1 #ifdef _6_key + if(!tare) + #elif defined( _4x4_key ) +3206 1 if(KeyPressed == tare) +3207 1 #endif +3208 1 { +3209 2 cumulative=0; +3210 2 batch=0; +3211 2 if(function==1) +3212 2 { +3213 3 RTC_Writelong(RTC_MEM_F1_cumulative,cumulative); //cumulative clear +3214 3 write_RTC(RTC_MEM_F1_batch_MSB,batch/0x100); //batch clear +3215 3 write_RTC(RTC_MEM_F1_batch_LSB,batch%0x100); +3216 3 } +3217 2 else if(function==2) +3218 2 { +3219 3 RTC_Writelong(RTC_MEM_F2_cumulative,cumulative); //cumulative clear +3220 3 write_RTC(RTC_MEM_F2_batch_MSB,batch/0x100); //batch clear +3221 3 write_RTC(RTC_MEM_F2_batch_LSB,batch%0x100); +3222 3 } +3223 2 else if(function==3) +3224 2 { +3225 3 RTC_Writelong(RTC_MEM_F3_cumulative,cumulative); //cumulative clear +3226 3 write_RTC(RTC_MEM_F3_batch_MSB,batch/0x100); //batch clear +3227 3 write_RTC(RTC_MEM_F3_batch_LSB,batch%0x100); +3228 3 } +3229 2 else if(function==4) +3230 2 { +3231 3 RTC_Writelong(RTC_MEM_F4_cumulative,cumulative); //cumulative clear +3232 3 write_RTC(RTC_MEM_F4_batch_MSB,batch/0x100); //batch clear +3233 3 write_RTC(RTC_MEM_F4_batch_LSB,batch%0x100); +3234 3 } +3235 2 else if(function==5) +3236 2 { +3237 3 RTC_Writelong(RTC_MEM_F5_cumulative,cumulative); //cumulative clear +3238 3 write_RTC(RTC_MEM_F5_batch_MSB,batch/0x100); //batch clear +3239 3 write_RTC(RTC_MEM_F5_batch_LSB,batch%0x100); +3240 3 } +3241 2 else if((function>=6) && (function<=36)) +3242 2 { +3243 3 RTC_Writelong(RTC_MEM_F6_TO_F36_cumulative,cumulative); //cumulative clear +3244 3 write_RTC(RTC_MEM_F6_TO_F36_batch_MSB,batch/0x100); //batch clear +3245 3 write_RTC(RTC_MEM_F6_TO_F36_batch_LSB,batch%0x100); +3246 3 } +3247 2 } +3248 1 } +3249 //================================================================================================= +3250 void clear_batch_cumulative(void) +3251 { +3252 1 disp(0x11,0x0C,0x16,0x0E,0x0A,0x13,0x11,0x11); +3253 1 #ifdef _6_key + while(tare && set && mode) + #elif defined( _4x4_key ) +3256 1 while(KeyPressed != tare &&KeyPressed != set && KeyPressed != mode) + C51 COMPILER V9.60.7.0 MAIN 07/10/2026 17:02:30 PAGE 54 + +3257 1 #endif +3258 1 { +3259 2 blink(0,8); +3260 2 } +3261 1 #ifdef _6_key + if(!tare) + #elif defined( _4x4_key ) +3264 1 if(KeyPressed == tare) +3265 1 #endif +3266 1 { +3267 2 cumulative=0; +3268 2 batch=0; +3269 2 +3270 2 RTC_Writelong(RTC_MEM_F1_cumulative,cumulative); //F1 cumulative clear +3271 2 write_RTC(RTC_MEM_F1_batch_MSB,batch/0x100); //F1 batch clear +3272 2 write_RTC(RTC_MEM_F1_batch_LSB,batch%0x100); +3273 2 +3274 2 RTC_Writelong(RTC_MEM_F2_cumulative,cumulative); //F2 cumulative clear +3275 2 write_RTC(RTC_MEM_F2_batch_MSB,batch/0x100); //F2 batch clear +3276 2 write_RTC(RTC_MEM_F2_batch_LSB,batch%0x100); +3277 2 +3278 2 RTC_Writelong(RTC_MEM_F3_cumulative,cumulative); //F3 cumulative clear +3279 2 write_RTC(RTC_MEM_F3_batch_MSB,batch/0x100); //F3 batch clear +3280 2 write_RTC(RTC_MEM_F3_batch_LSB,batch%0x100); +3281 2 +3282 2 RTC_Writelong(RTC_MEM_F4_cumulative,cumulative); //F4 cumulative clear +3283 2 write_RTC(RTC_MEM_F4_batch_MSB,batch/0x100); //F4 batch clear +3284 2 write_RTC(RTC_MEM_F4_batch_LSB,batch%0x100); +3285 2 +3286 2 RTC_Writelong(RTC_MEM_F5_cumulative,cumulative); //F5 cumulative clear +3287 2 write_RTC(RTC_MEM_F5_batch_MSB,batch/0x100); //F5batch clear +3288 2 write_RTC(RTC_MEM_F5_batch_LSB,batch%0x100); +3289 2 +3290 2 RTC_Writelong(RTC_MEM_F6_TO_F36_cumulative,cumulative); //F6~F36 cumulative clear +3291 2 write_RTC(RTC_MEM_F6_TO_F36_batch_MSB,batch/0x100); //batch clear +3292 2 write_RTC(RTC_MEM_F6_TO_F36_batch_LSB,batch%0x100); +3293 2 } +3294 1 } +3295 //====================================================================================================== + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 17047 ---- + CONSTANT SIZE = 76 ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = 48 36 + IDATA SIZE = 84 ---- + BIT SIZE = 39 3 +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/main.OBJ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/main.OBJ new file mode 100644 index 0000000..b81b8e2 Binary files /dev/null and b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/main.OBJ differ diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/main.c b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/main.c new file mode 100644 index 0000000..5a0420b --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/main.c @@ -0,0 +1,3295 @@ +//#pragma ot(9,size) +//#pragma nointpromote + +//#include +//#include + +#include +#include //Library Header Files. +#include +#include +#include +#include +//----------------------------------------------------------------------------- +#include +#include +#include +//#include +//-------------------------------------------------------------------------- +//define type of key board here +//#define _6_key +#define _4x4_key +//-------------------------------------------------------------------------- +//define type of ADC here +#define _AD7780 +//#define _HX711 +//-------------------------------------------------------------------------- +#ifdef _4x4_key + #undef _6_key +#endif +#ifdef _6_key + #undef _4x4_key +#endif +//--------------------------------------------------------------------------- +#ifdef _4x4_key + #include <4x4_key.h> +#endif +//---------------------------------------------------------------------------- +#ifdef _AD7780 + #include +#endif +#ifdef _HX711 + #include +#endif +//----------------------------------------------------------------------------- +void init(void); //Function declaration. +void pwd(void); +void blink(start,no); +void menu(void); +unsigned int bcd2bin(char no); +void val_read(char a); +void bin2bcd(unsigned int value,char no); +void process(void); +void tare_chk(void); +void zero_track(void); +void read_values(void); +/*void time_date(void);*/ +void display_value(void); +void check_keypad(void); +void check_switch(void); +void check_values(void); +/*void tare_entry(void); +void print_values(void); +void set_clear(void);*/ +void filter(void); +char incdec(char name,char max,char min); +void cal(void); +void cal_find(void); +void calibrate(void); +void cal_rst(void); +void average(void); +void add_values(void); +void settings(void); +void sys_paramts(void); +void self_test(void); +void defaults(void); +void load_eep_defaults(void); +void select_menu(void); +void disp_check(void); +void fill_count(void); +void display_total_cumulative(void); +void display_total_batch(void); +void clear_current_cumulative_batch(void); +void display_current_cumulative(void); +void display_current_batch(void); +void clear_batch_cumulative(void); +void recipe_menu(void); +//void memory_backup_restore(void); +//--------------------------------------------- +sbit start=P1^0; +sbit cal_en=P1^7; //calibration lock +//--------------------------------------------- +#ifdef _6_key //6 key + sbit set = P2^0; + sbit incr = P2^1; + sbit decr = P2^2; + sbit tare = P2^3; + sbit enter= P2^4; + sbit mode = P2^5; +#endif + +#ifdef _4x4_key //16 key + #define set 'A' + #define tare 'C' + #define enter 'D' + #define mode 'B' + //#define left '*' + //#define right '#' + #define incr '*' + #define decr '#' +#endif +//-------------------------------------------- +sbit cf1 =P1^4; +sbit cf2 =P1^1; +sbit ff =P1^2; +sbit waled=P1^3; + +sbit v_down_rly =P1^5; +sbit v_up_rly =P1^6; +//--------------------Variable declaration,Char.-------------------------- +unsigned char idata EEPROM_block = 0x00; + +unsigned char data temp_data[8],disp_data[8]; +unsigned char idata temp_pwd[4],dp_val=4; + +unsigned char code pswd1[2]={3,6},pswd2[2]={6,3},pswd3[2]={1,9}; +unsigned char code pswd4[2]={9,1},pswd5[2]={2,8},pswd6[2]={8,2}; +unsigned char code pswd7[2]={5,5},pswd8[2]={1,1},pswd9[2]={2,2}; +unsigned char code pswd10[2]={7,7},pswd11[2]={6,6},pswd12[2]={3,3},pswd13[2]={4,4}; +unsigned char code pass_F1[2]={1,0},pass_F2[2]={2,0},pass_F3[2]={3,0},pass_F4[2]={4,0},pass_F5[2]={5,0}; +unsigned char code pass_F6[2]={6,0},pass_F7[2]={7,0},pass_F8[2]={8,0},pass_F9[2]={9,0},pass_F10[2]={9,9}; +//unsigned char data sec,min,hr,dt,mon,yr; +//unsigned char data data_rd=0x40,ctr=0,active_cnt=10; +unsigned char idata ztwc=0,res,tare_cnt=0,mul_factor,div_factor,ztc; +unsigned char idata rng_val=0,mas,avg=0,t; +unsigned char idata avg_cnt=10,add_cnt=0,test_loc=0x12,function=1; +//unsigned char idata wait_val=1,drop_wait_val=1,drop_ctr=0,wait_ctr=0; +unsigned char idata wait_val=1,drop_wait_val=1; +unsigned int idata wait_ctr=0,drop_ctr=0; + +/*unsigned char code rng_array[7][3]={ + 10,16,8, + 10,24,12, + 10,32,16, + 10,44,22, + 10,64,32, + 10,84,42, + 10,104,52 }; */ + +unsigned char code rng_array[10][3]={ + 10,4,2, + 10,16,8, + 10,24,12, + 10,32,16, + 10,44,22, + 10,64,32, + 10,84,42, + 10,104,50, + 10,104,52, + 10,104,62 }; + +//unsigned char clk_lsb=0x60,clk_msb=0x18,gain=0x26; + +unsigned char data Adc_Value_LSB,Adc_Value_MSB,Adc_Value_MLSB,Status_Bits; + +unsigned char idata KeyPressed; +unsigned char idata start_count=0x00,start_delay=0x50; +unsigned char idata disp_count=0; +//--------------------Variable declaration,Int.--------------------------- +unsigned int idata fillset=0,cf=0,ffd=0,nfl=0,zset=0,htar=0,ltar=0; +unsigned int idata cfd1,cfd2; +unsigned int data tare_val=0,scale_val,help_val,temp_tare; +unsigned int idata disp_val=0,adc_val=0,filter_val=0,prev_val[5]={0,0,0,0,0},start_disp=0; +//unsigned int data prn_cap,prn_nett,prn_tare,prn_gross; +unsigned int idata bin_val,cal_val=0x2710,temp_val,on_time=100; +unsigned long int data temp,temp1,temp2,add_adc=0; + +unsigned long hold_counter = 0; + +unsigned long idata cumulative=0; +unsigned int idata batch=0,bset=0; +unsigned int idata batch_count=0; +//--------------------Variable declaration,Bit.--------------------------- +bit adc_pol=0,aco=0,tare_pol=0,disp_pol,dp_flag=0,c_flag=0; +bit wt_ach=0,zset_flag=0,ed=1,drop_flag=0; +bit start_flag=0,busy_flag=0,tare_flag=0,help_flag; +bit cal_flag=0,ave_ok,esc_flag=0,wa_flag=0,wait_flag=0,process_flag=0; +bit cf1_flag=0,cf2_flag=0,ff_flag=0,autotare=1,fill_start=0,adc_err=0; +bit recipe=0,grwt=0,auto_start=0,bset_enable=0,grwt_ok=0; +bit start_wait_flag=0,shift_flag=0,Instant_fill_enable=0; +bit set_enter_flag=0,rd_ok=0,start_status=0; + +bit Adc_Data_Ready,Adc_Status_bit73; +//-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=-=*=- +void main(void) +{ + init(); + rst_wdt(); + #ifdef _6_key + if(!tare) autotare=0; + #elif defined( _4x4_key ) + if(KeyPressed == tare) autotare=0; + #endif + dp_flag=0; + disp(0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11); + display_name(); + //delay(500); + read_values(); + dp_flag=0; + t=read_eeprom(EE_test_loc_Mem); + if(t != test_loc) + { + disp(0x0d,0x0e,0x0f,0x0a,0x1b,0x16,0x14,0x05); + #ifdef _6_key + while(enter && mode && set && decr && incr){delay(2);} + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != mode && KeyPressed != set) {delay(2);} + #endif + + #ifdef _6_key + if(!enter) + #elif defined( _4x4_key ) + if(KeyPressed == enter) + #endif + { + disp(0x11,0x16,0x17,0x0a,0x0d,0x01,0x18,0x09); + load_eep_defaults(); + delay(500); + } + } + //init_adc(); + #ifdef _AD7780 + init_adc_AD7780(); + #elif defined( _HX711 ) + init_adc_HX711(); + #endif + //delay(500); + clr_disp(); + + if(autotare) + { + disp_check(); + self_test(); + clr_disp(); + tare_flag=1; + disp(0x11,0x11,0x14,0x0a,0x13,0x0e,0x11,0x11); + delay(1000); + clr_disp(); + } + dp_flag=1; + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + while(1) + { + /*if(aco) + { + aco=0; + //ctr=0; + add_values(); + add_cnt++; + if(add_cnt >= avg_cnt) + { + add_cnt=0; + average(); + //filter(); + //process(); + } + } */ + process(); + #ifdef _4x4_key + KeyPressed=Read_Keypad(); + #endif + check_keypad(); + check_switch(); + rst_wdt(); + check_values(); + disp_count++; + if(!help_flag && !tare_flag) + {if(disp_count>2){display_value(); disp_count=0;}} + //if(!help_flag && !tare_flag) display_value(); + //delay(5); + #ifdef _4x4_key + KeyPressed='x'; + #endif + } +} +//========================================================================================= +void init(void) +{ + //#if defined(_6_key) + #ifdef _6_key + P0=P1=P2=0xff; //when 6 key + TMOD=0x1D; + TH0=0x00; + TL0=0x00; + TCON=0x55; + IE=0x81; + IP=0x01; + SCON=0x00; + #elif defined( _4x4_key ) + P1=P2=0xff; //when using 4x4 key + TMOD=0x1D; + TH0=0x00; + TL0=0x00; + TCON=0x55; + IE=0x89; + IP=0x01; + TH1=0xFC; + TL1=0x66; + SCON=0x00; + #endif + + //--------------------------------------------------------------------- + //Following value Only when HX710/HX711 ADC used + //IT0 = 1; // Configure interrupt 0 for falling edge on /INT0 (P3.2) + IT0 = 0; // Configure interrupt 0 for low level triggered /INT0 (P3.2) + EX0 = 1; // Enable EX0 Interrupt + EA = 1; // Enable Global Interrupt Flag + //--------------------------------------------------------------------- + + cf1=0; + cf2=0; + ff=0; + waled=0; +} +//=============================================================================================== +void adcint0_isr(void) interrupt 0 +{ + Adc_Data_Ready=1; + //Get_Adc_Result(); + #ifdef _AD7780 + Get_Adc_Result_AD7780(); + #elif defined( _HX711 ) + Get_Adc_Result_HX711(); + #endif + aco=1; + + if(rd_ok) + { + rd_ok=0; + add_values(); + add_cnt++; + if(add_cnt >= avg_cnt) + { + add_cnt=0; + average(); + if(!start_flag)filter(); + //process(); + } + } + EX0 = 1; +} +//=============================================================================================== +#ifdef _4x4_key +void timer1_isr(void) interrupt 3 +{ + TR1=0; + KeyPressed=Read_Keypad(); + TL1=0x66; + //TH1=0xFc; + TH1=0x32; + TR1=1; +} +#endif +//=============================================================================================== +void read_values(void) +{ + unsigned char dat; + + //write_RTC(RTC_MEM_start_status,0x00); //pause auto start when power failure + start_status=0; + + dat=read_RTC(RTC_MEM_Auto_start_enable); //Auto start Enable / Disable. + if(dat==1)auto_start=1; + else auto_start=0; + + dat=read_RTC(RTC_MEM_recipe_enable); //Recipe enable/disabled + if(dat==1)recipe=1; + else recipe=0; + + dat=read_RTC(RTC_MEM_Instant_fill_enable); //instant fillset entry enabled/disabled + if(dat==1)Instant_fill_enable=1; + else Instant_fill_enable=0; + + //if(!recipe)function=1; + if(!recipe)write_RTC(RTC_MEM_current_recipe,0x01); + function = read_RTC(RTC_MEM_current_recipe); + + dat=read_RTC(RTC_MEM_gross_weight_enable); //Gross weight display enable/disable + if(dat==1)grwt=1; + else grwt=0; + + start_delay = read_RTC(RTC_MEM_start_delay); + + dat=read_RTC(RTC_MEM_batch_set_enable); //Batch filling set enabled/disabled + if(dat==1)bset_enable=1; + else bset_enable=0; + bset=read_RTC(RTC_MEM_batch_set_MSB)*100 + read_RTC(RTC_MEM_batch_set_LSB); //batch set(no.of filling to be done) + rst_wdt(); + //------------------------------------------------------------------------------------ + if(function>0 && function<=9) {EEPROM_block = Block_0;dat = function;} + else if(function>9 && function<=18) {EEPROM_block = Block_1;dat=(function-9);} + else if(function>18 && function<=27) {EEPROM_block = Block_2;dat=(function-18);} + else if(function>27 && function<=36) {EEPROM_block = Block_3;dat=(function-27);} + //-------------------------------------------------------------------------------------- + if(Instant_fill_enable) //if instant fillset entry enabled + fillset=read_RTC(RTC_fillset_MSB) *0x100 + read_RTC(RTC_fillset_LSB); + else //if instant fillset entry disabled + fillset=read_eeprom(0x10*dat) *0x100 + read_eeprom((0x10*dat)+0x01); + + cf=read_eeprom((0x10*dat)+0x02) *0x100 + read_eeprom((0x10*dat)+0x03); + ffd=read_eeprom((0x10*dat)+0x04) *0x100 + read_eeprom((0x10*dat)+0x05); + nfl=read_eeprom((0x10*dat)+0x06) *0x100 + read_eeprom((0x10*dat)+0x07); + htar=read_eeprom((0x10*dat)+0x08) *0x100 + read_eeprom((0x10*dat)+0x09); + ltar=read_eeprom((0x10*dat)+0x0A) *0x100 + read_eeprom((0x10*dat)+0x0B); + dat=read_eeprom((0x10*dat)+0x0C); + if(dat==0) ed=0; + else ed=1; + //----------------------------------------------------------------------- + EEPROM_block = Block_0; //Following parameters in block0 of EEPROM + + cal_val=read_eeprom(EE_cal_val_Mem_MSB)*0x100 + read_eeprom(EE_cal_val_Mem_LSB); + zset=read_eeprom(EE_zset_Mem_MSB)*0x100 + read_eeprom(EE_zset_Mem_LSB); + + rng_val=read_eeprom(EE_rng_val_Mem); + res=read_eeprom(EE_res_Mem); + mas=read_eeprom(EE_mas_Mem); + ztc=read_eeprom(EE_ztc_Mem); + dp_val=read_eeprom(EE_dp_val_mem); + + avg=read_eeprom(EE_avg_Mem); + avg_cnt=3*(10-avg); + rst_wdt(); + div_factor=rng_array[rng_val][0]; + mul_factor=rng_array[rng_val][1]; + help_val=(rng_array[rng_val][2] * 1000) + (res * 9); + //help_val=20090; + + wait_val=read_eeprom(EE_wait_val_Mem); + drop_wait_val=read_eeprom(EE_drop_wait_val_Mem); + //on_time=read_eeprom(EE_on_time_Mem) * 100; + on_time=read_eeprom(EE_on_time_Mem) * 10; + //---------------------------------------------------------------------- + /*cfd1=fillset-ffd; + cfd2=fillset-ffd; + //ffd=fillset-ffd;*/ + + //cfd1=fillset-cf; + cfd1=fillset-ffd; + cfd2=fillset-ffd; + + start_wait_flag=0; +} +//============================================================================================= +void self_test(void) +{ + unsigned char dat,i; + bit aok=0; + + disp(0x05,0x0e,0x16,0x0f,0x14,0x0e,0x05,0x14); + delay(500); + //-------------------------------------------- + //EEPROM test + disp(0x11,0x1a,0x0e,0x1a,0x17,0x13,0x1c,0x11); + delay(500); + dat=read_eeprom(EE_test_loc_Mem); + if(dat==test_loc) + disp(0x11,0x05,0x1b,0x0c,0x0c,0x0e,0x05,0x05); //"SUCCESS" + else + { + disp(0x11,0x11,0x0f,0x0a,0x01,0x16,0x11,0x11); //"Fail" + //defaults(); + } + delay(500); + //-------------------------------------------- + //RTC test + disp(0x11,0x11,0x13,0x14,0x0C,0x11,0x11,0x11); + delay(500); + dat=read_RTC(RTC_MEM_status); + if(dat==test_loc) + disp(0x11,0x05,0x1b,0x0c,0x0c,0x0e,0x05,0x05); //"SUCCESS" + else + { + disp(0x11,0x11,0x0f,0x0a,0x01,0x16,0x11,0x11); //"Fail" + //defaults(); + } + delay(500); + //--------------------------------------------- + //ADC test + disp(0x11,0x11,0x0a,0x0d,0x0c,0x11,0x11,0x11); + //delay(1000); + aco=0; + for(i=0;i<255;i++) + { + if(aco) + { + aco=0; + aok=1; + } + delay(4); + } + if(aok) + { + disp(0x11,0x05,0x1b,0x0c,0x0c,0x0e,0x05,0x05); //"SUCCESS" + adc_err=0; + } + else + { + disp(0x11,0x11,0x0f,0x0a,0x01,0x16,0x11,0x11); //"Fail" + adc_err=1; + } + delay(500); +} +//======================================================================================= +void disp_check(void) +{ + char i; + for(i=0;i<10;i++) + { + disp(i,i,i,i,i,i,i,i); + delay(200); + } +} +//====================================================================================== +void defaults(void) +{ + fillset=1000; + //cf=800; + //ffd=950; + cf=200; + ffd=50; + nfl=0; + zset=10; + htar=100; + ltar=0; + ed=1; + avg=9; + avg_cnt=3*(10-avg); + +// cal_val=0x2710; + + //RCAP2L=clk_array[spd]; + + rng_val=1; //2 for 20 Kg,4 for 50 Kg. + res=05; + mas=1; + ztc=1; + dp_val=4; + + div_factor=rng_array[rng_val][0]; + mul_factor=rng_array[rng_val][1]; + //help_val=20090; + help_val=(rng_array[rng_val][2] * 1000) + (res * 9); + + /*cfd1=cf; + cfd2=cf; + ffd=cf;*/ + + wait_val=3; + drop_wait_val=2; + on_time=30; +} +//======================================================================================= +void load_eep_defaults(void) +{ + unsigned char rcpe=0,dat=0x01; + disp(0x0d,0x0e,0x0f,0x0a,0x1b,0x16,0x14,0x05); + delay(3000); + defaults(); + disp(0x16,0x17,0x0a,0x0d,0x01,0x18,0x09,0x10); + write_eeprom(EE_test_loc_Mem,test_loc); + write_RTC(RTC_MEM_current_recipe,0x01); + //------------------------------------------------------------- + for(rcpe=1;rcpe<=36;rcpe++) + { + if(rcpe>0 && rcpe<=9) {EEPROM_block = Block_0; dat=rcpe;} + else if(rcpe>9 && rcpe<=18) {EEPROM_block = Block_1; dat=(rcpe-9);} + else if(rcpe>18 && rcpe<=27) {EEPROM_block = Block_2; dat=(rcpe-18);} + else if(rcpe>27 && rcpe<=36) {EEPROM_block = Block_3; dat=(rcpe-27);} + + write_eeprom((0x10*dat),fillset / 0x100); + write_eeprom((0x10*dat)+0x01,fillset % 0x100); + write_eeprom((0x10*dat)+0x02,cf / 0x100); + write_eeprom((0x10*dat)+0x03,cf % 0x100); + write_eeprom((0x10*dat)+0x04,ffd / 0x100); + write_eeprom((0x10*dat)+0x05,ffd % 0x100); + write_eeprom((0x10*dat)+0x06,nfl / 0x100); + write_eeprom((0x10*dat)+0x07,nfl % 0x100); + write_eeprom((0x10*dat)+0x08,htar / 0x100); + write_eeprom((0x10*dat)+0x09,htar % 0x100); + write_eeprom((0x10*dat)+0x0A,ltar / 0x100); + write_eeprom((0x10*dat)+0x0B,ltar % 0x100); + write_eeprom((0x10*dat)+0x0C,0x01); + blink(7,1); + rst_wdt(); + } + //-------------------------------------------------------------------- + EEPROM_block = Block_0; //following values store in first 16 bytes of block0 + + write_eeprom(EE_zset_Mem_MSB,zset / 0x100); + write_eeprom(EE_zset_Mem_LSB,zset % 0x100); + + write_eeprom(EE_rng_val_Mem,rng_val); + write_eeprom(EE_res_Mem,res); + write_eeprom(EE_mas_Mem,mas); + write_eeprom(EE_ztc_Mem,ztc); + write_eeprom(EE_dp_val_mem,dp_val); + write_eeprom(EE_avg_Mem,avg); + +// write_eeprom(EE_cal_val_Mem_MSB,0x27); +// write_eeprom((EE_cal_val_Mem_LSB),0x10); + + write_eeprom(EE_wait_val_Mem,wait_val); + write_eeprom(EE_drop_wait_val_Mem,drop_wait_val); + write_eeprom(EE_on_time_Mem,on_time); + //---------------------------------------------------------------- + write_RTC(RTC_MEM_Auto_start_enable,0x00); //Auto start disable + write_RTC(RTC_MEM_recipe_enable,0x00); //Recipe disable + write_RTC(RTC_MEM_gross_weight_enable,0x00); //Gross weight display disable + write_RTC(RTC_MEM_start_delay,0x37); //Auto start delay + write_RTC(RTC_MEM_batch_set_enable,0x00);//Batch filling disabled + write_RTC(RTC_MEM_status,test_loc); //RTC_memory status + write_RTC(RTC_MEM_Instant_fill_enable,0x00);//Instant filling disabled + //---------------------------------------------------------------- + read_values(); + clr_disp(); +} +//======================================================================================= +void add_values(void) +{ + add_adc = add_adc + adc_val; +} +//======================================================================================= +void average(void) +{ + filter_val = add_adc / avg_cnt; + add_adc=0; +} +//======================================================================================= +void filter(void) +{ + unsigned char i; + bit ave_ok=1; + + for(i=4;i>0;i--) prev_val[i]=prev_val[i-1]; + prev_val[0]=filter_val; + + for(i=0;i<4;i++) + { + if(abs(prev_val[i] - prev_val[i+1]) > 5) ave_ok=0; + } + + if(ave_ok) + { + temp=0; + for(i=0;i<5;i++) temp = temp + (long int)prev_val[i]; + temp = temp / 0x05; + filter_val = (unsigned int)temp; + } +} +//====================================================================================== +void process(void) +{ + /*temp=(unsigned long int)filter_val * (unsigned long int)mul_factor; + temp=temp / (unsigned long int)div_factor; + temp=temp/10; + scale_val = (unsigned int)temp;*/ + scale_val = filter_val; + tare_chk(); + rst_wdt(); + zero_track(); + if(!c_flag) + { + cal_find(); + calibrate(); + } + if(disp_val > help_val && autotare) + { + dp_flag=0; + rst_wdt(); + help_flag=1; + disp(0x11,0x11,0x15,0x0e,0x16,0x12,0x11,0x11); //"Help" + blink(0,8); + dp_flag=1; + } + else help_flag=0; + + if(adc_err) + { + dp_flag=0; + rst_wdt(); + help_flag=1; + disp(0x11,0x0a,0x0d,0x0c,0x11,0x0e,0x13,0x13); //"ADC err" + blink(0,8); + dp_flag=1; + } +} +//==================================================================================== +void tare_chk(void) +{ + if(tare_flag) //tare switch.. + { + tare_val=scale_val; + tare_pol=adc_pol; + if(++tare_cnt>3) + { + tare_flag=0; + tare_cnt=0; + } + } + +// Deducting tare value. + + if(tare_pol != adc_pol) + { + disp_val = scale_val + tare_val; + disp_pol = adc_pol; + } + else + { + if(scale_val > tare_val) + { + disp_pol = adc_pol; + disp_val = scale_val - tare_val; + } + else + { + disp_pol = ~(adc_pol); + disp_val = tare_val - scale_val; + } + } + + /* if(scale_val >= tare_val) + { + disp_pol = 1; + disp_val = scale_val - tare_val; + } + else + { + disp_pol = 0; + disp_val = tare_val - scale_val; + }*/ + +} +//================================================================================== +void zero_track(void) +{ + if(disp_val <= ztc) ztwc++; + else ztwc = 0; + + if(ztwc > 3) + { + tare_val = scale_val; + tare_pol = adc_pol; + ztwc = 0; + } +} +//================================================================================= +void bin2bcd(unsigned int value,char no) +{ + char i; // Converts a bin value to bcd & display. + // char no determines how many digits to be + for(i=7;i>=(8-no);i--) // displayed. + { + disp_data[i]=value % 10; + value=value / 10; + } + display(); +} +//================================================================================= +void display_value(void) +{ + unsigned int value; + char i; // Converts a bin value to bcd & display. + // char no determines how many digits to be + // displayed. + //disp_val=(disp_val/res)*res; + //value=disp_val; + value=(disp_val/res)*res; + for(i=7;i>=3;i--) + { + disp_data[i]=value % 10; + value=value / 10; + } + + if(disp_data[3]==0x00)disp_data[3]=0x11; + if(disp_pol) disp_data[3]=0x10; //"-" sign + + disp_data[7] = (disp_data[7] / res) * res; + + if(disp_val <= (mas * res)) + { + disp_data[7]=0x00; + disp_data[6]=0x00; + disp_data[3]=0x11; + disp_pol=0; + } + if(disp_val==0x00) + { + disp_data[0]=0x11; + disp_data[1]=0x11; + disp_data[2]=0x11; + disp_data[3]=0x11; + } + + if(cf1_flag) + { + disp_data[0]=0x0c; + disp_data[1]=0x01; // Display "CF1". + disp_data[2]=0x11; + } + else if(cf2_flag) + { + disp_data[0]=0x0c; + disp_data[1]=0x02; // Display "CF2". + disp_data[2]=0x11; + } + else if(ff_flag) + { + disp_data[0]=0x0f; + disp_data[1]=0x0f; + disp_data[2]=0x11; // Display "FF". + } + else if(start_wait_flag && !wa_flag) + { + disp_data[0]=0x0A; + disp_data[1]=0x05; // Display "ast". + disp_data[2]=0x14; + } + else if(wa_flag) + { + if(grwt && grwt_ok) //Gross weight display + { + disp_data[0]=0x19; + disp_data[1]=0x1D; // Display "Gross weight". + disp_data[2]=0x14; + } + else + { + disp_data[0]=0x05; + disp_data[1]=0x0a; // Display "SA". + disp_data[2]=0x11; + } + } + else + { + if(!recipe) + { + disp_data[0]=0x13; + disp_data[1]=0x0d; // Display "RDY". + disp_data[2]=0x1c; + } + else + { + //disp_data[1]=function; // Display "F1 ~ F5". + //disp_data[2]=0x11; + if(function<=9) + { + disp_data[0]=0x0F; //Display "F" + disp_data[1]=function % 10; + //disp_data[0]=function / 10; + disp_data[2]=0x11; + } + else + { + disp_data[1]=function % 10; + disp_data[0]=function / 10; + disp_data[2]=0x0F; //Display "F" + //disp_data[2]=0x1E; //Display "=" + } + } + } + display(); +} +//========================================================================================== +void check_keypad(void) // Keypad checking routine. +{ + unsigned char sdat=0,b=0; + //----------------------------------------------------------------------- + #ifdef _6_key + if(!shift_flag && !set && !process_flag) // SET key for value entry. + #elif defined( _4x4_key ) + if(!shift_flag && KeyPressed==set && !process_flag) + #endif + { // Asks password,go to appropriate routines + dp_flag=0; // on entry of password. + rst_wdt(); + pwd(); + rst_wdt(); + arr_cpy(&temp_pwd[0],&disp_data[6],2); + // arr_cpy(&temp_pwd[0],&disp_data[4],4); + //if(arr_cmp(pswd1,temp_pwd,4)&& !recipe) menu(); //Pswd. 36 (if recipe disabled) + #ifdef _6_key + if(arr_cmp(pswd1,temp_pwd,2))do{if(recipe)recipe_menu(); if(!mode){while(!mode){dp_flag=1;}return;} menu();if(!recipe)return;}while(mode); + #elif defined( _4x4_key ) +// if(arr_cmp(pswd1,temp_pwd,2))do{if(recipe)recipe_menu(); if(KeyPressed==mode){while(KeyPressed==mode){dp_flag=1;}return;} menu();if(!recipe)return;}while(KeyPressed!=mode); + if(arr_cmp(pswd1,temp_pwd,2))do{if(recipe)recipe_menu(); if(KeyPressed==mode){while(KeyPressed==mode){ KeyPressed = 'X'; dp_flag=1;}return;} menu();if(!recipe)return;}while(KeyPressed!=mode); + + #endif + else if(arr_cmp(pswd2,temp_pwd,2)) cal(); //Pswd. 63 + // else if(arr_cmp(pswd3,temp_pwd,2)) cal_rst(); //Pswd. 19 +// else if(arr_cmp(pswd3,temp_pwd,2)) memory_backup_restore(); //Pswd. 19 + else if(arr_cmp(pswd4,temp_pwd,2)) settings(); //Pswd. 91 + else if(arr_cmp(pswd5,temp_pwd,2)) sys_paramts(); //Pswd. 28 + else if(arr_cmp(pswd6,temp_pwd,2)) load_eep_defaults(); //Pswd. 82 + else if(arr_cmp(pswd7,temp_pwd,2)) select_menu(); //Pswd. 55 + else if(arr_cmp(pswd8,temp_pwd,2)) display_total_cumulative(); //Pswd. 11 + else if(arr_cmp(pswd9,temp_pwd,2)) display_current_batch(); //Pswd. 22 + else if(arr_cmp(pswd10,temp_pwd,2)) clear_current_cumulative_batch(); //Pswd. 77 + else if(arr_cmp(pswd11,temp_pwd,2)) display_current_cumulative(); //Pswd. 66 + else if(arr_cmp(pswd12,temp_pwd,2)) clear_batch_cumulative(); //Pswd. 33 + else if(arr_cmp(pswd13,temp_pwd,2)) display_total_batch(); //Pswd. 44 + else if(arr_cmp(pass_F1,temp_pwd,2)){if(recipe){write_RTC(RTC_MEM_current_recipe,0x01); menu();}} //Pswd. 10 + else if(arr_cmp(pass_F2,temp_pwd,2)){if(recipe){write_RTC(RTC_MEM_current_recipe,0x02); menu();}} //Pswd. 20 + else if(arr_cmp(pass_F3,temp_pwd,2)){if(recipe){write_RTC(RTC_MEM_current_recipe,0x03); menu();}} //Pswd. 30 + else if(arr_cmp(pass_F4,temp_pwd,2)){if(recipe){write_RTC(RTC_MEM_current_recipe,0x04); menu();}} //Pswd. 40 + else if(arr_cmp(pass_F5,temp_pwd,2)){if(recipe){write_RTC(RTC_MEM_current_recipe,0x05); menu();}} //Pswd. 50 + else if(arr_cmp(pass_F6,temp_pwd,2)){if(recipe){write_RTC(RTC_MEM_current_recipe,0x06); menu();}} //Pswd. 60 + else if(arr_cmp(pass_F7,temp_pwd,2)){if(recipe){write_RTC(RTC_MEM_current_recipe,0x07); menu();}} //Pswd. 70 + else if(arr_cmp(pass_F8,temp_pwd,2)){if(recipe){write_RTC(RTC_MEM_current_recipe,0x08); menu();}} //Pswd. 80 + else if(arr_cmp(pass_F9,temp_pwd,2)){if(recipe){write_RTC(RTC_MEM_current_recipe,0x09); menu();}} //Pswd. 90 + else if(arr_cmp(pass_F10,temp_pwd,2)){if(recipe){write_RTC(RTC_MEM_current_recipe,0x0A); menu();}} //Pswd. 99 + + else disp(0x11,0x11,0x0e,0x13,0x13,0x17,0x13,0x11); //"error" + delay(1000); // Don't check for SET & TARE sw while in start + clr_disp(); // mode. + dp_flag=1; + } + rst_wdt(); + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + //tare switch pressed + #ifdef _6_key + if(!tare && !process_flag) + #elif defined( _4x4_key ) + if(KeyPressed == tare && !process_flag) + #endif + { + disp(0x11,0x11,0x11,0x10,0x10,0x10,0x10,0x10); //"-----" + #ifdef _6_key + while(!tare) {delay(2);} + #elif defined( _4x4_key )// {delay(2);} + while(KeyPressed == tare) {delay(2);} + #endif + tare_flag=1; + } + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + //Instant fillset direct entry option + #ifdef _6_key + if(!shift_flag && !decr && !process_flag) //fillset direct entry + #elif defined( _4x4_key ) + if(!shift_flag && KeyPressed == decr && !process_flag) + #endif + { + shift_flag=0; + if(Instant_fill_enable) + { + disp(0x0F,0x01,0x16,0x00,0x00,0x00,0x00,0x00); + bin2bcd(fillset,5); // Fill set + delay(500); + val_read(5); + temp=bcd2bin(5); + //if(t<=15000) + if(temp > (rng_array[rng_val][2] * 1000) ) + { + disp(0x11,0x11,0x0e,0x13,0x13,0x17,0x13,0x11); + delay(1000); + clr_disp(); + } + else + { + start_status=0; //TO STOP AUTO START AND TO READ FULL VALUR FROM EEPROM + fillset=(temp/res)*res; + write_RTC(RTC_fillset_MSB,fillset/0x100); + write_RTC(RTC_fillset_LSB,fillset%0x100); + } + } + } + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + //shift key pressed and press "set" or "enter" or "dec" key for short cut + #ifdef _6_key + if(!incr && !process_flag && !shift_flag) + #elif defined( _4x4_key ) + if(KeyPressed == incr && !process_flag && !shift_flag) + #endif + { + shift_flag=1; + #ifdef _6_key + while(!incr) + #elif defined( _4x4_key ) + while(KeyPressed == incr) + #endif + {delay(2);} + } + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + //Shift and set key for Set fill parameters. + #ifdef _6_key + if(shift_flag && !set && !process_flag) + #elif defined( _4x4_key ) + if(shift_flag && KeyPressed == set && !process_flag) + #endif + { + #ifdef _6_key + while(!set) + #elif defined( _4x4_key ) + while(KeyPressed == set) + #endif + {delay(2);} + shift_flag=0; + sys_paramts(); + } + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + //Set batch count to be filled. shift and enter + #ifdef _6_key + if(shift_flag && !enter && !process_flag && bset_enable) + #elif defined( _4x4_key ) + if(shift_flag && KeyPressed == enter && !process_flag && bset_enable) + #endif + { + shift_flag=0; + dp_flag=0; + disp(0x0B,0x05,0x0E,0x14,0x11,0x11,0x11,0x11); //"bset" + bset=read_RTC(RTC_MEM_batch_set_MSB)*0x100 + read_RTC(RTC_MEM_batch_set_LSB); + bin2bcd(bset,4); + delay(500); + val_read(4); + bset = bcd2bin(4); + + #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) + if(KeyPressed == mode) return; + #endif + + #ifdef _6_key + if(set) + #elif defined( _4x4_key ) + if(KeyPressed == enter) + //if(KeyPressed != set) + #endif + { + write_RTC(RTC_MEM_batch_set_MSB,bset / 0x100); //bset value fixed memory + write_RTC(RTC_MEM_batch_set_LSB,bset % 0x100); + + write_RTC(RTC_MEM_batch_set_count_MSB,bset / 0x100); //count down bset memory + write_RTC(RTC_MEM_batch_set_count_LSB,bset % 0x100); + } + dp_flag=1; + #ifdef _6_key + while(!enter) + #elif defined( _4x4_key ) + while(KeyPressed == enter) + #endif + {delay(2);} + } + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + //Recipe selection. Only mode key press + #ifdef _6_key + //if(!mode && !process_flag && recipe) + if(!mode && !process_flag && recipe && !start_status) + #elif defined( _4x4_key ) + //if(KeyPressed == mode && !process_flag && recipe) + if(KeyPressed == mode && !process_flag && recipe && !start_status) + #endif + { +rtn: + function = read_RTC(RTC_MEM_current_recipe); + shift_flag=0; + if(function<1)function=1; + disp(function/10,function%10,0x0F,0x11,0x11,0x11,0x11,0x11); + //disp(function/10,function%10,0x1E,0x11,0x11,0x11,0x11,0x11); //"01=" + delay(500); + b=1; + //b=0; + dp_flag=1; + #ifdef _6_key + while(enter && set) + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != set) + #endif + { + //blink(1,2); + //disp_data[1]=incdec(disp_data[1],5,1); + blink(b,1); + disp_data[b]=incdec(disp_data[b],9,0); + //dat = (char)bcd2bin(2); + //sdat = ((disp_data[1] & 0x0F) << 4 ) + (disp_data[2] & 0x0F); + sdat = ((disp_data[0] & 0x0F) << 4 ) + (disp_data[1] & 0x0F); + sdat = bcd2int(sdat); + + #ifdef _6_key + if(!tare) + #elif defined( _4x4_key ) + if(('S' == KeyPressed) || (KeyPressed == tare)) + #endif + { // blinking digit to right. + b++; + //if(b>7) b=8-2; + //if(b>2) b=1; + if(b>1) b=0; + #ifdef _4x4_key + KeyPressed = 'X'; //clear keyPressed + #endif + } + #ifdef _4x4_key + //if(sdat > 36){disp(0x11,0x0e,0x13,0x13,0x17,0x13,0x11,0x11);delay(500);sdat=1;goto rtn;} + if(sdat > 36){disp(0x11,0x0e,0x13,0x13,0x17,0x13,0x11,0x11);delay(500);sdat=36;} //"error" + #endif + delay(100); + if(sdat>0 && sdat<=9) + {EEPROM_block = Block_0;fillset=read_eeprom((0x10*sdat)) *0x100 + read_eeprom((0x10*sdat)+0x01);} + else if(sdat>9 && sdat<=18) + {EEPROM_block = Block_1;fillset=read_eeprom(0x10*(sdat-9)) *0x100 + read_eeprom((0x10*(sdat-9))+0x01);} + else if(sdat>18 && sdat<=27) + {EEPROM_block = Block_2;fillset=read_eeprom(0x10*(sdat-18)) *0x100 + read_eeprom((0x10*(sdat-18))+0x01);} + else if(sdat>27 && sdat<=36) + {EEPROM_block = Block_3;fillset=read_eeprom(0x10*(sdat-27)) *0x100 + read_eeprom((0x10*(sdat-27))+0x01);} + bin2bcd(fillset,5); // display selected receipe Fill set + } + #ifdef _6_key + if(!enter) + #elif defined( _4x4_key ) + if(KeyPressed == enter) + #endif + { + if(sdat>36 || sdat<1) + { + disp(0x11,0x0e,0x13,0x13,0x17,0x13,0x11,0x11); //"error" + delay(500); + sdat = 36; + goto rtn; + } + else + { + write_RTC(RTC_MEM_current_recipe,(sdat*0x01)); + function = read_RTC(RTC_MEM_current_recipe); + read_values(); + delay(500); + } + } + #ifdef _6_key + while(!enter) + #elif defined( _4x4_key ) + while(KeyPressed == enter) + #endif + {delay(2);} + } + //------------------------------------------------- + // display batch_count left to be filled + #ifdef _6_key + if(shift_flag && !decr && !process_flag && bset_enable) + #elif defined( _4x4_key ) + if(shift_flag && KeyPressed == decr && !process_flag && bset_enable) + #endif + { + dp_flag=0; + batch_count=read_RTC(RTC_MEM_batch_set_count_MSB)*0x100 + read_RTC(RTC_MEM_batch_set_count_LSB); + disp(0x0B,0x0C,0x18,0x14,0x11,0x11,0x11,0x11); //"bcnt" + bin2bcd(batch_count,4); + delay(3000); + dp_flag=1; + } + //------------------------------------------------- + // display current batch number filled + #ifdef _6_key + if(!shift_flag && !decr && !process_flag && !Instant_fill_enable && bset_enable) + #elif defined( _4x4_key ) + if(!shift_flag && KeyPressed == decr && !process_flag && !Instant_fill_enable && bset_enable) + #endif + { + display_current_batch(); + } +} +//============================================================================================================== +void check_switch(void) +{ + unsigned char dat=0,stop=0; + + if(set_enter_flag){read_values(); set_enter_flag=0;} //If entered any settings read all values +bgn: + //if(start_flag) // if filling or auto start + #ifdef _6_key + if((start_flag || start_status) && (!mode)) + #elif defined( _4x4_key ) + if((start_flag || start_status) && (KeyPressed==mode)) + #endif + { + hold_counter++; + + if (hold_counter >= 1200) + { + + dp_flag=0; + disp(0x0A,0x0B,0x17,0x13,0x14,0x11,0x11,0x11); // "Abort" + ff=0; + cf1=0; + cf2=0; + waled=0; + cf1_flag=0; + cf2_flag=0; + ff_flag=0; + wa_flag=0; + start_flag=0; + drop_flag=0; + tare_val=temp_tare; + + avg_cnt=3*(10-avg); + add_cnt=0; + add_adc=0; + + process_flag=0; + //write_RTC(RTC_MEM_start_status,0x00); //pause auto start + start_status=0; + disp(0x0A,0x0B,0x17,0x13,0x14,0x0E,0x0D,0x11); // "Aborted" + delay(2000); + dp_flag=1; + + + while (Read_Keypad() == mode); + hold_counter = 0; // Reset counter for next press + } + + } +else // if not filling + { + hold_counter = 0; + + + // Manual start Only first time after power on in auto mode + //if(auto_start && !process_flag &&(read_RTC(RTC_MEM_start_status)==0x00)) + if(auto_start && !process_flag && !start_status) + { + //dp_flag=0; + //disp(0x11,0x05,0x14,0x0A,0x13,0x14,0x11,0x11); //start + //blink(0,8); + start_wait_flag=1; + if(!start) // if start button pressed + { + read_values(); + //start_wait_flag=0; + if(bset_enable) {batch_count=read_RTC(RTC_MEM_batch_set_count_MSB)*0x100 + read_RTC(RTC_MEM_batch_set_count_LSB);} + + if(batch_count<1 && bset_enable) + { + //disp(0x0B,0x0A,0x14,0x0C,0x15,0x11,0x17,0x13); // batch over + disp(0x0B,0x11,0x11,0x0e,0x13,0x13,0x11,0x11); //b err + delay(1000); + return; + } + //else if(batch_count>0 && bset_enable) start_wait_flag=0; + //write_RTC(RTC_MEM_start_status,0x01); + start_wait_flag=0; + start_status=1; + goto srt; + } + } + // continuous auto start(filling) in auto mode if started + //if(auto_start && !process_flag && (read_RTC(RTC_MEM_start_status) == 0x01)) + if(auto_start && !process_flag && start_status) + { + if((disp_val <= htar && disp_val >= ltar) && !disp_pol) + { + if(start_count == 0) start_disp = disp_val; + if(start_disp == disp_val)start_count++; + else start_count = 0; + if(start_count >= start_delay*4) + { + start_count = 0; + goto srt; + } + } + } + //Manual start + if(!start && !process_flag && !disp_pol) // Checking of Start button. + { + read_values(); + if(bset_enable) {batch_count=read_RTC(RTC_MEM_batch_set_count_MSB)*0x100 + read_RTC(RTC_MEM_batch_set_count_LSB);} + + if(batch_count<1 && bset_enable) + { + //disp(0x0B,0x0A,0x14,0x0C,0x15,0x11,0x17,0x13); // batch over + disp(0x0B,0x11,0x11,0x0e,0x13,0x13,0x11,0x11); //b err + delay(1000); + return; + } +//srt: if(cf>=fillset || ffd>=fillset || nfl>=(fillset-ffd) || zset>=fillset || ltar>=htar) +//srt:if(cf>=fillset || ffd>=cf || nfl>=ffd || zset>=fillset || ltar>=htar) +srt:if(ffd>=fillset || nfl>=ffd || zset>=fillset || ltar>=htar) + { + rst_wdt(); + dp_flag=0; + disp(0x05,0x0e,0x14,0x11,0x0e,0x13,0x13,0x11); + delay(500); + dp_flag=1; + //write_RTC(RTC_MEM_start_status,0x00);// Error in setting pause auto start + start_status=0; + goto bgn; + } + else + { + if(ed && (disp_val <= htar && disp_val >= ltar) && !disp_pol) + { + fill_start=1; // Condition for filling to be started. + temp_tare=tare_val; // If in tare enable mode, store current + tare_val=scale_val; // tare value in a temp loc and tare + } // the display value. + else if(!ed && !disp_pol) + { + fill_start=1; + temp_tare=tare_val; + } + else fill_start=0; + + process(); //To calculate scale value using new tare value + + if(fill_start) + { + fill_start=0; + start_flag=1; + process_flag=1; + delay(100); + ff=1; + delay(50); + cf2=1; // Filling started.,CF1,CF2,FF all ON. + delay(50); + cf1=1; + cf1_flag=1; + cf2_flag=1; + ff_flag=1; + + avg_cnt=1*(10-avg); + add_cnt=0; // No averaging, since in course feed. + add_adc=0; + } + else + { + dp_flag=0; + disp(0x14,0x0a,0x13,0x0e,0x11,0x0e,0x13,0x13); + delay(500); // Display tare error. + dp_flag=1; + } + } + } + } +} +//======================================================================================= +void check_values(void) +{ +if(process_flag) + { + if(start_flag && !drop_flag && !disp_pol) + { + if(disp_val >= cfd1) //CF2 condition.(CF2 & FF ON, CF1 OFF) + { + cf1=0; // normal operation + /*if(cf1_flag) + { + ff=0; + }*/ + cf1_flag=0; + } + if(disp_val >= cfd2) + { // FF condition.(FF ON, CF1 & CF2 OFF) + if(cf2_flag) + { + //avg_cnt=2*(10-avg); + avg_cnt=1*(10-avg); + add_cnt=0; // In FF 2 count averaging. + add_adc=0; + //ff=1; + } + cf1=0; + cf2=0; // normal operation + cf2_flag=0; + } + if((disp_val + nfl) >= fillset) + { + ff=0; + wait_flag=1; + } // Final value is reached.but, + } + + if(wait_flag) // should wait for some time + { // for liquid to be settled. + wait_ctr++; + //delay(10); //if necessary enable + //if(wait_ctr >= wait_val*10) + if(wait_ctr >= wait_val*100) + { + wait_ctr=0; + drop_flag=1; + wait_flag=0; + } + } + + if(drop_flag && !disp_pol) + { + /*if(disp_val < cfd2) // After waiting time if value is + { // less than CF2 value,Turn ON CF2. + cf1=0; + cf1_flag=0; + cf2=1; + cf2_flag=1; + ff=1; + ff_flag=1; + drop_flag=0; + } */ + if((disp_val + nfl) < fillset) // After waiting time if value is + { // less than FF value,Turn ON FF. + ff=1; + drop_flag=0; + } + else if(disp_val < fillset) + { + drop_ctr++; + //if(drop_ctr >= drop_wait_val) + if(drop_ctr >= drop_wait_val*100) + { + drop_ctr=0; // Else, + ff=1; // Final stage of filling. + delay(on_time); // Proceeds drop by drop for accuracy. + ff=0; + } + } + else + { + waled=1; + wa_flag=1; // Weight is acheived. + start_flag=0; + drop_ctr=0; + drop_flag=0; + cf1=0; + cf1_flag=0; + cf2=0; + cf2_flag=0; + ff=0; + ff_flag=0; + wait_ctr=0; + wait_flag=0; + + avg_cnt=3*(10-avg); + add_cnt=0; + add_adc=0; + //------------------------batch set-------------------------------------------------------------- + batch_count=read_RTC(RTC_MEM_batch_set_count_MSB)*0x100 + read_RTC(RTC_MEM_batch_set_count_LSB); + batch_count--; + write_RTC(RTC_MEM_batch_set_count_MSB,batch_count / 0x100); + write_RTC(RTC_MEM_batch_set_count_LSB,batch_count % 0x100); + //------------------------------------------------------------------------------------------------ + if(function == 1) + { + cumulative = RTC_Readlong(RTC_MEM_F1_cumulative); + cumulative = cumulative + (unsigned long)((disp_val/res)*res); + if(cumulative > 99999999) cumulative = 0; + //if(cumulative > 0x5F5E0FF) cumulative = 0x00000000; + RTC_Writelong(RTC_MEM_F1_cumulative,cumulative); + + batch=read_RTC(RTC_MEM_F1_batch_MSB)*0x100 + read_RTC(0x11); + batch = batch + 1; + write_RTC(RTC_MEM_F1_batch_MSB,batch / 0x100); + write_RTC(RTC_MEM_F1_batch_LSB,batch % 0x100); + } + else if(function == 2) + { + cumulative = RTC_Readlong(RTC_MEM_F2_cumulative); + cumulative = cumulative + (unsigned long)((disp_val/res)*res); + if(cumulative > 99999999) cumulative = 0; + //if(cumulative > 0x5F5E0FF) cumulative = 0x00000000; + RTC_Writelong(RTC_MEM_F2_cumulative,cumulative); + + batch=read_RTC(RTC_MEM_F2_batch_MSB)*0x100 + read_RTC(RTC_MEM_F2_batch_LSB); + batch = batch + 1; + write_RTC(RTC_MEM_F2_batch_MSB,batch / 0x100); + write_RTC(RTC_MEM_F2_batch_LSB,batch % 0x100); + } + else if(function == 3) + { + cumulative = RTC_Readlong(RTC_MEM_F3_cumulative); + cumulative = cumulative + (unsigned long)((disp_val/res)*res); + if(cumulative > 99999999) cumulative = 0; + //if(cumulative > 0x5F5E0FF) cumulative = 0x00000000; + RTC_Writelong(RTC_MEM_F3_cumulative,cumulative); + + batch=read_RTC(RTC_MEM_F3_batch_MSB)*0x100 + read_RTC(RTC_MEM_F3_batch_LSB); + batch = batch + 1; + write_RTC(RTC_MEM_F3_batch_MSB,batch / 0x100); + write_RTC(RTC_MEM_F3_batch_LSB,batch % 0x100); + } + else if(function == 4) + { + cumulative = RTC_Readlong(RTC_MEM_F4_cumulative); + cumulative = cumulative + (unsigned long)((disp_val/res)*res); + if(cumulative > 99999999) cumulative = 0; + //if(cumulative > 0x5F5E0FF) cumulative = 0x00000000; + RTC_Writelong(RTC_MEM_F4_cumulative,cumulative); + + batch=read_RTC(RTC_MEM_F4_batch_MSB)*0x100 + read_RTC(RTC_MEM_F4_batch_LSB); + batch = batch + 1; + write_RTC(RTC_MEM_F4_batch_MSB,batch / 0x100); + write_RTC(RTC_MEM_F4_batch_LSB,batch % 0x100); + } + else if(function == 5) + { + cumulative = RTC_Readlong(RTC_MEM_F5_cumulative); + cumulative = cumulative + (unsigned long)((disp_val/res)*res); + if(cumulative > 99999999) cumulative = 0; + //if(cumulative > 0x5F5E0FF) cumulative = 0x00000000; + RTC_Writelong(RTC_MEM_F5_cumulative,cumulative); + + batch=read_RTC(RTC_MEM_F5_batch_MSB)*0x100 + read_RTC(RTC_MEM_F5_batch_LSB); + batch = batch + 1; + write_RTC(RTC_MEM_F5_batch_MSB,batch / 0x100); + write_RTC(RTC_MEM_F5_batch_LSB,batch % 0x100); + } + else if((function >= 6)&& (function <= 36)) + { + cumulative = RTC_Readlong(RTC_MEM_F6_TO_F36_cumulative); + cumulative = cumulative + (unsigned long)((disp_val/res)*res); + if(cumulative > 99999999) cumulative = 0; + //if(cumulative > 0x5F5E0FF) cumulative = 0x00000000; + RTC_Writelong(RTC_MEM_F6_TO_F36_cumulative,cumulative); + + batch=read_RTC(RTC_MEM_F6_TO_F36_batch_MSB)*0x100 + read_RTC(RTC_MEM_F6_TO_F36_batch_LSB); + batch = batch + 1; + write_RTC(RTC_MEM_F6_TO_F36_batch_MSB,batch / 0x100); + write_RTC(RTC_MEM_F6_TO_F36_batch_LSB,batch % 0x100); + } + } + } + //----------------------------------------------------- + if(wa_flag && grwt && !grwt_ok) // should wait for some time + { // before gross weight display. + wait_ctr++; + if(wait_ctr >= wait_val*60) + { + grwt_ok=1; + tare_val=temp_tare; + wait_ctr=0; + } + } + //------------------------------------------------------------- + if(batch_count<1 && bset_enable && wa_flag) //Batch over if batch set enabled + { + if(grwt && grwt_ok)wait_ctr++; + else if(!grwt && !grwt_ok)wait_ctr++; + if(wait_ctr >= wait_val*50) + { + wait_ctr=0; + dp_flag=0; + //disp(0x0B,0x0A,0x14,0x0C,0x15,0x11,0x17,0x13); // batch over + disp(0x0B,0x11,0x11,0x0e,0x13,0x13,0x11,0x11); //b err + //write_RTC(RTC_MEM_start_status,0x00); //pause auto start when batch over + start_status=0; + + #ifdef _6_key + while(enter) + #elif defined( _4x4_key ) + while(KeyPressed != enter) + #endif + {delay(20); dp_flag=1;} + } + } + //------------------------------------------------------------- + // Can Removed. Resetting for next filling + if(((disp_val <= zset) || disp_pol) && wa_flag) + { + waled=0; + wa_flag=0; + tare_val=temp_tare; + avg_cnt=3*(10-avg); + + add_cnt=0; + add_adc=0; + process_flag=0; + grwt_ok=0; + } + } +} +//======================================================================================= +void pwd(void) +{ + unsigned char b=6; + //unsigned char b=4; + KeyPressed = 'X'; + disp(0x0c,0x17,0x0d,0x0e,0x11,0x11,0x00,0x00); + //disp(0x0c,0x17,0x0d,0x0e,0x00,0x00,0x00,0x00); + rst_wdt(); + #ifdef _6_key + while(enter) // will overloop to back on reaching max. + #elif defined( _4x4_key ) + while(KeyPressed != enter) + #endif + { + blink(b,1); + disp_data[b]=incdec(disp_data[b],9,0); + #ifdef _6_key + if(!tare) // shift key is also checked which shifts + #elif defined( _4x4_key ) + if(('S' == KeyPressed)||(KeyPressed == tare)) // blinking digit to right. + #endif + { + b++; + if(b>7)b=6; + //if(b>7) b=4; + #ifdef _4x4_key + KeyPressed = 'X'; + #endif + } + /*if(KeyPressed == left) + { + b--; + if(b<4) b=7; + KeyPressed = 'X'; //clear keyPressed + }*/ + } + #ifdef _6_key + while(!enter) + #elif defined( _4x4_key ) + while(KeyPressed == enter) + #endif + {delay(2);} +} +//============================================================================================= +void val_read(char a) // Will read value which is entered. +{ + unsigned char b; // Up to 'char a' characters from max to + b=8-a; // back are read one by one. + // current entry char will blink. + #ifdef _6_key + while(enter && set && mode) // will overloop to back on reaching max. + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) + #endif + { + blink(b,1); + disp_data[b]=incdec(disp_data[b],9,0); + #ifdef _6_key + if(!tare) // shift key is also checked which shifts + #elif defined( _4x4_key ) + //if(('S' == KeyPressed) || (KeyPressed == right)) + if(('S' == KeyPressed) || (KeyPressed == tare)) + #endif + { // blinking digit to right. + b++; + if(b>7) b=8-a; + #ifdef _4x4_key + KeyPressed = 'X'; //clear keyPressed + #endif + } + /*if(KeyPressed == left) + { + b--; + if(b<(8-a)) b=7; + KeyPressed = 'X'; //clear keyPressed + }*/ + } + #ifdef _6_key + if(!mode) + #elif defined( _4x4_key ) + if(KeyPressed == mode) + #endif + { + #ifdef _6_key + while(!mode) + #elif defined( _4x4_key ) + while(KeyPressed == mode) + #endif + {delay(2);} + esc_flag=1; + } + else esc_flag=0; + /*#ifdef _4x4_key + KeyPressed = 'X'; // "keyPressed" clearing + #endif */ +} +//========================================================================================== +void blink(start,no) // Will create blinking display. +{ + unsigned char k; // Blinking display will be from 'start' to + // display numbered no. + arr_cpy(&temp_data[0],&disp_data[0],8); + for(k=start;k7)b=6; + //if(b>7) b=4; + #ifdef _4x4_key + KeyPressed = 'X'; + #endif + } + #ifdef _6_key + if(!mode)return; + #elif defined( _4x4_key ) + if(KeyPressed == mode)return; + #endif + /*if(KeyPressed == left) + { + b--; + if(b<4) b=7; + KeyPressed = 'X'; //clear keyPressed + }*/ + } + #ifdef _6_key + if(!enter) + #elif defined( _4x4_key ) + if(KeyPressed == enter) + #endif + { + b = ((disp_data[6] & 0x0F) << 4 ) + (disp_data[7] & 0x0F); + b = bcd2int(b); + if(b > 36) + { + disp(0x11,0x0e,0x13,0x13,0x17,0x13,0x11,0x11); + delay(500); + goto err_rtn; + } + write_RTC(RTC_MEM_current_recipe,b); + } + #ifdef _6_key + while(!enter) + #elif defined( _4x4_key ) + while(KeyPressed==enter) + #endif + {delay(2);} +} +//============================================================================================ +void menu(void) // Main menu entry. +{ + char dat; + bit err_flag=0; + unsigned int temp; + + read_values(); + dp_flag=1; + set_enter_flag=1; + + if(function>0 && function<=9) {EEPROM_block = Block_0;} + else if(function>9 && function<=18) {EEPROM_block = Block_1;} + else if(function>18 && function<=27) {EEPROM_block = Block_2;} + else if(function>27 && function<=36) {EEPROM_block = Block_3;} + //-------------------------------------------------------------------- + do + { + if(!recipe) disp(0x0F,0x01,0x16,0x11,0x00,0x00,0x00,0x00); + //else disp(0x0F,function,0x11,0x11,0x00,0x00,0x00,0x00); + else disp(function/10,function%10,0x0F,0x11,0x00,0x00,0x00,0x00); + bin2bcd(fillset,5); // Fill set + delay(500); + val_read(5); + if(esc_flag) return; + #ifdef _6_key + if(set) + #elif defined( _4x4_key ) + //if(KeyPressed != set) + if(KeyPressed == enter) + #endif + { + temp=bcd2bin(5); + if(temp > (rng_array[rng_val][2] * 1000) ) + { + err_flag=1; + disp(0x11,0x0e,0x13,0x13,0x17,0x13,0x11,0x11); + delay(500); + } + else + { + fillset=temp; + if(function>0 && function<=9)dat = function; + else if(function>9 && function<=18) dat=(function-9); + else if(function>18 && function<=27) dat=(function-18); + else if(function>27 && function<=36) dat=(function-27); + + write_eeprom((0x10*dat),fillset/0x100); + write_eeprom(((0x10*dat)+0x01),fillset%0x100); + err_flag=0; + } + } + } while(err_flag); + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + /*do + { + //disp(0x0C,0x0F,0x11,0x11,0x00,0x00,0x00,0x00); + if(!recipe) disp(0x0C,0x0F,0x11,0x11,0x11,0x00,0x00,0x00); + //else disp(0x0C,0x0F,function,0x11,0x11,0x00,0x00,0x00); // Course feed + else disp(function/10,function%10,0x0C,0x11,0x11,0x00,0x00,0x00); // Course feed + //cf=(fillset-cf); + bin2bcd(cf,3); + delay(500); + val_read(3); + if(esc_flag) return; + #ifdef _6_key + if(set) + #elif defined( _4x4_key ) + //if(KeyPressed != set) + if(KeyPressed == enter) + #endif + { + temp=bcd2bin(3); + if(temp >= fillset) + //if(temp >= fillset || (fillset-temp > ffd)) + { + err_flag=1; + disp(0x11,0x0e,0x13,0x13,0x17,0x13,0x11,0x11); + delay(500); + } + else + { + cf=temp; + //cf=(fillset-temp); + if(function>0 && function<=9)dat = function; + else if(function>9 && function<=18) dat=(function-9); + else if(function>18 && function<=27) dat=(function-18); + else if(function>27 && function<=36) dat=(function-27); + + write_eeprom((0x10*dat)+0x02,cf / 0x100); + write_eeprom((0x10*dat)+0x03,cf % 0x100); + err_flag=0; + } + } + } while(err_flag); */ + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + do + { + if(!recipe) disp(0x0F,0x0F,0x11,0x11,0x11,0x00,0x00,0x00); + //else disp(0x0F,0x0F,function,0x11,0x11,0x00,0x00,0x00); + else disp(function/10,function%10,0x0D,0x11,0x11,0x00,0x00,0x00); + //ffd=(fillset-ffd); +//14_02_24 bin2bcd(ffd,3); + bin2bcd(ffd,4); + delay(500); + //val_read(5); +//14_02_24 val_read(3); + val_read(4); + if(esc_flag) return; + #ifdef _6_key + if(set) + #elif defined( _4x4_key ) + //if(KeyPressed != set) + if(KeyPressed == enter) + #endif + { + //temp=bcd2bin(5); +//14_02_24 temp=bcd2bin(3); + temp=bcd2bin(4); + //if((temp >= fillset) || (fillset-temp <= cf)) + if(temp >= fillset) + { + err_flag=1; + disp(0x11,0x0e,0x13,0x13,0x17,0x13,0x11,0x11); + delay(500); + } + else + { + //ffd=(fillset-temp); + ffd=temp; + if(function>0 && function<=9)dat = function; + else if(function>9 && function<=18) dat=(function-9); + else if(function>18 && function<=27) dat=(function-18); + else if(function>27 && function<=36) dat=(function-27); + + write_eeprom((0x10*dat)+0x04,ffd / 0x100); + write_eeprom((0x10*dat)+0x05,ffd % 0x100); + err_flag=0; + } + } + } while(err_flag); + + /*cfd1=fillset-ffd; + //cfd1=cf; + cfd2=fillset-ffd; + ffd=fillset-ffd;*/ + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + do + { + if(!recipe)disp(0x18,0x0F,0x16,0x11,0x11,0x00,0x00,0x00); + //else disp(0x18,0x0F,function,0x11,0x11,0x00,0x00,0x00); + else disp(function/10,function%10,0x18,0x11,0x11,0x00,0x00,0x00); + bin2bcd(nfl,3); // Inflight + delay(500); + val_read(3); + if(esc_flag) return; + #ifdef _6_key + if(set) + #elif defined( _4x4_key ) + //if(KeyPressed != set) + if(KeyPressed == enter) + #endif + { + temp=bcd2bin(3); + //if(temp > fillset) + if((temp+ffd) > fillset) + { + err_flag=1; + disp(0x11,0x0e,0x13,0x13,0x17,0x13,0x11,0x11); + delay(500); + } + else + { + nfl=temp; + if(function>0 && function<=9)dat = function; + else if(function>9 && function<=18) dat=(function-9); + else if(function>18 && function<=27) dat=(function-18); + else if(function>27 && function<=36) dat=(function-27); + + write_eeprom((0x10*dat)+0x06,nfl / 0x100); + write_eeprom((0x10*dat)+0x07,nfl % 0x100); + err_flag=0; + } + } + } while(err_flag); + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + do + { + if(!recipe)disp(0x15,0x14,0x13,0x11,0x11,0x00,0x00,0x00); + //else disp(0x15,function,0x11,0x11,0x11,0x00,0x00,0x00); + else disp(function/10,function%10,0x15,0x11,0x11,0x00,0x00,0x00); + bin2bcd(htar,5); // High tare + delay(500); + val_read(5); + if(esc_flag) return; + #ifdef _6_key + if(set) + #elif defined( _4x4_key ) + //if(KeyPressed != set) + if(KeyPressed == enter) + #endif + { + temp=bcd2bin(5); + //if(temp > (rng_array[rng_val][2] * 1000) ) + if(temp+fillset > (rng_array[rng_val][2] * 1000) ) + { + err_flag=1; + disp(0x11,0x0e,0x13,0x13,0x17,0x13,0x11,0x11); + delay(500); + } + else + { + htar=temp; + if(function>0 && function<=9)dat = function; + else if(function>9 && function<=18) dat=(function-9); + else if(function>18 && function<=27) dat=(function-18); + else if(function>27 && function<=36) dat=(function-27); + + write_eeprom((0x10*dat)+0x08,htar / 0x100); + write_eeprom((0x10*dat)+0x09,htar % 0x100); + err_flag=0; + } + } + }while(err_flag); + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + do + { + if(!recipe)disp(0x16,0x14,0x13,0x11,0x11,0x00,0x00,0x00); + //else disp(0x16,function,0x11,0x11,0x11,0x00,0x00,0x00); + else disp(function/10,function%10,0x16,0x11,0x11,0x00,0x00,0x00); + bin2bcd(ltar,3); // Low tare + delay(500); + val_read(3); + if(esc_flag) return; + #ifdef _6_key + if(set) + #elif defined( _4x4_key ) + //if(KeyPressed != set) + if(KeyPressed == enter) + #endif + { + temp=bcd2bin(3); + if(temp >= htar) + { + err_flag=1; + disp(0x11,0x0e,0x13,0x13,0x17,0x13,0x11,0x11); + delay(500); + } + else + { + ltar=temp; + if(function>0 && function<=9)dat = function; + else if(function>9 && function<=18) dat=(function-9); + else if(function>18 && function<=27) dat=(function-18); + else if(function>27 && function<=36) dat=(function-27); + + write_eeprom((0x10*dat)+0x0A,ltar / 0x100); + write_eeprom((0x10*dat)+0x0B,ltar % 0x100); + err_flag=0; + } + } + } while(err_flag); + dp_flag=0; + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + if(!recipe)disp(0x0a,0x14,0x11,0x14,0x13,0x11,0x11,0x11); + //else disp(0x0a,function,0x11,0x11,0x11,0x11,0x11,0x11); + else disp(function/10,function%10,0x0a,0x11,0x11,0x11,0x11,0x11); + delay(500); + if(!ed) dat=0; + else dat=1; //Auto tare Enable / Disable. + #ifdef _6_key + while(enter && set) + #elif defined( _4x4_key ) + while(KeyPressed != set && KeyPressed != enter) + #endif + { + blink(7,1); + dat=incdec(dat,1,0); + if(dat==0){ disp_data[7]=0x0d; ed=0;} + else { disp_data[7]=0x0e; ed=1;} + } + #ifdef _6_key + if(set) + #elif defined( _4x4_key ) + //if(KeyPressed != set) + if(KeyPressed == enter) + #endif + { + if(function>0 && function<=9)write_eeprom((0x10*function)+0x0C,dat); + else if(function>9 && function<=18) write_eeprom(((0x10*(function-9))+0x0C),dat); + else if(function>18 && function<=27) write_eeprom(((0x10*(function-18))+0x0C),dat); + else if(function>27 && function<=36) write_eeprom(((0x10*(function-27))+0x0C),dat); + } + while(KeyPressed == enter){delay(20);} + dp_flag=1; + //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + dat=read_eeprom(EE_test_loc_Mem); + if(dat != test_loc) write_eeprom(EE_test_loc_Mem, test_loc); + read_values(); //loading new values +} +//=============================================================================================== +void settings(void) +{ + char dat; + read_values(); + EEPROM_block = Block_0; + set_enter_flag=1; + //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + dat=wait_val;// Time delay for showing 'SA' after the weight has crossed the Fillset value. + disp(0x05,0x0A,0x10,0x0D,0x16,0x11,dat/10,dat%10); + bin2bcd(dat,2); + delay(500); + val_read(2); + if(esc_flag) return; + wait_val = bcd2bin(2); + #ifdef _6_key + if(set) + #elif defined( _4x4_key ) + if(KeyPressed == enter) + #endif + { + write_eeprom(EE_wait_val_Mem, wait_val); + } + //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + //dat=drop_wait_val/10; // The time delay between drops. + dat=read_eeprom(EE_drop_wait_val_Mem); + disp(0x0D,0x13,0x12,0x0D,0x16,0x11,dat/10,dat%10); + bin2bcd(dat,2); + delay(500); + val_read(2); + if(esc_flag) return; + drop_wait_val = bcd2bin(2); + + #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) + if(KeyPressed == mode) return; + #endif + + #ifdef _6_key + if(set) + #elif defined( _4x4_key ) + if(KeyPressed == enter) + #endif + { + write_eeprom(EE_drop_wait_val_Mem, drop_wait_val); + } + //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + //dat=on_time/100; // The drop ON TIME. + dat=read_eeprom(EE_on_time_Mem); + disp(0x00,0x18,0x14,0x01,0x1a,0x0e,dat/10,dat%10); + bin2bcd(dat,2); + delay(500); + val_read(2); + if(esc_flag) return; + dat = bcd2bin(2); + + #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) + if(KeyPressed == mode) return; + #endif + + #ifdef _6_key + if(set) + #elif defined( _4x4_key ) + if(KeyPressed == enter) + #endif + { + write_eeprom(EE_on_time_Mem, dat); + } + //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + disp(0x00,0x10,0x05,0x0E,0x14,0x00,0x00,0x00); + bin2bcd(zset,3); // Zero set + delay(500); + //while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) + //{ + val_read(3); + zset = bcd2bin(3); + //} + if(esc_flag) return; + #ifdef _6_key + if(set) + #elif defined( _4x4_key ) + if(KeyPressed == enter) + #endif + { + write_eeprom(EE_zset_Mem_MSB,zset / 0x100); + write_eeprom((EE_zset_Mem_LSB),zset % 0x100); + } + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + disp(0x05,0x12,0x0d,0x11,0x11,0x11,0x11,avg); + delay(500); + #ifdef _6_key + while(enter && set && mode) //speed(averaging). + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) + #endif + { + blink(7,1); + avg=incdec(avg,9,1); + disp_data[7]=avg; + } + #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) + if(KeyPressed == mode) return; + #endif + + #ifdef _6_key + if(set) + #elif defined( _4x4_key ) + if(KeyPressed == enter) + #endif + { + write_eeprom(EE_avg_Mem,avg); + avg_cnt=3*(10-avg); + } +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + if(cal_en) //calibration hardware lock to protect scale setting + { + disp(0x12,0x13,0x00,0x14,0x0E,0x0C,0x14,0x0D); + //return; + goto end; + } + else +//-------------------------------------------------------------------- + disp(0x05,0x10,0x0c,0x0a,0x12,0x11,0x00,0x00); + bin2bcd(rng_array[rng_val][2],2); + delay(500); + #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) + #endif + { + blink(6,2); + //rng_val=incdec(rng_val,6,0); +//1 rng_val=incdec(rng_val,7,0); + rng_val=incdec(rng_val,9,0); + #ifdef _4x4_key + //if(KeyPressed == right) + if(KeyPressed == tare) + { + rng_val++; + //if(rng_val>6) rng_val=0; + // if(rng_val>7) rng_val=0; + if(rng_val>9) rng_val=0; + } + #endif + /*if(KeyPressed == left) + { + + if(rng_val >= 1) rng_val--; + else rng_val=4; + }*/ + bin2bcd(rng_array[rng_val][2],2); + } + #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) + if(KeyPressed == mode) return; + #endif + + #ifdef _6_key + if(set) + #elif defined( _4x4_key ) + if(KeyPressed == enter) + #endif + { + write_eeprom(EE_rng_val_Mem,rng_val); + } + //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + disp(0x13,0x0e,0x05,0x11,0x11,0x11,res/10,res%10); + delay(500); + dat=res; + if(res==5) dat=3; + if(res==10) dat=0; + #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) + #endif + { + blink(6,2); + dat=incdec(dat,3,0); + #ifdef _4x4_key + //if(KeyPressed == right) + if(KeyPressed == tare) + { + dat++; + if(dat>3) dat=0; + } + #endif + /*if(KeyPressed == left) + { + if(dat >= 1)dat--; + else dat = 3; + }*/ + res=dat; + if(dat==3) res=5; + if(dat==0) res=10; + disp_data[7]=res%10; + disp_data[6]=res/10; + } + #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) + if(KeyPressed == mode) return; + #endif + + #ifdef _6_key + if(set) + #elif defined( _4x4_key ) + if(KeyPressed == enter) + #endif + { + write_eeprom(EE_res_Mem,res); + } + //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + div_factor=rng_array[rng_val][0]; + mul_factor=rng_array[rng_val][1]; + help_val=(rng_array[rng_val][2] * 1000) + (res * 9); +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + disp(0x1a,0x0a,0x05,0x11,0x11,0x11,0x11,mas); + delay(500); + #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) + #endif + { + blink(7,1); + mas=incdec(mas,5,0); + #ifdef _4x4_key + //if(KeyPressed == right) + if(KeyPressed == tare) + { + mas++; + if(mas>5) mas=0; + } + #endif + /*if(KeyPressed == left) + { + if(mas >= 1)mas--; + else mas=5; + }*/ + disp_data[7]=mas; + } + #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) + if(KeyPressed == mode) return; + #endif + + #ifdef _6_key + if(set) + #elif defined( _4x4_key ) + if(KeyPressed == enter) + #endif + { + write_eeprom(EE_mas_Mem,mas); + } +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + disp(0x00,0x10,0x14,0x13,0x0A,0x0C,0x11,ztc); + delay(500); + #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) + #endif + { + blink(7,1); + ztc=incdec(ztc,5,0); + #ifdef _4x4_key + //if(KeyPressed == right) + if(KeyPressed == tare) + { + ztc++; + if(ztc>5) ztc=0; + } + #endif + /*if(KeyPressed == left) + { + if(ztc >= 1)ztc--; + else ztc=5; + }*/ + disp_data[7]=ztc; + } + #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) + if(KeyPressed == mode) return; + #endif + + #ifdef _6_key + if(set) + #elif defined( _4x4_key ) + if(KeyPressed == enter) + #endif + { + write_eeprom(EE_ztc_Mem,ztc); + } + //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + dp_flag=1; + disp(0x0D,0x0E,0x0C,0x11,0x11,0x11,0x11,dp_val); + delay(500); + #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) + #endif + { + blink(7,1); + dp_val=incdec(dp_val,7,3); + #ifdef _4x4_key + //if(KeyPressed == right) + if(KeyPressed == tare) + { + dp_val++; + if(dp_val>7)dp_val=3; + } + #endif + /*if(KeyPressed == left) + { + if(dp_val >= 3) dp_val--; + else dp_val=7; + }*/ + disp_data[7]=dp_val; + } + #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) + if(KeyPressed == mode) return; + #endif + + #ifdef _6_key + if(set) + #elif defined( _4x4_key ) + if(KeyPressed == enter) + #endif + { + write_eeprom(EE_dp_val_mem,dp_val); + } + dp_flag=0; + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +end: + dat=read_eeprom(EE_test_loc_Mem); + if(dat != test_loc) write_eeprom(EE_test_loc_Mem, test_loc); + read_values(); +} +//============================================================================================ +void sys_paramts(void) +{ + char dat; + read_values(); + dp_flag=0; + set_enter_flag=1; + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + //Instant fillset entry Enable / Disable. + disp(0x01,0x18,0x05,0x14,0x18,0x14,0x11,0x11); + dat=read_RTC(RTC_MEM_Instant_fill_enable); + delay(500); + //if(dat==1)Instant_fill_enable=1; + //else Instant_fill_enable=0; + if(dat==0)Instant_fill_enable=0; + else Instant_fill_enable=1; + #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) + #endif + { + blink(7,1); + dat=incdec(dat,1,0); + if(dat==0){ disp_data[7]=0x0d; Instant_fill_enable=0;} + else { dat=1; disp_data[7]=0x0e; Instant_fill_enable=1;} + } + #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) + if(KeyPressed == mode) return; + #endif + + #ifdef _6_key + if(!enter) + #elif defined( _4x4_key ) + if(KeyPressed == enter) + #endif + { + write_RTC(RTC_MEM_Instant_fill_enable,dat); + } + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + disp(0x0a,0x1B,0x14,0x05,0x11,0x11,0x11,0x11); //Auto start Enable / Disable. + dat=read_RTC(RTC_MEM_Auto_start_enable); + delay(500); + //if(dat==1)auto_start=1; + //else auto_start=0; + if(dat==0)auto_start=0; + else auto_start=1; + #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) + #endif + { + blink(7,1); + dat=incdec(dat,1,0); + if(dat==0){ disp_data[7]=0x0d; auto_start=0;} + else { dat=1; disp_data[7]=0x0e; auto_start=1;} + } + #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) + if(KeyPressed == mode) return; + #endif + + #ifdef _6_key + if(set) + #elif defined( _4x4_key ) + if(KeyPressed == enter) + #endif + { + write_RTC(RTC_MEM_Auto_start_enable,dat); + } + //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + //disp(0x0a,0x1B,0x14,0x00,0x05,0x11,0x11,0x11); //Auto start delay + disp(0x0A,0x14,0x05,0x0D,0x16,0x11,0x11,0x11); + start_delay=read_RTC(RTC_MEM_start_delay); + bin2bcd(start_delay,2); + delay(500); + val_read(2); + if(esc_flag) return; + start_delay = (unsigned char)bcd2bin(2); + + #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) + if(KeyPressed == mode) return; + #endif + + #ifdef _6_key + if(set) + #elif defined( _4x4_key ) + if(KeyPressed == enter) + #endif + { + write_RTC(RTC_MEM_start_delay,start_delay); + } + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + disp(0x13,0x0E,0x0C,0x01,0x12,0x0E,0x11,0x11); //Recipe Enable/Disable + dat=read_RTC(RTC_MEM_recipe_enable); + delay(500); + //if(dat==1)recipe=1; + //else recipe=0; + if(dat==0)recipe=0; + else recipe=1; + #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) + #endif + { + blink(7,1); + dat=incdec(dat,1,0); + if(dat==0){ disp_data[7]=0x0d; recipe=0;} + else { dat=1; disp_data[7]=0x0e; recipe=1;} + } + #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) + if(KeyPressed == mode) return; + #endif + + #ifdef _6_key + if(set) + #elif defined( _4x4_key ) + if(KeyPressed == enter) + #endif + { + write_RTC(RTC_MEM_recipe_enable,dat); + } + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + disp(0x0B,0x05,0x0E,0x14,0x10,0x0F,0x11,0x11); //Batch filling enable + dat=read_RTC(RTC_MEM_batch_set_enable); + delay(500); + //if(dat==1)bset_enable=1; + //else bset_enable=0; + if(dat==0)bset_enable=0; + else bset_enable=1; + #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) + #endif + { + blink(7,1); + dat=incdec(dat,1,0); + if(dat==0){ disp_data[7]=0x0d; bset_enable=0;} + else { dat=1; disp_data[7]=0x0e; bset_enable=1;} + } + #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) + if(KeyPressed == mode) return; + #endif + + #ifdef _6_key + if(set) + #elif defined( _4x4_key ) + if(KeyPressed == enter) + #endif + { + write_RTC(RTC_MEM_batch_set_enable,dat); + } + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + disp(0x19,0x13,0x1D,0x14,0x11,0x11,0x11,0x11); //Grows weight display Enable/Disable + dat=read_RTC(RTC_MEM_gross_weight_enable); + delay(500); + //if(dat==1)grwt=1; + //else grwt=0; + if(dat==0)grwt=0; + else grwt=1; + #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) + #endif + { + blink(7,1); + dat=incdec(dat,1,0); + if(dat==0){ disp_data[7]=0x0d; grwt=0;} + else { dat=1; disp_data[7]=0x0e; grwt=1;} + } + #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) + if(KeyPressed == mode) return; + #endif + + #ifdef _6_key + if(set) + #elif defined( _4x4_key ) + if(KeyPressed == enter) + #endif + { + write_RTC(RTC_MEM_gross_weight_enable,dat); + } + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + //write_eeprom(EE_test_loc_Mem,test_loc); //write status update + write_RTC(RTC_MEM_status,test_loc); + read_values(); //loading new values + dp_flag=1; +} +//================================================================================================== +/* +void memory_backup_restore(void) +{ + char no=1; + clr_disp(); + #ifdef _6_key + while(enter && mode) + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != mode) + #endif + { + blink(0,8); + no=incdec(no,2,1); + rst_wdt(); + switch(no) + { + case 1: + disp(0x1A,0x0C,0x11,0x14,0x17,0x11,0x0E,0x0E); + break; + case 2: + disp(0x0E,0x0E,0x11,0x14,0x17,0x11,0x1A,0x0C); + break; + } + } + #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) + if(KeyPressed == mode)return; + #endif + switch(no) + { + rst_wdt(); + case 1: + sectors_copy_to_EEPROM(BLK1_DST_ADDR, 0x00); + break; + case 2: + EEPROM_copy_to_sectors(BLK1_DST_ADDR, 0x00); + break; + } + delay(500); + read_values(); //loading new values +} +*/ +//===================================================================================== +unsigned int bcd2bin(char no) // Converts bcd in the display and +{ // returns the equ. int value. + unsigned int bin_val,mul=1; // char no.,determines how much + char i; // digits in the display should be + bin_val=0x00; // converted. + for(i=7;i>=(8-no);i--) + { + bin_val = bin_val + disp_data[i] * mul; + mul = mul * 10; + } + return(bin_val); +} +//==================================================================================== +char incdec(char name,char max,char min) +{ + #ifdef _6_key + if(!incr) + #elif defined( _4x4_key ) + if(KeyPressed == incr) + #endif + { + name++; + if(name>max)name=min; + } + #ifdef _6_key + if(!decr) + #elif defined( _4x4_key ) + else if(KeyPressed == decr) + #endif + { + name--; + if(name= 0x00) && (KeyPressed <= 0x09)) + else if((KeyPressed >= min) && (KeyPressed <= max)) + { + name = KeyPressed; + KeyPressed = 'S'; //for shifting digit + } + #endif + return(name); +} +//====================================================================================== +void cal(void) +{ + unsigned char j; + + if(cal_en) //calibration hardware lock + { + disp(0x11,0x0C,0x0A,0x11,0x16,0x17,0x0C,0x11); + return; + } + else + + disp(0x11,0x11,0x11,0x0c,0x0a,0x16,0x11,0x11); + delay(1000); + disp(0x11,0x1d,0x0e,0x01,0x19,0x15,0x14,0x11); + delay(1000); + #ifdef _6_key + while(enter && mode) + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != mode) + #endif + {delay(2);} + + #ifdef _6_key + if(!mode) + #elif defined( _4x4_key ) + if(KeyPressed == mode) + #endif + { + #ifdef _6_key + while(!mode) { delay(2);} + #elif defined( _4x4_key ) + //while(KeyPressed == mode) {KeyPressed = 'X'; delay(2);} + while(KeyPressed == mode){delay(2);} + #endif + return; + } + #ifdef _6_key + while(!enter){delay(2);} + #elif defined( _4x4_key ) + while(KeyPressed == enter){delay(2);} + #endif + + disp(0x0c,0x0a,0x16,0x11,0x11,0x11,0x11,0x11); + dp_flag=1; + c_flag=1; + tare_flag=0; + while(!aco); + aco=0; + //filter_val=adc_val; + process(); + temp_val = disp_val; + c_flag=0; + for(j=7;j>2;j--) + { + disp_data[j]=temp_val % 10; + temp_val=temp_val / 10; + } + j=3; + #ifdef _6_key + while(enter && mode) + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != mode) + #endif + { + blink(j,1); + disp_data[j]=incdec(disp_data[j],9,0); + #ifdef _6_key + if(!tare) + #elif defined( _4x4_key ) + //if(('S' == KeyPressed) || (KeyPressed == right)) + if(('S' == KeyPressed) || (KeyPressed == tare)) + #endif + { + j++; + if(j>7) j=3; + } + /*if(KeyPressed == left) + { + j--; + if(j<3) j=7; + }*/ + + } + #ifdef _6_key + if(!mode) + #elif defined( _4x4_key ) + if(KeyPressed == mode) + #endif + { + #ifdef _6_key + while(!mode) + #elif defined( _4x4_key ) + while(KeyPressed == mode) + #endif + {delay(2);} + return; + } + #ifdef _6_key + while(!enter) + #elif defined( _4x4_key ) + while(KeyPressed == enter) + #endif + {delay(2);} + cal_flag=1; + bin_val=bcd2bin(5); + if(res==0)bin_val=bin_val + 10; + else bin_val=bin_val + res; + dp_flag=0; +} +//===================================================================================== +void cal_find(void) +{ + if(cal_flag) + { + cal_flag=0; + temp1=(unsigned long int)bin_val; + temp2=(unsigned long int)disp_val; + + if(disp_val > bin_val) temp_val = disp_val - bin_val; + else temp_val = bin_val - disp_val; + //if(temp_val <= (disp_val/10)) + if(temp_val) + { + temp =(temp1 * 0x2710)/temp2; + cal_val = (unsigned int)temp; + //if((temp % temp2) > (temp2/2)) cal_val+=1; //it was enabled + EEPROM_block = Block_0; //Following parameters in block0 of EEPROM + write_eeprom(EE_cal_val_Mem_MSB,cal_val/0x100); + write_eeprom((EE_cal_val_Mem_LSB),cal_val%0x100); + disp(0x11,0x05,0x1b,0x0c,0x0c,0x0e,0x05,0x05); + delay(1000); + clr_disp(); + } + else + { + disp(0x11,0x11,0x0f,0x0a,0x01,0x16,0x11,0x11); + delay(1000); + clr_disp(); + calibrate(); + } + } +} +//========================================================================================== +void calibrate(void) +{ + temp1=(unsigned long int)disp_val; + temp2=(unsigned long int)cal_val; + temp =(temp1 * temp2)/0x2710; + disp_val = (unsigned int)temp; + //if(((temp1*temp2) % 0x2710) > 0x1388) disp_val+=1; //It was enabled +} +//========================================================================================= +void cal_rst(void) +{ + if(cal_en) //calibration hardware lock + { + disp(0x11,0x0C,0x0A,0x11,0x16,0x17,0x0C,0x11); + return; + } + else + + disp(0x11,0x13,0x0e,0x05,0x0e,0x14,0x11,0x11); + #ifdef _6_key + while(enter && mode) + #elif defined( _4x4_key ) + while((KeyPressed != enter) && (KeyPressed != mode)) + #endif + {delay(2);} + + #ifdef _6_key + if(!mode) + #elif defined( _4x4_key ) + if(KeyPressed == mode) + #endif + { + #ifdef _6_key + while(!mode) {delay(2);} + #elif defined( _4x4_key ) + while(KeyPressed == mode) {delay(2);} + #endif + return; + } + #ifdef _6_key + while(!enter) + #elif defined( _4x4_key ) + while(KeyPressed == enter) + #endif + {delay(2);} + clr_disp(); + EEPROM_block = Block_0; //Following parameters in block0 of EEPROM + write_eeprom(EE_cal_val_Mem_MSB,0x27); + write_eeprom((EE_cal_val_Mem_LSB),0x10); + read_values(); +} +//======================================================================================= +void select_menu(void) +{ + char no=1; + clr_disp(); + #ifdef _6_key + while(enter && mode) + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != mode) + #endif + { + blink(0,8); + //no=incdec(no,5,1); + no=incdec(no,9,1); + rst_wdt(); + switch(no) + { + case 1: + disp(0x0f,0x01,0x16,0x11,0x12,0x0a,0x13,0x0a); + break; + case 2: + disp(0x05,0x0c,0x16,0x11,0x05,0x0e,0x14,0x11); + break; + case 3: + disp(0x11,0x0c,0x0a,0x16,0x11,0x11,0x11,0x11); + break; + case 4: + disp(0x0c,0x0a,0x16,0x11,0x13,0x05,0x14,0x11); + break; + case 5: + disp(0x0d,0x0e,0x0f,0x0a,0x1b,0x16,0x14,0x05); + break; + case 6: + disp(0x0C,0x1B,0x1A,0x1B,0x16,0x0A,0x14,0x0E); + break; + case 7: + disp(0x0B,0x0A,0x14,0x0C,0x15,0x11,0x11,0x11); + break; + case 8: + disp(0x0B,0x0A,0x14,0x0C,0x15,0x14,0x17,0x14); + break; + case 9: + disp(0x0B,0x0A,0x14,0x15,0x11,0x0C,0x1B,0x1A); + delay(500); + disp(0x0C,0x16,0x0E,0x0A,0x13,0x11,0x11,0x11); + break; + } + } + #ifdef _6_key + if(!mode) return; + #elif defined( _4x4_key ) + if(KeyPressed == mode)return; + #endif + switch(no) + { +// rst_wdt(); + case 1: + sys_paramts(); + rst_wdt(); + break; + case 2: + settings(); + break; + case 3: + cal(); + break; + case 4: + cal_rst(); + break; + case 5: + load_eep_defaults(); + break; + case 6: + display_current_cumulative(); + break; + case 7: + display_current_batch(); + break; + case 8: + display_total_batch(); + break; + case 9: + clear_batch_cumulative(); + break; + } +} +//======================================================================================== +void display_total_cumulative(void) +{ + cumulative = 0; + dp_flag=1; + cumulative = RTC_Readlong(RTC_MEM_F1_cumulative) + RTC_Readlong(RTC_MEM_F2_cumulative) + RTC_Readlong(RTC_MEM_F3_cumulative)+ \ + RTC_Readlong(RTC_MEM_F4_cumulative) + RTC_Readlong(RTC_MEM_F5_cumulative)+ RTC_Readlong(RTC_MEM_F6_TO_F36_cumulative); + long2bcd(cumulative,8); + #ifdef _6_key + while(enter && mode) + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != mode) + #endif + {delay(2);} +} +//============================================================================================= +void display_total_batch(void) +{ + batch=(read_RTC(RTC_MEM_F1_batch_MSB)*0x100 + read_RTC(RTC_MEM_F1_batch_LSB))+ + (read_RTC(RTC_MEM_F2_batch_MSB)*0x100 + read_RTC(RTC_MEM_F2_batch_LSB))+ + (read_RTC(RTC_MEM_F3_batch_MSB)*0x100 + read_RTC(RTC_MEM_F3_batch_LSB))+ + (read_RTC(RTC_MEM_F4_batch_MSB)*0x100 + read_RTC(RTC_MEM_F4_batch_LSB))+ + (read_RTC(RTC_MEM_F5_batch_MSB)*0x100 + read_RTC(RTC_MEM_F5_batch_LSB))+ + (read_RTC(RTC_MEM_F6_TO_F36_batch_MSB)*0x100 + read_RTC(RTC_MEM_F6_TO_F36_batch_LSB)); + + disp(0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11); + batch2bcd(batch,5); + #ifdef _6_key + while(enter && mode) + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != mode) + #endif + {delay(2);} +} +//=========================================================================================== +void display_current_cumulative(void) +{ + unsigned char sdat=1,b=0; + + function = read_RTC(RTC_MEM_current_recipe); + shift_flag=0; + if(function>6)sdat=1; + else sdat=function; + + #ifdef _6_key + while(!enter) + #elif defined( _4x4_key ) + while(KeyPressed == enter) + #endif + {delay(2);} + disp(sdat,0x0C,0x11,0x11,0x11,0x11,0x11,0x11); //"1C" + delay(500); + //b=1; + b=0; //Digit from left one + dp_flag=1; + #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) + #endif + { + blink(b,1); + disp_data[b]=incdec(disp_data[b],6,1); + //sdat = ((disp_data[0] & 0x0F) << 4 ) + (disp_data[1] & 0x0F); + sdat = (disp_data[0] & 0xFF); + sdat = bcd2int(sdat); + //delay(100); + if(sdat==1) + cumulative = RTC_Readlong(RTC_MEM_F1_cumulative); + else if(sdat==2) + cumulative = RTC_Readlong(RTC_MEM_F2_cumulative); + else if(sdat==3) + cumulative = RTC_Readlong(RTC_MEM_F3_cumulative); + else if(sdat==4) + cumulative = RTC_Readlong(RTC_MEM_F4_cumulative); + else if(sdat==5) + cumulative = RTC_Readlong(RTC_MEM_F5_cumulative); + else if(sdat==6) + cumulative = RTC_Readlong(RTC_MEM_F6_TO_F36_cumulative); + + //bin2bcd(batch,5); + //long2bcd(cumulative,8); + bin2bcd(cumulative,6); + } + #ifdef _6_key + while(!enter) + #elif defined( _4x4_key ) + while(KeyPressed == enter) + #endif + {delay(2);} + + /*if(function==1) + { + cumulative = RTC_Readlong(RTC_MEM_F1_cumulative); + } + else if(function==2) + { + cumulative = RTC_Readlong(RTC_MEM_F2_cumulative); + } + else if(function==3) + { + cumulative = RTC_Readlong(RTC_MEM_F3_cumulative); + } + else if(function==4) + { + cumulative = RTC_Readlong(RTC_MEM_F4_cumulative); + } + else if(function==5) + { + cumulative = RTC_Readlong(RTC_MEM_F5_cumulative); + } + else if((function>=6) && (function<=36)) + { + cumulative = RTC_Readlong(RTC_MEM_F6_TO_F36_cumulative); + } + long2bcd(cumulative,8); + #ifdef _6_key + while(enter && mode) + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != mode) + #endif + {delay(2);} */ +} +//============================================================================================ +void display_current_batch(void) +{ + unsigned char sdat=1,b=0;; + function = read_RTC(RTC_MEM_current_recipe); + shift_flag=0; + if(function>6)sdat=1; + else sdat=function; + + #ifdef _6_key + while(!enter) + #elif defined( _4x4_key ) + while(KeyPressed == enter) + #endif + {delay(2);} + + //disp(function/10,function%10,0x0F,0x11,0x11,0x11,0x11,0x11); + disp(0x0B,sdat,0x1E,0x11,0x11,0x11,0x11,0x11); //"B1=" + delay(500); + b=1; + //b=0; + dp_flag=0; + #ifdef _6_key + while(enter && set && mode) + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != set && KeyPressed != mode) + #endif + { + blink(b,1); + disp_data[b]=incdec(disp_data[b],6,1); + //sdat = ((disp_data[0] & 0x0F) << 4 ) + (disp_data[1] & 0x0F); + sdat = (disp_data[1] & 0xFF); + sdat = bcd2int(sdat); + //delay(100); + if(sdat==1) + batch=read_RTC(RTC_MEM_F1_batch_MSB)*0x100 + read_RTC(RTC_MEM_F1_batch_LSB); + else if(sdat==2) + batch=read_RTC(RTC_MEM_F2_batch_MSB)*0x100 + read_RTC(RTC_MEM_F2_batch_LSB); + else if(sdat==3) + batch=read_RTC(RTC_MEM_F3_batch_MSB)*0x100 + read_RTC(RTC_MEM_F3_batch_LSB); + else if(sdat==4) + batch=read_RTC(RTC_MEM_F4_batch_MSB)*0x100 + read_RTC(RTC_MEM_F4_batch_LSB); + else if(sdat==5) + batch=read_RTC(RTC_MEM_F5_batch_MSB)*0x100 + read_RTC(RTC_MEM_F5_batch_LSB); + else if(sdat==6) + batch=read_RTC(RTC_MEM_F6_TO_F36_batch_MSB)*0x100 + read_RTC(RTC_MEM_F6_TO_F36_batch_LSB); + + //batch2bcd(batch,5); + bin2bcd(batch,5); + } + #ifdef _6_key + while(!enter){delay(2);} + #elif defined( _4x4_key ) + while(KeyPressed == enter) {delay(2);} + #endif + dp_flag=1; +} + //--------------------------------------------------------------------------- + /*if(function==1) + { + batch=read_RTC(RTC_MEM_F1_batch_MSB)*0x100 + read_RTC(RTC_MEM_F1_batch_LSB); + } + else if(function==2) + { + batch=read_RTC(RTC_MEM_F2_batch_MSB)*0x100 + read_RTC(RTC_MEM_F2_batch_LSB); + } + else if(function==3) + { + batch=read_RTC(RTC_MEM_F3_batch_MSB)*0x100 + read_RTC(RTC_MEM_F3_batch_LSB); + } + else if(function==4) + { + batch=read_RTC(RTC_MEM_F4_batch_MSB)*0x100 + read_RTC(RTC_MEM_F4_batch_LSB); + } + else if(function==5) + { + batch=read_RTC(RTC_MEM_F5_batch_MSB)*0x100 + read_RTC(RTC_MEM_F5_batch_LSB); + } + else if((function>=6) && (function<=36)) + { + batch=read_RTC(RTC_MEM_F6_TO_F36_batch_MSB)*0x100 + read_RTC(RTC_MEM_F6_TO_F36_batch_LSB); + } + disp(0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11); + batch2bcd(batch,5); + #ifdef _6_key + while(enter && mode) + #elif defined( _4x4_key ) + while(KeyPressed != enter && KeyPressed != mode) + #endif + {delay(2);} +}*/ +//=============================================================================================== +void clear_current_cumulative_batch(void) +{ + disp(0x11,0x0C,0x16,0x0E,0x0A,0x13,0x11,0x11); + #ifdef _6_key + while(tare && set && mode) + #elif defined( _4x4_key ) + while(KeyPressed != tare &&KeyPressed != set && KeyPressed != mode) + #endif + { + blink(0,8); + } + #ifdef _6_key + if(!tare) + #elif defined( _4x4_key ) + if(KeyPressed == tare) + #endif + { + cumulative=0; + batch=0; + if(function==1) + { + RTC_Writelong(RTC_MEM_F1_cumulative,cumulative); //cumulative clear + write_RTC(RTC_MEM_F1_batch_MSB,batch/0x100); //batch clear + write_RTC(RTC_MEM_F1_batch_LSB,batch%0x100); + } + else if(function==2) + { + RTC_Writelong(RTC_MEM_F2_cumulative,cumulative); //cumulative clear + write_RTC(RTC_MEM_F2_batch_MSB,batch/0x100); //batch clear + write_RTC(RTC_MEM_F2_batch_LSB,batch%0x100); + } + else if(function==3) + { + RTC_Writelong(RTC_MEM_F3_cumulative,cumulative); //cumulative clear + write_RTC(RTC_MEM_F3_batch_MSB,batch/0x100); //batch clear + write_RTC(RTC_MEM_F3_batch_LSB,batch%0x100); + } + else if(function==4) + { + RTC_Writelong(RTC_MEM_F4_cumulative,cumulative); //cumulative clear + write_RTC(RTC_MEM_F4_batch_MSB,batch/0x100); //batch clear + write_RTC(RTC_MEM_F4_batch_LSB,batch%0x100); + } + else if(function==5) + { + RTC_Writelong(RTC_MEM_F5_cumulative,cumulative); //cumulative clear + write_RTC(RTC_MEM_F5_batch_MSB,batch/0x100); //batch clear + write_RTC(RTC_MEM_F5_batch_LSB,batch%0x100); + } + else if((function>=6) && (function<=36)) + { + RTC_Writelong(RTC_MEM_F6_TO_F36_cumulative,cumulative); //cumulative clear + write_RTC(RTC_MEM_F6_TO_F36_batch_MSB,batch/0x100); //batch clear + write_RTC(RTC_MEM_F6_TO_F36_batch_LSB,batch%0x100); + } + } +} +//================================================================================================= +void clear_batch_cumulative(void) +{ + disp(0x11,0x0C,0x16,0x0E,0x0A,0x13,0x11,0x11); + #ifdef _6_key + while(tare && set && mode) + #elif defined( _4x4_key ) + while(KeyPressed != tare &&KeyPressed != set && KeyPressed != mode) + #endif + { + blink(0,8); + } + #ifdef _6_key + if(!tare) + #elif defined( _4x4_key ) + if(KeyPressed == tare) + #endif + { + cumulative=0; + batch=0; + + RTC_Writelong(RTC_MEM_F1_cumulative,cumulative); //F1 cumulative clear + write_RTC(RTC_MEM_F1_batch_MSB,batch/0x100); //F1 batch clear + write_RTC(RTC_MEM_F1_batch_LSB,batch%0x100); + + RTC_Writelong(RTC_MEM_F2_cumulative,cumulative); //F2 cumulative clear + write_RTC(RTC_MEM_F2_batch_MSB,batch/0x100); //F2 batch clear + write_RTC(RTC_MEM_F2_batch_LSB,batch%0x100); + + RTC_Writelong(RTC_MEM_F3_cumulative,cumulative); //F3 cumulative clear + write_RTC(RTC_MEM_F3_batch_MSB,batch/0x100); //F3 batch clear + write_RTC(RTC_MEM_F3_batch_LSB,batch%0x100); + + RTC_Writelong(RTC_MEM_F4_cumulative,cumulative); //F4 cumulative clear + write_RTC(RTC_MEM_F4_batch_MSB,batch/0x100); //F4 batch clear + write_RTC(RTC_MEM_F4_batch_LSB,batch%0x100); + + RTC_Writelong(RTC_MEM_F5_cumulative,cumulative); //F5 cumulative clear + write_RTC(RTC_MEM_F5_batch_MSB,batch/0x100); //F5batch clear + write_RTC(RTC_MEM_F5_batch_LSB,batch%0x100); + + RTC_Writelong(RTC_MEM_F6_TO_F36_cumulative,cumulative); //F6~F36 cumulative clear + write_RTC(RTC_MEM_F6_TO_F36_batch_MSB,batch/0x100); //batch clear + write_RTC(RTC_MEM_F6_TO_F36_batch_LSB,batch%0x100); + } +} +//====================================================================================================== \ No newline at end of file diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/matrix_key.c b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/matrix_key.c new file mode 100644 index 0000000..550e5bb --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/matrix_key.c @@ -0,0 +1,205 @@ +/* + * _4x4_key.c + * + * Created: 11-03-2015 15:22:49 + * Author: stanly + */ +#include +#include +#include + + +//extern unsigned char idata keyPressed, key_digit=0; +extern unsigned char idata KeyPressed; +unsigned char key_value[2]={0,0}; + +#define KB_PORT_OUT P0 +#define KB_PORT_IN P0 + +//***********************************************************************/ +void init_matrixKeypad(void) +{ + P0=0x0F; + //pull_up_matrix_key_port; +} + +void read_matrixKeypad(void) +{ + //unsigned char upperNibble, keyCode, i, keyPressed; + unsigned char idata upperNibble, keyCode, i; + upperNibble = 0xff; + + KeyPressed = '@'; //clearing every time + + for(i=0; i<4; i++) + { + delay(1); + KB_PORT_OUT = ~(0x01 << i); + delay(1); //delay for port o/p settling + upperNibble = KB_PORT_IN | 0x0f; + + if (upperNibble != 0xff) + { + delay(20); //key debouncing delay + upperNibble = KB_PORT_IN | 0x0f; + if(upperNibble == 0xff) goto OUT; + keyCode = (upperNibble & 0xf0) | (0x0f & ~(0x01 << i)); + while (upperNibble != 0xff) + upperNibble = KB_PORT_IN | 0x0f; + delay(20); //key debouncing delay + switch (keyCode) //generating key character to display on LCD + { + case (0xd7): + if(KEY_LAYOUT)KeyPressed = 0x00; + else KeyPressed = 0x07; + break; + case (0xee): + if(KEY_LAYOUT)KeyPressed = 0x01; + else KeyPressed = 'D'; + break; + case (0xde): + if(KEY_LAYOUT)KeyPressed = 0x02; + else KeyPressed = 'C'; + break; + case (0xbe): + if(KEY_LAYOUT)KeyPressed = 0x03; + else KeyPressed = 'B'; + break; + case (0xed): + if(KEY_LAYOUT)KeyPressed = 0x04; + else KeyPressed = '#'; + break; + case (0xdd): + if(KEY_LAYOUT)KeyPressed = 0x05; + else KeyPressed = 0x09; + break; + case (0xbd): KeyPressed = 0x06; + break; + case (0xeb): + if(KEY_LAYOUT)KeyPressed = 0x07; + else KeyPressed = 0x00; + break; + case (0xdb): KeyPressed = 0x08; + break; + case (0xbb): + if(KEY_LAYOUT)KeyPressed = 0x05; + KeyPressed = 0x09; + break; + case (0x7e): KeyPressed = 'A'; + break; + case (0x7d): + if(KEY_LAYOUT)KeyPressed = 'B'; + else KeyPressed = 0x03; + break; + case (0x7b): + if(KEY_LAYOUT)KeyPressed = 'C'; + else KeyPressed = 0x02; + break; + case (0x77): + if(KEY_LAYOUT)KeyPressed = 'D'; + else KeyPressed = 0x01; + break; + case (0xe7): KeyPressed = '*'; + break; + case (0xb7): + if(KEY_LAYOUT)KeyPressed = '#'; + else KeyPressed = 0x04; + break; + default : KeyPressed = 'X'; + }//end of switch + //lcd_gotoxy(0x0F, 0x00); + //lcd_putc(keyPressed); + OUT:; + }//end of if + }//end of for +} +/*void read_matrixKeypad(void) +{ + //unsigned char upperNibble, keyCode, i, keyPressed; + unsigned char upperNibble, keyCode, i; + upperNibble = 0xff; + + keyPressed = '@'; //clearing every time + + for(i=0; i<4; i++) + { + _delay_ms(1); + KB_PORT_OUT = ~(0x01 << i); + _delay_ms(1); //delay for port o/p settling + upperNibble = KB_PORT_IN | 0x0f; + + if (upperNibble != 0xff) + { + _delay_ms(20); //key debouncing delay + upperNibble = KB_PORT_IN | 0x0f; + if(upperNibble == 0xff) goto OUT; + keyCode = (upperNibble & 0xf0) | (0x0f & ~(0x01 << i)); + while (upperNibble != 0xff) + upperNibble = KB_PORT_IN | 0x0f; + _delay_ms(20); //key debouncing delay + switch (keyCode) //generating key character to display on LCD + { + case (0xd7): + if(KEY_LAYOUT)keyPressed = 0; + else keyPressed = 7; + break; + case (0xee): + if(KEY_LAYOUT)keyPressed = 1; + else keyPressed = 'D'; + break; + case (0xde): + if(KEY_LAYOUT)keyPressed = 2; + else keyPressed = 'C'; + break; + case (0xbe): + if(KEY_LAYOUT)keyPressed = 3; + else keyPressed = 'B'; + break; + case (0xed): + if(KEY_LAYOUT)keyPressed = 4; + else keyPressed = '#'; + break; + case (0xdd): + if(KEY_LAYOUT)keyPressed = 5; + else keyPressed = 9; + break; + case (0xbd): keyPressed = 6; + break; + case (0xeb): + if(KEY_LAYOUT)keyPressed = 7; + else keyPressed = 0; + break; + case (0xdb): keyPressed = 8; + break; + case (0xbb): + if(KEY_LAYOUT)keyPressed = 5; + keyPressed = 9; + break; + case (0x7e): keyPressed = 'A'; + break; + case (0x7d): + if(KEY_LAYOUT)keyPressed = 'B'; + else keyPressed = 3; + break; + case (0x7b): + if(KEY_LAYOUT)keyPressed = 'C'; + else keyPressed = 2; + break; + case (0x77): + if(KEY_LAYOUT)keyPressed = 'D'; + else keyPressed = 1; + break; + case (0xe7): keyPressed = '*'; + break; + case (0xb7): + if(KEY_LAYOUT)keyPressed = '#'; + else keyPressed = 4; + break; + default : keyPressed = 'X'; + }//end of switch + lcd_gotoxy(0x0F, 0x00); + lcd_putc(keyPressed); + OUT:; + }//end of if + }//end of for +} */ diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/matrix_key.h b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/matrix_key.h new file mode 100644 index 0000000..02992ea --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/matrix_key.h @@ -0,0 +1,22 @@ +/* + * _4x4_key.h + * + * Created: 11-03-2015 15:29:39 + * Author: stanly + */ + +#ifndef MATRIX_KEY_H_ +#define MATRIX_KEY_H_ + + +//#define KEY_LAYOUT 0 //straight +#define KEY_LAYOUT 1 //reverse + + +//extern unsigned char keyPressed, key_digit; +extern unsigned char key_value[2]; + +extern void init_matrixKeypad(void); +extern void read_matrixKeypad(void); + +#endif /* MATRIX_KEY_H_ */ \ No newline at end of file diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ser_disp.LST b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ser_disp.LST new file mode 100644 index 0000000..c947cfa --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/ser_disp.LST @@ -0,0 +1,180 @@ +C51 COMPILER V9.60.7.0 SER_DISP 07/10/2026 17:02:31 PAGE 1 + + +C51 COMPILER V9.60.7.0, COMPILATION OF MODULE SER_DISP +OBJECT MODULE PLACED IN ser_disp.OBJ +COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ser_disp.c BROWSE DEBUG OBJECTEXTEND + +line level source + + 1 //#pragma nointpromote + 2 #include + 3 //#include + 4 //#include + 5 + 6 //#include + 7 #include + 8 #include + 9 #include + 10 #include + 11 + 12 #include + 13 #include + 14 + 15 sbit ser_clk =P2^6; + 16 sbit ser_data=P2^7; + 17 + 18 /* Display code storage. + 19 Display Code. + 20 0 to F 0x00 to 0x0F + 21 - 0x10 + 22 Blank 0x11 + 23 P 0x12 + 24 R 0x13 + 25 T 0x14 + 26 H 0x15 + 27 L 0x16 + 28 O 0x17 + 29 N 0x18 + 30 G 0x19 + 31 M 0x1A + 32 U 0x1B + 33 Y 0x1C + 34 W 0x1D + 35 = 0x1E + 36 */ + 37 + 38 unsigned char code h_7[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90, + 39 0x88,0x83,0xC6,0xA1,0x86,0x8E, + 40 0xBF,0xFF,0x8C,0xAF,0x87,0x89,0xC7, + 41 0xA3,0xAB,0xC2,0xAA,0xC1,0x91,0x95,0xF6}; + 42 + 43 unsigned char code filltronics[]={0x0F,0x01,0x16,0x16,0x14,0x13,0x17,0x18,0x01,0x0C,0x05, + 44 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11}; //Filltronics + 45 + 46 extern unsigned char data disp_data[8]; + 47 extern unsigned char idata dp_val; + 48 extern bit dp_flag; + 49 + 50 //--------------------------------------------------------------------- + 51 void display(void) + 52 { + 53 1 unsigned char i,j,temp; + 54 1 //EX0 = 0; + 55 1 EA=0; + C51 COMPILER V9.60.7.0 SER_DISP 07/10/2026 17:02:31 PAGE 2 + + 56 1 for(i=0;i<8;i++) + 57 1 { + 58 2 if(i == dp_val && dp_flag) temp=h_7[disp_data[i]] & 0x7F; + 59 2 else temp=h_7[disp_data[i]]; + 60 2 for(j=0;j<=7;j++) + 61 2 { + 62 3 if(temp & 0x80) ser_data=1; + 63 3 else ser_data=0; + 64 3 + 65 3 ser_clk=1; + 66 3 _nop_(); + 67 3 _nop_(); + 68 3 _nop_(); + 69 3 ser_clk=0; + 70 3 + 71 3 temp<<=1; + 72 3 _nop_(); + 73 3 _nop_(); + 74 3 _nop_(); + 75 3 + 76 3 rst_wdt(); + 77 3 } + 78 2 } + 79 1 //EX0 = 1; + 80 1 EA=1; + 81 1 } + 82 //--------------------------------------------------------------------- + 83 void disp(char i1,i2,i3,i4,i5,i6,i7,i8) + 84 { + 85 1 disp_data[0]=i1; + 86 1 disp_data[1]=i2; + 87 1 disp_data[2]=i3; + 88 1 disp_data[3]=i4; + 89 1 disp_data[4]=i5; + 90 1 disp_data[5]=i6; + 91 1 disp_data[6]=i7; + 92 1 disp_data[7]=i8; + 93 1 display(); + 94 1 } + 95 //------------------------------------------------------------------------ + 96 void clr_disp(void) + 97 { + 98 1 disp_data[0]=0x11; + 99 1 disp_data[1]=0x11; + 100 1 disp_data[2]=0x11; + 101 1 disp_data[3]=0x11; + 102 1 disp_data[4]=0x11; + 103 1 disp_data[5]=0x11; + 104 1 disp_data[6]=0x11; + 105 1 disp_data[7]=0x11; + 106 1 display(); + 107 1 } + 108 //------------------------------------------------------------------------ + 109 void long2bcd(unsigned long value,char no) + 110 { + 111 1 char i; // Converts a bin value to bcd & display. + 112 1 // char no determines how many digits to be + 113 1 for(i=7;i>=(8-no);i--) // displayed. + 114 1 { + 115 2 disp_data[i]=value % 10; + 116 2 if(value==0 && i=(8-no);i--) // displayed. + 129 1 { + 130 2 disp_data[i]=value % 10; + 131 2 if(value==0 && i<7 && disp_data[i]==0x00)disp_data[i]=0x11; //masking zero + 132 2 value=value / 10; + 133 2 rst_wdt(); + 134 2 } + 135 1 disp_data[0]=0x0B; //Display "Bat" + 136 1 disp_data[1]=0x0A; + 137 1 disp_data[2]=0x14; + 138 1 display(); + 139 1 } + 140 //----------------------------------------------------------------------------- + 141 void display_name(void) + 142 { + 143 1 char i,j; + 144 1 //for(i=0;i<22;i++) + 145 1 for(i=0;i +//#include +//#include + +//#include +#include +#include +#include +#include + +#include +#include + +sbit ser_clk =P2^6; +sbit ser_data=P2^7; + +/* Display code storage. + Display Code. + 0 to F 0x00 to 0x0F + - 0x10 + Blank 0x11 + P 0x12 + R 0x13 + T 0x14 + H 0x15 + L 0x16 + O 0x17 + N 0x18 + G 0x19 + M 0x1A + U 0x1B + Y 0x1C + W 0x1D + = 0x1E +*/ + +unsigned char code h_7[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90, + 0x88,0x83,0xC6,0xA1,0x86,0x8E, + 0xBF,0xFF,0x8C,0xAF,0x87,0x89,0xC7, + 0xA3,0xAB,0xC2,0xAA,0xC1,0x91,0x95,0xF6}; + +unsigned char code filltronics[]={0x0F,0x01,0x16,0x16,0x14,0x13,0x17,0x18,0x01,0x0C,0x05, + 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11}; //Filltronics + +extern unsigned char data disp_data[8]; +extern unsigned char idata dp_val; +extern bit dp_flag; + +//--------------------------------------------------------------------- +void display(void) +{ + unsigned char i,j,temp; + //EX0 = 0; + EA=0; + for(i=0;i<8;i++) + { + if(i == dp_val && dp_flag) temp=h_7[disp_data[i]] & 0x7F; + else temp=h_7[disp_data[i]]; + for(j=0;j<=7;j++) + { + if(temp & 0x80) ser_data=1; + else ser_data=0; + + ser_clk=1; + _nop_(); + _nop_(); + _nop_(); + ser_clk=0; + + temp<<=1; + _nop_(); + _nop_(); + _nop_(); + + rst_wdt(); + } + } + //EX0 = 1; + EA=1; +} +//--------------------------------------------------------------------- +void disp(char i1,i2,i3,i4,i5,i6,i7,i8) +{ + disp_data[0]=i1; + disp_data[1]=i2; + disp_data[2]=i3; + disp_data[3]=i4; + disp_data[4]=i5; + disp_data[5]=i6; + disp_data[6]=i7; + disp_data[7]=i8; + display(); +} +//------------------------------------------------------------------------ +void clr_disp(void) +{ + disp_data[0]=0x11; + disp_data[1]=0x11; + disp_data[2]=0x11; + disp_data[3]=0x11; + disp_data[4]=0x11; + disp_data[5]=0x11; + disp_data[6]=0x11; + disp_data[7]=0x11; + display(); +} +//------------------------------------------------------------------------ +void long2bcd(unsigned long value,char no) +{ + char i; // Converts a bin value to bcd & display. + // char no determines how many digits to be + for(i=7;i>=(8-no);i--) // displayed. + { + disp_data[i]=value % 10; + if(value==0 && i=(8-no);i--) // displayed. + { + disp_data[i]=value % 10; + if(value==0 && i<7 && disp_data[i]==0x00)disp_data[i]=0x11; //masking zero + value=value / 10; + rst_wdt(); + } + disp_data[0]=0x0B; //Display "Bat" + disp_data[1]=0x0A; + disp_data[2]=0x14; + display(); +} +//----------------------------------------------------------------------------- +void display_name(void) +{ + char i,j; + //for(i=0;i<22;i++) + for(i=0;i /* Library header files */ + 5 //#include + 6 //#include + 7 #include + 8 #include + 9 #include + 10 #include + 11 + 12 #include + 13 //----------------------------------------------------------------------------- + 14 extern int idata len; + 15 //----------------------------------------------------------------------------- + 16 sfr wdt =0xA6; + 17 //------------------------------------------------------------------------ + 18 void delay(unsigned int del) + 19 { + 20 1 unsigned int j; + 21 1 unsigned int i; // Delay of 'del' mS. + 22 1 for(j=0;j> 4) + (bcd & 0xF); + 59 1 } + 60 //------------------------------------------------------------------------------ + 61 + + +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 162 ---- + CONSTANT SIZE = ---- ---- + XDATA SIZE = ---- ---- + PDATA SIZE = ---- ---- + DATA SIZE = ---- 12 + IDATA SIZE = ---- ---- + BIT SIZE = ---- 1 +END OF MODULE INFORMATION. + + +C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/utility.OBJ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/utility.OBJ new file mode 100644 index 0000000..b5a004e Binary files /dev/null and b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/utility.OBJ differ diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/utility.c b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/utility.c new file mode 100644 index 0000000..429165b --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/utility.c @@ -0,0 +1,61 @@ +// Routines which are commonly used in all programs. + +//#pragma code +#include /* Library header files */ +//#include +//#include +#include +#include +#include +#include + +#include +//----------------------------------------------------------------------------- +extern int idata len; +//----------------------------------------------------------------------------- +sfr wdt =0xA6; +//------------------------------------------------------------------------ +void delay(unsigned int del) +{ + unsigned int j; + unsigned int i; // Delay of 'del' mS. + for(j=0;j> 4) + (bcd & 0xF); +} +//------------------------------------------------------------------------------ + diff --git a/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/utility.h b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/utility.h new file mode 100644 index 0000000..235225c --- /dev/null +++ b/Tin_fill_ 4x4-&_6Key_8digit_new_key_36_recipe_HX711_AD7780- 55wd_V3.2/utility.h @@ -0,0 +1,6 @@ +#define nop(); _nop_(); _nop_(); _nop_(); +void delay(unsigned int del); +extern bit arr_cmp(char arr1[],char arr2[],int len); +void arr_cpy(char idata *dest,char idata *src,int len); +void rst_wdt(void); +unsigned char bcd2int(unsigned char bcd); \ No newline at end of file