From 5dbb9e174e8705b0224be389cfabc683b5e1ae03 Mon Sep 17 00:00:00 2001 From: htujun <134864016@qq.com> Date: Sat, 9 Apr 2022 18:26:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=89=8B=E6=9C=BAapp?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRIN.LST | 180 ++++--- IRIN.OBJ | Bin 8490 -> 9443 bytes IRIN.c | 89 +-- i2c.LST | 6 +- i2c.OBJ | Bin 5761 -> 5761 bytes i2c.h | 4 +- lcd.LST | 218 +++++--- lcd.OBJ | Bin 5490 -> 3496 bytes lcd.c | 174 ++++-- lcd.h | 52 +- main.LST | 390 +++++++------- main.OBJ | Bin 19961 -> 19299 bytes main.c | 122 ++--- pro | Bin 40466 -> 38200 bytes pro.M51 | 1319 +++++++++++++++++++++------------------------ pro.build_log.htm | 4 +- pro.hex | 650 ++++++++++------------ pro.uvgui.QY | 228 ++++---- pro.uvopt | 4 +- pwm.LST | 116 ++-- pwm.OBJ | Bin 3898 -> 5329 bytes pwm.c | 34 +- pwm.h | 27 +- 23 files changed, 1775 insertions(+), 1842 deletions(-) diff --git a/IRIN.LST b/IRIN.LST index 5d82104..5614865 100644 --- a/IRIN.LST +++ b/IRIN.LST @@ -1,4 +1,4 @@ -C51 COMPILER V9.56.0.0 IRIN 04/08/2022 03:09:39 PAGE 1 +C51 COMPILER V9.56.0.0 IRIN 04/09/2022 17:31:01 PAGE 1 C51 COMPILER V9.56.0.0, COMPILATION OF MODULE IRIN @@ -11,15 +11,15 @@ line level source 2 #include "i2c.h" 3 4 uint mileage = 0; - 5 - 6 uint count=0; - 7 - 8 uchar ms=0; - 9 uint speed=0; - 10 uint r_s=0; - 11 - 12 extern uint model; - 13 extern uchar set; + 5 uint count=0; + 6 uchar ms=0; + 7 uint speed=0; + 8 uint r_s=0; + 9 + 10 extern uchar play; + 11 extern uint Seep_model; + 12 extern struct UserInfo usr; + 13 extern uchar model; 14 15 void delay11(int i) 16 { @@ -40,85 +40,97 @@ line level source 31 32 void display() 33 { - 34 1 LcdSetCursor(0,0); - 35 1 LcdShowStr(0,0,""); - 36 1 Lcd1602_Write_Data(0x30+speed/100%10); - 37 1 Lcd1602_Write_Data(0x30+speed/10%10); - 38 1 Lcd1602_Write_Data(0x30+speed%10); - 39 1 LcdShowStr(3,0,"KM/h "); - 40 1 - 41 1 LcdShowStr(8,0,""); - 42 1 Lcd1602_Write_Data(0x30+mileage/100%10); - 43 1 Lcd1602_Write_Data(0x30+mileage/10%10); - 44 1 Lcd1602_Write_Data(0x30+mileage%10); - 45 1 LcdShowStr(11,0,"m "); - 46 1 - 47 1 if(model == 0) LcdShowStr(13,0," "); - 48 1 else if(model == 1) LcdShowStr(13, 0, "L"); - 49 1 else if(model == 2) LcdShowStr(13, 0, "M"); - 50 1 else LcdShowStr(13, 0, "H"); - 51 1 } - 52 - 53 - 54 void Key_scan(){ - 55 1 if(k1==0) - C51 COMPILER V9.56.0.0 IRIN 04/08/2022 03:09:39 PAGE 2 + 34 1 // 显示速度 + 35 1 LcdWriteCom(0x80 + 2); + 36 1 LcdWriteData(0x30+speed/100%10); + 37 1 LcdWriteData(0x30+speed/10%10); + 38 1 LcdWriteData(0x30+speed%10); + 39 1 + 40 1 // 显示里程 + 41 1 LcdWriteCom(0x80 + 8); + 42 1 LcdWriteData(0x30+mileage/1000%10); + 43 1 LcdWriteData(0x30+mileage/100%10); + 44 1 LcdWriteData(0x30+mileage/10%10); + 45 1 LcdWriteData(0x30+mileage%10); + 46 1 LcdWriteData('m'); + 47 1 + 48 1 LcdWriteCom(0x80 + 14); + 49 1 if(Seep_model == 0) LcdWriteData('N'); + 50 1 else if(Seep_model == 1) LcdWriteData('L'); + 51 1 else if(Seep_model == 2) LcdWriteData('M'); + 52 1 else if(Seep_model == 3) LcdWriteData('H'); + 53 1 + 54 1 // 显示目标里程 + 55 1 LcdWriteCom(0x80 + 0x40); + C51 COMPILER V9.56.0.0 IRIN 04/09/2022 17:31:01 PAGE 2 - 56 1 { - 57 2 delay11(1000); // - 58 2 if(k1==0){ - 59 3 model++; - 60 3 if(model >= 4) model = 0; - 61 3 } - 62 2 while(!k1); - 63 2 } - 64 1 - 65 1 if(k2==0) - 66 1 { - 67 2 delay11(1000); // - 68 2 if(k2==0){ - 69 3 set = 1; - 70 3 } - 71 2 while(!k2); - 72 2 } - 73 1 - 74 1 } - 75 - 76 void time0() interrupt 1 - 77 { - 78 1 static int time = 0; - 79 1 TH0=0XFc; - 80 1 TL0=0X18; - 81 1 time++; - 82 1 pwm_out_right_moto(); - 83 1 if(time >= 500){ - 84 2 EX1=0; - 85 2 time = 0; - 86 2 r_s=count; - 87 2 count=0; - 88 2 EX1=1; - 89 2 speed=speed*0.5+(r_s*6)*0.5; - 90 2 speed=(0.15*speed); - 91 2 mileage = mileage+(r_s*2.5/20); - 92 2 } - 93 1 } - 94 - 95 void int1() interrupt 2 - 96 { - 97 1 count++; - 98 1 } - 99 - 100 - 101 - 102 + 56 1 LcdWriteData(0x30+usr.target_mileage/1000%10); + 57 1 LcdWriteData(0x30+usr.target_mileage/100%10); + 58 1 LcdWriteData(0x30+usr.target_mileage/10%10); + 59 1 LcdWriteData(0x30+usr.target_mileage%10); + 60 1 LcdWriteData('m'); + 61 1 + 62 1 LcdWriteCom(0x80 + 0x40 + 8); + 63 1 LcdWriteData(0x30+usr.Remaining_mileage/1000%10); + 64 1 LcdWriteData(0x30+usr.Remaining_mileage/100%10); + 65 1 LcdWriteData(0x30+usr.Remaining_mileage/10%10); + 66 1 LcdWriteData(0x30+usr.Remaining_mileage%10); + 67 1 LcdWriteData('m'); + 68 1 + 69 1 LcdWriteCom(0x80 + 0x40 + 14); + 70 1 if(model == 0) LcdWriteData('D'); + 71 1 else LcdWriteData('S'); + 72 1 } + 73 + 74 void Key_scan(){ + 75 1 if(k1==0){ + 76 2 delay11(1000); + 77 2 if(k1==0){ + 78 3 Seep_model++; + 79 3 if(Seep_model >= 4) Seep_model = 0; + 80 3 } + 81 2 while(!k1); + 82 2 } + 83 1 } + 84 + 85 void time0() interrupt 1 + 86 { + 87 1 static int time = 0; + 88 1 TH0=0XFc; + 89 1 TL0=0X18; + 90 1 time++; + 91 1 pwm_out_right_moto(); + 92 1 if(time >= 500){ + 93 2 EX1=0; + 94 2 time = 0; + 95 2 r_s = count * 3 / 20; // 500ms计算一次 求每秒钟的圈数,珊格数为20 r_s = count * 2 / 2 + -0 + 96 2 speed= (r_s * 6) * 2; + 97 2 mileage = mileage + (count / 20 * 3); + 98 2 if(mileage > 9999) mileage = 9999; + 99 2 count=0; + 100 2 EX1 = 1; + 101 2 } + 102 1 } 103 - 104 - 105 + 104 void int1() interrupt 2 + 105 { + 106 1 count++; + 107 1 } + 108 + 109 + 110 + 111 + 112 + 113 + 114 + C51 COMPILER V9.56.0.0 IRIN 04/09/2022 17:31:01 PAGE 3 + MODULE INFORMATION: STATIC OVERLAYABLE - CODE SIZE = 623 ---- - CONSTANT SIZE = 26 ---- + CODE SIZE = 712 ---- + CONSTANT SIZE = ---- ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = 11 ---- diff --git a/IRIN.OBJ b/IRIN.OBJ index 48dee80100ae4ee8ee807980b4d585211bfff2ef..9729f8cfc6efebebad929921d19513cd204c955b 100644 GIT binary patch literal 9443 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 literal 8490 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 f12ZfaghB_lqWiF@= 4) model = 0; + Seep_model++; + if(Seep_model >= 4) Seep_model = 0; } while(!k1); } - - if(k2==0) - { - delay11(1000); // - if(k2==0){ - set = 1; - } - while(!k2); - } - } void time0() interrupt 1 @@ -83,12 +92,12 @@ void time0() interrupt 1 if(time >= 500){ EX1=0; time = 0; - r_s=count; + r_s = count * 3 / 20; // 500ms计算一次 求每秒钟的圈数,珊格数为20 r_s = count * 2 / 20 + speed= (r_s * 6) * 2; + mileage = mileage + (count / 20 * 3); + if(mileage > 9999) mileage = 9999; count=0; - EX1=1; - speed=speed*0.5+(r_s*6)*0.5; - speed=(0.15*speed); - mileage = mileage+(r_s*2.5/20); + EX1 = 1; } } diff --git a/i2c.LST b/i2c.LST index c195677..a84b9ce 100644 --- a/i2c.LST +++ b/i2c.LST @@ -1,4 +1,4 @@ -C51 COMPILER V9.56.0.0 I2C 04/08/2022 02:58:55 PAGE 1 +C51 COMPILER V9.56.0.0 I2C 04/09/2022 14:48:34 PAGE 1 C51 COMPILER V9.56.0.0, COMPILATION OF MODULE I2C @@ -62,7 +62,7 @@ line level source 53 /******************************************************************************* 54 * : I2cSendByte(unsigned char dat) 55 * : ͨI2CһֽڡSCLʱźŸߵƽڼ䣬ַźSDAȶ - C51 COMPILER V9.56.0.0 I2C 04/08/2022 02:58:55 PAGE 2 + C51 COMPILER V9.56.0.0 I2C 04/09/2022 14:48:34 PAGE 2 56 * : num 57 * : 01ͳɹ1ʧܷ0 @@ -126,7 +126,7 @@ line level source 115 1 } 116 117 - C51 COMPILER V9.56.0.0 I2C 04/08/2022 02:58:55 PAGE 3 + C51 COMPILER V9.56.0.0 I2C 04/09/2022 14:48:34 PAGE 3 118 /******************************************************************************* 119 * : void At24c02Write(unsigned char addr,unsigned char dat) diff --git a/i2c.OBJ b/i2c.OBJ index ea099e0f96c714741629478b317a1c3e9ba1bd81..6e25b3e6d03654ead8b6f8d0b3ba0a1527036a44 100644 GIT binary patch delta 243 zcmZqFZPcCMChMdVn8coGl&t6P(%8cCmg8MhLZ7$hwJg)uQq MERf#J#Z}G&0ILK{7ytkO delta 243 zcmZqFZPcCMCYx{KpTwSNl&t6P -sbit SCL=P0^1; -sbit SDA=P0^0; +sbit SCL=P1^1; +sbit SDA=P1^0; void I2cStart(); void I2cStop(); diff --git a/lcd.LST b/lcd.LST index ec1e623..4851607 100644 --- a/lcd.LST +++ b/lcd.LST @@ -1,4 +1,4 @@ -C51 COMPILER V9.56.0.0 LCD 04/08/2022 02:58:55 PAGE 1 +C51 COMPILER V9.56.0.0 LCD 04/09/2022 15:45:29 PAGE 1 C51 COMPILER V9.56.0.0, COMPILATION OF MODULE LCD @@ -7,92 +7,152 @@ COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE lcd.c OPTIMIZE(8,SPEED) BROWSE D line level source - 1 #include "lcd.h" + 1 #include"lcd.h" 2 - 3 - 4 void Read_Busy() //æ⺯жbit70ִУ1ֹ - 5 { - 6 1 unsigned char sta; // - 7 1 LCD1602_DB = 0xff; - 8 1 LCD1602_RS = 0; - 9 1 LCD1602_RW = 1; - 10 1 do - 11 1 { - 12 2 LCD1602_EN = 1; - 13 2 sta = LCD1602_DB; - 14 2 LCD1602_EN = 0; //ʹܣͣͷ - 15 2 }while(sta & 0x80); - 16 1 } - 17 - 18 void Lcd1602_Write_Cmd(unsigned char cmd) //д - 19 { - 20 1 Read_Busy(); - 21 1 LCD1602_RS = 0; - 22 1 LCD1602_RW = 0; - 23 1 LCD1602_DB = cmd; - 24 1 LCD1602_EN = 1; - 25 1 LCD1602_EN = 0; - 26 1 } - 27 - 28 void Lcd1602_Write_Data(unsigned char dat) //д - 29 { - 30 1 Read_Busy(); - 31 1 LCD1602_RS = 1; - 32 1 LCD1602_RW = 0; - 33 1 LCD1602_DB = dat; - 34 1 LCD1602_EN = 1; - 35 1 LCD1602_EN = 0; - 36 1 } - 37 - 38 void LcdSetCursor(unsigned char x,unsigned char y) //ʾ - 39 { - 40 1 unsigned char addr; - 41 1 if(y == 0) - 42 1 addr = 0x00 + x; - 43 1 else - 44 1 addr = 0x40 + x; - 45 1 - 46 1 Lcd1602_Write_Cmd(addr|0x80); - 47 1 } - 48 - 49 //ָλʾһַ - 50 void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData) - 51 { - 52 1 Y &= 0x1; - 53 1 X &= 0xF; //Xܴ15Yܴ1 - 54 1 if (Y) X |= 0x40; //Ҫʾڶʱַ+0x40; - 55 1 X |= 0x80; //ָ - C51 COMPILER V9.56.0.0 LCD 04/08/2022 02:58:55 PAGE 2 + 3 /******************************************************************************* + 4 * : Lcd1602_Delay1ms + 5 * : ʱʱ1ms + 6 * : c + 7 * : + 8 * ˵ : ú12MHZ£12ƵƬʱ + 9 *******************************************************************************/ + 10 + 11 void Lcd1602_Delay1ms(uint c) // 0us + 12 { + 13 1 uchar a,b; + 14 1 for (; c>0; c--) + 15 1 { + 16 2 for (b=199;b>0;b--) + 17 2 { + 18 3 for(a=1;a>0;a--); + 19 3 } + 20 2 } + 21 1 + 22 1 } + 23 + 24 /******************************************************************************* + 25 * : LcdWriteCom + 26 * : LCDдһֽڵ + 27 * : com + 28 * : + 29 *******************************************************************************/ + 30 #ifndef LCD1602_4PINS //ûжLCD1602_4PINSʱ + 31 void LcdWriteCom(uchar com) //д + 32 { + 33 1 LCD1602_E = 0; //ʹ + 34 1 LCD1602_RS = 0; //ѡ + 35 1 LCD1602_RW = 0; //ѡд + 36 1 + 37 1 LCD1602_DATAPINS = com; // + 38 1 Lcd1602_Delay1ms(1); //ȴȶ + 39 1 + 40 1 LCD1602_E = 1; //дʱ + 41 1 Lcd1602_Delay1ms(5); //ʱ + 42 1 LCD1602_E = 0; + 43 1 } + 44 #else + void LcdWriteCom(uchar com) //д + { + LCD1602_E = 0; //ʹ + LCD1602_RS = 0; //ѡд + LCD1602_RW = 0; //ѡд + + LCD1602_DATAPINS = com; //4λĽǽӵP0ڵĸλԴ͸λø + Lcd1602_Delay1ms(1); + + LCD1602_E = 1; //дʱ + Lcd1602_Delay1ms(5); + C51 COMPILER V9.56.0.0 LCD 04/09/2022 15:45:29 PAGE 2 - 56 1 Lcd1602_Write_Cmd(X); // - 57 1 Lcd1602_Write_Data(DData); // - 58 1 } - 59 - 60 - 61 void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str) //ʾַ - 62 { - 63 1 LcdSetCursor(x,y); //ǰַ - 64 1 while(*str != '\0') - 65 1 { - 66 2 Lcd1602_Write_Data(*str++); - 67 2 } - 68 1 } - 69 - 70 void InitLcd1602() //1602ʼ - 71 { - 72 1 Lcd1602_Write_Cmd(0x38); //򿪣5*8,8λ - 73 1 Lcd1602_Write_Cmd(0x0c); - 74 1 Lcd1602_Write_Cmd(0x06); - 75 1 Lcd1602_Write_Cmd(0x01); // - 76 1 } + LCD1602_E = 0; + + // Lcd1602_Delay1ms(1); + LCD1602_DATAPINS = com << 4; //͵λ + Lcd1602_Delay1ms(1); + + LCD1602_E = 1; //дʱ + Lcd1602_Delay1ms(5); + LCD1602_E = 0; + } + #endif + 67 /******************************************************************************* + 68 * : LcdWriteData + 69 * : LCDдһֽڵ + 70 * : dat + 71 * : + 72 *******************************************************************************/ + 73 #ifndef LCD1602_4PINS + 74 void LcdWriteData(uchar dat) //д + 75 { + 76 1 LCD1602_E = 0; //ʹ + 77 1 LCD1602_RS = 1; //ѡ + 78 1 LCD1602_RW = 0; //ѡд + 79 1 + 80 1 LCD1602_DATAPINS = dat; //д + 81 1 Lcd1602_Delay1ms(1); + 82 1 + 83 1 LCD1602_E = 1; //дʱ + 84 1 Lcd1602_Delay1ms(5); //ʱ + 85 1 LCD1602_E = 0; + 86 1 } + 87 #else + void LcdWriteData(uchar dat) //д + { + LCD1602_E = 0; //ʹ + LCD1602_RS = 1; //ѡд + LCD1602_RW = 0; //ѡд + + LCD1602_DATAPINS = dat; //4λĽǽӵP0ڵĸλԴ͸λø + Lcd1602_Delay1ms(1); + + LCD1602_E = 1; //дʱ + Lcd1602_Delay1ms(5); + LCD1602_E = 0; + + LCD1602_DATAPINS = dat << 4; //дλ + Lcd1602_Delay1ms(1); + + LCD1602_E = 1; //дʱ + Lcd1602_Delay1ms(5); + LCD1602_E = 0; + } + #endif + 109 /******************************************************************************* + 110 * : LcdInit() + 111 * : ʼLCD + 112 * : + 113 * : + 114 *******************************************************************************/ + 115 #ifndef LCD1602_4PINS + 116 void LcdInit() //LCDʼӳ + 117 { + C51 COMPILER V9.56.0.0 LCD 04/09/2022 15:45:29 PAGE 3 + + 118 1 LcdWriteCom(0x38); //ʾ + 119 1 LcdWriteCom(0x0c); //ʾʾ + 120 1 LcdWriteCom(0x06); //дһָ1 + 121 1 LcdWriteCom(0x01); // + 122 1 LcdWriteCom(0x80); //ָ + 123 1 } + 124 #else + void LcdInit() //LCDʼӳ + { + LcdWriteCom(0x32); //8λתΪ4λ + LcdWriteCom(0x28); //λµijʼ + LcdWriteCom(0x0c); //ʾʾ + LcdWriteCom(0x06); //дһָ1 + LcdWriteCom(0x01); // + LcdWriteCom(0x80); //ָ + } + #endif MODULE INFORMATION: STATIC OVERLAYABLE - CODE SIZE = 157 ---- + CODE SIZE = 87 ---- CONSTANT SIZE = ---- ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- - DATA SIZE = ---- 3 + DATA SIZE = ---- ---- IDATA SIZE = ---- ---- BIT SIZE = ---- ---- END OF MODULE INFORMATION. diff --git a/lcd.OBJ b/lcd.OBJ index 7d32b00d6b7b5e0162a26dc95a2f2329e9b6682d..033ddcd10f07058918604a76d5bf8cac3ab63eba 100644 GIT binary patch literal 3496 zcmb7H|8G-O6hH5^Z>8(TIxHXvtn@KlksuvRL5*{3UuI$5x~<#5EUA5M!)Exh%#ANo z83rUFCSYPA@fYP6;%~;kVKFiB2TdSRNiZ0JsF4W9A2b-j&$+LsduJjP6Drur8)5Bt~BVI!-EXG7~AerIu&gubz5acV* zLKCPt3#blY6*wEzRGGt}Ft-&yo~knS#b5&|$3mMLd6R(!+v4ZU5Cf1A$R^`fHZht? z?ay|HqZHN%k?<69vt}S{1_bAi95MqYgbie9c{9+y!~BqAq<=sjJsrctWq#;X=5B$()GWj$()_aCQtoboyJem6BZri` zo8fN0;J8~nm^%?W^yb~5pY(?Q?(N%SUFUtPR2CO6UbwuVoum~+S4#`VNxJR#lb^hr zhLC-Y4Musx`@s_XmC$AFxr3m)D6`oz-1T; z?i>u``dKVpEgSYptzj(QqZaK|ydPYr6u6fL6i+KYr1*&98E_wsg8ONVeuNoDwHbc} z8%dXb`_{KXb>PA-#Acz1SpzeT*(n63&mU#A8pmi^d2B9^E6U^Q^7w|il{{SBvr6Zj z;zz*^ItJcI$H80Z1bB$%sSSo0V#qagu7|Ir)|p&W^jJHo?4-?zO-tKW=#l|$S zczeZOrk?RyXsxJp@_o7zKo9EQA#sxf=5~`+3chJOcY07>4*WVyCkIA4Z~&jn#N+wO z0Vqv1yA(%v#yGBg023QdX!o8=`Ounc|6_c0$ZUATh&<->Gbi4J`=mIBgnqc34z zz1fAi<^}V$%yN9hDB}Gr7cBCj8o6MO9PiK6$OW_f51TC}3S_gxR$o^v`)W43wk}vJ z)fyc=sNQv0&%t=h_NjR-x3iKzC%k71`~u*-Xw;06iFdFye8q61Fdh>P_KyFdA?VVu zPc-B^%Nh(w*`qVA6iWv9Om_wtvrWrg8apH+uJ4HibXRBhj@rZ7m2#2nN`o`zYL;wr z+cK8yG3K+6Vq}u+3T7`^eoRT1J>mXc@OZu4gh-ZNSL97Vz1uTw1b#`nELyzz|9-#PfQmCPjY z3i`P&H5QtLE!0VFBT0?iMv@w76iJOV2ID^4@m9V%f2upjxrzB4NvWJO>)5PP$|;wW za>Fu~6bhD<36>NImXt95$L0@0yrSpwlewAsy3iHz3C@kD6DN>~L+373!4e$@*EgyZ TvdATRj1PGI>fZ*A^Sb{44ewYV literal 5490 zcmb7ITWnP45uUvqpRCu$Yh$p%5SCpoh7cMYOiWd3ych5SzG!zHa7DH3#f@EYv5cKU zq7+MwK@f#hRn@0H&^|;;i^@aas;ZIv);{!tl(tVTY86FQlP0}T2{nrQeg8S*Jw7&6 z{lW8}IrCp;zL|gKKRbO>mip7Z2jYqI)!P1QB0e%&%njwflre)hegie;7yO8EQk^JGvu z4}bRJ=FI2Mo}8FEUwXOsEVezHyI4ItGx1XIf&G(j25kwQN@qR`Bw9X|fbhSxNo)UT zzCWKG$dpoJh4Fq22s)yeY^JD$HwO+q*Hb#3&lR(!^iYOlLOP~vjWL;l;s6JQb&m}? zsE{qD$MS`dJjIqH-YOkNoXHhNPYsNZ3}@4W17<*jGoV}6FV7zYRz)MUB|!s15N3)- z%R*iFlryv4nVB2T6H?8Hq06%~$>?4zwv_z61Pm72fyLD2>GS2QBNr#q zljRwa;Jk!_qtD^t4j+1qS&2w~qFgJb<}P0q2`@;XQGv-0TV0@TtBH%ng0HOSfz0n{vcV}tw#{KK}7w+9zT=+Qt!M}?b z9hSe?4G_0V;@xBhm||ks47UumK|=_(fLIa%wIyn36KF)5L8Gz`v{_m}TO}sHfl5|g zrOwy}39b=7_gp3EW_b238^f^okL)&)#T$#)Z{NAUu(*);ZX|;J!vX5`ezFfP!b2N| z24%gW?Vy%$vMn1yBhmpHl}^xR*#z1mo8=a?u-4GxZVYqQ3j3El>LChmK|Q+FsCU1v z-Wz`PIA{xo24$K`#__zU*3dD)=HJ`$KVlvnmLnv+9+erxU1(l`sI`UjGX{9 z#Pn{cUdEgzi=r5lc>8|Lpdz{Y!FX!lm66>fDD?Ltp{-%j=*Ti~Gw^TYDIp$9>2 z=>=_+L!dEv0d&3efp*GanTL*+U&pc7Ith9+=2W~gKfYq%@st?L-ed~TwLX}1t%-!5y2dyfk1(@ zhY7FONC6W4WMwqVtN-+ZfLY!u`?qrk5efn6f)%jDnnHFcTUQL7CJh@>y;Pg9Cd}JO z(qEUG%}od{KaZPH^(WwY8$$9TKY5{?FgK#0JmF51s>Bd8h!U+v`NE&8%?KZ6Y^Mw^ z)Ux29A^s)Mvn`<^@Te}{*7*%Sew&AXxN57@e|*ALNlazats;2#Zne?J$36VtD=aKH z6Ts<=y9bXs-(9cu!Z632{pi`aM-WnTI9;CRZO1d`Q2w6^OBUvh_Ovc9=^*rt+8Dx( zOEUL5jZ?S;kET~`rc+&#@(!PzTk7}^DmawjTiw!JI&I26iu+HY0YkhMa*mj;Jv2K9 zF!x#TY`=JM2wZ^K!!+{LS8q=|%bcwsP)@HaPk<@!bEcd1C|9000?G${a^)Edl;?bM zRWUW^Iw6R%=rnZ>O;E6@>N+3a>Ek!~_=JyV%<6jQ zE4;q&I;;0SdzI5BkR}OI5T(#*>NFlWHuBU=ou*Dwp5rJth0z^PCn-(crWc7S6>>cI#$?#^iU@&u+AGR{-&4*B>Od_1F@yK?+L zRDlKt|$j#mAUyt1+Al(?mre^HLvql=tWc+w}9%9|( zol3iTUbpf?#lm(gbBJRT!%=P0aP;!bA({gie&i3MXKTaXyrNd^aSdW_q%yD9)YC!S z0G&pI&MFFXQx|7{g-IOD#{PC~r?HIA)~I(-Sh+~wa+EKB+W53Lc3o)%8>L`&0; z))RNR_K4OxzY3S&6~x_Gg&VY2QZgSF+b+8h9~A)clAtaomKvXJ6?IM zqvXF`X)}5?Aq>tM?Gs2Q63R3Y!hMpq=8h#UAO!fw(YGh diff --git a/lcd.c b/lcd.c index 69fa40f..b32b713 100644 --- a/lcd.c +++ b/lcd.c @@ -1,76 +1,134 @@ -#include "lcd.h" +#include"lcd.h" +/******************************************************************************* +* : Lcd1602_Delay1ms +* : ʱʱ1ms +* : c +* : +* ˵ : ú12MHZ£12ƵƬʱ +*******************************************************************************/ -void Read_Busy() //æ⺯жbit70ִУ1ֹ +void Lcd1602_Delay1ms(uint c) // 0us { - unsigned char sta; // - LCD1602_DB = 0xff; - LCD1602_RS = 0; - LCD1602_RW = 1; - do - { - LCD1602_EN = 1; - sta = LCD1602_DB; - LCD1602_EN = 0; //ʹܣͣͷ - }while(sta & 0x80); + uchar a,b; + for (; c>0; c--) + { + for (b=199;b>0;b--) + { + for(a=1;a>0;a--); + } + } + } -void Lcd1602_Write_Cmd(unsigned char cmd) //д +/******************************************************************************* +* : LcdWriteCom +* : LCDдһֽڵ +* : com +* : +*******************************************************************************/ +#ifndef LCD1602_4PINS //ûжLCD1602_4PINSʱ +void LcdWriteCom(uchar com) //д { - Read_Busy(); - LCD1602_RS = 0; - LCD1602_RW = 0; - LCD1602_DB = cmd; - LCD1602_EN = 1; - LCD1602_EN = 0; -} + LCD1602_E = 0; //ʹ + LCD1602_RS = 0; //ѡ + LCD1602_RW = 0; //ѡд + + LCD1602_DATAPINS = com; // + Lcd1602_Delay1ms(1); //ȴȶ -void Lcd1602_Write_Data(unsigned char dat) //д -{ - Read_Busy(); - LCD1602_RS = 1; - LCD1602_RW = 0; - LCD1602_DB = dat; - LCD1602_EN = 1; - LCD1602_EN = 0; + LCD1602_E = 1; //дʱ + Lcd1602_Delay1ms(5); //ʱ + LCD1602_E = 0; } - -void LcdSetCursor(unsigned char x,unsigned char y) //ʾ +#else +void LcdWriteCom(uchar com) //д { - unsigned char addr; - if(y == 0) - addr = 0x00 + x; - else - addr = 0x40 + x; - - Lcd1602_Write_Cmd(addr|0x80); -} + LCD1602_E = 0; //ʹ + LCD1602_RS = 0; //ѡд + LCD1602_RW = 0; //ѡд -//ָλʾһַ -void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData) + LCD1602_DATAPINS = com; //4λĽǽӵP0ڵĸλԴ͸λø + Lcd1602_Delay1ms(1); + + LCD1602_E = 1; //дʱ + Lcd1602_Delay1ms(5); + LCD1602_E = 0; + +// Lcd1602_Delay1ms(1); + LCD1602_DATAPINS = com << 4; //͵λ + Lcd1602_Delay1ms(1); + + LCD1602_E = 1; //дʱ + Lcd1602_Delay1ms(5); + LCD1602_E = 0; +} +#endif +/******************************************************************************* +* : LcdWriteData +* : LCDдһֽڵ +* : dat +* : +*******************************************************************************/ +#ifndef LCD1602_4PINS +void LcdWriteData(uchar dat) //д { - Y &= 0x1; - X &= 0xF; //Xܴ15Yܴ1 - if (Y) X |= 0x40; //Ҫʾڶʱַ+0x40; - X |= 0x80; //ָ - Lcd1602_Write_Cmd(X); // - Lcd1602_Write_Data(DData); // + LCD1602_E = 0; //ʹ + LCD1602_RS = 1; //ѡ + LCD1602_RW = 0; //ѡд + + LCD1602_DATAPINS = dat; //д + Lcd1602_Delay1ms(1); + + LCD1602_E = 1; //дʱ + Lcd1602_Delay1ms(5); //ʱ + LCD1602_E = 0; } +#else +void LcdWriteData(uchar dat) //д +{ + LCD1602_E = 0; //ʹ + LCD1602_RS = 1; //ѡд + LCD1602_RW = 0; //ѡд + + LCD1602_DATAPINS = dat; //4λĽǽӵP0ڵĸλԴ͸λø + Lcd1602_Delay1ms(1); + LCD1602_E = 1; //дʱ + Lcd1602_Delay1ms(5); + LCD1602_E = 0; -void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str) //ʾַ + LCD1602_DATAPINS = dat << 4; //дλ + Lcd1602_Delay1ms(1); + + LCD1602_E = 1; //дʱ + Lcd1602_Delay1ms(5); + LCD1602_E = 0; +} +#endif +/******************************************************************************* +* : LcdInit() +* : ʼLCD +* : +* : +*******************************************************************************/ +#ifndef LCD1602_4PINS +void LcdInit() //LCDʼӳ { - LcdSetCursor(x,y); //ǰַ - while(*str != '\0') - { - Lcd1602_Write_Data(*str++); - } + LcdWriteCom(0x38); //ʾ + LcdWriteCom(0x0c); //ʾʾ + LcdWriteCom(0x06); //дһָ1 + LcdWriteCom(0x01); // + LcdWriteCom(0x80); //ָ } - -void InitLcd1602() //1602ʼ +#else +void LcdInit() //LCDʼӳ { - Lcd1602_Write_Cmd(0x38); //򿪣5*8,8λ - Lcd1602_Write_Cmd(0x0c); - Lcd1602_Write_Cmd(0x06); - Lcd1602_Write_Cmd(0x01); // + LcdWriteCom(0x32); //8λתΪ4λ + LcdWriteCom(0x28); //λµijʼ + LcdWriteCom(0x0c); //ʾʾ + LcdWriteCom(0x06); //дһָ1 + LcdWriteCom(0x01); // + LcdWriteCom(0x80); //ָ } +#endif diff --git a/lcd.h b/lcd.h index acb4ad2..7855d23 100644 --- a/lcd.h +++ b/lcd.h @@ -1,17 +1,17 @@ -#ifndef __LCD_H_ -#define __LCD_H_ +#ifndef __LCD_H_ +#define __LCD_H_ /********************************** -ʹõ4λݴʱ壬 -ʹ8λȡ +当使用的是4位数据传输的时候定义, +使用8位取消这个定义 **********************************/ //#define LCD1602_4PINS /********************************** -ͷļ +包含头文件 **********************************/ -#include +#include -//---ضؼ---// +//---重定义关键词---// #ifndef uchar #define uchar unsigned char #endif @@ -21,33 +21,23 @@ #endif /********************************** -PINڶ +PIN口定义 **********************************/ -//#define LCD1602_DB P0 //data bus -//sbit LCD1602_RS = P2^6; -//sbit LCD1602_RW = P2^5; -//sbit LCD1602_EN = P2^7; - - -#define LCD1602_DB P2 //data bus - -sbit LCD1602_RS=P0^7; -sbit LCD1602_RW=P0^6; -sbit LCD1602_EN=P0^5; +#define LCD1602_DATAPINS P2 +sbit LCD1602_E=P1^4; +sbit LCD1602_RW=P1^5; +sbit LCD1602_RS=P1^6; /********************************** - +函数声明 **********************************/ -/*51Ƭ12MHZʱµʱ*/ -void Lcd1602_Delay1ms(uint c); // 0us - -void Read_Busy(); //æ⺯жbit70ִУ1ֹ -void Lcd1602_Write_Cmd(unsigned char cmd); //д -void Lcd1602_Write_Data(unsigned char dat); //д -void LcdSetCursor(unsigned char x,unsigned char y); //ʾ -void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str); //ʾַ -void InitLcd1602(); //1602ʼ -void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData); - +/*在51单片机12MHZ时钟下的延时函数*/ +void Lcd1602_Delay1ms(uint c); //误差 0us +/*LCD1602写入8位命令子函数*/ +void LcdWriteCom(uchar com); +/*LCD1602写入8位数据子函数*/ +void LcdWriteData(uchar dat) ; +/*LCD1602初始化子程序*/ +void LcdInit(); #endif diff --git a/main.LST b/main.LST index e728d25..aa70b01 100644 --- a/main.LST +++ b/main.LST @@ -1,4 +1,4 @@ -C51 COMPILER V9.56.0.0 MAIN 04/08/2022 03:21:37 PAGE 1 +C51 COMPILER V9.56.0.0 MAIN 04/09/2022 18:14:52 PAGE 1 C51 COMPILER V9.56.0.0, COMPILATION OF MODULE MAIN @@ -26,220 +26,206 @@ line level source 17 extern uint mileage; 18 extern uint speed; 19 - 20 uint model = 0; + 20 uint Seep_model = 0; 21 22 extern unsigned char pwm_value; 23 - 24 - 25 struct UserInfo{ - 26 int height; - 27 int weight; - 28 int target_mileage; - 29 int target_speed; - 30 }; - 31 - 32 uchar set = 0; + 24 uchar play = 0; + 25 + 26 // model + 27 uchar model = 0; + 28 + 29 struct UserInfo usr; + 30 + 31 uchar Receive; + 32 uchar Recive_table[40]; 33 - 34 struct UserInfo usr; + 34 bit accept = 0; 35 - 36 /*****************ر**************/ - 37 - 38 uchar Receive; - 39 uchar Recive_table[40]; //ڽwifiģ鷴MCUϵ - 40 - 41 bit accept = 0; - 42 - 43 void delayms(unsigned int ms) - 44 { - 45 1 unsigned char i=100,j; - 46 1 for(;ms;ms--) - 47 1 { - 48 2 while(--i) - 49 2 { - 50 3 j=10; - 51 3 while(--j); - 52 3 } - 53 2 } - 54 1 } - 55 - C51 COMPILER V9.56.0.0 MAIN 04/08/2022 03:21:37 PAGE 2 + 36 void delayms(unsigned int ms) + 37 { + 38 1 unsigned char i=100,j; + 39 1 for(;ms;ms--) + 40 1 { + 41 2 while(--i) + 42 2 { + 43 3 j=10; + 44 3 while(--j); + 45 3 } + 46 2 } + 47 1 } + 48 + 49 void Uart_Init() + 50 { + 51 1 TMOD = 0x20 | 0x01; + 52 1 SCON = 0x50; + 53 1 TH1 = 0xFD; + 54 1 TL1 = TH1; + 55 1 PCON = 0x00; + C51 COMPILER V9.56.0.0 MAIN 04/09/2022 18:14:52 PAGE 2 - 56 void Uart_Init() - 57 { - 58 1 TMOD = 0x20 | 0x01; - 59 1 SCON = 0x50; - 60 1 TH1 = 0xFD; - 61 1 TL1 = TH1; - 62 1 PCON = 0x00; - 63 1 EA = 1; - 64 1 ES = 1; - 65 1 TR1 = 1; - 66 1 } - 67 - 68 void us_delay(uchar t) - 69 { - 70 1 while(t--); - 71 1 } - 72 - 73 void Send_Uart(uchar value) - 74 { - 75 1 ES=0; - 76 1 TI=0; - 77 1 SBUF=value; - 78 1 while(TI==0); - 79 1 TI=0; - 80 1 ES=1; - 81 1 } - 82 - 83 void Bluetooth_Set(uchar *puf) - 84 { - 85 1 while(*puf!='\0') - 86 1 { - 87 2 Send_Uart(*puf); - 88 2 us_delay(5); - 89 2 puf++; - 90 2 } - 91 1 } - 92 - 93 - 94 void saveUserInfo(){ - 95 1 int target = 0; - 96 1 target = usr.height >> 8; - 97 1 At24c02Write(3, target); - 98 1 delayms(2); - 99 1 target = (usr.height) & 0x00ff; - 100 1 At24c02Write(4, target); - 101 1 delayms(2); - 102 1 target = (usr.weight) >> 8; - 103 1 At24c02Write(5, target); - 104 1 delayms(2); - 105 1 target = (usr.weight) & 0x00ff; - 106 1 At24c02Write(6, target); - 107 1 delayms(2); - 108 1 } - 109 - 110 - 111 void Bluetooth_Accept(){ - 112 1 int target1 = 0, target2 = 0, i = 0; - 113 1 if(accept){ - 114 2 if(strstr(Recive_table, "inquire") != NULL){ - 115 3 memset(Recive_table, 0, sizeof(Recive_table)); - 116 3 sprintf(Recive_table, "speed:%d km/h mileage:%d m\r\n",speed, mileage); - 117 3 Bluetooth_Set(Recive_table); - C51 COMPILER V9.56.0.0 MAIN 04/08/2022 03:21:37 PAGE 3 + 56 1 EA = 1; + 57 1 ES = 1; + 58 1 TR1 = 1; + 59 1 } + 60 + 61 void us_delay(uchar t) + 62 { + 63 1 while(t--); + 64 1 } + 65 + 66 void Send_Uart(uchar value) + 67 { + 68 1 ES=0; + 69 1 TI=0; + 70 1 SBUF=value; + 71 1 while(TI==0); + 72 1 TI=0; + 73 1 ES=1; + 74 1 } + 75 + 76 void Bluetooth_Set(uchar *puf) + 77 { + 78 1 while(*puf!='\0') + 79 1 { + 80 2 Send_Uart(*puf); + 81 2 us_delay(5); + 82 2 puf++; + 83 2 } + 84 1 } + 85 + 86 // 保存用户的数据 + 87 void saveUserInfo(){ + 88 1 int target = 0; + 89 1 At24c02Write(3, usr.Seep_model); + 90 1 delayms(2); + 91 1 target = (usr.target_mileage) >> 8; + 92 1 At24c02Write(5, target); + 93 1 delayms(2); + 94 1 target = (usr.target_mileage) & 0x00ff; + 95 1 At24c02Write(6, target); + 96 1 delayms(2); + 97 1 } + 98 + 99 void Bluetooth_Accept(){ + 100 1 int target1 = 0, target2 = 0, i = 0; + 101 1 if(accept){ + 102 2 if(strstr(Recive_table, "inquire") != NULL){ + 103 3 memset(Recive_table, 0, sizeof(Recive_table)); + 104 3 sprintf(Recive_table, "speed:%d m/min mileage:%d m\r\n",speed, mileage); + 105 3 Bluetooth_Set(Recive_table); + 106 3 }else if(strstr(Recive_table, "model") != NULL){ + 107 3 if(model == 0) model = 1; + 108 3 else model = 0; + 109 3 if(model == 0) Seep_model = 0; + 110 3 memset(Recive_table, 0, sizeof(Recive_table)); + 111 3 sprintf(Recive_table, "Model SET OK\r\n"); + 112 3 Bluetooth_Set(Recive_table); + 113 3 At24c02Write(4, model); + 114 3 }else if(strstr(Recive_table, "clear") != NULL){ + 115 3 // 清空里程 + 116 3 mileage = 0; + 117 3 Bluetooth_Set("reset mileage OK!\r\n"); + C51 COMPILER V9.56.0.0 MAIN 04/09/2022 18:14:52 PAGE 3 - 118 3 }else if(strstr(Recive_table, "set:") != NULL){ - 119 3 target1 = strstr(Recive_table, "(") - Recive_table; - 120 3 target2 = strstr(Recive_table, ",") - Recive_table; - 121 3 usr.height = 0; - 122 3 for(i = target1 + 1; i < target2; i++){ - 123 4 usr.height = usr.height * 10 + (*(Recive_table + i) - 0x30); - 124 4 } - 125 3 Bluetooth_Set(Recive_table); - 126 3 target1 = strstr(Recive_table, ",") - Recive_table; - 127 3 target2 = strstr(Recive_table, ")") - Recive_table; - 128 3 usr.weight = 0; - 129 3 for(i = target1 + 1; i < target2; i++){ - 130 4 usr.weight = usr.weight * 10 + (*(Recive_table + i) - 0x30); - 131 4 } - 132 3 memset(Recive_table, 0, sizeof(Recive_table)); - 133 3 sprintf(Recive_table, "SET OK\r\n",usr.height, usr.weight); - 134 3 Bluetooth_Set(Recive_table); - 135 3 - 136 3 // - 137 3 usr.target_mileage = (usr.weight / usr.height) * (usr.weight / usr.height) / 22 * 3000; - 138 3 usr.target_speed = 10 - (usr.weight / usr.height) * (usr.weight / usr.height) / 22 ; - 139 3 saveUserInfo(); - 140 3 } - 141 2 memset(Recive_table, 0, sizeof(Recive_table)); - 142 2 accept = 0; - 143 2 } - 144 1 } - 145 - 146 void ReadData(){ - 147 1 mileage = At24c02Read(1) * 255 + At24c02Read(2); - 148 1 set = At24c02Read(7); - 149 1 if(set){ - 150 2 usr.height = 0; - 151 2 usr.weight = 0; - 152 2 - 153 2 At24c02Write(1, 0); - 154 2 delayms(2); - 155 2 At24c02Write(2, 0); - 156 2 delayms(2); - 157 2 - 158 2 At24c02Write(3, 0); - 159 2 delayms(2); - 160 2 At24c02Write(4, 0); - 161 2 delayms(2); - 162 2 At24c02Write(5, 0); - 163 2 delayms(2); - 164 2 At24c02Write(6, 0); - 165 2 - 166 2 }else{ - 167 2 usr.height = At24c02Read(3) * 255 + At24c02Read(4); - 168 2 usr.weight = At24c02Read(5) * 255 + At24c02Read(6); - 169 2 } - 170 1 } - 171 - 172 - 173 - 174 - 175 - 176 void WriteData(){ - 177 1 int target = mileage >> 8; - 178 1 At24c02Write(1, target); - 179 1 delayms(2); - C51 COMPILER V9.56.0.0 MAIN 04/08/2022 03:21:37 PAGE 4 + 118 3 } + 119 2 else if(strstr(Recive_table, "speed") != NULL){ + 120 3 Seep_model++; + 121 3 if(Seep_model >= 4) Seep_model = 0; + 122 3 usr.Seep_model = Seep_model; + 123 3 } + 124 2 else if(strstr(Recive_table, "set:") != NULL){ + 125 3 target1 = strstr(Recive_table, "(") - Recive_table; + 126 3 target2 = strstr(Recive_table, ",") - Recive_table; + 127 3 usr.Seep_model = 0; + 128 3 for(i = target1 + 1; i < target2; i++){ + 129 4 usr.Seep_model = usr.Seep_model * 10 + (*(Recive_table + i) - 0x30); + 130 4 } + 131 3 if(usr.Seep_model > 1) usr.Seep_model = 1; + 132 3 target1 = strstr(Recive_table, ",") - Recive_table; + 133 3 target2 = strstr(Recive_table, ")") - Recive_table; + 134 3 usr.target_mileage = 0; + 135 3 for(i = target1 + 1; i < target2; i++){ + 136 4 usr.target_mileage = usr.target_mileage * 10 + (*(Recive_table + i) - 0x30); + 137 4 } + 138 3 + 139 3 if(usr.Seep_model > 9999) usr.Seep_model = 9999; + 140 3 Bluetooth_Set("User SET OK!\r\n"); + 141 3 saveUserInfo(); + 142 3 } + 143 2 memset(Recive_table, 0, sizeof(Recive_table)); + 144 2 accept = 0; + 145 2 } + 146 1 } + 147 + 148 // 读取数据 + 149 void ReadData(){ + 150 1 // 里程 + 151 1 mileage = At24c02Read(1) * 255 + At24c02Read(2); + 152 1 + 153 1 // 用户的模式 + 154 1 usr.Seep_model = At24c02Read(3); + 155 1 + 156 1 model = At24c02Read(4); + 157 1 // 用户的目标里程 + 158 1 usr.target_mileage = At24c02Read(5) * 255 + At24c02Read(6); + 159 1 } + 160 + 161 // 写入数据 + 162 void WriteData(){ + 163 1 int target = mileage >> 8; + 164 1 At24c02Write(1, target); + 165 1 us_delay(200); + 166 1 target = mileage & 0x00ff; + 167 1 At24c02Write(2, target); + 168 1 us_delay(200); + 169 1 } + 170 + 171 // main 函数 + 172 void main(void) + 173 { + 174 1 LcdInit(); + 175 1 IRIN_Init(); + 176 1 Uart_Init(); + 177 1 ReadData(); + 178 1 while(1) + 179 1 { + C51 COMPILER V9.56.0.0 MAIN 04/09/2022 18:14:52 PAGE 4 - 180 1 target = mileage & 0x00ff; - 181 1 At24c02Write(2, target); - 182 1 delayms(2); - 183 1 } - 184 - 185 void main(void) - 186 { - 187 1 InitLcd1602(); - 188 1 IRIN_Init(); - 189 1 Uart_Init(); - 190 1 ReadData(); - 191 1 while(1) - 192 1 { - 193 2 run(); - 194 2 display(); - 195 2 Key_scan(); -*** WARNING C206 IN LINE 195 OF main.c: 'Key_scan': missing function-prototype - 196 2 Bluetooth_Accept(); - 197 2 WriteData(); - 198 2 } - 199 1 } - 200 - 201 void Uart_Interrupt() interrupt 4 - 202 { - 203 1 static uchar i=0; - 204 1 if( accept) return; - 205 1 if(RI==1) { - 206 2 RI=0; - 207 2 Receive=SBUF; //MCUwifiģ鷴 - - - 208 2 Recive_table[i]=Receive; - 209 2 if((Recive_table[i]=='\r')){ - 210 3 i=0; - 211 3 accept = 1; - 212 3 } - 213 2 else i++; // - -װֵ - 214 2 } - 215 1 else TI=0; - 216 1 } + 180 2 run(); + 181 2 display(); + 182 2 Key_scan(); +*** WARNING C206 IN LINE 182 OF main.c: 'Key_scan': missing function-prototype + 183 2 Bluetooth_Accept(); + 184 2 WriteData(); + 185 2 } + 186 1 } + 187 + 188 // 串口中断 + 189 void Uart_Interrupt() interrupt 4 + 190 { + 191 1 static uchar i=0; + 192 1 if(accept) return; + 193 1 if(RI==1) { + 194 2 RI=0; + 195 2 Receive=SBUF; + 196 2 Recive_table[i]=Receive; + 197 2 if((Recive_table[i]=='\r')){ + 198 3 i=0; + 199 3 accept = 1; + 200 3 } + 201 2 else i++; + 202 2 } + 203 1 else TI=0; + 204 1 } MODULE INFORMATION: STATIC OVERLAYABLE - CODE SIZE = 1000 ---- - CONSTANT SIZE = 57 ---- + CODE SIZE = 1004 ---- + CONSTANT SIZE = 117 ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- - DATA SIZE = 53 6 + DATA SIZE = 52 6 IDATA SIZE = ---- ---- BIT SIZE = 1 ---- END OF MODULE INFORMATION. diff --git a/main.OBJ b/main.OBJ index 1481027842c8802aa50c0fe68e65cdec754cc803..9395c6f7038464a84a273defc51d7786941e1fe9 100644 GIT binary patch literal 19299 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 UsA~ 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 Zy1~B@^f15sLijgve4mLwTSOK={2yMGK*Rt5 diff --git a/main.c b/main.c index 08863f2..1c0e91f 100644 --- a/main.c +++ b/main.c @@ -17,26 +17,19 @@ typedef unsigned int uint16; extern uint mileage; extern uint speed; -uint model = 0; +uint Seep_model = 0; extern unsigned char pwm_value; +uchar play = 0; -struct UserInfo{ - int height; - int weight; - int target_mileage; - int target_speed; -}; - -uchar set = 0; +// model +uchar model = 0; struct UserInfo usr; -/*****************ر**************/ - uchar Receive; -uchar Recive_table[40]; //ڽwifiģ鷴MCUϵ +uchar Recive_table[40]; bit accept = 0; @@ -90,52 +83,61 @@ void Bluetooth_Set(uchar *puf) } } - +// 保存用户的数据 void saveUserInfo(){ int target = 0; - target = usr.height >> 8; - At24c02Write(3, target); + At24c02Write(3, usr.Seep_model); delayms(2); - target = (usr.height) & 0x00ff; - At24c02Write(4, target); - delayms(2); - target = (usr.weight) >> 8; + target = (usr.target_mileage) >> 8; At24c02Write(5, target); delayms(2); - target = (usr.weight) & 0x00ff; + target = (usr.target_mileage) & 0x00ff; At24c02Write(6, target); delayms(2); } - void Bluetooth_Accept(){ int target1 = 0, target2 = 0, i = 0; if(accept){ if(strstr(Recive_table, "inquire") != NULL){ memset(Recive_table, 0, sizeof(Recive_table)); - sprintf(Recive_table, "speed:%d km/h mileage:%d m\r\n",speed, mileage); + sprintf(Recive_table, "speed:%d m/min mileage:%d m\r\n",speed, mileage); Bluetooth_Set(Recive_table); - }else if(strstr(Recive_table, "set:") != NULL){ + }else if(strstr(Recive_table, "model") != NULL){ + if(model == 0) model = 1; + else model = 0; + if(model == 0) Seep_model = 0; + memset(Recive_table, 0, sizeof(Recive_table)); + sprintf(Recive_table, "Model SET OK\r\n"); + Bluetooth_Set(Recive_table); + At24c02Write(4, model); + }else if(strstr(Recive_table, "clear") != NULL){ + // 清空里程 + mileage = 0; + Bluetooth_Set("reset mileage OK!\r\n"); + } + else if(strstr(Recive_table, "speed") != NULL){ + Seep_model++; + if(Seep_model >= 4) Seep_model = 0; + usr.Seep_model = Seep_model; + } + else if(strstr(Recive_table, "set:") != NULL){ target1 = strstr(Recive_table, "(") - Recive_table; target2 = strstr(Recive_table, ",") - Recive_table; - usr.height = 0; + usr.Seep_model = 0; for(i = target1 + 1; i < target2; i++){ - usr.height = usr.height * 10 + (*(Recive_table + i) - 0x30); + usr.Seep_model = usr.Seep_model * 10 + (*(Recive_table + i) - 0x30); } - Bluetooth_Set(Recive_table); + if(usr.Seep_model > 1) usr.Seep_model = 1; target1 = strstr(Recive_table, ",") - Recive_table; target2 = strstr(Recive_table, ")") - Recive_table; - usr.weight = 0; + usr.target_mileage = 0; for(i = target1 + 1; i < target2; i++){ - usr.weight = usr.weight * 10 + (*(Recive_table + i) - 0x30); + usr.target_mileage = usr.target_mileage * 10 + (*(Recive_table + i) - 0x30); } - memset(Recive_table, 0, sizeof(Recive_table)); - sprintf(Recive_table, "SET OK\r\n",usr.height, usr.weight); - Bluetooth_Set(Recive_table); - - // - usr.target_mileage = (usr.weight / usr.height) * (usr.weight / usr.height) / 22 * 3000; - usr.target_speed = 10 - (usr.weight / usr.height) * (usr.weight / usr.height) / 22 ; + + if(usr.Seep_model > 9999) usr.Seep_model = 9999; + Bluetooth_Set("User SET OK!\r\n"); saveUserInfo(); } memset(Recive_table, 0, sizeof(Recive_table)); @@ -143,48 +145,33 @@ void Bluetooth_Accept(){ } } +// 读取数据 void ReadData(){ + // 里程 mileage = At24c02Read(1) * 255 + At24c02Read(2); - set = At24c02Read(7); - if(set){ - usr.height = 0; - usr.weight = 0; - - At24c02Write(1, 0); - delayms(2); - At24c02Write(2, 0); - delayms(2); - - At24c02Write(3, 0); - delayms(2); - At24c02Write(4, 0); - delayms(2); - At24c02Write(5, 0); - delayms(2); - At24c02Write(6, 0); - - }else{ - usr.height = At24c02Read(3) * 255 + At24c02Read(4); - usr.weight = At24c02Read(5) * 255 + At24c02Read(6); - } -} - - - + + // 用户的模式 + usr.Seep_model = At24c02Read(3); + model = At24c02Read(4); + // 用户的目标里程 + usr.target_mileage = At24c02Read(5) * 255 + At24c02Read(6); +} +// 写入数据 void WriteData(){ int target = mileage >> 8; At24c02Write(1, target); - delayms(2); + us_delay(200); target = mileage & 0x00ff; At24c02Write(2, target); - delayms(2); + us_delay(200); } +// main 函数 void main(void) { - InitLcd1602(); + LcdInit(); IRIN_Init(); Uart_Init(); ReadData(); @@ -198,19 +185,20 @@ void main(void) } } +// 串口中断 void Uart_Interrupt() interrupt 4 { static uchar i=0; - if( accept) return; + if(accept) return; if(RI==1) { RI=0; - Receive=SBUF; //MCUwifiģ鷴 + Receive=SBUF; Recive_table[i]=Receive; if((Recive_table[i]=='\r')){ i=0; accept = 1; } - else i++; // װֵ + else i++; } else TI=0; } \ No newline at end of file diff --git a/pro b/pro index 48401671ed85679048002a8741f50352b3aa511b..e29280131c04d522bb1be3d05644603b1211f2d5 100644 GIT binary patch literal 38200 zcmd6Q34B%6wf8!A%y93?01kDimrJ66iV1^LTM2|Hktrl$P|-^!1|^V&q!p)JL8@3( zRD5FR=TL{L*j8GH+NMFPwSyGpy|(r}c{XuqRq|eqMG*M@|8ved_neymw(t9Xzi*v-e(m@3q%ndpvFD7zZmVCzdCYtqsdojBQFLX4lkL&#b< zQagKoT~%Ug)s(pxBxX;!u&T1YYC(O~tf`6m$y4e^jTbF2_RH{>3`h#g=+ zjy>nVyyK>xyKs8TvgN5SOX*rl(ut(Sw7th^&<|7_OXgQP_nfR%H7XFCaP@+bNTnfQ2HkMhEt z`Dc0g+AQ$G04!cU4`gLDc=2ZX5qQZe6>rh8R6a9AskAn9EFHV_yiA6&6#v;oOo13g z8Gx0D3%)zk778T7D(+ z)hA|8$HOMP(k|^St6DnreGo=~Vg)96ey)s?(`2;FUDeX=cqDyWWSGcHvA{?X<76>P z<>$FZQl3oWDP1@}Rb5$?nmTvp%!^W!6W^AR`I0asD#7rV8kTpqjLaW_C-@r`42qE} z5(L$d(qLQX;*t3$Cyh}ObiEiIBlE{3f(SO0SJ%?gma@_kkdWEY(7vRlBjqGDB%z|( z7V1yvDt%ZYIb^+h#p0Ev5jpL2J6gmRk#L}O)yVvEJb5K~yb#S^*n+n05;Ol|0B5P8i^=B4UdRy3#PHnew0pcJXJvs=Dyj?Cr5 zRP~Bw9TIw!0n|xoGk$BUC3Fvd>#IeMGfP6`TLSk;FjO~X?)eh95qC9}vu8v2~!ol!C>h8I9j zbu=_CZ;`+)5)9T)LqfmGn;GRI7sW=K4xb$@?d_dyVD?rqg7vi^2IbV;ROhM`M28X9 z$k<@#s&^H*d|u&gi>`{bsk76c?`nd5S7&#kK@lq*K0!J%~LkI$)X zX=r9XrVH~WkdvBPHDmHcGwWKDc_{CIT}XX}5E6MWS;$8r2^z~J5XR5tZ$(aI@Ygi& zp0#M$3GXe+xi;^__ZNMX-n;vxw)Z}pe)oKM49UBZut<%W>`b16w47y@&`&8ZCySh8 zo+9!Ea}+OVktdsDcsW(1(mYM1+8j%-XUHw!F6?r5d0|WfxpODi)~BjxRoCZ5juRAh z=lT(yn`=66*}v|Vul5eyxMRzXM|a$sJkN^t>n1Yt>*hFK#*2K*oFMYA=0uVE%`-(F zG|v)w#5`N%QS%&;$IWv^o-jWr4>L2sA@b9*>^% zLEGNsw~|K#1mz2Sb{;R2L~^AC5`gT&C`mCjKTO7*5bbJuU!<7g-ScSA zJ-6LccF+Evdv-jUtWTbS0ADkwkW|UbRFQu(t3-Zpo-gu8^8%6oFsF&UVM4V3%e+vI zK{R1cG*1*3NdR&>V{TRb?Ai6xz(D=VL|#T2d_74$7ceA2h0qu|fs$Puef8j?qGI#4 zu5hsgJB-mE_nx~q{cduM#m`!E249-V%Pf)g=4@VSL^hanAgX4q$Y!%n?>-Ze0~Dqw{B<<4B!JRw5FL*xKf-$mb~fy$2qf(-kZ>FYgLmC&lJj zeYFS2-?i(&V^MJDKDKS|D;~>>_X$yBIPNyF}!n z*g}ylu}ejM6uV61nOI8X=dndn0v^LY9?vWsCV|3CMozA*tg5MxIGjT{OJJUaqBiHK z@C#fpP68K8$XNDN!fScwQ{vs&vMr5Oa1He8rS7Ftt)I^SJdKAWsQ9k2sK)-<##ri4#^H| zT3=~fxUWq( zjOiFvddZ%*O1AIoop5mP<2766TqD=!6-VFOed@rR56&H^318B8N!u^O7pGr%wQtTQ zqpzkpy(wK0>8z2?ImRI)_wzR6P`uR+)O~v1YPZy7c&h_%wSL|TEZ!a@Z>Mz5DX_|9 z7RsbJc6(NN_vB8_DD8M8*`0g`Rb@@EiLFbs$ZbJ1b9V(7i+nG*1a%|06nZDPOyoa< zmy7HPUIBw7v>c{Fs8u8uS|M_LXr;*Mp*E2-LtliN525LrA40pdFw`m168e(J($JSh zxqI^Zb)oeSrA3YjUylYPyatU$c&$i% z_y&qd2~KcW3{>`wu?e-yP|Wb_Mug|Mp#{ z4-{?RH9-anp`7BIAquz6K`n`IzO59BDa%j9^;2j0sZIVenLuuL=ikLh?iTrT{?|m_ z&;N$Vhxy+^s$<`l>#UYg`MK9>lIGV|*H@9f35U{|P(}OVeTCP_ey|Sx_!3k&v||yp zW5B`z2|nTIM%Yhy`Cj_CPvl_ye%O=d10s3mcSTI|L6M`(hvYGaozm}YaNRBff<(rT3^0>%}<`$8J z`Gm+w^ZOzvn?K;?hrB!~GTPiKa+>)gku%I6i;Od$5}9Z|Ee0YETM<7SiNY&dk&BjD z4V+^i)K}Hk&aJ6m5{c8!>fY78y>q*COP!NdRvVtAQ8P7inn+_Tky~1}InlFu-94v3 z0VMZ)*Zz6y$#}FgDLZo0k#I5{=(*=Ir=Fmxyg9aAwr}6QYh2Vy*F~}C7*IE)JN9!( zcdSR`^4K5s@5}&$4EiaN#ShYa6d2>(Ye&M!3a#x|G)&8cb`H1Ln6q&hcnN z(i-Uq$YI7hrZkjTqa6V`?0Cn2G{mhDkAT=?9@hi2%LiH)Y(=6e_H|R!<}}$DkF4jn zHXmjEf@2BrA>2W@wCk@9Lr$ss&mYoXj?jFeqrdh>Sl_r0q7ya?e$a-oYG->Sx)IN zz$~ZqMGhvNu|um{j`4*&cpjea)C4!JY^`-NJ&5Pz`73S#hosaB!Orwl<1mXJ&-A9y zmt!&eQ@mAB`>hnuaC~cuVfk8)zfAEQ2g9BOGGv*9m1D)^nDn+Rx?-iH>9m~sSFCh2 zc0Rgd(%)C{UDbwR#g4^m-E^_+L{>J>MY)oXTuIgqRVvQGVz3WI2$ikzt@aQaj zMiws1!rmH5e!Ml37=231DZkztYDk_?4Crino+}QD(KE7~;(8DMU1Oe=ZPvg<%9UVB z6?$9E6Cq#Bw1D^%ZOHl7bB)xHZNT)yNIs{5uEMC*2Tq_`5;wTjB2T8k106kmUIoV) z@c0G%VbsSGa6dDK_)El&oH~@@P>|3Py3BMdGi;Rpf;Yt;UCSQDFP+vhSPho@ z0An;3phB-ND~?FvW@QKk49U4u*+gxfTci$iamUhT&m3N;Cb#2C-ZPuF=M0 ztOOOM=2uReT$`%LD8c#Fv#O@1CL=}69yV$x@6RuIyNus_R(Uw&0MN6!vA(a#iOT z13SyfqXH{dkuNvzwAw9lc%mmU}%Il&#D`BhyYkYkF)(-0bH(y(qN6e9}jPAH_0~H zTIU#C%$B6b8>wuH_zw9X-iUjzUh2-Gqf6=1AJp8co6qH4$$plkK#+slEy?6v}Xlk>$a%u?3(UsNmH(^M>3dD&m^!@5Qpm^F9CjQT;IGF`@D9#3R|77(2> zbh!;(+@6KMoQ1FP;P+K}?Q!golMiem?99w`gBEzakqu(a2V%CmUcAr=L)pA6i_VUp ziVJJUeZX}3KCw5v`+@a+#`oPU`hy<&jhd|1mR8KP3X>T7v9rR zs+QQdLPbpa3J3Ftbj3=)EsL(0^pG|z)_h;(AvCC29YNrDiM(6qj zC;mqK9%wAIs*7h@eI2~AEea#yO#1b1(hV8zc(pUr5GrqPZMzaUh<~N8&cas#Yi*o2 zh{bitO!of6Zc|AXBk*yN<4-ZeVZ4gf7FT>dXyilj+AOTLw$i@_dcb-AB&}}FDu%6Y ze%SVD+8LK)?i9ffou+pw?lpa+cK|b7rPHMG;`_4Rr*=~R%TySbv4Qhj_qW%ON8$?1Jfx-#NPMQ!1_MJV@@hZ#5ZQq*^5y+!~YpDoreEB?v+meFJ$3g z0DI&AC9uYSljgwXrw+;i9po6C1E*$%c$z1~w>88o#yBB{K_!2g5st8BrQ?y6hHKQv zic=gPTBX)C>oA0WG>R%gs~B^E_#_4gr`S8XM7r1HATGCGci;DpE|E@af=ar^8r=%ofsf|1zADQbo{;59jXpxsfcWC zY52OJj5NCnWi#PbIX}_DXk(|5RYEyf?{<3qEdq@vZwo-|Z2{(I3}Tq_(7pYGlBTLR zWXUNbWG=7K{NT{#YYsOVVbbpMU~cAEJZsVUxgmG;9{OJ!bFBQuBB!_$#ZU&TzxQWY zqyJi`LYif(l7q5Lt+fAL6GnL)8Hy4lANE zi}>6u;Jbbs_g-K+9rL~4hEj=N^6`L!*>xbMiBG5WhioXMGxVn%tTwP>=F|ioC-5)E z`{5w=RNM@C&J)~4DlAoX`<%SWRAAK+0Xf(4qQb!n?aiyHS-9GR>$EyJLuytQZgTmv zwfstF9F${fI_AeXnS9z->L@{q?RL%(_Q=$cu2|_QCE}NK#Y+ET7G1G+eeTbqE3UwE z@~6ee*BHKH(mz%S=fcdvGa;Go_%ZYir#XBU?lp%`(QY4`w(>KZk#`j!t1`zd6k_G; zhHn8)^*wA!EEBrGSI{s#+1j2H(_0;y?s)HEq zohvfak6OyAC&JJl8OL0FG6St#R7@d%U8S_X`XjL69~ZG_{y3Y&t~;IPVHNH*4;jS; zz+_$N)3WHl^57Yo4D_?BoH#R@N#p$AH!R+P(mASS+y%f)t$#F9^_StAVA_*@0^HN7 zmQYNt|LlrF)6$0as|FS23zpVpzOqk7XXlZBj@bbH6q{_(S*Q%1PV@9w8@kv(Fg$pY zEs^zpcFQ&;i#{U@|IC9sH2<)8BW0}`*RD~}svKCl;s`yZ!7H@w+Q5C8`IGASSL9Fy zLZb**w?aFdwrkfnPe!uEn^g9#Xsn_g)cQ znnhohg*iy(_0M4&um6=<^tLSAo`pH6<_+(fEPO36^^Wp;T^7C`*c<;1S@d;T_@=D) zIjrRM|2(j_3cui?AFsuoSxJAG>Y{?A)ujd@(P?#29Ko~As&86Xu_0x>V4}&`4IV43 z1ei`UgLOl#urXTWEIDj*LQ&=GwdIsC4dr}u2l&)CmDtSs*O!^X)0_;obK1_igPtS0w zw$8-87HEmK<0*96r(!c5yX>6CIFzoIM_XAmU#T5?yp)9&$(&uV3wyJ!$lQFDnWa(OW-ARtmpy61^XF#W8MiF~6j`#$d z?9xA*g-^=DXJp~BEIcj?`^OIRxE;xIHa~gRUT$!A!ofe$45n4ixc+S}fDrml=__8eg6<~_K(rJa! zG*SF55B&_4Zr!v;rJ2AB1^8zqi##^j;Yx)A2WB1LgWApE}j{XkNC8>(lOpzbu7orJ6fCv&S5^TA|w) zR!haKKd-9YX)VF#c-W%DgiIgmSfRHlz%N5q%=dN`qS^;B&O5v$kFSMsJGOFtlFb64 ze~;{FNmv_XgIHrVGC$$&ehp&T@W}j;AYwD5(KIr@bbRt=#N_T){f=O_Dr#N0U_?BH zA-&9?R_I^E$kQbwwb*xhmlw|$nPVoS&LE(KHen;KzFdXP7iLM!4X$!!D^^j(PcGsU zdj$$NgO<0hy0$PEyW?g|Dl03Wcxwb5qrI`7yKehVmw{bz@%$Z|y297VFY!*;dFQKz z!zF-VbRi43dzR0vJ0qEkEa84nqp8{18NvEtZTD=jw|h2z#EpRY@mF_m5^SKVD7f~; zYm7e~_z&*({Of1a@0{mshzMgBMm%|+wZ|?$4&9y~M{(rGF)lJZ4mlqlN61IVi+Cx< z-j6s6!x@`8&akm@U@lfD70i=z#1{6)_V>a(q!saVzw5to+wB~)>+E84UssG5>~P%2jXnFi(gAbd z&y(E3Gso=UTb;aoNo1Z0GvpHUN~jofHFl<$SIHv?G^~NXirNxnZ7FiLmY`@*!9VrZ zl0RTG2aka;?A;$tdw_X}LS{F}r`c(O`DrR4Pp$d0qw6vQsXAyA7_`Qdx-Ni!Doknz z}dqpQDn2| z=A*a7lxM!eH2lGhAWJ1@#%bw=2CF@Dj5foasinb65m3ul4Ol27%Mr6ZQ_S{^p+Qag z=!%uD2Cw>847F?dhnn&ES4{eUXRL!yu}&>}X^OLyreT6xes=MC2WQkSP!XVtp$$Vk zPp9e{xg3Ta*1^_|;aV0N0$LI`gasOcyPPKsDofx7ce*%J0t~@h0vaOpxEtaq%@J+Z z(GE`qcm5#`dvyj&SH(q3S1UL%yYO0?IwYZ`N6gZNnzo#lo?@nwbnQqgU9r-k+~4H}P|?_PZY-Kp9M4P|i(R!5F^fhkiWZGl4B`va^mS~t%!Dn|lj)H% z9xYOhr^6F3tn}uNjR#jV z6=bDr?h!As%xo++|C?iG<92N2(g;+_zsE3CZ(!;5F!_1jfkPPH#gedX>nm)t8<8Wq;7~Z`m ztFYHZ0>dPj>&|P4T$(>Jh#58s-7SXcS#6A0BrsfpW?Sc~rJMw@~Q;FkfMw+eZ@k*F&#FplmJX3WA%#>m=v$ad-s2`?fq}R_pO?vdiU+ke-<5tXQF$a z-98Y1PK;Q(_eU9*Vnen%8MWzfL3ib=uE;w4e9Fe*Up#=G!coD3n03cJ8eH z$Py;6uXNF=>uN@>n^Ur_ukNm*fw_IPcNGrQZ{vvtH8^jf9#3!@NLxNnUPwC+N~%WU zOo(CW6Z=Y<4cv!2hXvAw00A3>)4|SR(RIUy_uR4L&SZIVKA5{S|7gZ{3@^uuG~|B< zV@mmGS3B}yq@?pouVMDw`c!T81=H$NGiTS&HX`uzOgwzly?H;ZIi~NZyN1_< zcHE6k+IROIwQbYzib(IkQOTaWlh0W!J`;!e^Gy6yUQQGFN&Ivi?-3u11r+f!cqtS4 zWxQPESMhPYj2HP$d;%{MA<^+Oao$1vEMCsWVJq=-csWFFk!w@zfhTQouM9{?>)FdCW1ERzIVb?xk8ZT>f zwmAFLSRR^C&bG2?VhOEn)@3W4uFk|rDsx1wH)7@h{V;T5raS z9mex3;%^LMSM3l~7(`E}>`*|obCAt$Tr<$OsgQPp$d{ag39iHj!mpW&iL#sm$VU#=A@{8f)(Zr-J;Zwk}@fwgTI!orNaRa>R$)y=0f?8fVU# z<&o$3V%)@NvE1^RrxnCw4;*gyQNXwR=!@EQ_*9#I4$+w!q9c=$12mYHBkzm;ft>;N zYMU_RPRBT?N;%L?>17R3tkSDkrB|^^FY&8~+gV^|ymuu%TL3!Ecvd8DI1E?$sndSw5Ub8r zJ!J%#Il%l;0oEL0-&jLDPeXK9rPKT;^;&l+O+>sc!t}%U)>Ns7v(|5i-2n<^BfFry zy|ELUb`$Bx}`sByr`SOe+2Y0)swQ#F5xj%!9d{h|0R7&h_V z9AaL075Y0mgz8v0oh_LKY<9kRH?l@-c3pm{ag<-aO^xHl)Hq&D4dTT#H?;n)Zamhy zAEL+l8)V_3+Bh99)1p)pmH09>h&-(m()sA164AU22&I!wON17wmt%Bvd>H*37eAn* z=P9h4!ikZXI6M06; z{75spwmgTC1~z1Ls`XV{6ThuW?9ENvfP7@`8DCj^&>x z=*s2hsJOmpO=pU<$4BSm1#awTjEj>TCzUtNJZoNY+=MQ79&+6H+ak!PH*o^o+dFQ* z+nswHH-5ulPdvxfI&!wWY;IkHcdP`nQAUG(x@zP9M9|*7ZDLY0@Sg|X*gG{dD6-p3 z{+l%@^0tYp|F((d>1`9z^R5a0cAJIHF?DVfmszLzp`_~Sao*}}JVp5hbH~PF^UWSy z-tM_QV7?u<)LR4NbAwMsgFiBoCF>>*u3A^WIPAvY~Oo+U~iN)VxV(~cZ zU_K3cgEe7iq1iQm;Ot;Q0i$?x$3{dkA~^;PML_|&Pz41L?t%hzo{9?2;04vPr~tjg z;RWat9$heA##_^LPEh}5PlOWT)YvH(;Y@pbBGQqqTOv?o$HpFup5V<)Or|h1u^zx^ z+#8vKN!J*Lo8EtZ*sx*sM#;fDHojlFYd6{EfuDn;e>yvvo_Ku%|!%rbFxWu2!>Dv;zB$Fj~$CGDRLrv}RCi-vY z1+}y@z8Htp#FvO%6<^BBGF~nhxh8%E4#12rM~6G!ip4eY6&N9luY^*Kqdwmr{~`{> zjJM-p%lIle0RF>X{-3uerzh8sn^0Lc&YB;;AbAuMqq@XR&l{XMzTA8?{BX3`e4*<* z#j#_z7`%jV2^18(Zp|EDZeA<0!n}@`E|D*qY4n24>#<74TqBY;*UF>z47E4PskUG` zkC?YlB~fdws4WdQhLX8C{%G_YPJYvrWPS%%bhdtpqoH4myG)TEf`8?2y#29gaY4bB z@WYubemb6vTT|?t;~VJn7G7=>`DT2h$i4B~aj0|r4jk$nzf)vOe3QtN@w-HR9RC-Q zr{j0acWklnaJ$tSse@RY?2ObEf;|{hpY~|Q*D*53Q~ROim+>m_z;X}jt=!%sNz2l=RRyq`skFHqh zP(VJqVx>b5`RIz34n5$bD~{qR`G-#M(G@FwMHXGL(xEzh{uPt{qMGq&{Kz zQ+=nHWly^DsdU95&=cCtIr33Z*<-rS8EziyKeP6e(Q^F3KFfoJ#Z0Bs!fLXiTUbjR z%pWFNm73xeS#(uee9YLia5RyMnaD*dSpU?Zt8>cc(8t?k=F5RhAjJvZIF9tB0{oJ(E(fbLD%L8gs!8dJDXsLcsz~XIN#CGrT!!B2P4E7- zCn}i?%qxk+WL}x0{1B({OQ(8|l1itTI-5?h>Kp38H?^v<6r5p*b%P4Rp5A3adjceo5D~D_ybD zH7}H|Sn1m4C|xlNlHqF`q;$nf*EUG$ib?-3wQJB(;#so(#c?{NV92dbnzY_iH3smn z7=0gbV&liHk6Llf{STdwTJe5t<){d(p*LfJLU@Io7{&NN4Q?RdPds0sYGQX=M_6gijV=K@b-02dnGx5tf@t zngP-VJgKk6%UEt5btZkVz69&}@u4IclbZ~8ENg8k!?z>M66Xs_cfI zCV1^TgWo4%$QW$G5HVy38bd2M>be!t^jWKyx@M)5&g!L5*NpVh&f=v|*UWSt?t@&& z)HRKMy2%>9qe9kl?9Zv>)M*;+53DpFija3Wf{(SA7)||_xkE=o0&`$c{5D~TXfgy} zG{0pI;EO(8Q`3R2I;1c8$K-<$Ix~`>0FU5hq{y&H35Mdhda5dNGCs?~;jV>|F&L?e zoQlCGeh}lq$mtj|iHwEtL{JsBMNk8N6B#G+hsby=K8s8c`JV`;9{(OWTcj|04!+b8 zJr_fE(a+(tEYZ*7n;X&dL@tY>$^UY+LS$ofvdF{HDOleXt%NW}t1!YEg}VPu6n(=T z(P{FsHQwon;PY0!nqGBLs;+YKtQBOdB%athvg@7e@b#zu#MYyS{(4Z^*8RzQt%2N< zIQnBHaWojG#Ak?%jnBlGV|*4qJru`si3cL(<%7iPvI$@MFpKPj6KSZ zM_Qc$w3D!~E_Zu$dt`ffduV%bdtkd^eZgeS_O;vl@g0+m$yx}@nB2K!7ES4exfo8J znR_vILFQh9fz{lF*g=weDVFx-UWU(_p#E9~rZI1`Ff(ZA&y+3}tLn`{0#wpJvn!Lw)|`blHpa zvW5b+4|&9;blF`oXDQubmwEY58A++_faZ~7iJWoE9QBy79niR2PHhF0sLys-1Z?1+ z^l$6p0{=PnG&%i;g5&|y(bIKmwhul~UM*RjfF8U$8}-(5BXGTNi220BFC{y~0rD^g zwmH_+;7RbHK(Sel%#%a3mu`-X)Lb2My_k+%4DJU(MY_4jFrh7d7>d(}p+kKbO4Nrd zvhd_A3@z)vKU{epa($UfLiU+7{<&O^2h!rDW4;{!Y1fHy7S?w3cD=iGMzl+Bk|Cy7pyNgTI`Zr78DF9x9~r!o0YC8|N9{M$xOFv*HeQ)1LT$k zgG4jr!)StB+^h>EtnZj!uIT$IE>t92XU&kEtvH&lgv6W zaz5%GTm_eX2DdY)a`^MJgT7tzOa|;%H@~a2tNDL_R7dl`FV&QCba*VsJgC(%kHf6T z^Pha#@K3DA%be5;TMHc6=Mb_i6<6Tii?y~ZU28k>a4gthl^gP;Ut3eB-7gdjUeCsc zRKZUFZ3-{`@Qt2nqP^=eAIOIXmkvz+Dtj2kz^ zxf;R{D+DtOJYgcaAzY(%K=(WOcB0wknK|_@V*)S$=GI6%DC^3pK*eV`blCl_BVDo5 zVfnj`bj3%Kc$nE>K(>zD#24Q8S zurv#!%j2Uj0%oP5|28#phTiX{qIdWcaLFQtgHD+W+t9_?OlMnS`JVTGqej$`_seDP z!uS+N%LaW*D#<%W3)~Dz=y0TppnuDq%HUB!TX$p(3G&atSQ_eB#)?%2SUT!RSFCiF zmO9cEE1h*-9qEddP930*bj3=iPEbd>Vx?0@s3Tpm(y6o5k*-+j%olZ}D^@yntUA&a zE1f!59qEddt_CaLAziW3X?&_9U9r+>jH)ADvC?Ursv}*o(rK)!BVDo5F&5xD(iJP6 z#;rQi6)U|$iTEX5vC=1J(G@FwN)}zQ(krv*ij_{&N*&`@tn>?%h+onblOEQ#%-Yyc zUVbdvK>xB&HNZ0~!8sJndZV2m9U4|l#o~V45M!M$I40guJLgYucvB^Wp+UD|GY<6e zUHp4B8!>D;xPznyZqO}14U=)G_GFkC9`NC24?ahAx;4W3_@LZS!^{v2L0FEd=fM6Y z4rU8AYKX4j&}*zSttu@`I&$5rTv)@)JPFp{Ja3Ayz-@G+HQY+is>+XDHdnhcd?_h=IIeaXD z$3M+NW^D;BT3SS@1>Pg`N7YpbhRTUo`F61oKb znLpZ!Dpt!{!`D_+=@sxtm%u;$PbPp%;GbAqMa7kPPM5$x=~V=98osuI2|OcRTRq|e zUCwAvFZs^)Qc2OFjKM2Mh9d+zN=hdOj3K$Xe>5ZLJN_~E%C6pze!su-`jvsa5wBnh zOL8YwPO6+SwWhvy4hD@4>`04xo~5|(_0{OJMr8e(o7e72)&$;8K6@bW=Okh8oykiO zL@*P?EKEU26d_j6oIB&~q;*{Vdr|kvpCV{Q-iz+OrT_ki`d``5fB&f8;&$wT5hMqJ%&o>(=f0k_jy5_F%{;m;0*!MZ`V-0jsfZ@#y=B8;B{1v~rS?fvck(4inIFCUB zP(p>1Qud>X4o*d>DwnnvlPCjol&XV|UjVlx%!$ zLd9zb%R>3POMdp`aZ(d3X*k%od{N-2<>8fmD=|;8qAVJ}a-rjUcOd7@Kzw>fa7Q#9 z?CpsTT=CU~H($E`vfhE^11knr!eg{6Q7jGVfzH;0Jw}i81bTu!;hsoOPO+SEuq|E| z4R>MZTKkrjkFQ8RS(@tE*%KnAWc!o&xX5vx{drd|FWVW;`O!fm@{9XV{wT3C)E3wg zO#h+e6>zt^Ce+inBNPaEGHiX zD*^f1j+`Bl^j*OF@V^)TA741VEwZ}us^HZJ6M?bdddzil>zdBBQk=7OQN;Y9rM0cU zXXjtLcm1V%*Sp=jJ}3@6y?xim+js5VzH47`^wool9&u@iVf(HU1H=hJa$jp`(Vup< z{vmzi)d#N%tlkO+zp=V79ax>iOi1VK*tt3{9a^2&vlDN&1qNDs_wGLcK2QGS>YRiz z3^)6)E-aHg+#JCF!K)MRjbF3#j-55bw)K`t#FEI~gb}nPwf9$hdW`qlVz2!6H@|+T zWY3{DCUt!3%;-HAd`oqj0P-{#0Z5NTWOvoH0gz zJq-=!sgov6lGS(oT#Z^=6X=~qUr=v=;hwCpgD(`5$olEP=?d=!vhpI%d0 zy#S9(f=`B}!sy)?yzI_msqHuymmR^*<)MJ_{ew^iK}QwjTWSHHaKYd1WYSR!PyqJ% zy-uxOoQGO%KM7l&Z4d87z9O0vBZfGm#uUdtnkA6|m{m2Jm_N}C6odnYyxG<6uIO9qzoPFy^& zIQ={K^|nAd4$5T%m-SA(bl}qTH|;2rSIbqhT9Tu*slj*a>ZG&stQxdy!$j|E!VEMyCJ1H$M5#y~*|cHPOH4zVXS!{b+wa`I~(=U0WYJgc*?= zMBd5`n8)?rdEXxVR|G#w8~>B@#)s+Ad{Q4RiM_OK{PXn%Qxh+(tq6TMFKwLv(Hp(# zd?OIbDNIzPH^yG-z0SCE(NFF>SU;((FSq`r1MmoLUa9Xc-L>eUil+egGA#VR^un5# zUVdTi%l+=%8}I(-+v%UKkD%A{aZLIPVZ-Iw&FgHmuaYcg`?@v9`|wn*3)q_TtP$&5 zGkRc6-`aBr*vv-WEnTzcEhN>tc{7p9ckaQ>z?z%Z_O9v(+_`ko?)&b$Fa5>`+GJW@pRvr1nz{A-aQI7h z(9RGhLU;01flfkqA literal 40466 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 CALLED SEGMENT START LENGTH START LENGTH - BL51 BANKED LINKER/LOCATER V6.22 04/08/2022 03:21:38 PAGE 3 - - ------------------------------------------------------------------------ -?PR?TIME0?IRIN ----- ----- ----- ----- +SEGMENT BIT_GROUP DATA_GROUP + +--> CALLED SEGMENT START LENGTH START LENGTH +---------------------------------------------------------------------- +?PR?TIME0?IRIN ----- ----- ----- ----- +--> ?PR?PWM_OUT_RIGHT_MOTO?PWM *** NEW ROOT *************************************************** -?C_C51STARTUP ----- ----- ----- ----- +?C_C51STARTUP ----- ----- ----- ----- +--> ?PR?MAIN?MAIN +--> ?C_INITSEG -?PR?MAIN?MAIN ----- ----- ----- ----- - +--> ?PR?INITLCD1602?LCD +?PR?MAIN?MAIN ----- ----- ----- ----- + +--> ?PR?LCDINIT?LCD +--> ?PR?IRIN_INIT?IRIN +--> ?PR?UART_INIT?MAIN + BL51 BANKED LINKER/LOCATER V6.22 04/09/2022 18:14:52 PAGE 3 + + +--> ?PR?READDATA?MAIN +--> ?PR?RUN?PWM +--> ?PR?DISPLAY?IRIN @@ -143,85 +129,75 @@ SEGMENT BIT_GROUP DATA_GROUP +--> ?PR?BLUETOOTH_ACCEPT?MAIN +--> ?PR?WRITEDATA?MAIN -?PR?INITLCD1602?LCD ----- ----- ----- ----- - +--> ?PR?_LCD1602_WRITE_CMD?LCD +?PR?LCDINIT?LCD ----- ----- ----- ----- + +--> ?PR?_LCDWRITECOM?LCD -?PR?_LCD1602_WRITE_CMD?LCD ----- ----- ----- ----- - +--> ?PR?READ_BUSY?LCD +?PR?_LCDWRITECOM?LCD ----- ----- ----- ----- + +--> ?PR?_LCD1602_DELAY1MS?LCD -?PR?READDATA?MAIN ----- ----- ----- ----- +?PR?READDATA?MAIN ----- ----- ----- ----- +--> ?PR?_AT24C02READ?I2C - +--> ?PR?_AT24C02WRITE?I2C - +--> ?PR?_DELAYMS?MAIN -?PR?_AT24C02READ?I2C ----- ----- ----- ----- +?PR?_AT24C02READ?I2C ----- ----- ----- ----- +--> ?PR?I2CSTART?I2C +--> ?PR?_I2CSENDBYTE?I2C +--> ?PR?I2CREADBYTE?I2C +--> ?PR?I2CSTOP?I2C -?PR?I2CSTART?I2C ----- ----- ----- ----- +?PR?I2CSTART?I2C ----- ----- ----- ----- +--> ?PR?DELAY10US?I2C -?PR?_I2CSENDBYTE?I2C ----- ----- ----- ----- +?PR?_I2CSENDBYTE?I2C ----- ----- ----- ----- +--> ?PR?DELAY10US?I2C -?PR?I2CREADBYTE?I2C ----- ----- ----- ----- +?PR?I2CREADBYTE?I2C ----- ----- ----- ----- +--> ?PR?DELAY10US?I2C -?PR?I2CSTOP?I2C ----- ----- ----- ----- +?PR?I2CSTOP?I2C ----- ----- ----- ----- +--> ?PR?DELAY10US?I2C -?PR?_AT24C02WRITE?I2C ----- ----- ----- ----- - +--> ?PR?I2CSTART?I2C - +--> ?PR?_I2CSENDBYTE?I2C - +--> ?PR?I2CSTOP?I2C - -?PR?DISPLAY?IRIN ----- ----- ----- ----- - +--> ?PR?_LCDSETCURSOR?LCD - BL51 BANKED LINKER/LOCATER V6.22 04/08/2022 03:21:38 PAGE 4 - +?PR?DISPLAY?IRIN ----- ----- ----- ----- + +--> ?PR?_LCDWRITECOM?LCD + +--> ?PR?_LCDWRITEDATA?LCD - +--> ?CO?IRIN - +--> ?PR?_LCDSHOWSTR?LCD - +--> ?PR?_LCD1602_WRITE_DATA?LCD +?PR?_LCDWRITEDATA?LCD ----- ----- ----- ----- + +--> ?PR?_LCD1602_DELAY1MS?LCD -?PR?_LCDSETCURSOR?LCD ----- ----- ----- ----- - +--> ?PR?_LCD1602_WRITE_CMD?LCD - -?PR?_LCDSHOWSTR?LCD ----- ----- 0057H 0003H - +--> ?PR?_LCDSETCURSOR?LCD - +--> ?PR?_LCD1602_WRITE_DATA?LCD - -?PR?_LCD1602_WRITE_DATA?LCD ----- ----- ----- ----- - +--> ?PR?READ_BUSY?LCD - -?PR?KEY_SCAN?IRIN ----- ----- ----- ----- +?PR?KEY_SCAN?IRIN ----- ----- ----- ----- +--> ?PR?_DELAY11?IRIN -?PR?BLUETOOTH_ACCEPT?MAIN ----- ----- 0057H 0006H +?PR?BLUETOOTH_ACCEPT?MAIN ----- ----- 0056H 0006H +--> ?CO?MAIN +--> ?PR?_STRSTR?STRSTR +--> ?PR?PRINTF?PRINTF +--> ?PR?_BLUETOOTH_SET?MAIN + +--> ?PR?_AT24C02WRITE?I2C +--> ?PR?SAVEUSERINFO?MAIN -?PR?_STRSTR?STRSTR ----- ----- 005DH 000CH +?PR?_STRSTR?STRSTR ----- ----- 005CH 000CH -?PR?PRINTF?PRINTF 0020H.0 0001H.1 005DH 001CH +?PR?PRINTF?PRINTF 0020H.0 0001H.1 005CH 0014H +--> ?PR?PUTCHAR?PUTCHAR -?PR?_BLUETOOTH_SET?MAIN ----- ----- ----- ----- + BL51 BANKED LINKER/LOCATER V6.22 04/09/2022 18:14:52 PAGE 4 + + +?PR?_BLUETOOTH_SET?MAIN ----- ----- ----- ----- +--> ?PR?_SEND_UART?MAIN +--> ?PR?_US_DELAY?MAIN -?PR?SAVEUSERINFO?MAIN ----- ----- ----- ----- +?PR?_AT24C02WRITE?I2C ----- ----- ----- ----- + +--> ?PR?I2CSTART?I2C + +--> ?PR?_I2CSENDBYTE?I2C + +--> ?PR?I2CSTOP?I2C + +?PR?SAVEUSERINFO?MAIN ----- ----- ----- ----- +--> ?PR?_AT24C02WRITE?I2C +--> ?PR?_DELAYMS?MAIN -?PR?WRITEDATA?MAIN ----- ----- ----- ----- +?PR?WRITEDATA?MAIN ----- ----- ----- ----- +--> ?PR?_AT24C02WRITE?I2C - +--> ?PR?_DELAYMS?MAIN + +--> ?PR?_US_DELAY?MAIN @@ -232,376 +208,321 @@ SYMBOL TABLE OF MODULE: pro (MAIN) ------- MODULE MAIN C:0000H SYMBOL _ICE_DUMMY_ - D:0080H PUBLIC P0 D:0090H PUBLIC P1 D:00B0H PUBLIC P3 + D:0023H PUBLIC Seep_model B:00A8H.7 PUBLIC EA - C:133FH PUBLIC WriteData - C:1498H PUBLIC _Send_Uart - D:0023H PUBLIC model - BL51 BANKED LINKER/LOCATER V6.22 04/08/2022 03:21:38 PAGE 5 - - - C:1407H PUBLIC Uart_Init + C:0DFBH PUBLIC WriteData + C:0ED4H PUBLIC _Send_Uart + D:0025H PUBLIC model + C:0E9BH PUBLIC Uart_Init B:00A8H.4 PUBLIC ES B:0098H.0 PUBLIC RI B:0098H.1 PUBLIC TI - C:139AH PUBLIC main + C:0E1AH PUBLIC main D:0099H PUBLIC SBUF D:0087H PUBLIC PCON D:0098H PUBLIC SCON D:0089H PUBLIC TMOD - D:0025H PUBLIC Receive - C:1382H PUBLIC _Bluetooth_Set - D:0026H PUBLIC Recive_table - D:004EH PUBLIC set + D:0026H PUBLIC play + D:0027H PUBLIC Receive + C:0E83H PUBLIC _Bluetooth_Set + D:0028H PUBLIC Recive_table D:008DH PUBLIC TH1 D:008BH PUBLIC TL1 - C:11D1H PUBLIC Uart_Interrupt + C:0C59H PUBLIC Uart_Interrupt B:0088H.6 PUBLIC TR1 C:0003H PUBLIC _us_delay - D:004FH PUBLIC usr - C:10DBH PUBLIC saveUserInfo - C:0AF9H PUBLIC Bluetooth_Accept - C:1362H PUBLIC _delayms + D:0050H PUBLIC usr + C:0C91H PUBLIC saveUserInfo + C:0382H PUBLIC Bluetooth_Accept + C:0E37H PUBLIC _delayms B:0021H.1 PUBLIC accept - C:0F17H PUBLIC ReadData - C:135EH SYMBOL L?0050 - ------- PROC L?0049 - ------- ENDPROC L?0049 - C:135EH SYMBOL L?0050 + C:0BC0H PUBLIC ReadData + BL51 BANKED LINKER/LOCATER V6.22 04/09/2022 18:14:52 PAGE 5 + + ------- PROC _DELAYMS D:0006H SYMBOL ms ------- DO D:0004H SYMBOL i D:0005H SYMBOL j ------- ENDDO - C:1362H LINE# 43 - C:1362H LINE# 44 - C:1362H LINE# 45 - C:1364H LINE# 46 - C:1368H LINE# 47 - C:1368H LINE# 48 - C:136CH LINE# 49 - C:136CH LINE# 50 - C:136EH LINE# 51 - C:1374H LINE# 53 - C:137BH LINE# 54 + C:0E37H LINE# 36 + C:0E37H LINE# 37 + C:0E37H LINE# 38 + C:0E39H LINE# 39 + C:0E3DH LINE# 40 + C:0E3DH LINE# 41 + C:0E41H LINE# 42 + C:0E41H LINE# 43 + C:0E43H LINE# 44 + C:0E49H LINE# 46 + C:0E50H LINE# 47 ------- ENDPROC _DELAYMS ------- PROC UART_INIT - C:1407H LINE# 56 - C:1407H LINE# 57 - C:1407H LINE# 58 - C:140AH LINE# 59 - C:140DH LINE# 60 - C:1410H LINE# 61 - C:1413H LINE# 62 - C:1416H LINE# 63 - C:1418H LINE# 64 - C:141AH LINE# 65 - BL51 BANKED LINKER/LOCATER V6.22 04/08/2022 03:21:38 PAGE 6 - - - C:141CH LINE# 66 + C:0E9BH LINE# 49 + C:0E9BH LINE# 50 + C:0E9BH LINE# 51 + C:0E9EH LINE# 52 + C:0EA1H LINE# 53 + C:0EA4H LINE# 54 + C:0EA7H LINE# 55 + C:0EAAH LINE# 56 + C:0EACH LINE# 57 + C:0EAEH LINE# 58 + C:0EB0H LINE# 59 ------- ENDPROC UART_INIT ------- PROC _US_DELAY D:0007H SYMBOL t - C:0003H LINE# 68 - C:0003H LINE# 69 - C:0003H LINE# 70 - C:0009H LINE# 71 + C:0003H LINE# 61 + C:0003H LINE# 62 + C:0003H LINE# 63 + C:0009H LINE# 64 ------- ENDPROC _US_DELAY ------- PROC _SEND_UART D:0007H SYMBOL value - C:1498H LINE# 73 - C:1498H LINE# 74 - C:1498H LINE# 75 - C:149AH LINE# 76 - C:149CH LINE# 77 - C:149EH LINE# 78 - C:14A1H LINE# 79 - C:14A3H LINE# 80 - C:14A5H LINE# 81 + C:0ED4H LINE# 66 + C:0ED4H LINE# 67 + C:0ED4H LINE# 68 + C:0ED6H LINE# 69 + C:0ED8H LINE# 70 + C:0EDAH LINE# 71 + C:0EDDH LINE# 72 + C:0EDFH LINE# 73 + C:0EE1H LINE# 74 ------- ENDPROC _SEND_UART - C:137CH SYMBOL L?0052 - ------- PROC L?0051 - ------- ENDPROC L?0051 - C:137CH SYMBOL L?0052 ------- PROC _BLUETOOTH_SET D:0001H SYMBOL puf - C:1382H LINE# 83 - C:1382H LINE# 84 - C:1382H LINE# 85 - C:1388H LINE# 86 - C:1388H LINE# 87 - C:138BH LINE# 88 - C:1390H LINE# 89 - C:1397H LINE# 90 - C:1399H LINE# 91 + C:0E83H LINE# 76 + C:0E83H LINE# 77 + C:0E83H LINE# 78 + C:0E89H LINE# 79 + C:0E89H LINE# 80 + BL51 BANKED LINKER/LOCATER V6.22 04/09/2022 18:14:52 PAGE 6 + + + C:0E8CH LINE# 81 + C:0E91H LINE# 82 + C:0E98H LINE# 83 + C:0E9AH LINE# 84 ------- ENDPROC _BLUETOOTH_SET ------- PROC SAVEUSERINFO ------- DO D:0006H SYMBOL target ------- ENDDO - C:10DBH LINE# 94 - C:10DBH LINE# 95 - C:10DBH LINE# 96 - C:10E2H LINE# 97 - C:10E9H LINE# 98 - C:10ECH LINE# 99 - C:10F0H LINE# 100 - C:10F7H LINE# 101 - C:10FAH LINE# 102 - C:1101H LINE# 103 - C:1108H LINE# 104 - C:110BH LINE# 105 - C:110FH LINE# 106 - C:1116H LINE# 107 + C:0C91H LINE# 87 + C:0C91H LINE# 88 + C:0C93H LINE# 89 + C:0C9AH LINE# 90 + C:0CA1H LINE# 91 + C:0CA8H LINE# 92 + C:0CAFH LINE# 93 + C:0CB6H LINE# 94 + C:0CBAH LINE# 95 + C:0CC1H LINE# 96 ------- ENDPROC SAVEUSERINFO ------- PROC BLUETOOTH_ACCEPT - BL51 BANKED LINKER/LOCATER V6.22 04/08/2022 03:21:38 PAGE 7 - - ------- DO - D:0057H SYMBOL target1 - D:0059H SYMBOL target2 - D:005BH SYMBOL i + D:0056H SYMBOL target1 + D:0058H SYMBOL target2 + D:005AH SYMBOL i ------- ENDDO - C:0AF9H LINE# 111 - C:0AF9H LINE# 112 - C:0B06H LINE# 113 - C:0B0CH LINE# 114 - C:0B22H LINE# 115 - C:0B31H LINE# 116 - C:0B4FH LINE# 117 - C:0B52H LINE# 118 - C:0B6FH LINE# 119 - C:0B8EH LINE# 120 - C:0BADH LINE# 121 - C:0BB2H LINE# 122 - C:0BCEH LINE# 123 - C:0BEEH LINE# 124 - C:0BF8H LINE# 125 - C:0BFBH LINE# 126 - C:0C18H LINE# 127 - C:0C37H LINE# 128 - C:0C3CH LINE# 129 - C:0C58H LINE# 130 - C:0C78H LINE# 131 - C:0C82H LINE# 132 - C:0C91H LINE# 133 - C:0CAFH LINE# 134 - C:0CB2H LINE# 137 - C:0CD6H LINE# 138 - C:0CF9H LINE# 139 - C:0CFCH LINE# 140 - C:0CFCH LINE# 141 - C:0D0BH LINE# 142 - C:0D0DH LINE# 143 - C:0D0DH LINE# 144 + C:0382H LINE# 99 + C:0382H LINE# 100 + C:038FH LINE# 101 + C:0395H LINE# 102 + C:03ABH LINE# 103 + C:03BAH LINE# 104 + C:03D8H LINE# 105 + C:03DEH LINE# 106 + C:03F8H LINE# 107 + C:0401H LINE# 108 + C:0404H LINE# 109 + C:040CH LINE# 110 + C:041BH LINE# 111 + C:042DH LINE# 112 + C:0436H LINE# 113 + C:043DH LINE# 114 + C:0457H LINE# 116 + C:045CH LINE# 117 + C:0465H LINE# 118 + C:0468H LINE# 119 + C:047FH LINE# 120 + C:0487H LINE# 121 + C:0495H LINE# 122 + C:049BH LINE# 123 + C:049EH LINE# 124 + C:04B8H LINE# 125 + C:04D7H LINE# 126 + C:04F6H LINE# 127 + C:04FBH LINE# 128 + C:0517H LINE# 129 + C:0537H LINE# 130 + BL51 BANKED LINKER/LOCATER V6.22 04/09/2022 18:14:52 PAGE 7 + + + C:0541H LINE# 131 + C:0554H LINE# 132 + C:0573H LINE# 133 + C:0592H LINE# 134 + C:0597H LINE# 135 + C:05B3H LINE# 136 + C:05D3H LINE# 137 + C:05DDH LINE# 139 + C:05F0H LINE# 140 + C:05F9H LINE# 141 + C:05FCH LINE# 142 + C:05FCH LINE# 143 + C:060BH LINE# 144 + C:060DH LINE# 145 + C:060DH LINE# 146 ------- ENDPROC BLUETOOTH_ACCEPT ------- PROC READDATA - C:0F17H LINE# 146 - C:0F17H LINE# 147 - C:0F3AH LINE# 148 - C:0F41H LINE# 149 - C:0F45H LINE# 150 - C:0F4AH LINE# 151 - C:0F4EH LINE# 153 - C:0F54H LINE# 154 - C:0F57H LINE# 155 - C:0F5EH LINE# 156 - C:0F61H LINE# 158 - C:0F68H LINE# 159 - C:0F6BH LINE# 160 - C:0F72H LINE# 161 - C:0F75H LINE# 162 - C:0F7CH LINE# 163 - C:0F7FH LINE# 164 - C:0F86H LINE# 166 - BL51 BANKED LINKER/LOCATER V6.22 04/08/2022 03:21:38 PAGE 8 - - - C:0F86H LINE# 167 - C:0FA9H LINE# 168 - C:0FCCH LINE# 169 - C:0FCCH LINE# 170 + C:0BC0H LINE# 149 + C:0BC0H LINE# 151 + C:0BE3H LINE# 154 + C:0BEDH LINE# 156 + C:0BF4H LINE# 158 + C:0C17H LINE# 159 ------- ENDPROC READDATA ------- PROC WRITEDATA ------- DO D:0006H SYMBOL target ------- ENDDO - C:133FH LINE# 176 - C:133FH LINE# 177 - C:1343H LINE# 178 - C:1349H LINE# 179 - C:134CH LINE# 180 - C:1350H LINE# 181 - C:1357H LINE# 182 + C:0DFBH LINE# 162 + C:0DFBH LINE# 163 + C:0DFFH LINE# 164 + C:0E05H LINE# 165 + C:0E0AH LINE# 166 + C:0E0EH LINE# 167 + C:0E15H LINE# 168 ------- ENDPROC WRITEDATA ------- PROC MAIN - C:139AH LINE# 185 - C:139AH LINE# 186 - C:139AH LINE# 187 - C:139DH LINE# 188 - C:13A0H LINE# 189 - C:13A3H LINE# 190 - C:13A6H LINE# 191 - C:13A6H LINE# 192 - C:13A6H LINE# 193 - C:13A9H LINE# 194 - C:13ACH LINE# 195 - C:13AFH LINE# 196 - C:13B2H LINE# 197 - C:13B5H LINE# 198 + C:0E1AH LINE# 172 + C:0E1AH LINE# 173 + C:0E1AH LINE# 174 + C:0E1DH LINE# 175 + C:0E20H LINE# 176 + C:0E23H LINE# 177 + C:0E26H LINE# 178 + C:0E26H LINE# 179 + C:0E26H LINE# 180 + C:0E29H LINE# 181 + C:0E2CH LINE# 182 + C:0E2FH LINE# 183 + C:0E32H LINE# 184 + C:0E35H LINE# 185 ------- ENDPROC MAIN ------- PROC UART_INTERRUPT ------- DO D:0022H SYMBOL i ------- ENDDO - C:11D1H LINE# 201 - C:11DAH LINE# 204 - C:11DDH LINE# 205 - C:11E0H LINE# 206 - C:11E2H LINE# 207 - C:11E5H LINE# 208 - C:11ECH LINE# 209 - C:11F5H LINE# 210 - C:11F8H LINE# 211 - C:11FAH LINE# 212 - C:11FCH LINE# 213 - C:11FEH LINE# 214 - C:1200H LINE# 215 - C:1202H LINE# 216 + C:0C59H LINE# 189 + BL51 BANKED LINKER/LOCATER V6.22 04/09/2022 18:14:52 PAGE 8 + + + C:0C62H LINE# 192 + C:0C65H LINE# 193 + C:0C68H LINE# 194 + C:0C6AH LINE# 195 + C:0C6DH LINE# 196 + C:0C74H LINE# 197 + C:0C7DH LINE# 198 + C:0C80H LINE# 199 + C:0C82H LINE# 200 + C:0C84H LINE# 201 + C:0C86H LINE# 202 + C:0C88H LINE# 203 + C:0C8AH LINE# 204 ------- ENDPROC UART_INTERRUPT ------- ENDMOD MAIN ------- MODULE LCD C:0000H SYMBOL _ICE_DUMMY_ - C:13B7H PUBLIC _DisplayOneChar - BL51 BANKED LINKER/LOCATER V6.22 04/08/2022 03:21:38 PAGE 9 - - - D:0080H PUBLIC P0 + D:0090H PUBLIC P1 D:00A0H PUBLIC P2 - C:1445H PUBLIC Read_Busy - B:0080H.5 PUBLIC LCD1602_EN - B:0080H.7 PUBLIC LCD1602_RS - B:0080H.6 PUBLIC LCD1602_RW - C:1479H PUBLIC _Lcd1602_Write_Data - C:1469H PUBLIC _Lcd1602_Write_Cmd - C:1457H PUBLIC _LcdSetCursor - C:1267H PUBLIC _LcdShowStr - C:141DH PUBLIC InitLcd1602 - ------- PROC READ_BUSY + C:0F05H PUBLIC _LcdWriteData + B:0090H.6 PUBLIC LCD1602_RS + B:0090H.5 PUBLIC LCD1602_RW + C:0E51H PUBLIC LcdInit + B:0090H.4 PUBLIC LCD1602_E + C:0EFBH PUBLIC _LcdWriteCom + C:0D0BH PUBLIC _Lcd1602_Delay1ms + ------- PROC L?0015 + ------- ENDPROC L?0015 + ------- PROC _LCD1602_DELAY1MS + D:0006H SYMBOL c ------- DO - D:0007H SYMBOL sta + D:0004H SYMBOL a + D:0005H SYMBOL b ------- ENDDO - C:1445H LINE# 4 - C:1445H LINE# 5 - C:1445H LINE# 7 - C:1448H LINE# 8 - C:144AH LINE# 9 - C:144CH LINE# 11 - C:144CH LINE# 12 - C:144EH LINE# 13 - C:1450H LINE# 14 - C:1452H LINE# 15 - C:1456H LINE# 16 - ------- ENDPROC READ_BUSY - ------- PROC _LCD1602_WRITE_CMD - D:0006H SYMBOL cmd - C:1469H LINE# 18 - C:146BH LINE# 19 - C:146BH LINE# 20 - C:146EH LINE# 21 - C:1470H LINE# 22 - C:1472H LINE# 23 - C:1474H LINE# 24 - C:1476H LINE# 25 - C:1478H LINE# 26 - ------- ENDPROC _LCD1602_WRITE_CMD - ------- PROC _LCD1602_WRITE_DATA - D:0006H SYMBOL dat - C:1479H LINE# 28 - C:147BH LINE# 29 - C:147BH LINE# 30 - C:147EH LINE# 31 - C:1480H LINE# 32 - C:1482H LINE# 33 - C:1484H LINE# 34 - C:1486H LINE# 35 - C:1488H LINE# 36 - ------- ENDPROC _LCD1602_WRITE_DATA - ------- PROC _LCDSETCURSOR - D:0007H SYMBOL x - D:0005H SYMBOL y - ------- DO - D:0004H SYMBOL addr - ------- ENDDO - BL51 BANKED LINKER/LOCATER V6.22 04/08/2022 03:21:38 PAGE 10 - - - C:1457H LINE# 38 - C:1457H LINE# 39 - C:1457H LINE# 41 - C:145AH LINE# 42 - C:145EH LINE# 44 - C:1462H LINE# 46 - ------- ENDPROC _LCDSETCURSOR - ------- PROC _DISPLAYONECHAR - D:0006H SYMBOL X - D:0005H SYMBOL Y - D:0004H SYMBOL DData - C:13B7H LINE# 50 - C:13BBH LINE# 51 - C:13BBH LINE# 52 - C:13BEH LINE# 53 - C:13C1H LINE# 54 - C:13C7H LINE# 55 - C:13CAH LINE# 56 - C:13CFH LINE# 57 - ------- ENDPROC _DISPLAYONECHAR - ------- PROC _LCDSHOWSTR - D:0007H SYMBOL x - D:0005H SYMBOL y - D:0057H SYMBOL str - C:1267H LINE# 61 - C:126DH LINE# 62 - C:126DH LINE# 63 - C:1270H LINE# 64 - C:127BH LINE# 65 - C:127BH LINE# 66 - C:128CH LINE# 67 - C:128EH LINE# 68 - ------- ENDPROC _LCDSHOWSTR - ------- PROC INITLCD1602 - C:141DH LINE# 70 - C:141DH LINE# 71 - C:141DH LINE# 72 - C:1422H LINE# 73 - C:1427H LINE# 74 - C:142CH LINE# 75 - ------- ENDPROC INITLCD1602 + C:0D0BH LINE# 11 + C:0D0BH LINE# 12 + C:0D0BH LINE# 14 + C:0D14H LINE# 15 + C:0D14H LINE# 16 + C:0D16H LINE# 17 + C:0D16H LINE# 18 + C:0D1AH LINE# 19 + C:0D1CH LINE# 20 + C:0D23H LINE# 22 + ------- ENDPROC _LCD1602_DELAY1MS + ------- PROC _LCDWRITECOM + D:0007H SYMBOL com + C:0EFBH LINE# 31 + C:0EFBH LINE# 32 + C:0EFBH LINE# 33 + C:0EFDH LINE# 34 + C:0EFFH LINE# 35 + C:0EFFH LINE# 37 + C:0EFFH LINE# 38 + C:0EFFH LINE# 40 + C:0EFFH LINE# 41 + BL51 BANKED LINKER/LOCATER V6.22 04/09/2022 18:14:52 PAGE 9 + + + C:0F02H LINE# 42 + C:0F04H LINE# 43 + ------- ENDPROC _LCDWRITECOM + ------- PROC _LCDWRITEDATA + D:0007H SYMBOL dat + C:0F05H LINE# 74 + C:0F05H LINE# 75 + C:0F05H LINE# 76 + C:0F07H LINE# 77 + C:0F09H LINE# 78 + C:0F09H LINE# 80 + C:0F09H LINE# 81 + C:0F09H LINE# 83 + C:0F09H LINE# 84 + C:0F0CH LINE# 85 + C:0F0EH LINE# 86 + ------- ENDPROC _LCDWRITEDATA + ------- PROC LCDINIT + C:0E51H LINE# 116 + C:0E51H LINE# 117 + C:0E51H LINE# 118 + C:0E56H LINE# 119 + C:0E5BH LINE# 120 + C:0E60H LINE# 121 + C:0E65H LINE# 122 + ------- ENDPROC LCDINIT ------- ENDMOD LCD ------- MODULE PWM C:0000H SYMBOL _ICE_DUMMY_ - D:0080H PUBLIC P0 D:0090H PUBLIC P1 D:00B0H PUBLIC P3 - C:131FH PUBLIC _delay - C:12FEH PUBLIC pwm_out_right_moto - B:0090H.0 PUBLIC IN1 - B:0090H.1 PUBLIC IN2 + C:0DDBH PUBLIC _delay + C:0DBAH PUBLIC pwm_out_right_moto + B:0090H.2 PUBLIC IN1 + B:0090H.3 PUBLIC IN2 B:0021H.2 PUBLIC Right_moto_stop D:0013H PUBLIC pwm_value - C:1238H PUBLIC run - B:00B0H.4 PUBLIC Right_moto_pwm + C:0B5DH PUBLIC run + B:0090H.7 PUBLIC Right_moto_pwm D:0014H PUBLIC push_val_right - BL51 BANKED LINKER/LOCATER V6.22 04/08/2022 03:21:38 PAGE 11 - - D:0015H PUBLIC pwm_val_right ------- PROC _DELAY D:0006H SYMBOL k @@ -609,95 +530,106 @@ SYMBOL TABLE OF MODULE: pro (MAIN) D:0004H SYMBOL x D:0002H SYMBOL y ------- ENDDO - C:131FH LINE# 12 - C:131FH LINE# 13 - C:131FH LINE# 15 - C:1329H LINE# 16 - C:133EH LINE# 17 + C:0DDBH LINE# 15 + C:0DDBH LINE# 16 + C:0DDBH LINE# 18 + C:0DE5H LINE# 19 + C:0DFAH LINE# 20 ------- ENDPROC _DELAY ------- PROC RUN - C:1238H LINE# 19 - C:1238H LINE# 20 - C:1238H LINE# 21 - C:1242H LINE# 22 - C:124FH LINE# 23 - C:125CH LINE# 24 - C:125FH LINE# 25 - C:1262H LINE# 26 - C:1266H LINE# 27 + C:0B5DH LINE# 22 + C:0B5DH LINE# 23 + BL51 BANKED LINKER/LOCATER V6.22 04/09/2022 18:14:52 PAGE 10 + + + C:0B5DH LINE# 24 + C:0B61H LINE# 25 + C:0B67H LINE# 26 + C:0B74H LINE# 27 + C:0B80H LINE# 28 + C:0B8AH LINE# 29 + C:0B8CH LINE# 30 + C:0B91H LINE# 31 + C:0B91H LINE# 34 + C:0B9BH LINE# 35 + C:0BA8H LINE# 36 + C:0BB5H LINE# 37 + C:0BB8H LINE# 38 + C:0BBBH LINE# 39 + C:0BBFH LINE# 40 ------- ENDPROC RUN ------- PROC PWM_OUT_RIGHT_MOTO - C:12FEH LINE# 29 - C:12FEH LINE# 30 - C:12FEH LINE# 31 - C:1300H LINE# 32 - C:1305H LINE# 33 - C:130BH LINE# 34 - C:130BH LINE# 35 - C:130DH LINE# 36 - C:130FH LINE# 38 - C:130FH LINE# 39 - C:1311H LINE# 40 - C:1311H LINE# 41 - C:131BH LINE# 42 - C:131CH LINE# 43 - C:131CH LINE# 44 - C:131EH LINE# 45 - C:131EH LINE# 46 + C:0DBAH LINE# 42 + C:0DBAH LINE# 43 + C:0DBAH LINE# 44 + C:0DBCH LINE# 45 + C:0DC1H LINE# 46 + C:0DC7H LINE# 47 + C:0DC7H LINE# 48 + C:0DC9H LINE# 49 + C:0DCBH LINE# 50 + C:0DCBH LINE# 51 + C:0DCDH LINE# 52 + C:0DCDH LINE# 53 + C:0DD7H LINE# 54 + C:0DD8H LINE# 55 + C:0DD8H LINE# 56 + C:0DDAH LINE# 57 + C:0DDAH LINE# 58 ------- ENDPROC PWM_OUT_RIGHT_MOTO ------- ENDMOD PWM ------- MODULE I2C C:0000H SYMBOL _ICE_DUMMY_ - D:0080H PUBLIC P0 - C:111DH PUBLIC _I2cSendByte - C:14BFH PUBLIC I2cStop - C:14ABH PUBLIC Delay10us - B:0080H.0 PUBLIC SDA - C:12DCH PUBLIC _At24c02Read - B:0080H.1 PUBLIC SCL - C:1489H PUBLIC I2cStart - C:13EEH PUBLIC _At24c02Write - C:12B6H PUBLIC I2cReadByte - BL51 BANKED LINKER/LOCATER V6.22 04/08/2022 03:21:38 PAGE 12 - - - C:14A6H SYMBOL L?0024 + D:0090H PUBLIC P1 + C:0C18H PUBLIC _I2cSendByte + C:0F0FH PUBLIC I2cStop + C:0EE7H PUBLIC Delay10us + B:0090H.0 PUBLIC SDA + C:0D98H PUBLIC _At24c02Read + B:0090H.1 PUBLIC SCL + C:0EC5H PUBLIC I2cStart + C:0E6AH PUBLIC _At24c02Write + C:0D72H PUBLIC I2cReadByte + C:0EE2H SYMBOL L?0024 ------- PROC L?0023 ------- ENDPROC L?0023 - C:14A6H SYMBOL L?0024 + C:0EE2H SYMBOL L?0024 ------- PROC DELAY10US ------- DO D:0006H SYMBOL a D:0007H SYMBOL b + BL51 BANKED LINKER/LOCATER V6.22 04/09/2022 18:14:52 PAGE 11 + + ------- ENDDO - C:14ABH LINE# 10 - C:14ABH LINE# 11 - C:14ABH LINE# 13 - C:14ADH LINE# 14 - C:14B3H LINE# 16 + C:0EE7H LINE# 10 + C:0EE7H LINE# 11 + C:0EE7H LINE# 13 + C:0EE9H LINE# 14 + C:0EEFH LINE# 16 ------- ENDPROC DELAY10US ------- PROC I2CSTART - C:1489H LINE# 25 - C:1489H LINE# 26 - C:1489H LINE# 27 - C:148BH LINE# 28 - C:148BH LINE# 29 - C:148BH LINE# 30 - C:148EH LINE# 31 - C:1490H LINE# 32 - C:1493H LINE# 33 - C:1495H LINE# 34 + C:0EC5H LINE# 25 + C:0EC5H LINE# 26 + C:0EC5H LINE# 27 + C:0EC7H LINE# 28 + C:0EC7H LINE# 29 + C:0EC7H LINE# 30 + C:0ECAH LINE# 31 + C:0ECCH LINE# 32 + C:0ECFH LINE# 33 + C:0ED1H LINE# 34 ------- ENDPROC I2CSTART ------- PROC I2CSTOP - C:14BFH LINE# 44 - C:14BFH LINE# 45 - C:14BFH LINE# 46 - C:14C1H LINE# 47 - C:14C1H LINE# 48 - C:14C1H LINE# 49 - C:14C4H LINE# 50 - C:14C6H LINE# 51 + C:0F0FH LINE# 44 + C:0F0FH LINE# 45 + C:0F0FH LINE# 46 + C:0F11H LINE# 47 + C:0F11H LINE# 48 + C:0F11H LINE# 49 + C:0F14H LINE# 50 + C:0F16H LINE# 51 ------- ENDPROC I2CSTOP ------- PROC _I2CSENDBYTE D:0005H SYMBOL dat @@ -705,108 +637,106 @@ SYMBOL TABLE OF MODULE: pro (MAIN) D:0003H SYMBOL a D:0002H SYMBOL b ------- ENDDO - C:111DH LINE# 61 - C:111FH LINE# 62 - C:111FH LINE# 63 - C:1122H LINE# 64 - C:1122H LINE# 65 - C:1122H LINE# 66 - C:112DH LINE# 67 - C:1131H LINE# 68 - C:1131H LINE# 69 - C:1131H LINE# 70 - C:1134H LINE# 71 - C:1136H LINE# 72 - C:1139H LINE# 73 - C:113DH LINE# 74 - BL51 BANKED LINKER/LOCATER V6.22 04/08/2022 03:21:38 PAGE 13 - - - C:113FH LINE# 75 - C:1142H LINE# 76 - C:1144H LINE# 77 - C:1147H LINE# 78 - C:1147H LINE# 79 - C:1148H LINE# 80 - C:114EH LINE# 81 - C:114EH LINE# 82 - C:1150H LINE# 83 - C:1153H LINE# 84 - C:1156H LINE# 85 - C:1156H LINE# 86 - C:1156H LINE# 87 - C:1158H LINE# 88 - C:115BH LINE# 89 - C:115DH LINE# 90 + C:0C18H LINE# 61 + C:0C1AH LINE# 62 + C:0C1AH LINE# 63 + C:0C1DH LINE# 64 + C:0C1DH LINE# 65 + C:0C1DH LINE# 66 + C:0C28H LINE# 67 + C:0C2CH LINE# 68 + C:0C2CH LINE# 69 + C:0C2CH LINE# 70 + C:0C2FH LINE# 71 + C:0C31H LINE# 72 + C:0C34H LINE# 73 + C:0C38H LINE# 74 + C:0C3AH LINE# 75 + C:0C3DH LINE# 76 + C:0C3FH LINE# 77 + C:0C42H LINE# 78 + C:0C42H LINE# 79 + C:0C43H LINE# 80 + C:0C49H LINE# 81 + C:0C49H LINE# 82 + BL51 BANKED LINKER/LOCATER V6.22 04/09/2022 18:14:52 PAGE 12 + + + C:0C4BH LINE# 83 + C:0C4EH LINE# 84 + C:0C51H LINE# 85 + C:0C51H LINE# 86 + C:0C51H LINE# 87 + C:0C53H LINE# 88 + C:0C56H LINE# 89 + C:0C58H LINE# 90 ------- ENDPROC _I2CSENDBYTE ------- PROC I2CREADBYTE ------- DO D:0005H SYMBOL a D:0004H SYMBOL dat ------- ENDDO - C:12B6H LINE# 99 - C:12B6H LINE# 100 - C:12B6H LINE# 101 - C:12B9H LINE# 102 - C:12BBH LINE# 103 - C:12BEH LINE# 104 - C:12BEH LINE# 105 - C:12BEH LINE# 106 - C:12C0H LINE# 107 - C:12C3H LINE# 108 - C:12C7H LINE# 109 - C:12CDH LINE# 110 - C:12D0H LINE# 111 - C:12D2H LINE# 112 - C:12D5H LINE# 113 - C:12D9H LINE# 114 - C:12DBH LINE# 115 + C:0D72H LINE# 99 + C:0D72H LINE# 100 + C:0D72H LINE# 101 + C:0D75H LINE# 102 + C:0D77H LINE# 103 + C:0D7AH LINE# 104 + C:0D7AH LINE# 105 + C:0D7AH LINE# 106 + C:0D7CH LINE# 107 + C:0D7FH LINE# 108 + C:0D83H LINE# 109 + C:0D89H LINE# 110 + C:0D8CH LINE# 111 + C:0D8EH LINE# 112 + C:0D91H LINE# 113 + C:0D95H LINE# 114 + C:0D97H LINE# 115 ------- ENDPROC I2CREADBYTE ------- PROC _AT24C02WRITE D:0001H SYMBOL addr D:0004H SYMBOL dat - C:13EEH LINE# 125 - C:13F2H LINE# 126 - C:13F2H LINE# 127 - C:13F5H LINE# 128 - C:13FAH LINE# 129 - C:13FFH LINE# 130 - C:1404H LINE# 131 + C:0E6AH LINE# 125 + C:0E6EH LINE# 126 + C:0E6EH LINE# 127 + C:0E71H LINE# 128 + C:0E76H LINE# 129 + C:0E7BH LINE# 130 + C:0E80H LINE# 131 ------- ENDPROC _AT24C02WRITE ------- PROC _AT24C02READ D:0004H SYMBOL addr ------- DO D:0005H SYMBOL num ------- ENDDO - C:12DCH LINE# 140 - BL51 BANKED LINKER/LOCATER V6.22 04/08/2022 03:21:38 PAGE 14 - - - C:12DEH LINE# 141 - C:12DEH LINE# 143 - C:12E1H LINE# 144 - C:12E6H LINE# 145 - C:12EBH LINE# 146 - C:12EEH LINE# 147 - C:12F3H LINE# 148 - C:12F8H LINE# 149 - C:12FBH LINE# 150 - C:12FDH LINE# 151 + C:0D98H LINE# 140 + C:0D9AH LINE# 141 + C:0D9AH LINE# 143 + C:0D9DH LINE# 144 + C:0DA2H LINE# 145 + C:0DA7H LINE# 146 + C:0DAAH LINE# 147 + C:0DAFH LINE# 148 + C:0DB4H LINE# 149 + BL51 BANKED LINKER/LOCATER V6.22 04/09/2022 18:14:52 PAGE 13 + + + C:0DB7H LINE# 150 + C:0DB9H LINE# 151 ------- ENDPROC _AT24C02READ ------- ENDMOD I2C ------- MODULE IRIN C:0000H SYMBOL _ICE_DUMMY_ - D:0080H PUBLIC P0 D:0090H PUBLIC P1 D:00B0H PUBLIC P3 B:00A8H.7 PUBLIC EA D:000AH PUBLIC speed B:00B0H.5 PUBLIC k1 - B:00B0H.2 PUBLIC k2 - C:1431H PUBLIC IRIN_Init + C:0EB1H PUBLIC IRIN_Init D:000CH PUBLIC count - C:115EH PUBLIC Key_scan + C:0D24H PUBLIC Key_scan D:0089H PUBLIC TMOD D:000EH PUBLIC r_s B:00A8H.1 PUBLIC ET0 @@ -817,198 +747,169 @@ SYMBOL TABLE OF MODULE: pro (MAIN) B:0088H.4 PUBLIC TR0 D:0010H PUBLIC mileage D:0012H PUBLIC ms - C:0D0EH PUBLIC time0 - C:14B4H PUBLIC _delay11 - C:0E1CH PUBLIC display + C:092AH PUBLIC time0 + C:0EF0H PUBLIC _delay11 + C:060EH PUBLIC display C:0016H PUBLIC int1 ------- PROC _DELAY11 D:0006H SYMBOL i - C:14B4H LINE# 15 - C:14B4H LINE# 16 - C:14B4H LINE# 17 - C:14BEH LINE# 18 + C:0EF0H LINE# 15 + C:0EF0H LINE# 16 + C:0EF0H LINE# 17 + C:0EFAH LINE# 18 ------- ENDPROC _DELAY11 ------- PROC IRIN_INIT - C:1431H LINE# 20 - C:1431H LINE# 21 - C:1431H LINE# 22 - C:1434H LINE# 23 - C:1437H LINE# 24 - C:143AH LINE# 25 - C:143CH LINE# 26 - C:143EH LINE# 27 - C:1440H LINE# 28 - C:1442H LINE# 29 - BL51 BANKED LINKER/LOCATER V6.22 04/08/2022 03:21:38 PAGE 15 - - - C:1444H LINE# 30 + C:0EB1H LINE# 20 + C:0EB1H LINE# 21 + C:0EB1H LINE# 22 + C:0EB4H LINE# 23 + C:0EB7H LINE# 24 + C:0EBAH LINE# 25 + C:0EBCH LINE# 26 + C:0EBEH LINE# 27 + C:0EC0H LINE# 28 + C:0EC2H LINE# 29 + C:0EC4H LINE# 30 ------- ENDPROC IRIN_INIT ------- PROC DISPLAY - C:0E1CH LINE# 32 - C:0E1CH LINE# 33 - C:0E1CH LINE# 34 - C:0E22H LINE# 35 - C:0E2EH LINE# 36 - C:0E47H LINE# 37 - C:0E60H LINE# 38 - C:0E72H LINE# 39 - C:0E7FH LINE# 41 - C:0E8CH LINE# 42 - C:0EA5H LINE# 43 - C:0EBEH LINE# 44 - C:0ED0H LINE# 45 - C:0EDDH LINE# 47 - C:0EEBH LINE# 48 - C:0EFBH LINE# 49 - C:0F0BH LINE# 50 - C:0F16H LINE# 51 + C:060EH LINE# 32 + C:060EH LINE# 33 + C:060EH LINE# 35 + C:0613H LINE# 36 + C:062CH LINE# 37 + C:0645H LINE# 38 + C:0657H LINE# 41 + BL51 BANKED LINKER/LOCATER V6.22 04/09/2022 18:14:52 PAGE 14 + + + C:065CH LINE# 42 + C:0675H LINE# 43 + C:068EH LINE# 44 + C:06A7H LINE# 45 + C:06B9H LINE# 46 + C:06BEH LINE# 48 + C:06C3H LINE# 49 + C:06CDH LINE# 50 + C:06D9H LINE# 51 + C:06E5H LINE# 52 + C:06F2H LINE# 55 + C:06F7H LINE# 56 + C:0710H LINE# 57 + C:0729H LINE# 58 + C:0742H LINE# 59 + C:0754H LINE# 60 + C:0759H LINE# 62 + C:075EH LINE# 63 + C:0777H LINE# 64 + C:0790H LINE# 65 + C:07A9H LINE# 66 + C:07BBH LINE# 67 + C:07C0H LINE# 69 + C:07C5H LINE# 70 + C:07CDH LINE# 71 + C:07D2H LINE# 72 ------- ENDPROC DISPLAY ------- PROC KEY_SCAN - C:115EH LINE# 54 - C:115EH LINE# 55 - C:1161H LINE# 56 - C:1161H LINE# 57 - C:1168H LINE# 58 - C:116BH LINE# 59 - C:1173H LINE# 60 - C:1181H LINE# 61 - C:1181H LINE# 62 - C:1184H LINE# 63 - C:1184H LINE# 65 - C:1187H LINE# 66 - C:1187H LINE# 67 - C:118EH LINE# 68 - C:1191H LINE# 69 - C:1194H LINE# 70 - C:1194H LINE# 71 - C:1197H LINE# 72 - C:1197H LINE# 74 + C:0D24H LINE# 74 + C:0D24H LINE# 75 + C:0D27H LINE# 76 + C:0D2EH LINE# 77 + C:0D31H LINE# 78 + C:0D39H LINE# 79 + C:0D47H LINE# 80 + C:0D47H LINE# 81 + C:0D4AH LINE# 82 + C:0D4AH LINE# 83 ------- ENDPROC KEY_SCAN ------- PROC TIME0 ------- DO D:0008H SYMBOL time ------- ENDDO - C:0D0EH LINE# 76 - C:0D2BH LINE# 79 - C:0D2EH LINE# 80 - C:0D31H LINE# 81 - C:0D39H LINE# 82 - C:0D3CH LINE# 83 - C:0D4CH LINE# 84 - C:0D4EH LINE# 85 - C:0D54H LINE# 86 - C:0D5AH LINE# 87 - BL51 BANKED LINKER/LOCATER V6.22 04/08/2022 03:21:38 PAGE 16 - - - C:0D60H LINE# 88 - C:0D62H LINE# 89 - C:0DA9H LINE# 90 - C:0DC3H LINE# 91 - C:0E01H LINE# 92 - C:0E01H LINE# 93 + C:092AH LINE# 85 + C:0947H LINE# 88 + C:094AH LINE# 89 + C:094DH LINE# 90 + C:0955H LINE# 91 + C:0958H LINE# 92 + C:0965H LINE# 93 + C:0967H LINE# 94 + C:096DH LINE# 95 + C:0981H LINE# 96 + C:098CH LINE# 97 + C:09A6H LINE# 98 + C:09B7H LINE# 99 + C:09BDH LINE# 100 + BL51 BANKED LINKER/LOCATER V6.22 04/09/2022 18:14:52 PAGE 15 + + + C:09BFH LINE# 101 + C:09BFH LINE# 102 ------- ENDPROC TIME0 ------- PROC INT1 - C:0016H LINE# 95 - C:0018H LINE# 97 - C:0020H LINE# 98 + C:0016H LINE# 104 + C:0018H LINE# 106 + C:0020H LINE# 107 ------- ENDPROC INT1 ------- ENDMOD IRIN - ------- MODULE ?C?FPADD - C:002DH PUBLIC ?C?FPADD - C:0029H PUBLIC ?C?FPSUB - ------- ENDMOD ?C?FPADD - - ------- MODULE ?C?FPMUL - C:011EH PUBLIC ?C?FPMUL - ------- ENDMOD ?C?FPMUL + ------- MODULE ?C?CLDPTR + C:07D3H PUBLIC ?C?CLDPTR + ------- ENDMOD ?C?CLDPTR - ------- MODULE ?C?FPDIV - C:0227H PUBLIC ?C?FPDIV - ------- ENDMOD ?C?FPDIV + ------- MODULE ?C?IMUL + C:07ECH PUBLIC ?C?IMUL + ------- ENDMOD ?C?IMUL - ------- MODULE ?C?FCAST - C:02CEH PUBLIC ?C?FCASTC - C:02C9H PUBLIC ?C?FCASTI - C:02C4H PUBLIC ?C?FCASTL - ------- ENDMOD ?C?FCAST + ------- MODULE ?C?UIDIV + C:07FEH PUBLIC ?C?UIDIV + ------- ENDMOD ?C?UIDIV - ------- MODULE ?C?CASTF - C:0302H PUBLIC ?C?CASTF - ------- ENDMOD ?C?CASTF + ------- MODULE ?C?SIDIV + C:0853H PUBLIC ?C?SIDIV + ------- ENDMOD ?C?SIDIV ------- MODULE PRINTF - D:005DH PUBLIC ?_PRINTF?BYTE - D:005DH PUBLIC ?_SPRINTF?BYTE - C:06ECH PUBLIC _PRINTF - C:06E6H PUBLIC _SPRINTF + D:005CH PUBLIC ?_PRINTF517?BYTE + D:005CH PUBLIC ?_PRINTF?BYTE + D:005CH PUBLIC ?_SPRINTF517?BYTE + D:005CH PUBLIC ?_SPRINTF?BYTE + C:0088H PUBLIC _PRINTF + C:0088H PUBLIC _PRINTF517 + C:0082H PUBLIC _SPRINTF + C:0082H PUBLIC _SPRINTF517 ------- ENDMOD PRINTF - ------- MODULE ?C?FPROUND - C:0383H PUBLIC ?C?FPROUND - ------- ENDMOD ?C?FPROUND - - ------- MODULE ?C?FPCONVERT - C:03B2H PUBLIC ?C?FPCONVERT - ------- ENDMOD ?C?FPCONVERT - - ------- MODULE ?C?FTNPWR - C:04E5H PUBLIC ?C?FTNPWR - ------- ENDMOD ?C?FTNPWR - - ------- MODULE ?C?CLDPTR - BL51 BANKED LINKER/LOCATER V6.22 04/08/2022 03:21:38 PAGE 17 - + ------- MODULE STRSTR + D:005CH PUBLIC ?_strstr?BYTE + C:0A66H PUBLIC _strstr + ------- ENDMOD STRSTR - C:0525H PUBLIC ?C?CLDPTR - ------- ENDMOD ?C?CLDPTR + ------- MODULE ?C?MEMSET + C:0889H PUBLIC ?C?MEMSET + ------- ENDMOD ?C?MEMSET ------- MODULE ?C?CLDOPTR - C:053EH PUBLIC ?C?CLDOPTR + C:08B5H PUBLIC ?C?CLDOPTR ------- ENDMOD ?C?CLDOPTR ------- MODULE ?C?CSTPTR - C:056BH PUBLIC ?C?CSTPTR + C:08E2H PUBLIC ?C?CSTPTR ------- ENDMOD ?C?CSTPTR - ------- MODULE ?C?IMUL - C:057DH PUBLIC ?C?IMUL - ------- ENDMOD ?C?IMUL - - ------- MODULE ?C?UIDIV - C:058FH PUBLIC ?C?UIDIV - ------- ENDMOD ?C?UIDIV - - ------- MODULE ?C?SIDIV - C:05E4H PUBLIC ?C?SIDIV - ------- ENDMOD ?C?SIDIV - - ------- MODULE ?C?LNEG - C:061AH PUBLIC ?C?LNEG - ------- ENDMOD ?C?LNEG - ------- MODULE ?C?PLDIIDATA - C:0628H PUBLIC ?C?PLDIIDATA + C:08F4H PUBLIC ?C?PLDIIDATA ------- ENDMOD ?C?PLDIIDATA + BL51 BANKED LINKER/LOCATER V6.22 04/09/2022 18:14:52 PAGE 16 + + ------- MODULE ?C?CCASE - C:0638H PUBLIC ?C?CCASE + C:0904H PUBLIC ?C?CCASE ------- ENDMOD ?C?CCASE ------- MODULE PUTCHAR - C:128FH PUBLIC _PUTCHAR + C:0D4BH PUBLIC _PUTCHAR ------- ENDMOD PUTCHAR - ------- MODULE STRSTR - D:005DH PUBLIC ?_strstr?BYTE - C:1059H PUBLIC _strstr - ------- ENDMOD STRSTR - - ------- MODULE ?C?MEMSET - C:065EH PUBLIC ?C?MEMSET - ------- ENDMOD ?C?MEMSET - -Program Size: data=111.3 xdata=0 code=5315 +Program Size: data=102.3 xdata=0 code=3859 LINK/LOCATE RUN COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/pro.build_log.htm b/pro.build_log.htm index e561794..8b88c6c 100644 --- a/pro.build_log.htm +++ b/pro.build_log.htm @@ -24,9 +24,9 @@ Project File Date: 05/31/2019

Output:

Build target 'Target 1' compiling main.c... -main.c(195): warning C206: 'Key_scan': missing function-prototype +main.c(182): warning C206: 'Key_scan': missing function-prototype linking... -Program Size: data=111.3 xdata=0 code=5315 +Program Size: data=102.3 xdata=0 code=3859 creating hex file from "pro"... "pro" - 0 Error(s), 1 Warning(s). Build Time Elapsed: 00:00:01 diff --git a/pro.hex b/pro.hex index 648f32a..695066d 100644 --- a/pro.hex +++ b/pro.hex @@ -1,378 +1,280 @@ -:10119800696E71756972650073706565643A256476 -:1011A800206B6D2F68206D696C656167653A2564F1 -:1011B800206D0D0A007365743A0028002C00290080 -:0911C800534554204F4B0D0A0061 -:0C12090002230000014E00C10901220078 -:04135E007F027E008C -:101362007C64EF4E60131CEC60087D0A1DED60F694 -:0913720080FAEF1F70EC1E80E907 -:01137B00224F -:10140700758921759850758DFD858D8BE4F587D28B -:06141700AFD2ACD28E2220 +:100AE800696E71756972650073706565643A25642D +:100AF800206D2F6D696E206D696C656167653A259B +:100B080064206D0D0A006D6F64656C004D6F64653F +:100B18006C20534554204F4B0D0A00636C6561727D +:100B2800007265736574206D696C65616765204F37 +:100B38004B210D0A007370656564007365743A0093 +:100B480028002C0029005573657220534554204F06 +:050B58004B210D0A0015 +:0F0CC80002230000012600012500C109012200BE +:100E37007C64EF4E60131CEC60087D0A1DED60F6C4 +:090E470080FAEF1F70EC1E80E937 +:010E5000227F +:100E9B00758921759850758DFD858D8BE4F587D2FD +:060EAB00AFD2ACD28E2292 :07000300AE071FEE70FA22A8 -:0E149800C2ACC2998F993099FDC299D2AC2294 -:06137C007B007A007926D7 -:10138200120525FF60111214987F051200037401E3 -:0813920029F9E43AFA80E9228E -:1010DB00E54FFF3395E0FEAD077F031213EE1213BE -:1010EB005E7E00AF50AD077F041213EE12135EE568 -:1010FB0051FF3395E0FEAD077F051213EE12135E21 -:10110B007E00AF52AD077F061213EE7F027E000208 -:02111B0013625D -:100AF900E4F557F558F559F55AF55BF55C20090306 -:100B0900020D0D7560FF756111756298FB7A0079A8 -:100B190026121059E94A4B60337E007F287D007BFD -:100B2900007A00792612065E7560FF75611175629B -:100B3900A0850A63850B648510658511667B007A3B -:100B49000079261206E612137C020CFC7560FF750B -:100B590061117562BD7B007A007926121059E94A44 -:100B69004B7003020CFC7560FF7561117562C27BE5 -:100B7900007A007926121059AE02C3E99426F55875 -:100B8900EE9400F5577560FF7561117562C47B00BD -:100B99007A007926121059AE02C3E99426F55AEE65 -:100BA9009400F559E4F54FF550E5582401F55CE456 -:100BB9003557F55BC3E55C955AE5596480F8E55B03 -:100BC900648098502A7426255CF8E624D0FBE43426 -:100BD900FFFAAE4FAF507C007D0A12057DEF2BF571 -:100BE90050EE3AF54F055CE55C7002055B80C51275 -:100BF900137C7560FF7561117562C47A00792612DC -:100C09001059AE02C3E99426F558EE9400F55775CC -:100C190060FF7561117562C67B007A007926121032 -:100C290059AE02C3E99426F55AEE9400F559E4F554 -:100C390051F552E5582401F55CE43557F55BC3E5F8 -:100C49005C955AE5596480F8E55B648098502A748C -:100C590026255CF8E624D0FBE434FFFAAE51AF5206 -:100C69007C007D0A12057DEF2BF552EE3AF5510510 -:100C79005CE55C7002055B80C57E007F287D007B9A -:100C8900007A00792612065E7560FF75611175623A -:100C9900C8854F638550648551658552667B007AA6 -:100CA9000079261206E612137CAC4FAD50AE51AF57 -:100CB900521205E4AC06AD0712057D7C007D1612C3 -:100CC90005E47C0B7DB812057D8E538F54AC4FAD76 -:100CD90050AE51AF521205E4AC06AD0712057D7C4A -:100CE900007D161205E4C3740A9FF556E49EF55576 -:100CF9001210DB7E007F287D007B007A00792612A6 -:040D0900065EC209B7 -:010D0D0022C3 -:100F17007F011212DCEF75F0FFA4FFAEF0C006C030 -:100F2700077F021212DCEFFDD0E02DF511D0E0347F -:100F370000F5107F071212DC8F4EE54E6041E4F595 -:100F47004FF550F551F552FD7F011213EE12135E66 -:100F5700E4FD7F021213EE12135EE4FD7F0312130A -:100F6700EE12135EE4FD7F041213EE12135EE4FD2E -:100F77007F051213EE12135EE4FD7F060213EE7F68 -:100F8700031212DCEF75F0FFA4FFAEF0C006C00736 -:100F97007F041212DCEFFDD0E02DF550D0E03400D5 -:100FA700F54F7F051212DCEF75F0FFA4FFAEF0C01E -:100FB70006C0077F061212DCEFFDD0E02DF552D0F8 -:060FC700E03400F55122A8 -:10133F00E5107E00FD7F011213EE12135E7E00AFEB -:0F134F0011AD077F021213EE7F027E00021362C0 -:10139A0012141D121431121407120F1712123812D6 -:0D13AA000E1C12115E120AF912133F80EFA3 -:030023000211D1F6 -:0911D100C0E0C0D075D000C000E0 -:1011DA00200925309820C29885992574262522F859 -:1011EA00A62574262522F8E6B40D07752200D20931 -:0811FA00800605228002C29963 -:07120200D000D0D0D0E03293 -:1014450075A0FFC287D286D285AFA0C285EF20E7FF -:01145500F6A0 -:011456002273 -:10146900AE07121445C287C2868EA0D285C28522D4 -:10147900AE07121445D287C2868EA0D285C28522B4 -:10145700ED7004AC078004EF2440FCEC4480FF02ED -:02146700146906 -:1013B700AE07AC0353050153060FED600343064028 -:0D13C700430680AF06121469AF04021479CA -:101267008B578A588959121457AB57AA58A959123C -:10127700052560130559E5597002055814F912053B -:0812870025FF12147980E22218 -:10141D007F381214697F0C1214697F061214697FCC -:04142D00010214693B -:0B121500011500011400011300C10AC4 -:10131F00E4FDFCC3ED9FEC9E5015E4FBFA0BBB0004 -:0F132F00010ABA07F8BBD0F50DBD00010C80E430 -:01133E00228C -:10123800E52445237004F513801DE5246401452346 -:1012480070057513028010E5246402452370057546 -:0F1258001305800375130A851314C290D29122D7 -:1012FE000515A20AB35017E51595145004D2B48003 -:10130E0002C2B4E515C394144006E4F51522C2B426 -:01131E0022AC -:0514A6001214ABD2811D -:0814AB007F017E02DEFEDFFA84 -:0114B3002216 -:0F148900D2801214A6C2801214ABC2810214AB1F -:0A14BF00C2801214A6D2800214AB02 -:02111D00AD071C -:10111F00E4FBFAEDC4131313540124FF9280ED2561 -:10112F00E0FD1214A6C2811214AB0BBB08E5D280EE -:10113F001214ABD28130800F0AEAD394C840F6C2A2 -:0E114F00811214AB7F0022C2811214AB7F010B -:01115D00226F -:1012B600E4FDFCD2801214ABD2811214ABEC25E013 -:1012C600FCA280E43342041214ABC2811214AB0DAB -:0512D600BD08E5AF04B6 -:0112DB0022F0 -:1013EE00AC05A9071214897FA012111DAF011211AD -:0913FE001DAF0412111D0214BF01 -:0212DC00AC075D -:1012DE001214897FA012111DAF0412111D12148950 -:0F12EE007FA112111D1212B6AD071214BFAF056A -:0112FD0022CE -:1013D400004B4D2F6820006D20202020202020204D -:0A13E400200020004C004D004800DE -:1012200002100000020C0000011200020A0000027D -:071230000E0000020800009F -:0B14B400EF1FAC0670011E4C70F6220A -:10143100758921758CFC758A18D2A9D28CD2AFD24C -:04144100AAD28A227F -:100E1C00E4FDFF1214577BFF7A1379D4E4FDFF1223 -:100E2C001267AE0AAF0B7C007D6412058F7C007DCF -:100E3C000A12058FED2430FF121479AE0AAF0B7C29 -:100E4C00007D0A12058F7C007D0A12058FED24307F -:100E5C00FF121479AE0AAF0B7C007D0A12058FEDE0 -:100E6C002430FF1214797BFF7A1379D5E4FD7F03CC -:100E7C001212677BFF7A1379D4E4FD7F0812126794 -:100E8C00AE10AF117C007D6412058F7C007D0A12C0 -:100E9C00058FED2430FF121479AE10AF117C007D5C -:100EAC000A12058F7C007D0A12058FED2430FF128B -:100EBC001479AE10AF117C007D0A12058FED243031 -:100ECC00FF1214797BFF7A1379DBE4FD7F0B12128E -:100EDC0067E524452370087BFF7A1379E68025E5C6 -:100EEC00246401452370087BFF7A1379E88015E5AB -:100EFC0024640245237BFF70067A1379EA80057A15 -:0B0F0C001379ECE4FD7F0D1212672248 -:10115E0020B5237FE87E031214B420B5160524E5CE -:10116E002470020523C39404E52394004005E4F59E -:10117E0023F52430B5FD20B2107FE87E031214B49F -:0A118E0020B203754E0130B2FD22BD -:03000B00020D0ED5 -:100D0E00C0E0C0F0C083C082C0D075D000C000C0AB -:0D0D1E0001C002C003C004C005C006C0072C -:100D2B00758CFC758A180509E50970020508121205 -:100D3B00FEC3E50994F4E508648094815003020E28 -:100D4B0001C2AA750800750900850C0E850D0F757B -:100D5B000C00750D00D2AAAE0EAF0F7C007D0612F3 -:100D6B00057DAC06AD07E41202C9E4FBFAF9783F46 -:100D7B0012011EC004C005C006C007AC0AAD0BE4CF -:100D8B001202C9E4FBFAF9783F12011ED003D0021C -:100D9B00D001D00012002D1203028E0A8F0BAC0A69 -:100DAB00AD0BE41202C97B9A7A997919783E12013C -:100DBB001E1203028E0A8F0BAC0EAD0FE41202C98A -:100DCB00E4FBFA7920784012011EE4FBFA79A07853 -:100DDB0041120227C004C005C006C007AC10AD11FC -:100DEB00E41202C9D003D002D001D00012002D12A0 -:060DFB0003028E108F11AF -:100E0100D007D006D005D004D003D002D001D00045 -:0B0E1100D0D0D082D083D0F0D0E032EF +:0E0ED400C2ACC2998F993099FDC299D2AC225E +:100E83001207D3FF6011120ED47F05120003740101 +:080E930029F9E43AFA80E92292 +:100C9100E4FEAD517F03120E6A7F027E00120E3711 +:100CA100E552FF3395E0FEAD077F05120E6A7F0224 +:100CB1007E00120E377E00AF53AD077F06120E6A1B +:070CC1007F027E00020E37E6 +:10038200E4F556F557F558F559F55AF55B2009038A +:1003920002060D755FFF75600A7561E8FB7A0079E8 +:1003A20028120A66E94A4B60367E007F287D007B70 +:1003B200007A007928120889755FFF75600A7561F5 +:1003C200F0850A62850B638510648511657B007A6E +:1003D2000079281200827B007A0079280204627573 +:1003E2005FFF75600B75610E7B007A007928120A37 +:1003F20066E94A4B6048E52570057525018003E4EE +:10040200F525E5257004F523F5247E007F287D007F +:100412007B007A007928120889755FFF75600B7579 +:1004220061147B007A0079281200827B007A0079BD +:1004320028120E83AD257F04120E6A0205FC755F39 +:10044200FF75600B7561237B007A007928120A66BA +:10045200E94A4B6011E4F510F5117BFF7A0B79291B +:10046200120E830205FC755FFF75600B75613D7BA3 +:10047200007A007928120A66E94A4B601F0524E5D2 +:100482002470020523C39404E52394004005E4F597 +:1004920023F5248523508524510205FC755FFF75E1 +:1004A200600B7561437B007A007928120A66E94A7B +:1004B2004B70030205FC755FFF75600B7561487B2D +:1004C200007A007928120A66AE02C3E99428F55729 +:1004D200EE9400F556755FFF75600B75614A7B00FF +:1004E2007A007928120A66AE02C3E99428F559EE19 +:1004F2009400F558E4F550F551E5572401F55BE415 +:100502003556F55AC3E55B9559E5586480F8E55AC6 +:10051200648098502A7428255BF8E624D0FBE434E2 +:10052200FFFAAE50AF517C007D0A1207ECEF2BF5BB +:1005320051EE3AF550055BE55B70C9055A80C5D3AB +:10054200E5519401E5506480948040067550007531 +:100552005101755FFF75600B75614A7B007A007906 +:1005620028120A66AE02C3E99428F557EE9400F504 +:1005720056755FFF75600B75614C7B007A007928B8 +:10058200120A66AE02C3E99428F559EE9400F558B2 +:10059200E4F552F553E5572401F55BE43556F55A77 +:1005A200C3E55B9559E5586480F8E55A6480985034 +:1005B2002A7428255BF8E624D0FBE434FFFAAE5215 +:1005C200AF537C007D0A1207ECEF2BF553EE3AF5A0 +:1005D20052055BE55B70C9055A80C5D3E551940F9E +:1005E200E550648094A7400675502775510F7BFF34 +:1005F2007A0B794E120E83120C917E007F287D00B9 +:0B0602007B007A007928120889C209E9 +:01060D0022CA +:100BC0007F01120D98EF75F0FFA4FFAEF0C006C0D4 +:100BD000077F02120D98EFFDD0E02DF511D0E03423 +:100BE00000F5107F03120D987550008F517F04128D +:100BF0000D988F257F05120D98EF75F0FFA4FFAEBD +:100C0000F0C006C0077F06120D98EFFDD0E02DF56D +:080C100053D0E03400F552223C +:100DFB00E5107E00FD7F01120E6A7FC81200037E94 +:0F0E0B0000AF11AD077F02120E6A7FC80200030D +:100E1A00120E51120EB1120E9B120BC0120B5D1262 +:0D0E2A00060E120D24120382120DFB80EF44 +:03002300020C5973 +:090C5900C0E0C0D075D000C0005D +:100C6200200925309820C29885992774282522F8D2 +:100C7200A62774282522F8E6B40D07752200D209AA +:080C8200800605228002C299E0 +:070C8A00D000D0D0D0E03211 +:100CFA00C2958FA07F017E00120D0BD2947F057ED4 +:010D0A0000E8 +:100D0B00D3EF9400EE9400400F7DC77C01DCFEDD39 +:080D1B00FAEF1F70EB1E80E8E7 +:010D230022AD +:0A0EFB00C294C296120CFAC29422AF +:0A0F0500C294D296120CFAC2942294 +:100E51007F38120EFB7F0C120EFB7F06120EFB7FFA +:090E610001120EFB7F80020EFB62 +:0B0CD700011500011400011300C10A08 +:100DDB00E4FDFCC3ED9FEC9E5015E4FBFA0BBB004E +:0F0DEB00010ABA07F8BBD0F50DBD00010C80E47A +:010DFA0022D6 +:100B5D00E525602B855023855124C3E5539511F56B +:100B6D0055E5529510F554C3648094805005E4F515 +:100B7D0054F555E5554554700BF523F5248005E4E2 +:100B8D00F554F555E52445237004F513801DE52432 +:100B9D006401452370057513028010E52464024538 +:100BAD002370057513058003751307851314C29201 +:030BBD00D29322AE +:100DBA000515A20AB35017E51595145004D2978069 +:100DCA0002C297E515C394144006E4F51522C297AA +:010DDA0022F6 +:050EE200120EE7D291A1 +:080EE7007F017E02DEFEDFFA4E +:010EEF0022E0 +:0F0EC500D290120EE2C290120EE7C291020EE717 +:0A0F0F00C290120EE2D290020EE72B +:020C1800AD0726 +:100C1A00E4FBFAEDC4131313540124FF9290ED255B +:100C2A00E0FD120EE2C291120EE70BBB08E5D2906C +:100C3A00120EE7D29130900F0AEAD394C840F6C256 +:0E0C4A0091120EE77F0022C291120EE77F0189 +:010C58002279 +:100D7200E4FDFCD290120EE7D291120EE7EC25E0D0 +:100D8200FCA290E4334204120EE7C291120EE70D68 +:050D9200BD08E5AF04FF +:010D97002239 +:100E6A00AC05A907120EC57FA0120C18AF01120C0F +:090E7A0018AF04120C18020F0F4E +:020D9800AC07A6 +:100D9A00120EC57FA0120C18AF04120C18120EC541 +:0F0DAA007FA1120C18120D72AD07120F0FAF05BB +:010DB9002217 +:100CE20002100000020C0000011200020A000002C1 +:070CF2000E000002080000E3 +:0B0EF000EF1FAC0670011E4C70F622D4 +:100EB100758921758CFC758A18D2A9D28CD2AFD2D2 +:040EC100AAD28A2205 +:10060E007F82120EFBAE0AAF0B7C007D641207FEDA +:10061E007C007D0A1207FEED2430FF120F05AE0A94 +:10062E00AF0B7C007D0A1207FE7C007D0A1207FECE +:10063E00ED2430FF120F05AE0AAF0B7C007D0A12BF +:10064E0007FEED2430FF120F057F88120EFBAE1051 +:10065E00AF117C037DE81207FE7C007D0A1207FEB7 +:10066E00ED2430FF120F05AE10AF117C007D641229 +:10067E0007FE7C007D0A1207FEED2430FF120F05E7 +:10068E00AE10AF117C007D0A1207FE7C007D0A12AF +:10069E0007FEED2430FF120F05AE10AF117C007D6A +:1006AE000A1207FEED2430FF120F057F6D120F05A3 +:1006BE007F8E120EFBE524452370047F4E8022E5CB +:1006CE00246401452370047F4C8016E524640245A2 +:1006DE002370047F4D800AE5246403452370057F53 +:1006EE0048120F057FC0120EFBAE52AF537C037D36 +:1006FE00E81208537C007D0A120853ED2430FF12D5 +:10070E000F05AE52AF537C007D641208537C007D02 +:10071E000A120853ED2430FF120F05AE52AF537C70 +:10072E00007D0A1208537C007D0A120853ED243016 +:10073E00FF120F05AE52AF537C007D0A120853ED27 +:10074E002430FF120F057F6D120F057FC8120EFBAE +:10075E00AE54AF557C037DE81208537C007D0A121F +:10076E000853ED2430FF120F05AE54AF557C007DBB +:10077E00641208537C007D0A120853ED2430FF12D8 +:10078E000F05AE54AF557C007D0A1208537C007DD8 +:10079E000A120853ED2430FF120F05AE54AF557CEC +:1007AE00007D0A120853ED2430FF120F057F6D12E3 +:1007BE000F057FCE120EFBE52570047F4480027F6D +:0507CE0053120F05228B +:100D240020B5237FE87E03120EF020B5160524E5D6 +:100D34002470020523C39404E52394004005E4F5DC +:070D440023F52430B5FD2268 +:03000B0002092ABD +:10092A00C0E0C0F0C083C082C0D075D000C000C093 +:0D093A0001C002C003C004C005C006C00714 +:10094700758CFC758A180509E50970020508120DF2 +:10095700BAC3E50994F4E50864809481405AC2AAB1 +:10096700750800750900AE0CAF0D7C007D031207FA +:10097700EC7D141207FE8E0E8F0F7C007D0C120784 +:10098700EC8E0A8F0BAE0CAF0D7D141207FE7C00A8 +:100997007D031207ECEF2511F511EE3510F510D395 +:1009A700E511940FE5109427400675102775110F70 +:0809B700750C00750D00D2AAB9 +:1009BF00D007D006D005D004D003D002D001D0008C +:0B09CF00D0D0D082D083D0F0D0E03236 :03001300020016D2 :0D001600C0E0050DE50D7002050CD0E032D4 -:1000260002036EE86480F8E933E83360110460F097 -:10003600ED33EC337009E8FCE9FDEAFEEBFF220440 -:1000460060DED3EB9FEA9EE99DE8C2E78CF0C2F73B -:1000560095F0400CE8CCF8E9CDF9EACEFAEBCFFB07 -:1000660012033985D0F05804700320D5B3E8047024 -:10007600075002B2D502037892D5EC0460F7E4CCBF -:10008600C0E0C398F8603B94186008400DD0E0FBD0 -:10009600020350E4FBFAC9FC8028E830E406E4C910 -:1000A600FBE4CAFCE830E305E4C9CACBFCE8540724 -:1000B6006010F8C3E913F9EA13FAEB13FBEC13FC2F -:1000C600D8F130F52FC3E49CFCEF9BFFEE9AFEEDD2 -:1000D60099FDD0E0FBEF4E4D4C701222DB0302037C -:1000E60075EC2CFCEF33FFEE33FEED33FDED30E720 -:1000F600EB020350EF2BFFEE3AFEED39FDD0E0FBAD -:1001060050130BBB0003020378ED13FDEE13FEEF55 -:0801160013FFEC13FC0203507F -:10011E00EC4D6011E8497017ED33EC3304600DE4DB -:10012E00FCFFFEFD22E933E8330470F802036E1281 -:10013E00033958046009E4CC248150062850090282 -:10014E000378284003020375C0E0EB4A7044B9807F -:10015E0006D0E0FB020364EF4E701CBD8008EBFF7F -:10016E00EAFEE9FD80EBE98DF0A4FEE5F002020760 -:10017E00E9CDF9EAFEEBFFEF89F0A4FCE5F0CE89BC -:10018E00F0A42EFFE435F0CD89F0A42DFEE435F079 -:10019E008067EF4E7005BD80D780C3EF8BF0A4ACA7 -:1001AE00F0EE8BF0A42CFCE435F0F8EF8AF0A42CE2 -:1001BE00E5F038FCE433CB8DF0A42CFCE5F03BF8F5 -:1001CE00EE8AF0A42CFCE5F038F8E433CF89F0A4E5 -:1001DE002CFCE5F038CF3400CE89F0A42FFFE5F0EB -:1001EE003EFEE433C98DF0A42EFEE5F039CD8AF043 -:1001FE00A42FFFE5F03EFEE43DFD33D0E0FB5007BB -:10020E000BBB000F020378EC2CFCEF33FFEE33FE3A -:06021E00ED33FD02035068 -:10022400020378EC5D046005E85904700302036E70 -:10023400120339580460F6EC4860F2EC7004FDFED9 -:10024400FF22C860DB2481C85009C39860025006AD -:100254000203759850CAF582E9294B4A7005AB82AE -:1002640002036475F0007C1A7880C3EF9BEE9AED6C -:1002740099400DC3EF9BFFEE9AFEED99FDE842F025 -:10028400DC23ACF0D0E0FFD0E0FED0E0FDAB822078 -:10029400E7101BEB60BAEC2CFCEF33FFEE33FEED02 -:1002A40033FD020350E803F830E705C0F075F000B1 -:1002B400EF2FFFEE33FEED33FD40B830E7C280AAE6 -:1002C40075F020800E75F010800575F0087D007EB5 -:1002D400007F003392D530D50312061AEC33401058 -:1002E400EF33FFEE33FEED33FDEC33FCD5F0ED22BE -:0E02F400E5F0247EA2D513CC92E7CDCEFF22FA -:10030200EDD2E7CD33EC3392D524814006E4FFFEF3 -:10031200FDFC22FCE4CFCECDCC24E0501174FF8052 -:10032200EDC3CC13CCCD13CDCE13CECF13CF0470EF -:07033200F030D5DE02061ACF -:10068A00E5742460F8E6057422785D300702786024 -:10069A00E475F0011206280205252000EB7F2ED210 -:1006AA00008018EF540F2490D43440D4FF30040B48 -:1006BA00EF24BFB41A0050032461FFE575600215E8 -:1006CA00750578E5787002057730070D785DE47571 -:1006DA00F001120628EF02056B02128F7403D2078B -:1006EA008003E4C207F5748B5D8A5E895FE4F57561 -:1006FA00F577F578E57560077F201206C580F575F0 -:10070A0076FFC201C200C202C203C205C206C20803 -:10071A00120693FF700D3007057F001206D6AF78D8 -:10072A00AE7722B4255FC2D5C204120693FF24D045 -:10073A00B40A00501A75F00A787530D50508B6FF64 -:10074A000106C6A426F620D5047002D20380D92455 -:10075A00CFB41A00EF5004C2E5D2040209C3D20191 -:10076A0080C6D20080C0D20280BCD2D580BAD2055F -:10077A0080B47F201206C52002077401B5750040B7 -:10078A00F112068AFF1206C50206FED208D20680B8 -:10079A009512068AFB12068AFA12068AF94A4B70E1 -:1007AA000679BA7A0A7BFF20022EE575602A7E0056 -:1007BA008E8275830012053E60060EEE657670F035 -:1007CA00C2D5EBC0E0EAC0E0E9C0E0EE120A23D0ED -:1007DA00E0F9D0E0FAD0E0FB120525FF60AAEBC0F1 -:1007EA00E0EAC0E0E9C0E01206C5D0E02401F9D091 -:1007FA00E03400FAD0E0FBE5760460DCD576D980F7 -:10080A0087D20280A2120A0660F7E5767001041206 -:10081A000383A976600DE576600914F576120AADB0 -:10082A00EF60F3EA30E702F404C3995077EAF4255B -:10083A00760430E701E404F576800D120A0660C1F9 -:10084A00EA05762576120383EA7873F630E701E43F -:10085A00257604D5760420050114120A23E4C0E0A3 -:10086A00120AAD7873E6601320E70714F61206AD94 -:10087A00802204F6D0E014C0E07F001206ADE576CF -:10088A0060071206A41576800B3005031206A4D061 -:10089A00E00206FED0E00480C5120A0660A0E576F2 -:1008AA00041203837873EAF6E576200502600104F0 -:0508BA002404120A23D2 -:1008BF0074FF04C0E0120AAD1206ADE57620050202 -:1008CF0060031206A4D0E0B576E87F451206B7782C -:1008DF0073E67F2B30E7047F2DF404C0E01206C5CA -:1008EF00D0E075F00A84C0F01206AED0E01206AE6A -:1008FF000206FE791080027908C206C2088008D26B -:10090F00D5790A8004790AC2D5E576047002F576A6 -:10091F00E4FAFDFEFF12068AFC7B08200113120683 -:10092F008AFD7B1030000A12068AFE12068AFF7BB0 -:10093F0020EC3382D592D55013C3E43000069FFFCD -:10094F00E49EFEE42001039DFDE49CFCE4CBF8C291 -:10095F0001EC700CCFCECDCCE824F8F870F38017F3 -:10096F00C3EF33FFEE33FEED33FDEC33FCEB33FB24 -:10097F00994002FB0FD8E9EB300105F8D0E0C448ED -:10098F00B201C0E00AEC4D4E4F78207B0070C2EAF6 -:10099F00B5760040BCC0E0120A25D0F0D0E02001AF -:1009AF0004C4C0E0C4B201C0F01206AED0F0D5F05E -:1009BF00EB0206FE120638079B53090258076C4CD0 -:1009CF0007684209064F090E44090E49078143097A -:1009DF00145508454608A345080F470ADA50077013 -:1009EF002D07742E07972B0778230795200AC32A04 -:1009FF000730480000078FE576B4FF0375760612BF -:100A0F00068AFC12068AFD12068AFE12068AFF78F3 -:100A1F006C0203B2790AA2D5200314300509B9106C -:100A2F00020404B9080104A2D520060250010420D3 -:100A3F0002689202B575005034C0E07F2030031970 -:100A4F007F30A20272067205500F120A7CC202C2D8 -:100A5F0006C205C2087F30800F300503E9C0E012DF -:100A6F0006C5300503D0E0F9D0E0B575CC300517D9 -:100A7F007F30B9100C1206C57F583004077F78807D -:100A8F0003B908031206C53002057F2D0206C57F84 -:100A9F00202008F87F2B2006F322920280CF7F00C0 -:100AAF00B407005005246CF8E6FF22286E756C6CB5 -:100ABF002900D20112068A3001F8C201787530D5AB -:100ACF000108F60207302D5043495812068A2403B5 -:100ADF00B405004001E4900AD5931206B6743A1299 -:0A0AEF0006B6D20375750402090271 -:10033900E9D2E7C933E833F892D5EDD2E7CD33EC0A -:0703490033FC5002B2D52283 -:10035000EC30E7100FBF000C0EBE00080DBD00040E -:100360000BEB6014A2D5EB13FCED92E7FD2274FFBA -:10037000FCFDFEFF22E480F8A2D574FF13FC7D8013 -:03038000E480EF27 -:10038300F920E72824F950037907E4F42402FB1841 -:10039300DBFDE624FB5014E9600DE4F618E604F6F1 -:0F03A300B40A08E4F6D9F57401F60A22C2D5228D -:1003B200ED33EC3392D5FA602AB4FF33EDC2E77B1A -:1003C200FF60067A0379D7E4227A0379E020D50424 -:1003D2007A0379DB224E614E002B494E46002D49AD -:1003E2004E4600E47A08F608DAFC7B00740722E83D -:1003F200C0E0ECC0E0EDC0E0EEC0E0EFC0E0EA75C6 -:10040200F010A4CAABF075F04DA42BFBE435F0FC60 -:10041200EA2410FAEB34C5FBEC34D9FCEDC2E7FF59 -:1004220075F056A4F42411C5F0F434C58FF0A42A53 -:10043200E5F03BE43CF620E7141204E5D0E0FFD0FF -:10044200E0FED0E0FDD0E0FC1202278014F404129A -:1004520004E5D0E0FFD0E0FED0E0FDD0E0FC1201E8 -:100462001ED0E0F8E6FAEDD2E7CD33EC332482FB7E -:10047200E4C3CF33CFCE33CECD33CD33DBF37B07E3 -:1004820075F00A846004F6081B0AE5F0F6088FF09E -:10049200740AA4FFACF08EF0740AA42CFEACF050E7 -:1004A200010C8DF0740AA42CFDE435F0F608DBDEB5 -:0304B200740722AA -:1004B5003F8000004120000042C80000447A00004F -:1004C500461C400047C35000497424004B189680D1 -:1004D5004CBEBC205A0E1BCA6753C21C749DC5AEC8 -:1004E500FB60065407601C2323120513EB54386088 -:1004F500091204FF12050E12011EECF8EDF9EEFAD1 -:10050500EFCB22EB12050E80F1543803241C900426 -:10051500B5FE93FC0EEE93FD0EEE930ECE93FF22E9 -:03000000020FCD1F -:0C0FCD00787FE4F6D8FD758178021014DE -:10052500BB010689828A83E0225002E722BBFE02D4 -:09053500E32289828A83E4932207 -:10053E00BB010CE58229F582E5833AF583E0225072 -:10054E0006E92582F8E622BBFE06E92582F8E222BC -:0D055E00E58229F582E5833AF583E49322D6 -:10056B00BB010689828A83F0225002F722BBFE016F -:02057B00F32269 -:10057D00EF8DF0A4A8F0CF8CF0A428CE8DF0A42E92 -:02058D00FE224C -:10058F00BC000BBE0029EF8DF084FFADF022E4CC50 -:10059F00F875F008EF2FFFEE33FEEC33FCEE9DEC19 -:1005AF00984005FCEE9DFE0FD5F0E9E4CEFD22ED5F -:1005BF00F8F5F0EE8420D21CFEADF075F008EF2FA9 -:1005CF00FFED33FD4007985006D5F0F222C398FD9A -:0505DF000FD5F0EA2237 -:1005E400C2D5EC30E709B2D5E4C39DFDE49CFCEE32 -:1005F40030E715B2D5E4C39FFFE49EFE12058FC316 -:10060400E49DFDE49CFC800312058F30D507C3E410 -:060614009FFFE49EFE22A0 -:0E061A00C3E49FFFE49EFEE49DFDE49CFC22F1 -:10062800FAE6FB0808E6F925F0F618E6CA3AF622D3 -:10063800D083D082F8E4937012740193700DA3A351 -:1006480093F8740193F5828883E473740293686065 -:06065800EFA3A3A380DF65 -:10128F00EFB40A07740D12129A740A309811A899C4 -:10129F00B8130CC2983098FDA899C298B811F630BF -:0712AF0099FDC299F5992297 -:101059008B5D8A5E895FAB60AA61A9621205256012 -:1010690063AB5DAA5EA95F120525605F8560638534 -:1010790061648562658B668A678968AB63AA64A9BE -:1010890065120525FF6023AB66AA67A968120525C5 -:101099006F7017042565F565E43564F564740125F9 -:1010A90068F568E43567F56780D1AB63AA64A9651B -:1010B9001205257002800D7401255FF55FE4355E28 -:1010C900F55E809DAB5DAA5EA95F227B007A0079FF -:0210D9000022F3 -:10065E00EF4E6012EF60010EEDBB010B89828A83B3 -:10066E00F0A3DFFCDEFA2289F05007F709DFFCA9C0 -:0C067E00F022BBFEFCF309DFFCA9F02217 -:100FD90002139AE493A3F8E493A34003F68001F281 -:100FE90008DFF48029E493A3F85407240CC8C33319 -:100FF900C4540F4420C8834004F456800146F6DFE8 -:10100900E4800B0102040810204080901209E47E5C -:10101900019360BCA3FF543F30E509541FFEE493DC -:10102900A360010ECF54C025E060A840B8E493A3A3 -:10103900FAE493A3F8E493A3C8C582C8CAC583CACE -:10104900F0A3C8C582C8CAC583CADFE9DEE780BE86 -:0112370000B6 +:030000000209DA18 +:0C09DA00787FE4F6D8FD75816F020A21D9 +:1007D300BB010689828A83E0225002E722BBFE0224 +:0907E300E32289828A83E4932257 +:1007EC00EF8DF0A4A8F0CF8CF0A428CE8DF0A42E21 +:0207FC00FE22DB +:1007FE00BC000BBE0029EF8DF084FFADF022E4CCDF +:10080E00F875F008EF2FFFEE33FEEC33FCEE9DECA7 +:10081E00984005FCEE9DFE0FD5F0E9E4CEFD22EDED +:10082E00F8F5F0EE8420D21CFEADF075F008EF2F37 +:10083E00FFED33FD4007985006D5F0F222C398FD28 +:05084E000FD5F0EA22C5 +:10085300C2D5EC30E709B2D5E4C39DFDE49CFCEEC0 +:1008630030E715B2D5E4C39FFFE49EFE1207FEC333 +:10087300E49DFDE49CFC80031207FE30D507C3E42E +:060883009FFFE49EFE222F +:10002600E56B245FF8E6056B22785C300702785FA3 +:10003600E475F0011208F40207D32000EB7F2ED2FC +:10004600008018EF540F2490D43440D4FF30040BB2 +:10005600EF24BFB41A0050032461FFE56C6002155B +:100066006C056FE56F7002056E30070D785CE47500 +:10007600F0011208F4EF0208E2020D4B7403D207F6 +:100086008003E4C207F56B8B5C8A5D895EE4F56CE0 +:10009600F56EF56FE56C60077F2012006180F575DF +:1000A6006DFFC201C200C202C203C205C206C20877 +:1000B60012002FFF700D3007057F00120072AF6F20 +:1000C600AE6E22B4255FC2D5C20412002FFF24D023 +:1000D600B40A00501A75F00A786C30D50508B6FFD8 +:1000E6000106C6A426F620D5047002D20380D924C0 +:1000F600CFB41A00EF5004C2E5D204020272D20154 +:1001060080C6D20080C0D20280BCD2D580BAD205C9 +:1001160080B47F201200612002077401B56C004094 +:10012600F1120026FF12006102009AD208D2068060 +:1001360095120026FB120026FA120026F94A4B7089 +:100146000679437A037BFF20022EE56C602A7E0047 +:100156008E827583001208B560060EEE656D70F02E +:10016600C2D5EBC0E0EAC0E0E9C0E0EE1202B9D0C9 +:10017600E0F9D0E0FAD0E0FB1207D3FF60AAEBC0AB +:10018600E0EAC0E0E9C0E0120061D0E02401F9D065 +:10019600E03400FAD0E0FBE56D0460DCD56DD98073 +:1001A600877BFF7A0279B5D202809C79108002792A +:1001B60008C206C2088008D2D5790A8004790AC224 +:1001C600D5E56D047002F56DE4FAFDFEFF1200261A +:1001D600FC7B08200113120026FD7B1030000A125A +:1001E6000026FE120026FF7B20EC3382D592D550E6 +:1001F60013C3E43000069FFFE49EFEE42001039D46 +:10020600FDE49CFCE4CBF8C201EC700CCFCECDCC67 +:10021600E824F8F870F38017C3EF33FFEE33FEEDF2 +:1002260033FDEC33FCEB33FB994002FB0FD8E9EBD3 +:10023600300105F8D0E0C448B201C0E00AEC4D4EEA +:100246004F78207B0070C2EAB56D0040BCC0E0125A +:1002560002BBD0F0D0E0200104C4C0E0C4B201C0AB +:10026600F012004AD0F0D5F0EB02009A1209040110 +:10027600375301B15801084C01044201B54F01BD85 +:0F0286004401BD49011D4301C35501A74601A70E +:100295004501A747036350010C2D01102E01332B97 +:1002A500011423013120034C2A00CC480000012B06 +:1002B5003F3F3F00790AA2D5200314300509B91044 +:1002C500020404B9080104A2D52006025001042045 +:1002D50002689202B56C005034C0E07F20300319EB +:1002E5007F30A20272067205500F120312C202C2BB +:1002F50006C205C2087F30800F300503E9C0E01251 +:100305000061300503D0E0F9D0E0B56CCC300517BD +:100315007F30B9100C1200617F583004077F788058 +:1003250003B908031200613002057F2D0200617FC9 +:10033500202008F87F2B2006F322920280CF286E1A +:10034500756C6C2900D2011200263001F8C20178C3 +:100355006C30D50108F60200CC2D504349581200E7 +:10036500262403B405004001E490035E9312005275 +:0D037500743A120052D203756C040201B1FB +:100A66008B5C8A5D895EAB5FAA60A9611207D36061 +:100A760063AB5CAA5DA95E1207D3605F855F628582 +:100A860060638561648B658A668967AB62AA63A9C0 +:100A9600641207D3FF6023AB65AA66A9671207D362 +:100AA6006F7017042564F564E43563F563740125F6 +:100AB60067F567E43566F56680D1AB62AA63A9641B +:100AC6001207D37002800D7401255EF55EE4355D74 +:100AD600F55D809DAB5CAA5DA95E227B007A0079FC +:020AE6000022EC +:10088900EF4E6012EF60010EEDBB010B89828A8386 +:10089900F0A3DFFCDEFA2289F05007F709DFFCA993 +:0C08A900F022BBFEFCF309DFFCA9F022EA +:1009E600020E1AE493A3F8E493A34003F68001F2FF +:1009F60008DFF48029E493A3F85407240CC8C33312 +:100A0600C4540F4420C8834004F456800146F6DFE0 +:100A1600E4800B0102040810204080900CC8E47E9C +:100A2600019360BCA3FF543F30E509541FFEE493D5 +:100A3600A360010ECF54C025E060A840B8E493A39C +:100A4600FAE493A3F8E493A3C8C582C8CAC583CAC7 +:100A5600F0A3C8C582C8CAC583CADFE9DEE780BE7F +:010CF90000FA +:1008B500BB010CE58229F582E5833AF583E02250F8 +:1008C50006E92582F8E622BBFE06E92582F8E22242 +:0D08D500E58229F582E5833AF583E493225C +:1008E200BB010689828A83F0225002F722BBFE01F5 +:0208F200F322EF +:1008F400FAE6FB0808E6F925F0F618E6CA3AF62205 +:10090400D083D082F8E4937012740193700DA3A382 +:1009140093F8740193F5828883E473740293686096 +:06092400EFA3A3A380DF96 +:100D4B00EFB40A07740D120D56740A309811A89956 +:100D5B00B8130CC2983098FDA899C298B811F63008 +:070D6B0099FDC299F59922E0 :00000001FF diff --git a/pro.uvgui.QY b/pro.uvgui.QY index 8233d2d..e6b94f0 100644 --- a/pro.uvgui.QY +++ b/pro.uvgui.QY @@ -91,17 +91,17 @@ -1 - 302 - 539 - 2459 - 1305 + 0 + 646 + 2566 + 1003 0 754 - 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000900000000000000010000002A453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C6D61696E2E6300000000066D61696E2E6300000000FFDC7800FFFFFFFF29453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C6C63642E6800000000056C63642E6800000000BECEA100FFFFFFFF2A453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C4952494E2E6300000000064952494E2E6300000000F0A0A100FFFFFFFF29453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C70776D2E63000000000570776D2E6300000000BCA8E100FFFFFFFF29453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C70776D2E68000000000570776D2E68000000009CC1B600FFFFFFFF29453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C6C63642E6300000000056C63642E6300000000F7B88600FFFFFFFF2A453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C4952494E2E6800000000064952494E2E6800000000D9ADC200FFFFFFFF29453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C6932632E6300000000056932632E6300000000A5C2D700FFFFFFFF29453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C6932632E6800000000056932632E6800000000B3A6BE00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000450100006E000000FF0400009A040000 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000900000000000000010000002A453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C6D61696E2E6300000000066D61696E2E6300000000FFDC7800FFFFFFFF29453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C6C63642E6800000000056C63642E6800000000BECEA100FFFFFFFF2A453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C4952494E2E6300000000064952494E2E6300000000F0A0A100FFFFFFFF29453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C70776D2E63000000000570776D2E6300000000BCA8E100FFFFFFFF29453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C70776D2E68000000000570776D2E68000000009CC1B600FFFFFFFF29453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C6C63642E6300000000056C63642E6300000000F7B88600FFFFFFFF2A453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C4952494E2E6800000000064952494E2E6800000000D9ADC200FFFFFFFF29453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C6932632E6300000000056932632E6300000000A5C2D700FFFFFFFF29453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C6932632E6800000000056932632E6800000000B3A6BE00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000D20300006E000000FE09000006030000 @@ -124,7 +124,7 @@ 16 - C20100000C020000EE070000D2020000 + 4401000066000000700700002C010000 @@ -140,11 +140,11 @@ 0 16 - 03000000660000003D01000062040000 + 03000000660000003D010000CE020000 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -160,11 +160,11 @@ 0 16 - 03000000660000003D01000062040000 + 03000000660000003D010000CE020000 16 - 0C01000023010000880200003B040000 + 3C00000053000000B80100006B030000 @@ -184,7 +184,7 @@ 16 - 0C01000023010000C4040000E9010000 + 3C00000053000000F403000019010000 @@ -204,7 +204,7 @@ 16 - 0C01000023010000C4040000E9010000 + 3C00000053000000F403000019010000 @@ -224,7 +224,7 @@ 16 - 0C01000023010000C4040000E9010000 + 3C00000053000000F403000019010000 @@ -244,7 +244,7 @@ 16 - 0C01000023010000C4040000E9010000 + 3C00000053000000F403000019010000 @@ -264,7 +264,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -284,7 +284,7 @@ 16 - 0C01000023010000C4040000E9010000 + 3C00000053000000F403000019010000 @@ -304,7 +304,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -324,7 +324,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -344,7 +344,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -364,7 +364,7 @@ 16 - 0C01000023010000C4040000E9010000 + 3C00000053000000F403000019010000 @@ -384,7 +384,7 @@ 16 - 0C01000023010000C4040000E9010000 + 3C00000053000000F403000019010000 @@ -404,7 +404,7 @@ 16 - 0C01000023010000C4040000E9010000 + 3C00000053000000F403000019010000 @@ -424,7 +424,7 @@ 16 - 0C01000023010000C4040000E9010000 + 3C00000053000000F403000019010000 @@ -440,11 +440,11 @@ 0 16 - 03000000660000003D01000062040000 + 03000000660000003D010000CE020000 16 - 0C01000023010000880200003B040000 + 3C00000053000000B80100006B030000 @@ -460,11 +460,11 @@ 0 16 - 03000000660000003D01000062040000 + 03000000660000003D010000CE020000 16 - 0C01000023010000880200003B040000 + 3C00000053000000B80100006B030000 @@ -480,11 +480,11 @@ 0 16 - 0000000093040000FE04000045050000 + 00000000FF02000070070000B1030000 16 - 0C01000023010000C4040000E9010000 + 3C00000053000000F403000019010000 @@ -504,7 +504,7 @@ 16 - 0C01000023010000C4040000E9010000 + 3C00000053000000F403000019010000 @@ -520,11 +520,11 @@ 0 16 - 03000000960400006D0700002C050000 + 0300000002030000FD09000098030000 16 - 0C01000023010000C4040000E9010000 + 3C00000053000000F403000019010000 @@ -544,7 +544,7 @@ 16 - 0C01000023010000C4040000E9010000 + 3C00000053000000F403000019010000 @@ -564,7 +564,7 @@ 16 - 0C01000023010000C4040000E9010000 + 3C00000053000000F403000019010000 @@ -604,7 +604,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -624,7 +624,7 @@ 16 - 0C01000023010000C4040000E9010000 + 3C00000053000000F403000019010000 @@ -644,7 +644,7 @@ 16 - 0C01000023010000C4040000E9010000 + 3C00000053000000F403000019010000 @@ -664,7 +664,7 @@ 16 - 0C01000023010000C4040000E9010000 + 3C00000053000000F403000019010000 @@ -684,7 +684,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -704,7 +704,7 @@ 16 - 0C01000023010000C4040000E9010000 + 3C00000053000000F403000019010000 @@ -724,7 +724,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -744,7 +744,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -764,7 +764,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -784,7 +784,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -804,7 +804,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -824,7 +824,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -844,7 +844,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -864,7 +864,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -884,7 +884,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -904,7 +904,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -924,7 +924,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -944,7 +944,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -964,7 +964,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -984,7 +984,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1004,7 +1004,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1024,7 +1024,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1044,7 +1044,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1064,7 +1064,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1084,7 +1084,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1104,7 +1104,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1124,7 +1124,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1140,11 +1140,11 @@ 0 16 - 03000000660000003D010000CE020000 + 03000000660000003D0100006B040000 16 - 0C01000023010000880200003B040000 + 3C00000053000000B80100006B030000 @@ -1160,11 +1160,11 @@ 0 16 - 03000000960400006D0700002C050000 + 0300000002030000FD09000098030000 16 - 0C01000023010000C4040000E9010000 + 3C00000053000000F403000019010000 @@ -1180,11 +1180,11 @@ 0 16 - 03000000960400006D0700002C050000 + 0300000002030000FD09000098030000 16 - 0C01000023010000880200003B040000 + 3C00000053000000B80100006B030000 @@ -1204,7 +1204,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1224,7 +1224,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1240,11 +1240,11 @@ 0 16 - 03000000960400006D0700002C050000 + 0300000002030000FD09000098030000 16 - 0C01000023010000880200003B040000 + 3C00000053000000B80100006B030000 @@ -1260,11 +1260,11 @@ 0 16 - 03000000960400006D0700002C050000 + 0300000002030000FD09000098030000 16 - 0C01000023010000880200003B040000 + 3C00000053000000B80100006B030000 @@ -1284,7 +1284,7 @@ 16 - 0C01000023010000C4040000E9010000 + 3C00000053000000F403000019010000 @@ -1304,7 +1304,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1324,7 +1324,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1344,7 +1344,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1364,7 +1364,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1384,7 +1384,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1404,7 +1404,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1424,7 +1424,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1444,7 +1444,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1464,7 +1464,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1484,7 +1484,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1504,7 +1504,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1524,7 +1524,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1544,7 +1544,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1564,7 +1564,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1584,7 +1584,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1604,7 +1604,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1624,7 +1624,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1644,7 +1644,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1664,7 +1664,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1684,7 +1684,7 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 @@ -1720,7 +1720,7 @@ 0 16 - 0000000045050000FE04000058050000 + 00000000B103000070070000C4030000 16 @@ -1784,19 +1784,19 @@ 16 - 0C010000230100004C02000036020000 + 3C000000530000007C01000066010000 3317 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF44010000150100007007000019010000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000C20100000C020000EE070000D2020000440100004F00000070070000150100000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF2C0600004F0000003006000001030000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000AE0600000C020000EE070000BE040000300600004F000000700700000103000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF400100004F000000440100007B040000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000007E0000000C020000BE010000A4040000000000004F000000400100007B0400000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000ED02000070070000F102000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000018000800000000000007E000000AE040000EE0700008805000000000000F102000070070000CB03000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFB8030000F1020000BC030000CB03000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000007B040000FE0400007F040000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000010000007E000000A8040000EE0700006E050000000000007F040000FE040000450500000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF1346696E6420416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF44010000150100007007000019010000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E6500200000000000004401000066000000700700002C010000440100004F00000070070000150100000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF2C0600004F0000003006000001030000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C300000180004000000000000030060000660000007007000018030000300600004F000000700700000103000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF400100004F00000044010000E7020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000400100009B040000000000004F00000040010000E70200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000ED02000070070000F102000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000000803000070070000E203000000000000F102000070070000CB03000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFB8030000F1020000BC030000CB03000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000E702000070070000EB020000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000009F040000000A00006505000000000000EB02000070070000B10300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF1346696E6420416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 File - 2493 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000574696D65319600000000000000140003736574084B65795F7363616E076D696C656167650A75696E742073706565640E446973706C61794F6E65436861720541534349490E4163636570745F7375636365737307526563656976650474696D650574696D65310F52696768745F6D6F746F5F73746F700E707573685F76616C5F72696768741170776D5F6F75745F6C6566745F6D6F746F0273300875735F64656C6179036375740A73656E64546F576966690B676574546F74616C4461790C74696D696E67735B695D2D3E063078303066300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000 + 2500 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000C5265636976655F7461626C65960000000000000014000C5265636976655F7461626C650474696D650574696D65310F52696768745F6D6F746F5F73746F700E707573685F76616C5F72696768741170776D5F6F75745F6C6566745F6D6F746F0273300875735F64656C6179036375740A73656E64546F576966690B676574546F74616C4461790C74696D696E67735B695D2D3E0630783030663006307830303066054750494F4106307866303030054750494F42124775695F44726177466F6E745F4E756D3332066C6162656C320A4750494F5F50696E5F370000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000 1423 @@ -1828,7 +1828,7 @@ Debug 2373 - 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 898 @@ -1855,54 +1855,54 @@ 0 .\main.c - 28 - 115 - 138 + 38 + 87 + 124 1 0 lcd.h - 13 + 9 1 - 50 + 1 1 0 .\IRIN.c - 9 - 44 - 69 + 0 + 50 + 108 1 0 .\pwm.c - 1 + 0 1 - 27 + 41 1 0 pwm.h - 19 + 0 1 - 21 + 19 1 0 .\lcd.c - 4 + 0 1 - 75 + 74 1 0 diff --git a/pro.uvopt b/pro.uvopt index a4432e8..916a4d8 100644 --- a/pro.uvopt +++ b/pro.uvopt @@ -203,7 +203,7 @@ 1 2 1 - 0 + 1 0 0 .\lcd.c @@ -227,7 +227,7 @@ 1 4 1 - 1 + 0 0 0 .\i2c.c diff --git a/pwm.LST b/pwm.LST index 76a3d12..b71755c 100644 --- a/pwm.LST +++ b/pwm.LST @@ -1,4 +1,4 @@ -C51 COMPILER V9.56.0.0 PWM 04/08/2022 03:07:52 PAGE 1 +C51 COMPILER V9.56.0.0 PWM 04/09/2022 17:15:06 PAGE 1 C51 COMPILER V9.56.0.0, COMPILATION OF MODULE PWM @@ -8,62 +8,74 @@ COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE pwm.c OPTIMIZE(8,SPEED) BROWSE D line level source 1 #include "pwm.h" - 2 - 3 unsigned char pwm_val_right =0; - 4 unsigned char push_val_right=0; - 5 + 2 #include + 3 + 4 unsigned char pwm_val_right =0; + 5 unsigned char push_val_right=0; 6 unsigned char pwm_value=0; 7 - 8 extern uint model; - 9 - 10 bit Right_moto_stop = 0; - 11 - 12 void delay(unsigned int k) - 13 { - 14 1 unsigned int x,y; - 15 1 for(x=0;x=20) pwm_val_right=0; - 42 2 } - 43 1 else{ - 44 2 Right_moto_pwm=0; - 45 2 } - 46 1 } - 47 - 48 - 49 - 50 - 51 + 8 extern uint Seep_model; + 9 extern struct UserInfo usr; + 10 extern uchar model; + 11 extern uint mileage; + 12 + 13 bit Right_moto_stop = 0; + 14 + 15 void delay(unsigned int k) + 16 { + 17 1 unsigned int x,y; + 18 1 for(x=0;x=20) pwm_val_right=0; + 54 2 } + 55 1 else{ + C51 COMPILER V9.56.0.0 PWM 04/09/2022 17:15:06 PAGE 2 + 56 2 Right_moto_pwm=0; + 57 2 } + 58 1 } + 59 + 60 + 61 + 62 + 63 -MODULE INFORMATION: STATIC OVERLAYABLE - CODE SIZE = 112 ---- - C51 COMPILER V9.56.0.0 PWM 04/08/2022 03:07:52 PAGE 2 +MODULE INFORMATION: STATIC OVERLAYABLE + CODE SIZE = 164 ---- CONSTANT SIZE = ---- ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- diff --git a/pwm.OBJ b/pwm.OBJ index 46d4453bbe1fd2b62f4f7f3ea50a2bf7b8069b3c..ff5727281c7946cedb6c75aaf170c049cf678090 100644 GIT binary patch literal 5329 zcmcIoYiwLc6+ZXw-rd-aA9+8Tg!OKkxJl~9PMlXmTtBYtZDM=lUFT6uZg#zk*TgRz zI}ZxfX%obcsw#abQd@yk35g&403rB6L81vrfE0nsKlqynDz#M*L;?ya-#2r|zPoGZ zA7ksx{mz{^bIzGL=gi&dTk=_ZS6fRgK7Dzjc_bbiNM(|J$>-drLwnLG*X@2H);TzE zI_<`~-Oiz&*g)sAZdb-VlX3gIW0{W5bW`gSB5(Dd%ta{xuPr$Wevk4O#qgG2pfhBUKL zHj@d4H!zg(29rI#8Lw|3GeA~YkExOB_AW2kpUkA)9!J7l#FA)xXOe>=Vv`X9qdP;! zolUKRC2grryKV}?pa_Q8;^;>kkI}y53AdxiwL<`*q4eOc4f6s?m{&_(PIa8nx@hTj zsiAal2@@+;`2&Ys=mcE9sJxfX45VNo+G>s}H4TfPh2RJ(E)vnMDl|mE#qhsxuO{2U zV{=zA+MuLksQ!On8mk)BGj!uCD?)FmUZh$gmV?RfB-T;}np5K?yIik(sITv=*B)Cf zF$w4U%CldUkezD5!w>nePbt?J@$!Z7>{VqP4Ow3ujlP-RF1t{2rfw!sn-ae#YmY_4{GJ|Dx(G z`6N-q!G*x}%G(;OF{J3({OBuBBe4!8E>hIL{u5#v^L2T~HEPu`Uur#5h-Q{fM8&fB+c-jmyJ ztbHbe?T+8N8UI@q+@uV^!S;g}8wJNuWA>I{BNX1^_gyrU(s!vfb}PCElqMk&N;7CJ z3?tnOT93U5$tr18bRXy%m`d6Px>XKs(QEnl!A)$W*@I6co2e`s-}1Dr}bM z()MLw7B>Vk@<4NOdp52LoGp(iah=&ZRpe~(%bW)(EOd~fO5L?=qbhc`EMM;KUrW+B!K@J+KV}a9G*kSWBr)J_i%vXUCX-`Q#BNW+jZj{ z;>I!@FT;)0MX5QoeP=a@r;oW6;PZ@r)3^$kIr^@i&GK`X;n$f4V z47Zix17-MN0KaT}JTf&g==+!No z;tpA==X}oQTY7}67)%dvj={9Ry#HlRpN?Q%OrtKIS@sk$Tj@r5Q#s@Tz_OC~PKCOR zX|1jkm`-(hKzJ~XdO>w-jRWT{&K&e*)+?h$F69e2jx>$cLpLL1lj1MR+zf0?=J?0T z@RqXi+klNu?;0Ht_jC&bg|cXNa1(#2ntHm!REDPK2( zpAO)Ep0|0~xuFtG zp3g5Y{u~nBoheSY%UeVabU_Y<7s>lZx7&CD@@kMhI*L8W=t>vO#Gn`JU2Eu`+H0xU}OKvLQ;2dz0yrD>)`Si#Fi@6WM~p9ReDLUIEaZ(es4?R$ zh#7ANe-G)M)>M05Uq_~w)$BmUwwYj$l%&VYO9TRc5;=tVEDv;U=>fFL?kX0(>=vE* zd1Lu(c4oAIA7XT&dmrLT3!RQDW*!zYHk0*DwkH0INn%463p2^dFHH?YPz)~^1k~%i UpJJ(H@c#EgxJvzE#ZjOB4?~>nE&u=k delta 1734 zcmZ`(Uu;ul6hGg0d)u|Wx4m0e_NR2~Hn+BOl&u@hP?iWQhAwmk6m&5lb2+?!CdvCZbdfNQH`#azH z&N<&X=iWQ{n*;LH)s`%$KP=Vk(5ZJ<3$=X<0?rZBnKdNjWv$g1@BL`3W(O-rDvN~` z34yCsTR+ig7FMpcHYdc+*2A|f(Pw}J`s>wNdH=yWUJ{RuO%SA72TdND#7pw|=w%RE zWpN51(87Ciw`gNrdrsWI1?_anU}G>9#t9=}5e`Bp%v)j5gUjT0?^4VPg4B*2U3?Il z;ea?6$XA7_xK3vT=>=$N1qguaIC= z&8tavrNI78a202bkl9GwQHo_kINq7c&3A4~gI1c@U1xUeT{8le@x7X!H`*-;6 z)9x37_y30BjrQx0z8L$J3;6w;Gt?ZaFg^+vhHlkO)pr3-=MNC4-rLkro`jW6 zTnOa`cnl=CgYX8K@FZM9RoF`Rk%nvTo%8$2VKSOE3w(%#Eso-q=q&adIee|tG7V<~emYi# z_i@=s9@fbhXR+Sg4*^;^(+=0li;z_MClR-8;XOVc!)wM=rq}1;q|GA?5IHzso+?ci zm&^Mk{uND`8J|%De>2MR)j1rBrh1CLjl(vLE^)E6hxg2<_HfV~HF@w@INK%sB{q88 zpFiKuyR~$4vP6c|1oJUA{AX zQTE|YZ3VyX%;MREr6%0d9{8kd5N{bBah<+-j&Q&;c)V+F7muK4$nJOq{hUY8&v^hP zeiP{tH}OGNDeV=-OE^vYEX?1*`9!h85m-1TM;M`JzsKwrKH=j(+F?3DoouW&U+1Fk z-9e0ny&dy*&#axEbvw%=$tT`xCe^xiR$jtC6Vv$!yCCs$%Fr{PVqOh|K|AzHl{Jt4 E1-R09;Q#;t diff --git a/pwm.c b/pwm.c index 8b6729f..169b333 100644 --- a/pwm.c +++ b/pwm.c @@ -1,11 +1,14 @@ #include "pwm.h" +#include unsigned char pwm_val_right =0; unsigned char push_val_right=0; - unsigned char pwm_value=0; -extern uint model; +extern uint Seep_model; +extern struct UserInfo usr; +extern uchar model; +extern uint mileage; bit Right_moto_stop = 0; @@ -18,10 +21,20 @@ void delay(unsigned int k) void run(void) { - if(model == 0) pwm_value = 0; - else if(model == 1) pwm_value = 2; - else if(model == 2) pwm_value = 5; - else pwm_value = 10; + if(model){ + Seep_model = usr.Seep_model; + usr.Remaining_mileage = usr.target_mileage - mileage; + if(usr.Remaining_mileage < 0) usr.Remaining_mileage = 0; + if(usr.Remaining_mileage == 0) Seep_model = 0; + }else{ + usr.Remaining_mileage = 0; + } + + + if(Seep_model == 0) pwm_value = 0; + else if(Seep_model == 1) pwm_value = 2; + else if(Seep_model == 2) pwm_value = 5; + else pwm_value = 7; push_val_right=pwm_value; Right_moto_back; } @@ -32,19 +45,18 @@ void pwm_out_right_moto(void) if(~Right_moto_stop){ if(pwm_val_right <= push_val_right) { - Right_moto_pwm=1; + Right_moto_pwm=1; } - else - { + else{ Right_moto_pwm=0; } if(pwm_val_right>=20) pwm_val_right=0; } else{ - Right_moto_pwm=0; + Right_moto_pwm=0; } } - + diff --git a/pwm.h b/pwm.h index ed59d07..2cb931a 100644 --- a/pwm.h +++ b/pwm.h @@ -1,29 +1,32 @@ #ifndef _PWM_H #define _PWM_H - #include #include "IRIN.h" void delay(unsigned int k); -void run(void); -void backrun(void); -void leftrun(void); -void rightrun(void); +void run(void); +void backrun(void); +void leftrun(void); +void rightrun(void); void pwm_out_left_moto(void); void pwm_out_right_moto(void); +sbit IN1=P1^2; +sbit IN2=P1^3; - //СģIO -sbit IN1=P1^0; -sbit IN2=P1^1; sbit EN1=P3^4; -sbit Right_moto_pwm=P3^4; //PWMźŶ +sbit Right_moto_pwm=P1^7; +#define Right_moto_go {IN1=1,IN2=0;} +#define Right_moto_back {IN1=0,IN2=1;} +#define Right_moto_Stop {EN1=0; } -#define Right_moto_go {IN1=1,IN2=0;} //ұߵǰ -#define Right_moto_back {IN1=0,IN2=1;} //ұߵ -#define Right_moto_Stop {EN1=0;} //ұߵͣת +struct UserInfo{ + int Seep_model; + int target_mileage; + int Remaining_mileage; +}; #endif \ No newline at end of file