From 703eb18952ff137e665607830d00e559e178f94d Mon Sep 17 00:00:00 2001 From: htujun <134864016@qq.com> Date: Fri, 8 Apr 2022 03:22:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=A4=A7=E9=83=A8=E5=88=86?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRIN.LST | 319 ++++------- IRIN.OBJ | Bin 12994 -> 8490 bytes IRIN.c | 217 ++----- IRIN.h | 10 +- i2c.LST | 6 +- i2c.OBJ | Bin 5745 -> 5761 bytes i2c.__i | 1 - i2c.h | 1 + lcd.LST | 4 +- lcd.OBJ | Bin 5490 -> 5490 bytes main.LST | 342 +++++++---- main.OBJ | Bin 8004 -> 19961 bytes main.c | 223 ++++++-- pro | Bin 33855 -> 40466 bytes pro.M51 | 1392 ++++++++++++++++++++++++--------------------- pro.build_log.htm | 7 +- pro.hex | 597 ++++++++++++------- pro.uvgui.QY | 109 ++-- pro.uvopt | 6 +- pwm.LST | 172 ++---- pwm.OBJ | Bin 6593 -> 3898 bytes pwm.c | 128 +---- pwm.h | 21 +- 23 files changed, 1815 insertions(+), 1740 deletions(-) delete mode 100644 i2c.__i diff --git a/IRIN.LST b/IRIN.LST index eb1dc5f..5d82104 100644 --- a/IRIN.LST +++ b/IRIN.LST @@ -1,4 +1,4 @@ -C51 COMPILER V9.56.0.0 IRIN 04/06/2022 23:56:38 PAGE 1 +C51 COMPILER V9.56.0.0 IRIN 04/08/2022 03:09:39 PAGE 1 C51 COMPILER V9.56.0.0, COMPILATION OF MODULE IRIN @@ -10,223 +10,120 @@ line level source 1 #include "IRIN.h" 2 #include "i2c.h" 3 - 4 uint journey; - 5 uint journey1; - 6 extern uchar pwm_left; - 7 unsigned int b; - 8 unsigned int c; - 9 extern uint time1; - 10 extern uchar pwm_val_left; - 11 unsigned int b2; - 12 unsigned int c2; - 13 - 14 uint money=7; - 15 uint sudu=0; - 16 - 17 uint count=0; //栅格是一圈20个 - 18 - 19 uchar ms=0; - 20 uint speed=0; - 21 uint r_s=0; - 22 - 23 bit state=0; - 24 bit s0=0; - 25 bit flas=0; - 26 - 27 uchar sec=0; - 28 uchar sec1=0; - 29 - 30 /******************************************************************************* - 31 * 函 数 名 : delay - 32 * 函数功能 : 延时函数,i=1时,大约延时10us - 33 *******************************************************************************/ - 34 void delay11(int i) - 35 { - 36 1 while(i--); - 37 1 } - 38 - 39 void IRIN_Init(void) - 40 { - 41 1 TMOD=0x01 | 0x20 ;//定时器1工作方式1 - 42 1 TH0=0x3C; - 43 1 TL0=0xb0; - 44 1 ET0=1; - 45 1 TR0=1; - 46 1 EA=1; - 47 1 EX1=1; - 48 1 IT1=1; - 49 1 } - 50 - 51 void display() - 52 { - 53 1 if(state==0) - 54 1 { - 55 2 sudu=At24c02Read(10); - C51 COMPILER V9.56.0.0 IRIN 04/06/2022 23:56:38 PAGE 2 + 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; + 14 + 15 void delay11(int i) + 16 { + 17 1 while(i--); + 18 1 } + 19 + 20 void IRIN_Init(void) + 21 { + 22 1 TMOD=0x01 | 0x20; + 23 1 TH0=0XFc; + 24 1 TL0=0X18; + 25 1 ET0=1; + 26 1 TR0=1; + 27 1 EA=1; + 28 1 EX1=1; + 29 1 IT1=1; + 30 1 } + 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 - 56 2 if(money>7) - 57 2 { - 58 3 money=At24c02Read(5); - 59 3 } - 60 2 LcdSetCursor(0,0); - 61 2 LcdShowStr(0,0,"Speed:"); - 62 2 Lcd1602_Write_Data(0x30+sudu/100%10); - 63 2 Lcd1602_Write_Data(0x30+sudu/10%10); - 64 2 Lcd1602_Write_Data(0x30+sudu%10); - 65 2 LcdShowStr(10,0,"KM/h"); - 66 2 - 67 2 LcdShowStr(0,1,"L:"); - 68 2 Lcd1602_Write_Data(journey/10000%10+0x30); - 69 2 Lcd1602_Write_Data(journey/1000%10+0x30); - 70 2 Lcd1602_Write_Data(journey/100%10+0x30); - 71 2 Lcd1602_Write_Data(journey/10%10+0x30); - 72 2 Lcd1602_Write_Data(journey%10+0x30); - 73 2 LcdShowStr(7,1,"M"); - 74 2 - 75 2 if(journey>1000) - 76 2 { - 77 3 money=(journey-1000)*0.002+7; - 78 3 At24c02Write(5,money); - 79 3 } - 80 2 money=money*10; - 81 2 LcdShowStr(9,1,"Q:"); - 82 2 Lcd1602_Write_Data(money/1000%10+0x30); - 83 2 Lcd1602_Write_Data(money/100%10+0x30); - 84 2 Lcd1602_Write_Data(money/10%10+0x30); - 85 2 LcdShowStr(14,1,"."); - 86 2 Lcd1602_Write_Data(money%10+0x30); - 87 2 - 88 2 money=money/10; - 89 2 - 90 2 } - 91 1 } - 92 - 93 - 94 - 95 void keypros() - 96 { - 97 1 if(k2==0) - 98 1 { - 99 2 delay11(1000); //消抖处理 - 100 2 if(k2==0) - 101 2 { - 102 3 sudu=At24c02Read(10); //读取EEPROM地址1内的数据 - 103 3 - 104 3 b2=At24c02Read(1); - 105 3 c2=At24c02Read(8); - 106 3 journey=(b2<<8) | c2; - 107 3 - 108 3 money=At24c02Read(5); - 109 3 - 110 3 } - 111 2 while(!k2); - 112 2 } - 113 1 - 114 1 if(k1==0) - 115 1 { - 116 2 delay11(1000); //消抖处理 - 117 2 if(k1==0) - C51 COMPILER V9.56.0.0 IRIN 04/06/2022 23:56:38 PAGE 3 - - 118 2 { - 119 3 flas=1; - 120 3 - 121 3 } - 122 2 while(!k1); - 123 2 } - 124 1 if(k4==0) - 125 1 { - 126 2 delay11(1000); //消抖处理 - 127 2 if(k4==0) - 128 2 { - 129 3 if(pwm_left>=20) - 130 3 { - 131 4 pwm_left=1; - 132 4 } - 133 3 else - 134 3 { - 135 4 pwm_left++; - 136 4 } - 137 3 } - 138 2 while(!k4); - 139 2 } - 140 1 - 141 1 } - 142 - 143 void time0() interrupt 1 //定时器 0 - 144 { - 145 1 TH0=0x3C; - 146 1 TL0=0xb0; //50ms定时 - 147 1 ms++; //变量50ms加一 - 148 1 if(ms%5==0) s0=~s0; - 149 1 - 150 1 - 151 1 if(ms%10==0) //500ms定时 - 152 1 { - 153 2 - 154 2 if(sec!=0) sec--; - 155 2 if(sec1!=0) sec1--; - 156 2 ms=0; //清零变量 - 157 2 EX1=0; //关闭外部中断,保证变量在计算的时候不会增加 - 158 2 r_s=count; //因为是500ms检测一次转动数据,所以要想一秒转动的圈数是 speed=count*2 ,但是光栅是一圈2 - -0格,所以还要除以20; - 159 2 //综合一下,一秒转动的圈数就是 speed=count*2/20 ==》 speed=counr/10; - 160 2 count=0; //清零变量 - 161 2 EX1=1; //打开外部中断 - 162 2 speed=speed*0.5+(r_s*6)*0.5; // 这里r_s是一秒走的圈数,然后乘以60得到60秒走的圈数,单位变成了 - - r/min; 总方式 speed=count/10*60; ==>> speed=count*6; - 163 2 - 164 2 if(flas==0) - 165 2 { - 166 3 sudu=(0.15*speed); - 167 3 At24c02Write(10,sudu); - 168 3 - 169 3 journey=journey+(r_s*2.5/20); - 170 3 journey1=journey; - 171 3 c = journey & 0x00FF; - 172 3 At24c02Write(8,c); - 173 3 - 174 3 delay11(1000); - 175 3 b=journey1>>8; - 176 3 At24c02Write(1,b); - 177 3 } - C51 COMPILER V9.56.0.0 IRIN 04/06/2022 23:56:38 PAGE 4 - - 178 2 else - 179 2 { - 180 3 journey=0; - 181 3 money=7; - 182 3 At24c02Write(1,journey); - 183 3 At24c02Write(8,journey); - 184 3 At24c02Write(5,money); - 185 3 flas=0; - 186 3 } - 187 2 } - 188 1 } - 189 - 190 void int1() interrupt 2 //外部中断 1 - 191 { - 192 1 - 193 1 count++; //中断每触发一次,变量加一 - 194 1 - 195 1 } - 196 - 197 - 198 - 199 - 200 - 201 - 202 + 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 + 103 + 104 + 105 MODULE INFORMATION: STATIC OVERLAYABLE - CODE SIZE = 1006 ---- - CONSTANT SIZE = 22 ---- + CODE SIZE = 623 ---- + CONSTANT SIZE = 26 ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- - DATA SIZE = 25 ---- + DATA SIZE = 11 ---- IDATA SIZE = ---- ---- - BIT SIZE = 3 ---- + BIT SIZE = ---- ---- END OF MODULE INFORMATION. diff --git a/IRIN.OBJ b/IRIN.OBJ index 40129b815887e5863c3601e9ada8470bfb27318a..48dee80100ae4ee8ee807980b4d585211bfff2ef 100644 GIT binary patch literal 8490 zcmb_hdu*IX5ufk7@4GwOapE|SCh6ikrq7P_G3BTWdJ9lTh zsSsl0%)JRC=i;B%7_Nh6)6-W37>fDyDbW1joY;WDw z)YL*|Hz3WIdXm_aO>IkMObgs(dsFI2OQgEHz-K64K-mxoyfL{e+uhc>&5(TANT%7& zY%;-y$wt#37B|o#+L8#wM}m>HQfsE(mI*Y92C|n(w56@nuvP^<7fE$Xo6)X2xn*GS zuLZih;&*gnJx2DtYeU=d)cj-GaGf=CsR z&26pSnUo7%&B)DNBvzNO) z*VRF&@viSKquLU^q2-YU+Usg4- z%Lzjaltt}vIO=MFMNqp^XX>!bH?>Gh94%A)nrx~K8{5;-u`AmWyIA5i_AlnZex5TB zuZahJug7Z~&OIR^x2qA2PqER2#<$tH8q0f395>l&Eb05B!-YZ~ou|;b55v5ZY&276 ziCH@x7#K5q;QM_;;|Io!ftN;aEF8*?_Vpfs=({B3W#Et)6&61nB zhG^B}jwhapZ&lbuo>rV-Q`e!N-ZM`ebI=x;Is`L&Cd4(^dKGGJ|7tsKjU9K5rN7tK zo9wux9k<1f>#+2UrSCF&IP!j@harbGj zemFZ=M^tcLP*=%kEd734f7Oorx*hioJMJM%KWXXTH+n?mhenTx{0#ln?+Jtebjeeu z7WtJKS1-Rd9}D{ocNug&zI*7eZHKr^s|=!S3_SYFBNWLdm z0zNKR0X{2@fPauCz?Y;M@C~_I_TmuvdWfDfu|ltn1CbVlXsB{3e&o*|qvyv?E%f1_ z!!Xg4_jxbKeX`L%`>MPuji=s`$0m#8MVXXIXVRSvO?s35WOy<%t1blI7vr_KT@l;F^BB_S zMt%?0OC<=OYG|1KNm%+7ocxLVj&?DOKJnnV2>w29{(|=D2W>bDgW=)uBaySH&%XJ_ z>jzuV(1{Q?qj6dtoY$bPH8n3A&tz*sbaHShkS=mLe888N;q(FiF3Wd?sXaJ4`@?W@ z*1iPMDuQh#&W#QF*V}O$OpWXl^YMzrCgYwJxd}Bhmpz8=$}Of2nP^4&t(HEHn)l~H z)Xa?z+wr&C@kcCv)Z%ww9Qp6H{ESlM`W>Pr+ZW^7LOH=7ta;X zG~W`>Nr)cZZalFQFeY7qaoEU*z0-heq#N)C$pCJY9>C2ALq2$R0H$RpU`BQUepz+{ zoEgH~oPO;=6!Tj?$51l<-YC+&92WDf(_q z#CHdCSrUfxYvDt|MC(wq{Azm#{R(kEC^1yT+bZxka>1hJqzCr)k7Wmk#)h)pV?)C` zFSvLg8EsIg=zuOBng5gEaj{&-%z|K^Uk;o)g#?aZiZ1R_(;qB0t}?LsoR>1V7Ov~g z(z-kx)SyrXvuuV27R7P>m_mGhZkFK>XZd2@`ssIA4pn3!+flW1Hk)d0%Wlp37i2Uy zU5Rl**MRrYFW$ip*Bg%VCNBm~1vvR-xv0?@ueN{85TSm=hec4x!p(mV&`Q7AFb%(< z0{=>BisskeVT$Rl+FBukQzoY2TPpC0T#Zr3AH=cV|53~m90(o(k%@c(J4b~bzLHJR zgE-x7vs7sXAV9 zs^~o|s{KN=Rr_R)v4QbAn@(<7+XQFMF1errp()|%a1N;rc%7Zsmu3%EduJ&KddRth z!r9ZxvFp13n!_%#H=iGQWd@UOQ5Z>Zc^V%3*%f$c+P-Ehfww(XzoSCYD=Ij4Ym~Pi zBTj*DYQ$y+Kr=EM4vLzWawuEzcTdAtPs16()jbUOR; z-Tgx!=^h*TJX8y=)F4z1 zbWAUwWNWSU;I~T^G+ohcy%-WSsKxXQ9K6&@px4on?kt5xuVf8MpkwLkiPz^Anep}Q zefi)E`^dmpA)7$nnVI1L&zayu2hiMutDyt%fM}tC6juZCz-S>|ai#MBX(3&4rK|6A z4C#t1ouNky>540zp-2nqij%%WjdU{vZZC0a zrZ~5l^fs%u(iJED4;s)C+%LwGskvg=@6=(r<>^u`u(k2&5)U(Bk>jQOGK8O=`vxIzY9vr&UspDoHRLsaF}zvqO1C$41s$9^TTN=l0S( zQv-NLdGHI<>Z75E=@8+g*rSfNZesL01F-tgOiv*_O5gtodc zC+P-G9;Nr7t&`Sj=4pS_`Yh&|`h?efgFhGrh1<=Yj8))Vs(R*1^b?O;Iu}h`ucON> zuGf#^dfh0l`HAvtKBBl@KRRBo8^!f{QCv4!`SqkJt~avcJYg(~YxpKUD;NBDSN`ep f12ZfaghB_lqWiF@Bu1>a6L^ET+mVowd4Tx~A>YQJL>M|JnEc`2(!3 zSv`h*&Uf}X`|PvNKF|Bx^P-%ps+m__GNrD$ZrQB%DJ6|fvATx3YopUIpV`tBjn>X6 zS=ijTvL#wl8(rACxTJC6HPM<_bX6?6thOXpy|86^#SD>4Uuj5W8VTS#G6yij6&R3T z|NP_{7jy<>!WG}Fm{dD|&C-sp4e^`jtwGak>Nd5n>FroQuY48?g!VQh!W-I?OlN<1 za!t7BmW@o0{{ZQ(iuPHZUj{NIMB(2QzL=jQB2^+e5)}D6MMXs4%|9WI@K5rku(GMS zGF}_4uU=hVUdhSv#KuePqG3H1yoD%q7aMwOQ6;w%YJ z=tPvNbydrj5OadaSy*T4JwNeRg3gE(#p`Qo%P%dfh_7s}i$&wL)v;<*J&%l*Xso8S zxuvl=z{0ul>R83xnzD-KXmxEM2mzT*D;whV(M7QU`Y3tIH=+VzWaStsOW+Ez=0FBA zpm}9$U2WZp06HUCK#OXsTViz>9+$bOsiCz#kd;E!wY7n4i&%0|fTI^d#X1(uO%;U9 zm(R&^(EAA@p_XV(Ig;aHpBlu)h!-L*5(zZ4AW;Z&G{>3BXX)13RwVPF!ZnSp&C8;z zSsAi}kb@Ky2-h^WE{h=zMZ*n^C<3d(DxpR7)h(`p!!5DuSQKgK6lf_!S@bwiQ-K7s z0t=Zyjj)*^NV6ZdIhqEt>M+tY8wwd`pd=KsE&~rEvaZGIuwcpwF~TUGss8#w0Ss(B z{-vq3n7Fg4W_sjYq3K(CIy#c`Wog6gPN|gh$u_|3R=Oj|%@o z2L5`pR-057DnMr#K3_0wh_eNTL|h~VCJqSApCyGdK{A|d)S6^sk@HL(kZ&1&u1q%Z z1UX)c8YYBu;&nA}%hra5)$z)bbEP!L{*^eA0l)4l%_(*Bz9_xhp{_e57-%X(;vf@q zV1*aN2}G-n#lw*sy9atVb!;)FEs5OJv8AWCyU&bFINV30ARUr$Ai?3vK%%_@B91`B zP31@&W`a3~n3!uu+X?iQ85eNEef@3y9Y_bn39Z}E)H4 z7<;@2^M**vE5S!OKV{ww0of`GTqP_ph39^G(#>1&61g*IdTbT9;Q(Mb73}Up_G9Z zNx4*_#c;aC!h&oG=uCb$^0`A>mYIeIv&V`Ih}k~5ftFJx*V_Wyuv0H+huSD{b|NU~y@y%68;qN{e?>R9x z^Vop7+O@$f6f?ZPP7hLY$Ee&hjRdurQk~TXPj%PA5ZpN^pJ9Crxx1`5Nay1}#s%mP z<186(;!LcSZn?=8!@~`K2J$)QW?>R=fyX>I@jT>neqV0N<;#2%7f2QIIcFE!co||q zS#Ha<*mA2af31zz+j2MBavN;9Ud!KN`L`K8BC^Bi5s|x)Pd)zD@L(@< z4V?#?A(t9@8E65fMNrO_D-4|vI!&%L^eWJcp85^d6@L zbgvTwea&eFea~3|`Y+BZ(9fJ}4ZTjvu#1Fs7kSHUDfXy%FtPy~p-9PLE{-LKE7H5l zpo1KIBsPqnyCM^hQ&5`0J7*Ijnsoa7@aMd|h(r9HK*GPRN@N7gvP`#Myxn zD?9Y{l=7^jXfDL#m*ir;&|%#5E8nhP1z5k_{E24%gmCubya-E)&BuNXoFNyOI3m+6 z|00_|)5KigST2I~&7D_sZT-s(&a~@WmMpaTEU{9TVl!T$}pc#?`&5{m7*MSyEC+PX`jF4O?H-eT6ZGWX~GPE0Xf%F)PB@&*~ zXJ|iYEyf`PZ@JmfTR`iutCMa8t%skH-U`|%+YP-9v{?p0TV;o#w}Y;cordlLjmsUN zZCq|a?*?s$r;^@d=x)$;ScFOMmDR?BtkXOf;rfFk7q-(ZE?GDRBjb~TObNL6k)4rV zhgn0%hfWUd8rnHDJTNRnn8HJWq2N$xC_I!g6mgGGVYt)4$?zQ~PWA*2nRGVNYk8D9 zA!`HUEQKS!vHwmH{2__IWBcuvodIV%knvoE8$EXSFE&>qp=}(%{yu^+92^b|JHy=l z@yAWpJxyuBZI5kzbj!re3(|ZX5O^}u0z5#Jm;(e;Pj0RT&)?eUMpBw10fC%Q_~S%E zSCGNEwxiVTnV}JzX$vFb$?gpqjtplEhlfMj#PIO&&f#6dCx?$$e3bQ_fV;^T*~w9a z&hhXdQem9FNUnl&ho#x6G&mP46DLP5rZwXU@F+K4YT_cSX2jWcvo92Pv(J&3$sa42 zB!-VG9^xFi!Ni5K*7D)`W|M)Bo6QTpYc{W)h97_rvR;t>XZYW>{KpY^ z9^<9R<`Vq*d!kY zEtl_uF2IS6^fAy{c^vc_`2lEy{1CJeLmkFq^(5$Z8169E-Myec#(!biFHal#6VSKh z8PE@9A83}dA2c7sAC_^>0nqcD=Rv>iya0NEa}e|r=S9%j&P#?K2A$^|0lm`s8R$ai zWzah370@QQYQ4?Awya zaiitrwR3Udb}+7Rbv#OSCENPj!kZ24Aq^SQ-kt0ScbMEx(r4PnnAcofaritntNjvW z@I@E*Ws}kQ>$WN8RW~4KdDmUomM47K4T$@;yAhbLyTImscLy+Ec!A9u?}v#zY+87^ ziknBVCCl4gj4YFXUviv@0~isWP#8`j+>t0Y`D5xk*7e6XcK3J36K(A`{qBs_!+2tF z1FN?sxL1nsHKqY|a1erv;Z%#f+mlfs*br!(Tg5aXzZ-G+LU*2L`?^dgJR{c zOS4UV#Z}0s{7xTVvGTioe8tM&;NvSM|D!}MTEGq$=iC002heRo2FB?*6gK8#K23JJ zjzv6PS5XsR5)YrTA{RtAu;LDN47^~zhdO8S%&R?hXoH!+I(|8cOrsoLX#YG)gib*G zTHzDX3(P)I4T{78Z3N!x!M{&6QSqmvY}jZZqG0>Ke$*tSH(DB!HRI@P+{+q+UbO9)4DH_&#?T4VK9e{l`l$+l#& zSKT1JQ0fq6n6-xuu^BFux(2z;<`_lYUn4f4Y3@lh1x=q`?;V^x-N0Jp&I4o_;)_-J z#2hQ(bn7agt{7AT*HJY#B_0G;i2{k_Iql_Vk?5bM&-x@D@JNhUvvPH3D|dJX;v!%M zYId#mrHhWrHHN#g-x^a)`E+0CxU@Yb%vSH?&o93irT(2}b>SX}pFT`rB^rQ>zt{1dTGD1)K~-fIp~)VN(KYt`;t$aX~j_(DKvziRNSDAaFiGn`*(5wdh4A9RLVaX z_}SM4l{d2ek!Q4))Kb-+Z0YR2rKP|3d+5sP4*?;*x2FP|)(wl9oP3I_fyrmAfqccv zuTdsq@)aw;&c|1*{N+BrV&%8`_=?FNNblxYr?Ez!95se|lnxo^q%7KWr|x0V>O53A z(`J5!ZCi(dr#|)ZJoQNP8)*lmj66`EFiRb0nt!k_hZM&uLJRX)rBaC-e0Z6!d=s$O zqnmyF79WoJ@CqMZ1?-i_W0qH+BR>3!r~X?ylQ*Al?MO-N-Ce1jE`;A0-9S6i*6M@A zV-pih`LXrwN%sSf-md?l{*OCJ3R%`tIx>emc5DN8;G}4b=+I- zuGA$nh@T$Zz-hvsaM$rp%m+Mpk1mD0_439$1A@6CrEk3M4TFL*e1dNWrkS;&T^_+K ze>X5YMgCiQHpgchqp#?CiwWYX*9|I@=JG24Lmz(1gZJqb-d=21a!GhN+ikX)}h-|&+VSKg)&w^V4axO!MBx1Q|*jCbxd-rq=xrmVAYjim#n|kM4xvKXZ52jw1S*&{S zM#!L87ePLIvAo{VODtZ1n1P!N`FgogTty~=;%XO431XJ7@nOB(X!)q+E9MMmP|O+5 zpm>Q3Q@GCJ62xpzk7L}CiS^E}e7(G=ycU#WP#kk%3hSFd3Gyj#g@?a0fiHZ3)896) z9W_$!b0tS=jIF67#gS$pUaJc&KbZb(l)LNE*TMhN;0De*I`J)l-Wl{`V5+42S3UgB O5WdRh?}9Ay+W!G>M)_(0 diff --git a/IRIN.c b/IRIN.c index cbe9c07..ba8e76f 100644 --- a/IRIN.c +++ b/IRIN.c @@ -1,36 +1,17 @@ #include "IRIN.h" #include "i2c.h" -uint journey; -uint journey1; -extern uchar pwm_left; -unsigned int b; -unsigned int c; -extern uint time1; -extern uchar pwm_val_left; -unsigned int b2; -unsigned int c2; +uint mileage = 0; -uint money=7; -uint sudu=0; - -uint count=0; //栅格是一圈20个 +uint count=0; uchar ms=0; uint speed=0; uint r_s=0; -bit state=0; -bit s0=0; -bit flas=0; - -uchar sec=0; -uchar sec1=0; +extern uint model; +extern uchar set; -/******************************************************************************* -* 函 数 名 : delay -* 函数功能 : 延时函数,i=1时,大约延时10us -*******************************************************************************/ void delay11(int i) { while(i--); @@ -38,9 +19,9 @@ void delay11(int i) void IRIN_Init(void) { - TMOD=0x01 | 0x20 ;//定时器1工作方式1 - TH0=0x3C; - TL0=0xb0; + TMOD=0x01 | 0x20; + TH0=0XFc; + TL0=0X18; ET0=1; TR0=1; EA=1; @@ -49,150 +30,72 @@ void IRIN_Init(void) } void display() - { - if(state==0) - { - sudu=At24c02Read(10); - if(money>7) - { - money=At24c02Read(5); - } - LcdSetCursor(0,0); - LcdShowStr(0,0,"Speed:"); - Lcd1602_Write_Data(0x30+sudu/100%10); - Lcd1602_Write_Data(0x30+sudu/10%10); - Lcd1602_Write_Data(0x30+sudu%10); - LcdShowStr(10,0,"KM/h"); - - LcdShowStr(0,1,"L:"); - Lcd1602_Write_Data(journey/10000%10+0x30); - Lcd1602_Write_Data(journey/1000%10+0x30); - Lcd1602_Write_Data(journey/100%10+0x30); - Lcd1602_Write_Data(journey/10%10+0x30); - Lcd1602_Write_Data(journey%10+0x30); - LcdShowStr(7,1,"M"); - - if(journey>1000) - { - money=(journey-1000)*0.002+7; - At24c02Write(5,money); - } - money=money*10; - LcdShowStr(9,1,"Q:"); - Lcd1602_Write_Data(money/1000%10+0x30); - Lcd1602_Write_Data(money/100%10+0x30); - Lcd1602_Write_Data(money/10%10+0x30); - LcdShowStr(14,1,"."); - Lcd1602_Write_Data(money%10+0x30); - - money=money/10; - - } - } - - - - void keypros() - { - if(k2==0) - { - delay11(1000); //消抖处理 - if(k2==0) - { - sudu=At24c02Read(10); //读取EEPROM地址1内的数据 - - b2=At24c02Read(1); - c2=At24c02Read(8); - journey=(b2<<8) | c2; - - money=At24c02Read(5); - - } - while(!k2); - } +{ + LcdSetCursor(0,0); + LcdShowStr(0,0,""); + Lcd1602_Write_Data(0x30+speed/100%10); + Lcd1602_Write_Data(0x30+speed/10%10); + Lcd1602_Write_Data(0x30+speed%10); + LcdShowStr(3,0,"KM/h "); + + LcdShowStr(8,0,""); + Lcd1602_Write_Data(0x30+mileage/100%10); + Lcd1602_Write_Data(0x30+mileage/10%10); + Lcd1602_Write_Data(0x30+mileage%10); + LcdShowStr(11,0,"m "); + if(model == 0) LcdShowStr(13,0," "); + else if(model == 1) LcdShowStr(13, 0, "L"); + else if(model == 2) LcdShowStr(13, 0, "M"); + else LcdShowStr(13, 0, "H"); +} + + +void Key_scan(){ if(k1==0) { delay11(1000); //消抖处理 - if(k1==0) - { - flas=1; - + if(k1==0){ + model++; + if(model >= 4) model = 0; } while(!k1); } - if(k4==0) + + if(k2==0) { delay11(1000); //消抖处理 - if(k4==0) - { - if(pwm_left>=20) - { - pwm_left=1; - } - else - { - pwm_left++; - } + if(k2==0){ + set = 1; } - while(!k4); + while(!k2); } - - } - - void time0() interrupt 1 //定时器 0 - { - TH0=0x3C; - TL0=0xb0; //50ms定时 - ms++; //变量50ms加一 - if(ms%5==0) s0=~s0; - - - if(ms%10==0) //500ms定时 - { - - if(sec!=0) sec--; - if(sec1!=0) sec1--; - ms=0; //清零变量 - EX1=0; //关闭外部中断,保证变量在计算的时候不会增加 - r_s=count; //因为是500ms检测一次转动数据,所以要想一秒转动的圈数是 speed=count*2 ,但是光栅是一圈20格,所以还要除以20; - //综合一下,一秒转动的圈数就是 speed=count*2/20 ==》 speed=counr/10; - count=0; //清零变量 - EX1=1; //打开外部中断 - speed=speed*0.5+(r_s*6)*0.5; // 这里r_s是一秒走的圈数,然后乘以60得到60秒走的圈数,单位变成了 r/min; 总方式 speed=count/10*60; ==>> speed=count*6; - - if(flas==0) - { - sudu=(0.15*speed); - At24c02Write(10,sudu); - - journey=journey+(r_s*2.5/20); - journey1=journey; - c = journey & 0x00FF; - At24c02Write(8,c); - - delay11(1000); - b=journey1>>8; - At24c02Write(1,b); - } - else - { - journey=0; - money=7; - At24c02Write(1,journey); - At24c02Write(8,journey); - At24c02Write(5,money); - flas=0; - } + +} + +void time0() interrupt 1 +{ + static int time = 0; + TH0=0XFc; + TL0=0X18; + time++; + pwm_out_right_moto(); + if(time >= 500){ + EX1=0; + time = 0; + r_s=count; + count=0; + EX1=1; + speed=speed*0.5+(r_s*6)*0.5; + speed=(0.15*speed); + mileage = mileage+(r_s*2.5/20); } } - -void int1() interrupt 2 //外部中断 1 - { - - count++; //中断每触发一次,变量加一 - - } + +void int1() interrupt 2 +{ + count++; +} diff --git a/IRIN.h b/IRIN.h index 63cdba0..6084823 100644 --- a/IRIN.h +++ b/IRIN.h @@ -5,19 +5,13 @@ #include "lcd.h" #include "pwm.h" -sbit k1=P3^5; -sbit k2=P3^4; -sbit k3=P3^3; -sbit k4=P3^2; //定义按键端口 +sbit k1=P3^5; +sbit k2=P3^2; void IRIN_Init(void); void display(); - -void keypros(); - - #endif diff --git a/i2c.LST b/i2c.LST index 4ac1725..c195677 100644 --- a/i2c.LST +++ b/i2c.LST @@ -1,4 +1,4 @@ -C51 COMPILER V9.56.0.0 I2C 04/06/2022 22:40:09 PAGE 1 +C51 COMPILER V9.56.0.0 I2C 04/08/2022 02:58:55 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/06/2022 22:40:09 PAGE 2 + C51 COMPILER V9.56.0.0 I2C 04/08/2022 02:58:55 PAGE 2 56 * 输入 : num 57 * 输出 : 0或1。发送成功返回1,发送失败返回0 @@ -126,7 +126,7 @@ line level source 115 1 } 116 117 - C51 COMPILER V9.56.0.0 I2C 04/06/2022 22:40:09 PAGE 3 + C51 COMPILER V9.56.0.0 I2C 04/08/2022 02:58:55 PAGE 3 118 /******************************************************************************* 119 * 函数名 : void At24c02Write(unsigned char addr,unsigned char dat) diff --git a/i2c.OBJ b/i2c.OBJ index 7d34f9d4c782deedf4b3d91c56a5703254cff3aa..ea099e0f96c714741629478b317a1c3e9ba1bd81 100644 GIT binary patch delta 110 zcmeyU)2KVaO)lTWKZ!llC|S?n$%~P}eVK0(D~OlO#E`1&pENN=o$>v~9$!u|5RZug zESIq_QHepq@?RJe!^8sV$y{72qOMFT3=9m63``9CKpF&2h52qa<}zerJia-VhldLQ Dl4lzV delta 94 zcmZqF{irj+P0n+fZxVZ^QL>)DlNTd{JCMf;;w3XNh@JWnGciS-anr^gUrsR)kBI>+ qmvK5#i9y2hUlxR&qM%F-UsCX delta 19 bcmeyQ^+{`j8?);o--(`1jNTi2o{0beQbGsi diff --git a/main.LST b/main.LST index 7856a53..e728d25 100644 --- a/main.LST +++ b/main.LST @@ -1,4 +1,4 @@ -C51 COMPILER V9.56.0.0 MAIN 04/06/2022 23:54:42 PAGE 1 +C51 COMPILER V9.56.0.0 MAIN 04/08/2022 03:21:37 PAGE 1 C51 COMPILER V9.56.0.0, COMPILATION OF MODULE MAIN @@ -13,135 +13,235 @@ line level source 4 #include "pwm.h" 5 #include "i2c.h" 6 #include "IRIN.h" - 7 - 8 unsigned char PuZh[]=" Pechin Science "; - 9 extern uint journey; - 10 extern uint money; - 11 extern uchar sudu; - 12 unsigned int b12; - 13 unsigned int c12; - 14 - 15 - 16 unsigned int b123; - 17 unsigned int c123; - 18 extern unsigned char pwm_left; - 19 unsigned char code ASCII[15] = {'0','1','2','3','4','5','6','7','8','9','.','-','M'}; - 20 - 21 void delayms(unsigned int ms) - 22 { - 23 1 unsigned char i=100,j; - 24 1 for(;ms;ms--) - 25 1 { - 26 2 while(--i) - 27 2 { - 28 3 j=10; - 29 3 while(--j); - 30 3 } - 31 2 } - 32 1 } + 7 #include + 8 #include + 9 # include + 10 + 11 #define uint unsigned int + 12 #define uchar unsigned char + 13 + 14 typedef unsigned char uint8; + 15 typedef unsigned int uint16; + 16 + 17 extern uint mileage; + 18 extern uint speed; + 19 + 20 uint 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; 33 - 34 void Uart_Init() //使用定时器1作为波特率发生器(STC89C52、STC89C51、AT89C51 - -等均可) - 35 { - 36 1 TMOD = 0x20 | 0x01; - 37 1 - 38 1 SCON = 0x50; //设置串行方式 - 39 1 - 40 1 TH1 = 0xFD; //波特率9600 - 41 1 - 42 1 TL1 = TH1; - 43 1 - 44 1 PCON = 0x00; - 45 1 - 46 1 EA = 1; //总中断打开 - 47 1 - 48 1 ES = 1; //开串口中断 - 49 1 - 50 1 TR1 = 1; //启动定时器1 - 51 1 - 52 1 } - 53 - 54 void us_delay(uchar t) - C51 COMPILER V9.56.0.0 MAIN 04/06/2022 23:54:42 PAGE 2 - + 34 struct UserInfo usr; + 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 - 56 { - 57 1 - 58 1 while(t--); - 59 1 - 60 1 } - 61 - 62 void Send_Uart(uchar value) - 63 - 64 { - 65 1 - 66 1 ES=0; //关闭串口中断 - 67 1 - 68 1 TI=0; //清发送完毕中断请求标志位 - 69 1 - 70 1 SBUF=value; //发送 - 71 1 - 72 1 while(TI==0); //等待发送完毕 - 73 1 - 74 1 TI=0; //清发送完毕中断请求标志位 - 75 1 - 76 1 ES=1; //允许串口中断 - 77 1 - 78 1 } - 79 - 80 void ESP8266_Set(uchar *puf) // 数组指针*puf指向字符串数组 - 81 - 82 { - 83 1 - 84 1 while(*puf!='\0') //遇到空格跳出循环 - 85 1 - 86 1 { - 87 2 - 88 2 Send_Uart(*puf); //向WIFI模块发送控制指令。 - 89 2 - 90 2 us_delay(5); - 91 2 - 92 2 puf++; - 93 2 - 94 2 } - 95 1 - 96 1 } - 97 - 98 void main(void) - 99 { - 100 1 int i = 0; - 101 1 InitLcd1602(); - 102 1 IRIN_Init(); - 103 1 Uart_Init(); - 104 1 pwm_left=10; - 105 1 b12=At24c02Read(1); - 106 1 c12=At24c02Read(8); - 107 1 money = 120; - 108 1 money=At24c02Read(5); - 109 1 journey = (b12<<8)|c12; - 110 1 - 111 1 while(1) - 112 1 { - 113 2 run(); - 114 2 ESP8266_Set("1111\r\n"); - 115 2 display(); - 116 2 keypros(); - C51 COMPILER V9.56.0.0 MAIN 04/06/2022 23:54:42 PAGE 3 + C51 COMPILER V9.56.0.0 MAIN 04/08/2022 03:21:37 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 + + 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 - 117 2 Delay10us(); -*** WARNING C206 IN LINE 117 OF main.c: 'Delay10us': missing function-prototype - 118 2 } - 119 1 } + 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; //MCU接收wifi模块反馈回来的数据 + - + 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 } MODULE INFORMATION: STATIC OVERLAYABLE - CODE SIZE = 179 ---- - CONSTANT SIZE = 22 ---- + CODE SIZE = 1000 ---- + CONSTANT SIZE = 57 ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- - DATA SIZE = 25 2 + DATA SIZE = 53 6 IDATA SIZE = ---- ---- - BIT SIZE = ---- ---- + BIT SIZE = 1 ---- END OF MODULE INFORMATION. diff --git a/main.OBJ b/main.OBJ index 37bddce441ef3470813d06eb9d3050940e15c24e..1481027842c8802aa50c0fe68e65cdec754cc803 100644 GIT binary patch literal 19961 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 Zy1~B@^f15sLijgve4mLwTSOK={2yMGK*Rt5 literal 8004 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 +#include +# include -unsigned char PuZh[]=" Pechin Science "; -extern uint journey; -extern uint money; -extern uchar sudu; -unsigned int b12; -unsigned int c12; +#define uint unsigned int +#define uchar unsigned char +typedef unsigned char uint8; +typedef unsigned int uint16; -unsigned int b123; -unsigned int c123; -extern unsigned char pwm_left; -unsigned char code ASCII[15] = {'0','1','2','3','4','5','6','7','8','9','.','-','M'}; +extern uint mileage; +extern uint speed; + +uint model = 0; + +extern unsigned char pwm_value; + + +struct UserInfo{ + int height; + int weight; + int target_mileage; + int target_speed; +}; + +uchar set = 0; + +struct UserInfo usr; + +/*****************相关变量**************/ + +uchar Receive; +uchar Recive_table[40]; //用于接收wifi模块反馈到MCU上的数据 + +bit accept = 0; void delayms(unsigned int ms) { @@ -31,89 +53,164 @@ void delayms(unsigned int ms) } } -void Uart_Init() //使用定时器1作为波特率发生器(STC89C52、STC89C51、AT89C51等均可) +void Uart_Init() { - TMOD = 0x20 | 0x01; - - SCON = 0x50; //设置串行方式 - - TH1 = 0xFD; //波特率9600 - - TL1 = TH1; - - PCON = 0x00; - - EA = 1; //总中断打开 - - ES = 1; //开串口中断 - - TR1 = 1; //启动定时器1 - + TMOD = 0x20 | 0x01; + SCON = 0x50; + TH1 = 0xFD; + TL1 = TH1; + PCON = 0x00; + EA = 1; + ES = 1; + TR1 = 1; } void us_delay(uchar t) - { - - while(t--); - + while(t--); } void Send_Uart(uchar value) - { + ES=0; + TI=0; + SBUF=value; + while(TI==0); + TI=0; + ES=1; +} - ES=0; //关闭串口中断 - - TI=0; //清发送完毕中断请求标志位 - - SBUF=value; //发送 - - while(TI==0); //等待发送完毕 - - TI=0; //清发送完毕中断请求标志位 +void Bluetooth_Set(uchar *puf) +{ + while(*puf!='\0') + { + Send_Uart(*puf); + us_delay(5); + puf++; + } +} - ES=1; //允许串口中断 -} +void saveUserInfo(){ + int target = 0; + target = usr.height >> 8; + At24c02Write(3, target); + delayms(2); + target = (usr.height) & 0x00ff; + At24c02Write(4, target); + delayms(2); + target = (usr.weight) >> 8; + At24c02Write(5, target); + delayms(2); + target = (usr.weight) & 0x00ff; + At24c02Write(6, target); + delayms(2); +} -void ESP8266_Set(uchar *puf) // 数组指针*puf指向字符串数组 -{ +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); + Bluetooth_Set(Recive_table); + }else if(strstr(Recive_table, "set:") != NULL){ + target1 = strstr(Recive_table, "(") - Recive_table; + target2 = strstr(Recive_table, ",") - Recive_table; + usr.height = 0; + for(i = target1 + 1; i < target2; i++){ + usr.height = usr.height * 10 + (*(Recive_table + i) - 0x30); + } + Bluetooth_Set(Recive_table); + target1 = strstr(Recive_table, ",") - Recive_table; + target2 = strstr(Recive_table, ")") - Recive_table; + usr.weight = 0; + for(i = target1 + 1; i < target2; i++){ + usr.weight = usr.weight * 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 ; + saveUserInfo(); + } + memset(Recive_table, 0, sizeof(Recive_table)); + accept = 0; + } +} - while(*puf!='\0') //遇到空格跳出循环 +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); + } +} - { - Send_Uart(*puf); //向WIFI模块发送控制指令。 - - us_delay(5); - puf++; - } +void WriteData(){ + int target = mileage >> 8; + At24c02Write(1, target); + delayms(2); + target = mileage & 0x00ff; + At24c02Write(2, target); + delayms(2); } void main(void) { - int i = 0; InitLcd1602(); IRIN_Init(); Uart_Init(); - pwm_left=10; - b12=At24c02Read(1); - c12=At24c02Read(8); - money = 120; - money=At24c02Read(5); - journey = (b12<<8)|c12; - + ReadData(); while(1) { run(); - ESP8266_Set("1111\r\n"); display(); - keypros(); - Delay10us(); + Key_scan(); + Bluetooth_Accept(); + WriteData(); } +} + +void Uart_Interrupt() interrupt 4 +{ + static uchar i=0; + if( accept) return; + if(RI==1) { + RI=0; + Receive=SBUF; //MCU接收wifi模块反馈回来的数据 + Recive_table[i]=Receive; + if((Recive_table[i]=='\r')){ + i=0; + accept = 1; + } + else i++; //遇到换行 重新装值 + } + else TI=0; } \ No newline at end of file diff --git a/pro b/pro index ff04325c961cb4eb92ccc92ff2d93f673c38672e..48401671ed85679048002a8741f50352b3aa511b 100644 GIT binary patch literal 40466 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 XuO119aFAbAeI7KF{`1!y*S7y3P(3h* diff --git a/pro.M51 b/pro.M51 index 3d3f809..e85444d 100644 --- a/pro.M51 +++ b/pro.M51 @@ -1,4 +1,4 @@ -BL51 BANKED LINKER/LOCATER V6.22 04/06/2022 23:56:38 PAGE 1 +BL51 BANKED LINKER/LOCATER V6.22 04/08/2022 03:21:38 PAGE 1 BL51 BANKED LINKER/LOCATER V6.22, INVOKED BY: @@ -19,12 +19,24 @@ INPUT MODULES INCLUDED: D:\KEIL_V5\C51\LIB\C51FPS.LIB (?C?FPDIV) D:\KEIL_V5\C51\LIB\C51FPS.LIB (?C?FCAST) D:\KEIL_V5\C51\LIB\C51FPS.LIB (?C?CASTF) + D:\KEIL_V5\C51\LIB\C51FPS.LIB (PRINTF) D:\KEIL_V5\C51\LIB\C51FPS.LIB (?C?FPGETOPN) + D:\KEIL_V5\C51\LIB\C51FPS.LIB (?C?FPROUND) + D:\KEIL_V5\C51\LIB\C51FPS.LIB (?C?FPCONVERT) + D:\KEIL_V5\C51\LIB\C51FPS.LIB (?C?FTNPWR) D:\KEIL_V5\C51\LIB\C51S.LIB (?C_STARTUP) D:\KEIL_V5\C51\LIB\C51S.LIB (?C?CLDPTR) + D:\KEIL_V5\C51\LIB\C51S.LIB (?C?CLDOPTR) + D:\KEIL_V5\C51\LIB\C51S.LIB (?C?CSTPTR) D:\KEIL_V5\C51\LIB\C51S.LIB (?C?IMUL) D:\KEIL_V5\C51\LIB\C51S.LIB (?C?UIDIV) + D:\KEIL_V5\C51\LIB\C51S.LIB (?C?SIDIV) D:\KEIL_V5\C51\LIB\C51S.LIB (?C?LNEG) + D:\KEIL_V5\C51\LIB\C51S.LIB (?C?PLDIIDATA) + D:\KEIL_V5\C51\LIB\C51S.LIB (?C?CCASE) + D:\KEIL_V5\C51\LIB\C51S.LIB (PUTCHAR) + D:\KEIL_V5\C51\LIB\C51S.LIB (STRSTR) + D:\KEIL_V5\C51\LIB\C51S.LIB (?C?MEMSET) D:\KEIL_V5\C51\LIB\C51S.LIB (?C_INIT) @@ -36,15 +48,19 @@ LINK MAP OF MODULE: pro (MAIN) * * * * * * * D A T A M E M O R Y * * * * * * * REG 0000H 0008H ABSOLUTE "REG BANK 0" - DATA 0008H 0007H UNIT ?DT?PWM - DATA 000FH 0005H UNIT _DATA_GROUP_ - 0014H 000CH *** GAP *** - BIT 0020H.0 0000H.3 UNIT ?BI?IRIN - BIT 0020H.3 0000H.2 UNIT ?BI?PWM - 0020H.5 0000H.3 *** GAP *** - DATA 0021H 0019H UNIT ?DT?MAIN - DATA 003AH 0019H UNIT ?DT?IRIN - IDATA 0053H 0001H UNIT ?STACK + DATA 0008H 000BH UNIT ?DT?IRIN + DATA 0013H 0003H UNIT ?DT?PWM + 0016H 000AH *** GAP *** + BIT 0020H.0 0001H.1 UNIT _BIT_GROUP_ + BIT 0021H.1 0000H.1 UNIT ?BI?MAIN + BIT 0021H.2 0000H.1 UNIT ?BI?PWM + 0021H.3 0000H.5 *** GAP *** + DATA 0022H 0035H UNIT ?DT?MAIN + DATA 0057H 0022H UNIT _DATA_GROUP_ + IDATA 0079H 0001H UNIT ?STACK + + BL51 BANKED LINKER/LOCATER V6.22 04/08/2022 03:21:38 PAGE 2 + * * * * * * * C O D E M E M O R Y * * * * * * * CODE 0000H 0003H ABSOLUTE @@ -53,145 +69,159 @@ LINK MAP OF MODULE: pro (MAIN) CODE 000BH 0003H ABSOLUTE 000EH 0005H *** GAP *** CODE 0013H 0003H ABSOLUTE - 0016H 0005H *** GAP *** - CODE 001BH 0003H ABSOLUTE - CODE 001EH 03EBH UNIT ?C?LIB_CODE - CODE 0409H 01EAH UNIT ?PR?DISPLAY?IRIN - CODE 05F3H 016DH UNIT ?PR?TIME0?IRIN - CODE 0760H 008CH UNIT ?C_C51STARTUP - BL51 BANKED LINKER/LOCATER V6.22 04/06/2022 23:56:38 PAGE 2 - - - CODE 07ECH 0067H UNIT ?PR?KEYPROS?IRIN - CODE 0853H 0056H UNIT ?PR?MAIN?MAIN - CODE 08A9H 004EH UNIT ?C_INITSEG - CODE 08F7H 0041H UNIT ?PR?_I2CSENDBYTE?I2C - CODE 0938H 0028H UNIT ?PR?_LCDSHOWSTR?LCD - CODE 0960H 0026H UNIT ?PR?I2CREADBYTE?I2C - CODE 0986H 0022H UNIT ?PR?_AT24C02READ?I2C - CODE 09A8H 0020H UNIT ?PR?_DELAY?PWM - CODE 09C8H 001EH UNIT ?PR?PWM_OUT_LEFT_MOTO?PWM - CODE 09E6H 001EH UNIT ?PR?PWM_OUT_RIGHT_MOTO?PWM - CODE 0A04H 001DH UNIT ?PR?_DISPLAYONECHAR?LCD - CODE 0A21H 001CH UNIT ?PR?TIMER1?PWM - CODE 0A3DH 001AH UNIT ?PR?_DELAYMS?MAIN - CODE 0A57H 0019H UNIT ?PR?_AT24C02WRITE?I2C - CODE 0A70H 0018H UNIT ?PR?_ESP8266_SET?MAIN - CODE 0A88H 0016H UNIT ?PR?UART_INIT?MAIN - CODE 0A9EH 0016H UNIT ?CO?MAIN - CODE 0AB4H 0016H UNIT ?CO?IRIN - CODE 0ACAH 0014H UNIT ?PR?INITLCD1602?LCD - CODE 0ADEH 0014H UNIT ?PR?IRIN_INIT?IRIN - CODE 0AF2H 0012H UNIT ?PR?READ_BUSY?LCD - CODE 0B04H 0012H UNIT ?PR?_LCDSETCURSOR?LCD - CODE 0B16H 0010H UNIT ?PR?_LCD1602_WRITE_CMD?LCD - CODE 0B26H 0010H UNIT ?PR?_LCD1602_WRITE_DATA?LCD - CODE 0B36H 000FH UNIT ?PR?RUN?PWM - CODE 0B45H 000FH UNIT ?PR?BACKRUN?PWM - CODE 0B54H 000FH UNIT ?PR?I2CSTART?I2C - CODE 0B63H 000FH UNIT ?PR?_DELAY11?IRIN - CODE 0B72H 000EH UNIT ?PR?_SEND_UART?MAIN - CODE 0B80H 000EH UNIT ?PR?DELAY10US?I2C - CODE 0B8EH 000DH UNIT ?PR?INT1?IRIN - CODE 0B9BH 000BH UNIT ?PR?LEFTRUN?PWM - CODE 0BA6H 000BH UNIT ?PR?RIGHTRUN?PWM - CODE 0BB1H 000AH UNIT ?PR?I2CSTOP?I2C + CODE 0016H 000DH UNIT ?PR?INT1?IRIN + CODE 0023H 0003H ABSOLUTE + CODE 0026H 0664H UNIT ?C?LIB_CODE + CODE 068AH 046FH UNIT ?PR?PRINTF?PRINTF + CODE 0AF9H 0215H UNIT ?PR?BLUETOOTH_ACCEPT?MAIN + CODE 0D0EH 010EH UNIT ?PR?TIME0?IRIN + CODE 0E1CH 00FBH UNIT ?PR?DISPLAY?IRIN + CODE 0F17H 00B6H UNIT ?PR?READDATA?MAIN + CODE 0FCDH 008CH UNIT ?C_C51STARTUP + CODE 1059H 0082H UNIT ?PR?_STRSTR?STRSTR + CODE 10DBH 0042H UNIT ?PR?SAVEUSERINFO?MAIN + CODE 111DH 0041H UNIT ?PR?_I2CSENDBYTE?I2C + CODE 115EH 003AH UNIT ?PR?KEY_SCAN?IRIN + CODE 1198H 0039H UNIT ?CO?MAIN + CODE 11D1H 0038H UNIT ?PR?UART_INTERRUPT?MAIN + CODE 1209H 002FH UNIT ?C_INITSEG + CODE 1238H 002FH UNIT ?PR?RUN?PWM + CODE 1267H 0028H UNIT ?PR?_LCDSHOWSTR?LCD + CODE 128FH 0027H UNIT ?PR?PUTCHAR?PUTCHAR + CODE 12B6H 0026H UNIT ?PR?I2CREADBYTE?I2C + CODE 12DCH 0022H UNIT ?PR?_AT24C02READ?I2C + CODE 12FEH 0021H UNIT ?PR?PWM_OUT_RIGHT_MOTO?PWM + CODE 131FH 0020H UNIT ?PR?_DELAY?PWM + CODE 133FH 001FH UNIT ?PR?WRITEDATA?MAIN + CODE 135EH 001EH UNIT ?PR?_DELAYMS?MAIN + CODE 137CH 001EH UNIT ?PR?_BLUETOOTH_SET?MAIN + CODE 139AH 001DH UNIT ?PR?MAIN?MAIN + CODE 13B7H 001DH UNIT ?PR?_DISPLAYONECHAR?LCD + CODE 13D4H 001AH UNIT ?CO?IRIN + CODE 13EEH 0019H UNIT ?PR?_AT24C02WRITE?I2C + CODE 1407H 0016H UNIT ?PR?UART_INIT?MAIN + CODE 141DH 0014H UNIT ?PR?INITLCD1602?LCD + CODE 1431H 0014H UNIT ?PR?IRIN_INIT?IRIN + CODE 1445H 0012H UNIT ?PR?READ_BUSY?LCD + CODE 1457H 0012H UNIT ?PR?_LCDSETCURSOR?LCD + CODE 1469H 0010H UNIT ?PR?_LCD1602_WRITE_CMD?LCD + CODE 1479H 0010H UNIT ?PR?_LCD1602_WRITE_DATA?LCD + CODE 1489H 000FH UNIT ?PR?I2CSTART?I2C + CODE 1498H 000EH UNIT ?PR?_SEND_UART?MAIN + CODE 14A6H 000EH UNIT ?PR?DELAY10US?I2C + CODE 14B4H 000BH UNIT ?PR?_DELAY11?IRIN + CODE 14BFH 000AH UNIT ?PR?I2CSTOP?I2C OVERLAY MAP OF MODULE: pro (MAIN) -SEGMENT DATA_GROUP - +--> CALLED SEGMENT START LENGTH ---------------------------------------------------- -?PR?TIMER1?PWM ----- ----- - +--> ?PR?PWM_OUT_RIGHT_MOTO?PWM - -*** NEW ROOT *************************************************** - -?PR?TIME0?IRIN ----- ----- - +--> ?PR?_AT24C02WRITE?I2C - +--> ?PR?_DELAY11?IRIN - -?PR?_AT24C02WRITE?I2C ----- ----- - +--> ?PR?I2CSTART?I2C - +--> ?PR?_I2CSENDBYTE?I2C - +--> ?PR?I2CSTOP?I2C - - BL51 BANKED LINKER/LOCATER V6.22 04/06/2022 23:56:38 PAGE 3 +SEGMENT BIT_GROUP DATA_GROUP + +--> CALLED SEGMENT START LENGTH START LENGTH + BL51 BANKED LINKER/LOCATER V6.22 04/08/2022 03:21:38 PAGE 3 -?PR?I2CSTART?I2C ----- ----- - +--> ?PR?DELAY10US?I2C - -?PR?_I2CSENDBYTE?I2C ----- ----- - +--> ?PR?DELAY10US?I2C - -?PR?I2CSTOP?I2C ----- ----- - +--> ?PR?DELAY10US?I2C +----------------------------------------------------------------------- +?PR?TIME0?IRIN ----- ----- ----- ----- + +--> ?PR?PWM_OUT_RIGHT_MOTO?PWM *** NEW ROOT *************************************************** -?C_C51STARTUP ----- ----- +?C_C51STARTUP ----- ----- ----- ----- +--> ?PR?MAIN?MAIN +--> ?C_INITSEG -?PR?MAIN?MAIN 000FH 0002H +?PR?MAIN?MAIN ----- ----- ----- ----- +--> ?PR?INITLCD1602?LCD +--> ?PR?IRIN_INIT?IRIN +--> ?PR?UART_INIT?MAIN - +--> ?PR?_AT24C02READ?I2C + +--> ?PR?READDATA?MAIN +--> ?PR?RUN?PWM - +--> ?CO?MAIN - +--> ?PR?_ESP8266_SET?MAIN +--> ?PR?DISPLAY?IRIN - +--> ?PR?KEYPROS?IRIN - +--> ?PR?DELAY10US?I2C + +--> ?PR?KEY_SCAN?IRIN + +--> ?PR?BLUETOOTH_ACCEPT?MAIN + +--> ?PR?WRITEDATA?MAIN -?PR?INITLCD1602?LCD ----- ----- +?PR?INITLCD1602?LCD ----- ----- ----- ----- +--> ?PR?_LCD1602_WRITE_CMD?LCD -?PR?_LCD1602_WRITE_CMD?LCD ----- ----- +?PR?_LCD1602_WRITE_CMD?LCD ----- ----- ----- ----- +--> ?PR?READ_BUSY?LCD -?PR?_AT24C02READ?I2C ----- ----- +?PR?READDATA?MAIN ----- ----- ----- ----- + +--> ?PR?_AT24C02READ?I2C + +--> ?PR?_AT24C02WRITE?I2C + +--> ?PR?_DELAYMS?MAIN + +?PR?_AT24C02READ?I2C ----- ----- ----- ----- +--> ?PR?I2CSTART?I2C +--> ?PR?_I2CSENDBYTE?I2C +--> ?PR?I2CREADBYTE?I2C +--> ?PR?I2CSTOP?I2C -?PR?I2CREADBYTE?I2C ----- ----- +?PR?I2CSTART?I2C ----- ----- ----- ----- +--> ?PR?DELAY10US?I2C -?PR?_ESP8266_SET?MAIN ----- ----- - +--> ?PR?_SEND_UART?MAIN - +--> ?PR?_US_DELAY?MAIN +?PR?_I2CSENDBYTE?I2C ----- ----- ----- ----- + +--> ?PR?DELAY10US?I2C -?PR?DISPLAY?IRIN ----- ----- - +--> ?PR?_AT24C02READ?I2C +?PR?I2CREADBYTE?I2C ----- ----- ----- ----- + +--> ?PR?DELAY10US?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 + + +--> ?CO?IRIN +--> ?PR?_LCDSHOWSTR?LCD +--> ?PR?_LCD1602_WRITE_DATA?LCD - +--> ?PR?_AT24C02WRITE?I2C -?PR?_LCDSETCURSOR?LCD ----- ----- +?PR?_LCDSETCURSOR?LCD ----- ----- ----- ----- +--> ?PR?_LCD1602_WRITE_CMD?LCD - BL51 BANKED LINKER/LOCATER V6.22 04/06/2022 23:56:38 PAGE 4 - - -?PR?_LCDSHOWSTR?LCD 0011H 0003H +?PR?_LCDSHOWSTR?LCD ----- ----- 0057H 0003H +--> ?PR?_LCDSETCURSOR?LCD +--> ?PR?_LCD1602_WRITE_DATA?LCD -?PR?_LCD1602_WRITE_DATA?LCD ----- ----- +?PR?_LCD1602_WRITE_DATA?LCD ----- ----- ----- ----- +--> ?PR?READ_BUSY?LCD -?PR?KEYPROS?IRIN ----- ----- +?PR?KEY_SCAN?IRIN ----- ----- ----- ----- +--> ?PR?_DELAY11?IRIN - +--> ?PR?_AT24C02READ?I2C + +?PR?BLUETOOTH_ACCEPT?MAIN ----- ----- 0057H 0006H + +--> ?CO?MAIN + +--> ?PR?_STRSTR?STRSTR + +--> ?PR?PRINTF?PRINTF + +--> ?PR?_BLUETOOTH_SET?MAIN + +--> ?PR?SAVEUSERINFO?MAIN + +?PR?_STRSTR?STRSTR ----- ----- 005DH 000CH + +?PR?PRINTF?PRINTF 0020H.0 0001H.1 005DH 001CH + +--> ?PR?PUTCHAR?PUTCHAR + +?PR?_BLUETOOTH_SET?MAIN ----- ----- ----- ----- + +--> ?PR?_SEND_UART?MAIN + +--> ?PR?_US_DELAY?MAIN + +?PR?SAVEUSERINFO?MAIN ----- ----- ----- ----- + +--> ?PR?_AT24C02WRITE?I2C + +--> ?PR?_DELAYMS?MAIN + +?PR?WRITEDATA?MAIN ----- ----- ----- ----- + +--> ?PR?_AT24C02WRITE?I2C + +--> ?PR?_DELAYMS?MAIN @@ -203,180 +233,305 @@ 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 B:00A8H.7 PUBLIC EA - D:0021H PUBLIC PuZh - C:0B72H PUBLIC _Send_Uart - C:0A88H PUBLIC Uart_Init + 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 B:00A8H.4 PUBLIC ES + B:0098H.0 PUBLIC RI B:0098H.1 PUBLIC TI - C:0853H PUBLIC main + C:139AH PUBLIC main D:0099H PUBLIC SBUF D:0087H PUBLIC PCON D:0098H PUBLIC SCON D:0089H PUBLIC TMOD - D:0032H PUBLIC b12 - D:0034H PUBLIC c12 + D:0025H PUBLIC Receive + C:1382H PUBLIC _Bluetooth_Set + D:0026H PUBLIC Recive_table + D:004EH PUBLIC set D:008DH PUBLIC TH1 - C:0A70H PUBLIC _ESP8266_Set D:008BH PUBLIC TL1 + C:11D1H PUBLIC Uart_Interrupt B:0088H.6 PUBLIC TR1 C:0003H PUBLIC _us_delay - C:0AA5H PUBLIC ASCII - C:0A3DH PUBLIC _delayms - D:0036H PUBLIC b123 - D:0038H PUBLIC c123 + D:004FH PUBLIC usr + C:10DBH PUBLIC saveUserInfo + C:0AF9H PUBLIC Bluetooth_Accept + C:1362H 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 ------- PROC _DELAYMS D:0006H SYMBOL ms ------- DO D:0004H SYMBOL i D:0005H SYMBOL j ------- ENDDO - C:0A3DH LINE# 21 - C:0A3DH LINE# 22 - C:0A3DH LINE# 23 - C:0A3FH LINE# 24 - C:0A43H LINE# 25 - C:0A43H LINE# 26 - C:0A47H LINE# 27 - BL51 BANKED LINKER/LOCATER V6.22 04/06/2022 23:56:38 PAGE 5 - - - C:0A47H LINE# 28 - C:0A49H LINE# 29 - C:0A4FH LINE# 31 - C:0A56H LINE# 32 + 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 ------- ENDPROC _DELAYMS ------- PROC UART_INIT - C:0A88H LINE# 34 - C:0A88H LINE# 35 - C:0A88H LINE# 36 - C:0A8BH LINE# 38 - C:0A8EH LINE# 40 - C:0A91H LINE# 42 - C:0A94H LINE# 44 - C:0A97H LINE# 46 - C:0A99H LINE# 48 - C:0A9BH LINE# 50 - C:0A9DH LINE# 52 + 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 ------- ENDPROC UART_INIT ------- PROC _US_DELAY D:0007H SYMBOL t - C:0003H LINE# 54 - C:0003H LINE# 56 - C:0003H LINE# 58 - C:0009H LINE# 60 + C:0003H LINE# 68 + C:0003H LINE# 69 + C:0003H LINE# 70 + C:0009H LINE# 71 ------- ENDPROC _US_DELAY ------- PROC _SEND_UART D:0007H SYMBOL value - C:0B72H LINE# 62 - C:0B72H LINE# 64 - C:0B72H LINE# 66 - C:0B74H LINE# 68 - C:0B76H LINE# 70 - C:0B78H LINE# 72 - C:0B7BH LINE# 74 - C:0B7DH LINE# 76 - C:0B7FH LINE# 78 + 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 ------- ENDPROC _SEND_UART - ------- PROC _ESP8266_SET + C:137CH SYMBOL L?0052 + ------- PROC L?0051 + ------- ENDPROC L?0051 + C:137CH SYMBOL L?0052 + ------- PROC _BLUETOOTH_SET D:0001H SYMBOL puf - C:0A70H LINE# 80 - C:0A70H LINE# 82 - C:0A70H LINE# 84 - C:0A76H LINE# 86 - C:0A76H LINE# 88 - C:0A79H LINE# 90 - C:0A7EH LINE# 92 - C:0A85H LINE# 94 - C:0A87H LINE# 96 - ------- ENDPROC _ESP8266_SET - ------- PROC MAIN + 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 + ------- 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 + ------- 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 + ------- 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 + ------- 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 + ------- ENDPROC READDATA + ------- PROC WRITEDATA ------- DO - D:000FH SYMBOL i + D:0006H SYMBOL target ------- ENDDO - C:0853H LINE# 98 - C:0853H LINE# 99 - C:0853H LINE# 100 - C:0858H LINE# 101 - BL51 BANKED LINKER/LOCATER V6.22 04/06/2022 23:56:38 PAGE 6 - - - C:085BH LINE# 102 - C:085EH LINE# 103 - C:0861H LINE# 104 - C:0864H LINE# 105 - C:086EH LINE# 106 - C:0878H LINE# 107 - C:087EH LINE# 108 - C:0888H LINE# 109 - C:0892H LINE# 111 - C:0892H LINE# 112 - C:0892H LINE# 113 - C:0895H LINE# 114 - C:089EH LINE# 115 - C:08A1H LINE# 116 - C:08A4H LINE# 117 - C:08A7H LINE# 118 + 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 + ------- 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 ------- 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 + ------- ENDPROC UART_INTERRUPT ------- ENDMOD MAIN ------- MODULE LCD C:0000H SYMBOL _ICE_DUMMY_ - C:0A04H PUBLIC _DisplayOneChar + C:13B7H PUBLIC _DisplayOneChar + BL51 BANKED LINKER/LOCATER V6.22 04/08/2022 03:21:38 PAGE 9 + + D:0080H PUBLIC P0 D:00A0H PUBLIC P2 - C:0AF2H PUBLIC Read_Busy + C:1445H PUBLIC Read_Busy B:0080H.5 PUBLIC LCD1602_EN B:0080H.7 PUBLIC LCD1602_RS B:0080H.6 PUBLIC LCD1602_RW - C:0B26H PUBLIC _Lcd1602_Write_Data - C:0B16H PUBLIC _Lcd1602_Write_Cmd - C:0B04H PUBLIC _LcdSetCursor - C:0938H PUBLIC _LcdShowStr - C:0ACAH PUBLIC InitLcd1602 + 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 ------- DO D:0007H SYMBOL sta ------- ENDDO - C:0AF2H LINE# 4 - C:0AF2H LINE# 5 - C:0AF2H LINE# 7 - C:0AF5H LINE# 8 - C:0AF7H LINE# 9 - C:0AF9H LINE# 11 - C:0AF9H LINE# 12 - C:0AFBH LINE# 13 - C:0AFDH LINE# 14 - C:0AFFH LINE# 15 - C:0B03H LINE# 16 + 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:0B16H LINE# 18 - C:0B18H LINE# 19 - C:0B18H LINE# 20 - C:0B1BH LINE# 21 - C:0B1DH LINE# 22 - C:0B1FH LINE# 23 - BL51 BANKED LINKER/LOCATER V6.22 04/06/2022 23:56:38 PAGE 7 - - - C:0B21H LINE# 24 - C:0B23H LINE# 25 - C:0B25H LINE# 26 + 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:0B26H LINE# 28 - C:0B28H LINE# 29 - C:0B28H LINE# 30 - C:0B2BH LINE# 31 - C:0B2DH LINE# 32 - C:0B2FH LINE# 33 - C:0B31H LINE# 34 - C:0B33H LINE# 35 - C:0B35H LINE# 36 + 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 @@ -384,234 +539,165 @@ SYMBOL TABLE OF MODULE: pro (MAIN) ------- DO D:0004H SYMBOL addr ------- ENDDO - C:0B04H LINE# 38 - C:0B04H LINE# 39 - C:0B04H LINE# 41 - C:0B07H LINE# 42 - C:0B0BH LINE# 44 - C:0B0FH LINE# 46 + 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:0A04H LINE# 50 - C:0A08H LINE# 51 - C:0A08H LINE# 52 - C:0A0BH LINE# 53 - C:0A0EH LINE# 54 - C:0A14H LINE# 55 - C:0A17H LINE# 56 - C:0A1CH LINE# 57 + 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:0011H SYMBOL str - C:0938H LINE# 61 - C:093EH LINE# 62 - C:093EH LINE# 63 - C:0941H LINE# 64 - C:094CH LINE# 65 - C:094CH LINE# 66 - C:095DH LINE# 67 - C:095FH LINE# 68 + 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:0ACAH LINE# 70 - BL51 BANKED LINKER/LOCATER V6.22 04/06/2022 23:56:38 PAGE 8 - - - C:0ACAH LINE# 71 - C:0ACAH LINE# 72 - C:0ACFH LINE# 73 - C:0AD4H LINE# 74 - C:0AD9H LINE# 75 + 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 ------- ENDMOD LCD ------- MODULE PWM C:0000H SYMBOL _ICE_DUMMY_ D:0080H PUBLIC P0 + D:0090H PUBLIC P1 D:00B0H PUBLIC P3 - C:0B9BH PUBLIC leftrun - D:0008H PUBLIC pwm_val_left - C:09A8H PUBLIC _delay - C:09E6H PUBLIC pwm_out_right_moto - C:09C8H PUBLIC pwm_out_left_moto - B:0080H.4 PUBLIC IN1 - B:0080H.5 PUBLIC IN2 - B:0080H.6 PUBLIC IN3 - B:0080H.7 PUBLIC IN4 - B:0020H.3 PUBLIC Right_moto_stop - D:008DH PUBLIC TH1 - D:008BH PUBLIC TL1 - C:0A21H PUBLIC timer1 - C:0B36H PUBLIC run - B:0020H.4 PUBLIC Left_moto_stop + C:131FH PUBLIC _delay + C:12FEH PUBLIC pwm_out_right_moto + B:0090H.0 PUBLIC IN1 + B:0090H.1 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 - D:0009H PUBLIC time1 - D:000BH PUBLIC pwm_left - B:00B0H.5 PUBLIC Left_moto_pwm - D:000CH PUBLIC push_val_right - C:0B45H PUBLIC backrun - D:000DH PUBLIC push_val_left - C:0BA6H PUBLIC rightrun - D:000EH PUBLIC pwm_val_right + 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 ------- DO D:0004H SYMBOL x D:0002H SYMBOL y ------- ENDDO - C:09A8H LINE# 18 - C:09A8H LINE# 19 - C:09A8H LINE# 21 - C:09B2H LINE# 22 - C:09C7H LINE# 23 + C:131FH LINE# 12 + C:131FH LINE# 13 + C:131FH LINE# 15 + C:1329H LINE# 16 + C:133EH LINE# 17 ------- ENDPROC _DELAY ------- PROC RUN - C:0B36H LINE# 26 - C:0B36H LINE# 27 - C:0B36H LINE# 28 - C:0B39H LINE# 29 - C:0B3CH LINE# 30 - C:0B40H LINE# 31 - C:0B44H LINE# 32 + 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 ------- ENDPROC RUN - BL51 BANKED LINKER/LOCATER V6.22 04/06/2022 23:56:38 PAGE 9 - - - ------- PROC BACKRUN - C:0B45H LINE# 34 - C:0B45H LINE# 35 - C:0B45H LINE# 36 - C:0B48H LINE# 37 - C:0B4BH LINE# 38 - C:0B4FH LINE# 39 - C:0B53H LINE# 40 - ------- ENDPROC BACKRUN - ------- PROC LEFTRUN - C:0B9BH LINE# 44 - C:0B9BH LINE# 45 - C:0B9BH LINE# 46 - C:0B9EH LINE# 47 - C:0BA1H LINE# 48 - C:0BA5H LINE# 49 - ------- ENDPROC LEFTRUN - ------- PROC RIGHTRUN - C:0BA6H LINE# 53 - C:0BA6H LINE# 54 - C:0BA6H LINE# 55 - C:0BA9H LINE# 56 - C:0BACH LINE# 57 - C:0BB0H LINE# 58 - ------- ENDPROC RIGHTRUN - ------- PROC PWM_OUT_LEFT_MOTO - C:09C8H LINE# 61 - C:09C8H LINE# 62 - C:09C8H LINE# 63 - C:09CBH LINE# 64 - C:09CBH LINE# 65 - C:09D2H LINE# 66 - C:09D2H LINE# 67 - C:09D4H LINE# 68 - C:09D6H LINE# 70 - C:09D6H LINE# 71 - C:09D8H LINE# 72 - C:09D8H LINE# 73 - C:09DFH LINE# 74 - C:09E2H LINE# 75 - C:09E3H LINE# 77 - C:09E3H LINE# 78 - C:09E5H LINE# 79 - C:09E5H LINE# 80 - ------- ENDPROC PWM_OUT_LEFT_MOTO ------- PROC PWM_OUT_RIGHT_MOTO - C:09E6H LINE# 83 - C:09E6H LINE# 84 - C:09E6H LINE# 85 - C:09E9H LINE# 86 - C:09E9H LINE# 87 - C:09F0H LINE# 88 - C:09F0H LINE# 89 - C:09F2H LINE# 90 - C:09F4H LINE# 92 - C:09F4H LINE# 93 - C:09F6H LINE# 94 - BL51 BANKED LINKER/LOCATER V6.22 04/06/2022 23:56:38 PAGE 10 - - - C:09F6H LINE# 95 - C:09FDH LINE# 96 - C:0A00H LINE# 97 - C:0A01H LINE# 99 - C:0A01H LINE# 100 - C:0A03H LINE# 101 - C:0A03H LINE# 102 + 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 ------- ENDPROC PWM_OUT_RIGHT_MOTO - ------- PROC TIMER1 - C:0A21H LINE# 104 - C:0A25H LINE# 106 - C:0A28H LINE# 107 - C:0A2BH LINE# 108 - C:0A33H LINE# 110 - C:0A35H LINE# 112 - C:0A38H LINE# 113 - ------- ENDPROC TIMER1 ------- ENDMOD PWM ------- MODULE I2C C:0000H SYMBOL _ICE_DUMMY_ D:0080H PUBLIC P0 - C:08F7H PUBLIC _I2cSendByte - C:0BB1H PUBLIC I2cStop - C:0B85H PUBLIC Delay10us + C:111DH PUBLIC _I2cSendByte + C:14BFH PUBLIC I2cStop + C:14ABH PUBLIC Delay10us B:0080H.0 PUBLIC SDA - C:0986H PUBLIC _At24c02Read + C:12DCH PUBLIC _At24c02Read B:0080H.1 PUBLIC SCL - C:0B54H PUBLIC I2cStart - C:0A57H PUBLIC _At24c02Write - C:0960H PUBLIC I2cReadByte - C:0B80H SYMBOL L?0024 + 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 ------- PROC L?0023 ------- ENDPROC L?0023 - C:0B80H SYMBOL L?0024 + C:14A6H SYMBOL L?0024 ------- PROC DELAY10US ------- DO D:0006H SYMBOL a D:0007H SYMBOL b ------- ENDDO - C:0B85H LINE# 10 - C:0B85H LINE# 11 - C:0B85H LINE# 13 - C:0B87H LINE# 14 - C:0B8DH LINE# 16 + C:14ABH LINE# 10 + C:14ABH LINE# 11 + C:14ABH LINE# 13 + C:14ADH LINE# 14 + C:14B3H LINE# 16 ------- ENDPROC DELAY10US ------- PROC I2CSTART - C:0B54H LINE# 25 - C:0B54H LINE# 26 - C:0B54H LINE# 27 - C:0B56H LINE# 28 - C:0B56H LINE# 29 - C:0B56H LINE# 30 - C:0B59H LINE# 31 - C:0B5BH LINE# 32 - C:0B5EH LINE# 33 - C:0B60H LINE# 34 - BL51 BANKED LINKER/LOCATER V6.22 04/06/2022 23:56:38 PAGE 11 - - + 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 ------- ENDPROC I2CSTART ------- PROC I2CSTOP - C:0BB1H LINE# 44 - C:0BB1H LINE# 45 - C:0BB1H LINE# 46 - C:0BB3H LINE# 47 - C:0BB3H LINE# 48 - C:0BB3H LINE# 49 - C:0BB6H LINE# 50 - C:0BB8H LINE# 51 + 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 ------- ENDPROC I2CSTOP ------- PROC _I2CSENDBYTE D:0005H SYMBOL dat @@ -619,332 +705,310 @@ SYMBOL TABLE OF MODULE: pro (MAIN) D:0003H SYMBOL a D:0002H SYMBOL b ------- ENDDO - C:08F7H LINE# 61 - C:08F9H LINE# 62 - C:08F9H LINE# 63 - C:08FCH LINE# 64 - C:08FCH LINE# 65 - C:08FCH LINE# 66 - C:0907H LINE# 67 - C:090BH LINE# 68 - C:090BH LINE# 69 - C:090BH LINE# 70 - C:090EH LINE# 71 - C:0910H LINE# 72 - C:0913H LINE# 73 - C:0917H LINE# 74 - C:0919H LINE# 75 - C:091CH LINE# 76 - C:091EH LINE# 77 - C:0921H LINE# 78 - C:0921H LINE# 79 - C:0922H LINE# 80 - C:0928H LINE# 81 - C:0928H LINE# 82 - C:092AH LINE# 83 - C:092DH LINE# 84 - C:0930H LINE# 85 - C:0930H LINE# 86 - C:0930H LINE# 87 - C:0932H LINE# 88 - C:0935H LINE# 89 - C:0937H LINE# 90 + 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 ------- ENDPROC _I2CSENDBYTE ------- PROC I2CREADBYTE ------- DO D:0005H SYMBOL a D:0004H SYMBOL dat ------- ENDDO - C:0960H LINE# 99 - C:0960H LINE# 100 - C:0960H LINE# 101 - C:0963H LINE# 102 - BL51 BANKED LINKER/LOCATER V6.22 04/06/2022 23:56:38 PAGE 12 - - - C:0965H LINE# 103 - C:0968H LINE# 104 - C:0968H LINE# 105 - C:0968H LINE# 106 - C:096AH LINE# 107 - C:096DH LINE# 108 - C:0971H LINE# 109 - C:0977H LINE# 110 - C:097AH LINE# 111 - C:097CH LINE# 112 - C:097FH LINE# 113 - C:0983H LINE# 114 - C:0985H LINE# 115 + 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 ------- ENDPROC I2CREADBYTE ------- PROC _AT24C02WRITE D:0001H SYMBOL addr D:0004H SYMBOL dat - C:0A57H LINE# 125 - C:0A5BH LINE# 126 - C:0A5BH LINE# 127 - C:0A5EH LINE# 128 - C:0A63H LINE# 129 - C:0A68H LINE# 130 - C:0A6DH LINE# 131 + 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 ------- ENDPROC _AT24C02WRITE ------- PROC _AT24C02READ D:0004H SYMBOL addr ------- DO D:0005H SYMBOL num ------- ENDDO - C:0986H LINE# 140 - C:0988H LINE# 141 - C:0988H LINE# 143 - C:098BH LINE# 144 - C:0990H LINE# 145 - C:0995H LINE# 146 - C:0998H LINE# 147 - C:099DH LINE# 148 - C:09A2H LINE# 149 - C:09A5H LINE# 150 - C:09A7H LINE# 151 + 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 ------- 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:003AH PUBLIC journey - C:07ECH PUBLIC keypros - D:003CH PUBLIC speed - D:003EH PUBLIC b2 - D:0040H PUBLIC c2 + D:000AH PUBLIC speed B:00B0H.5 PUBLIC k1 - B:00B0H.4 PUBLIC k2 - B:00B0H.2 PUBLIC k4 - BL51 BANKED LINKER/LOCATER V6.22 04/06/2022 23:56:38 PAGE 13 - - - B:0020H.0 PUBLIC s0 - B:0020H.1 PUBLIC state - B:0020H.2 PUBLIC flas - C:0ADEH PUBLIC IRIN_Init - D:0042H PUBLIC money - D:0044H PUBLIC count + B:00B0H.2 PUBLIC k2 + C:1431H PUBLIC IRIN_Init + D:000CH PUBLIC count + C:115EH PUBLIC Key_scan D:0089H PUBLIC TMOD - D:0046H PUBLIC sec - D:0047H PUBLIC journey1 - D:0049H PUBLIC sudu - D:004BH PUBLIC r_s + D:000EH PUBLIC r_s B:00A8H.1 PUBLIC ET0 D:008CH PUBLIC TH0 B:00A8H.2 PUBLIC EX1 B:0088H.2 PUBLIC IT1 D:008AH PUBLIC TL0 B:0088H.4 PUBLIC TR0 - D:004DH PUBLIC ms - C:05F3H PUBLIC time0 - D:004EH PUBLIC b - D:0050H PUBLIC c - D:0052H PUBLIC sec1 - C:0B67H PUBLIC _delay11 - C:0409H PUBLIC display - C:0B8EH PUBLIC int1 - C:0B63H SYMBOL L?0035 - ------- PROC L?0034 - ------- ENDPROC L?0034 - C:0B63H SYMBOL L?0035 + D:0010H PUBLIC mileage + D:0012H PUBLIC ms + C:0D0EH PUBLIC time0 + C:14B4H PUBLIC _delay11 + C:0E1CH PUBLIC display + C:0016H PUBLIC int1 ------- PROC _DELAY11 D:0006H SYMBOL i - C:0B67H LINE# 34 - C:0B67H LINE# 35 - C:0B67H LINE# 36 - C:0B71H LINE# 37 + C:14B4H LINE# 15 + C:14B4H LINE# 16 + C:14B4H LINE# 17 + C:14BEH LINE# 18 ------- ENDPROC _DELAY11 ------- PROC IRIN_INIT - C:0ADEH LINE# 39 - C:0ADEH LINE# 40 - C:0ADEH LINE# 41 - C:0AE1H LINE# 42 - C:0AE4H LINE# 43 - C:0AE7H LINE# 44 - C:0AE9H LINE# 45 - C:0AEBH LINE# 46 - C:0AEDH LINE# 47 - C:0AEFH LINE# 48 - C:0AF1H LINE# 49 + 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 ------- ENDPROC IRIN_INIT ------- PROC DISPLAY - C:0409H LINE# 51 - C:0409H LINE# 52 - C:0409H LINE# 53 - C:040FH LINE# 54 - C:040FH LINE# 55 - C:0419H LINE# 56 - C:0424H LINE# 57 - BL51 BANKED LINKER/LOCATER V6.22 04/06/2022 23:56:38 PAGE 14 - - - C:0424H LINE# 58 - C:042EH LINE# 59 - C:042EH LINE# 60 - C:0434H LINE# 61 - C:0440H LINE# 62 - C:0459H LINE# 63 - C:0472H LINE# 64 - C:0484H LINE# 65 - C:0491H LINE# 67 - C:049EH LINE# 68 - C:04B7H LINE# 69 - C:04D0H LINE# 70 - C:04E9H LINE# 71 - C:0502H LINE# 72 - C:0514H LINE# 73 - C:0521H LINE# 75 - C:052CH LINE# 76 - C:052CH LINE# 77 - C:0556H LINE# 78 - C:055DH LINE# 79 - C:055DH LINE# 80 - C:056CH LINE# 81 - C:0579H LINE# 82 - C:0592H LINE# 83 - C:05ABH LINE# 84 - C:05C4H LINE# 85 - C:05D1H LINE# 86 - C:05E3H LINE# 88 - C:05F2H LINE# 90 - C:05F2H LINE# 91 + 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 ------- ENDPROC DISPLAY - ------- PROC KEYPROS - C:07ECH LINE# 95 - C:07ECH LINE# 96 - C:07ECH LINE# 97 - C:07EFH LINE# 98 - C:07EFH LINE# 99 - C:07F2H LINE# 100 - C:07F5H LINE# 101 - C:07F5H LINE# 102 - C:07FFH LINE# 104 - C:0809H LINE# 105 - C:0813H LINE# 106 - C:081DH LINE# 108 - C:0827H LINE# 110 - C:0827H LINE# 111 - C:082AH LINE# 112 - C:082AH LINE# 114 - C:082DH LINE# 115 - C:082DH LINE# 116 - C:0830H LINE# 117 - C:0833H LINE# 118 - C:0833H LINE# 119 - C:0835H LINE# 121 - C:0835H LINE# 122 - C:0838H LINE# 123 - C:0838H LINE# 124 - BL51 BANKED LINKER/LOCATER V6.22 04/06/2022 23:56:38 PAGE 15 - - - C:083BH LINE# 125 - C:083BH LINE# 126 - C:083EH LINE# 127 - C:0841H LINE# 128 - C:0841H LINE# 129 - C:0848H LINE# 130 - C:0848H LINE# 131 - C:084BH LINE# 132 - C:084DH LINE# 134 - C:084DH LINE# 135 - C:084FH LINE# 136 - C:084FH LINE# 137 - C:084FH LINE# 138 - C:0852H LINE# 139 - C:0852H LINE# 141 - ------- ENDPROC KEYPROS + ------- 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 + ------- ENDPROC KEY_SCAN ------- PROC TIME0 - C:05F3H LINE# 143 - C:0610H LINE# 145 - C:0613H LINE# 146 - C:0616H LINE# 147 - C:0618H LINE# 148 - C:0624H LINE# 151 - C:0631H LINE# 152 - C:0631H LINE# 154 - C:0637H LINE# 155 - C:063DH LINE# 156 - C:0640H LINE# 157 - C:0642H LINE# 158 - C:0648H LINE# 160 - C:064EH LINE# 161 - C:0650H LINE# 162 - C:0697H LINE# 164 - C:069DH LINE# 165 - C:069DH LINE# 166 - C:06B7H LINE# 167 - C:06BEH LINE# 169 - C:06FCH LINE# 170 - C:0702H LINE# 171 - C:0708H LINE# 172 - C:070FH LINE# 174 - C:0712H LINE# 175 - C:0719H LINE# 176 - C:0720H LINE# 177 - C:0722H LINE# 179 - C:0722H LINE# 180 - C:0728H LINE# 181 - C:072EH LINE# 182 - C:0735H LINE# 183 - C:073CH LINE# 184 - C:0743H LINE# 185 - C:0745H LINE# 186 - C:0745H LINE# 187 - C:0745H LINE# 188 + ------- 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 ------- ENDPROC TIME0 ------- PROC INT1 - C:0B8EH LINE# 190 - BL51 BANKED LINKER/LOCATER V6.22 04/06/2022 23:56:38 PAGE 16 - - - C:0B90H LINE# 193 - C:0B98H LINE# 195 + C:0016H LINE# 95 + C:0018H LINE# 97 + C:0020H LINE# 98 ------- ENDPROC INT1 ------- ENDMOD IRIN ------- MODULE ?C?FPADD - C:0025H PUBLIC ?C?FPADD - C:0021H PUBLIC ?C?FPSUB + C:002DH PUBLIC ?C?FPADD + C:0029H PUBLIC ?C?FPSUB ------- ENDMOD ?C?FPADD ------- MODULE ?C?FPMUL - C:0116H PUBLIC ?C?FPMUL + C:011EH PUBLIC ?C?FPMUL ------- ENDMOD ?C?FPMUL ------- MODULE ?C?FPDIV - C:021FH PUBLIC ?C?FPDIV + C:0227H PUBLIC ?C?FPDIV ------- ENDMOD ?C?FPDIV ------- MODULE ?C?FCAST - C:02C6H PUBLIC ?C?FCASTC - C:02C1H PUBLIC ?C?FCASTI - C:02BCH PUBLIC ?C?FCASTL + C:02CEH PUBLIC ?C?FCASTC + C:02C9H PUBLIC ?C?FCASTI + C:02C4H PUBLIC ?C?FCASTL ------- ENDMOD ?C?FCAST ------- MODULE ?C?CASTF - C:02FAH PUBLIC ?C?CASTF + C:0302H PUBLIC ?C?CASTF ------- ENDMOD ?C?CASTF + ------- MODULE PRINTF + D:005DH PUBLIC ?_PRINTF?BYTE + D:005DH PUBLIC ?_SPRINTF?BYTE + C:06ECH PUBLIC _PRINTF + C:06E6H PUBLIC _SPRINTF + ------- 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 - C:037BH PUBLIC ?C?CLDPTR + BL51 BANKED LINKER/LOCATER V6.22 04/08/2022 03:21:38 PAGE 17 + + + C:0525H PUBLIC ?C?CLDPTR ------- ENDMOD ?C?CLDPTR + ------- MODULE ?C?CLDOPTR + C:053EH PUBLIC ?C?CLDOPTR + ------- ENDMOD ?C?CLDOPTR + + ------- MODULE ?C?CSTPTR + C:056BH PUBLIC ?C?CSTPTR + ------- ENDMOD ?C?CSTPTR + ------- MODULE ?C?IMUL - C:0394H PUBLIC ?C?IMUL + C:057DH PUBLIC ?C?IMUL ------- ENDMOD ?C?IMUL ------- MODULE ?C?UIDIV - C:03A6H PUBLIC ?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:03FBH PUBLIC ?C?LNEG + C:061AH PUBLIC ?C?LNEG ------- ENDMOD ?C?LNEG -Program Size: data=71.5 xdata=0 code=2992 + ------- MODULE ?C?PLDIIDATA + C:0628H PUBLIC ?C?PLDIIDATA + ------- ENDMOD ?C?PLDIIDATA + + ------- MODULE ?C?CCASE + C:0638H PUBLIC ?C?CCASE + ------- ENDMOD ?C?CCASE + + ------- MODULE PUTCHAR + C:128FH 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 LINK/LOCATE RUN COMPLETE. 0 WARNING(S), 0 ERROR(S) diff --git a/pro.build_log.htm b/pro.build_log.htm index 531353f..e561794 100644 --- a/pro.build_log.htm +++ b/pro.build_log.htm @@ -23,11 +23,12 @@ Project File Date: 05/31/2019

Output:

Build target 'Target 1' -compiling IRIN.c... +compiling main.c... +main.c(195): warning C206: 'Key_scan': missing function-prototype linking... -Program Size: data=71.5 xdata=0 code=2992 +Program Size: data=111.3 xdata=0 code=5315 creating hex file from "pro"... -"pro" - 0 Error(s), 0 Warning(s). +"pro" - 0 Error(s), 1 Warning(s). Build Time Elapsed: 00:00:01 diff --git a/pro.hex b/pro.hex index 5f3b1c3..648f32a 100644 --- a/pro.hex +++ b/pro.hex @@ -1,223 +1,378 @@ -:100A9E00313131310D0A0030313233343536373899 -:060AAE00392E2D4D000061 -:1008A90011212050656368696E20536369656E6321 -:0308B900652000B7 -:100A3D007C64EF4E60131CEC60087D0A1DED60F6C2 -:090A4D0080FAEF1F70EC1E80E935 -:010A5600227D -:100A8800758921759850758DFD858D8BE4F587D214 -:060A9800AFD2ACD28E22A9 +:10119800696E71756972650073706565643A256476 +:1011A800206B6D2F68206D696C656167653A2564F1 +:1011B800206D0D0A007365743A0028002C00290080 +:0911C800534554204F4B0D0A0061 +:0C12090002230000014E00C10901220078 +:04135E007F027E008C +:101362007C64EF4E60131CEC60087D0A1DED60F694 +:0913720080FAEF1F70EC1E80E907 +:01137B00224F +:10140700758921759850758DFD858D8BE4F587D28B +:06141700AFD2ACD28E2220 :07000300AE071FEE70FA22A8 -:0E0B7200C2ACC2998F993099FDC299D2AC22C3 -:100A700012037BFF6011120B727F051200037401D9 -:080A800029F9E43AFA80E922A9 -:10085300E4F50FF510120ACA120ADE120A88750BA4 -:100863000A7F011209867532008F337F08120986C9 -:100873007534008F357542007543787F05120986FC -:100883007542008F43E5334534F53AE535F53B12C0 -:100893000B367BFF7A0A799E120A7012040912073B -:0608A300EC120B8580E958 -:100AF20075A0FFC287D286D285AFA0C285EF20E75C -:010B0200F6FC -:010B030022CF -:100B1600AE07120AF2C287C2868EA0D285C285228D -:100B2600AE07120AF2D287C2868EA0D285C285226D -:100B0400ED7004AC078004EF2440FCEC4480FF0249 -:020B14000B16BE -:100A0400AE07AC0353050153060FED6003430640E4 -:0D0A1400430680AF06120B16AF04020B263E -:100938008B118A128913120B04AB11AA12A9131274 -:10094800037B60130513E5137002051214F91203F3 -:080958007BFF120B2680E22256 -:100ACA007F38120B167F0C120B167F06120B167F3D -:040ADA0001020B16F4 -:1008BC00010800010D00010E00010C00010B00C12C -:0708CC0083C1840209000052 -:1009A800E4FDFCC3ED9FEC9E5015E4FBFA0BBB0085 -:0F09B800010ABA07F8BBD0F50DBD00010C80E4B1 -:0109C700220D -:0F0B3600750D03850B0CC286D287D284C285222F -:0F0B4500750D03750C04D286C287C284D2852237 -:0B0B9B00E4F50D750C04D284C2852225 -:0B0BA600E4F50C750D04C286D2872216 -:1009C800300418E508D3950D5004D2B58002C2B59D -:0E09D800E508C394144006E4F50822C2B522D7 -:1009E600300318E50ED3950C5004D2B48002C2B47D -:0E09F600E50EC394144006E4F50E22C2B422AE -:03001B00020A21B5 -:100A2100C0E0C0D0758DFC758B18050AE50A70020F -:0C0A31000509050E1209E6D0D0D0E03215 -:050B8000120B85D2817B -:080B85007F017E02DEFEDFFAB3 -:010B8D002245 -:0F0B5400D280120B80C280120B85C281020B85EA -:0A0BB100C280120B80D280020B8577 -:0208F700AD074B -:1008F900E4FBFAEDC4131313540124FF9280ED2590 -:10090900E0FD120B80C281120B850BBB08E5D2807A -:10091900120B85D28130800F0AEAD394C840F6C2FF -:0E09290081120B857F0022C281120B857F0197 -:01093700229D -:10096000E4FDFCD280120B85D281120B85EC25E0D0 -:10097000FCA280E4334204120B85C281120B850D68 -:05098000BD08E5AF0415 -:01098500224F -:100A5700AC05A907120B547FA01208F7AF011208C3 -:090A6700F7AF041208F7020BB10D -:02098600AC07BC -:10098800120B547FA01208F7AF041208F7120B5489 -:0F0998007FA11208F7120960AD07120BB1AF056E -:0109A700222D -:100AB40053706565643A004B4D2F68004C3A004D05 -:060AC40000513A002E0073 -:1008D300024200070249000002440000014D0002E9 -:1008E3003C0000024B0000C101C100C102014600EF -:0308F300015200AF -:040B63007FE87E03A6 -:0B0B6700EF1FAC0670011E4C70F62260 -:100ADE00758921758C3C758AB0D2A9D28CD2AFD2D1 -:040AEE00AAD28A22DC -:100409003001030205F27F0A1209867549008F4AF5 -:10041900D3E5439407E5429400400A7F0512098613 -:100429007542008F43E4FDFF120B047BFF7A0A79C2 -:10043900B4E4FDFF120938AE49AF4A7C007D64126D -:1004490003A67C007D0A1203A6ED2430FF120B26B9 -:10045900AE49AF4A7C007D0A1203A67C007D0A12D0 -:1004690003A6ED2430FF120B26AE49AF4A7C007D6E -:100479000A1203A6ED2430FF120B267BFF7A0A79B4 -:10048900BBE4FD7F0A1209387BFF7A0A79C07D0136 -:10049900E4FF120938AE3AAF3B7C277D101203A660 -:1004A9007C007D0A1203A6ED2430FF120B26AE3A1A -:1004B900AF3B7C037DE81203A67C007D0A1203A6EC -:1004C900ED2430FF120B26AE3AAF3B7C007D64125F -:1004D90003A67C007D0A1203A6ED2430FF120B2629 -:1004E900AE3AAF3B7C007D0A1203A67C007D0A125E -:1004F90003A6ED2430FF120B26AE3AAF3B7C007DFC -:100509000A1203A6ED2430FF120B267BFF7A0A7923 -:10051900C37D017F07120938D3E53B94E8E53A9496 -:10052900034031E53B2418FDE53A34FCFCE41202B2 -:10053900C17B6F7A127903783B120116E4FBFA79D1 -:10054900E078401200251202FA8E428F43AD437FB4 -:1005590005120A57AE42AF437C007D0A1203948EFE -:10056900428F437BFF7A0A79C57D017F09120938D9 -:10057900AE42AF437C037DE81203A67C007D0A12DC -:1005890003A6ED2430FF120B26AE42AF437C007D5B -:10059900641203A67C007D0A1203A6ED2430FF1223 -:1005A9000B26AE42AF437C007D0A1203A67C007D78 -:1005B9000A1203A6ED2430FF120B267BFF7A0A7973 -:1005C900C87D017F0E120938AE42AF437C007D0A17 -:1005D9001203A6ED2430FF120B26AE42AF437C0076 -:0A05E9007D0A1203A68E428F432202 -:1007EC0020B43B120B6320B4327F0A120986754980 -:1007FC00008F4A7F01120986753E008F3F7F0812D9 -:10080C0009867540008F41E53F4540F53AE541F5D5 -:10081C003B7F051209867542008F4330B4FD20B52D -:10082C000B120B6320B502D20230B5FD20B21712A9 -:10083C000B6320B20EE50BC394144005750B0180BD -:07084C0002050B30B2FD2292 -:03000B000205F3F8 -:1005F300C0E0C0F0C083C082C0D075D000C000C0CE -:1006030001C002C003C004C005C006C007758C3C0E -:10061300758AB0054DE54D75F00584E5F07002B2BD -:1006230000E54D75F00A84E5F06003020745E546F1 -:1006330060021546E55260021552754D00C2AA8547 -:10064300444B85454C754400754500D2AAAE4BAF6B -:100653004C7C007D06120394AC06AD07E41202C184 -:10066300E4FBFAF9783F120116C004C005C006C0C6 -:1006730007AC3CAD3DE41202C1E4FBFAF9783F124A -:100683000116D003D002D001D0001200251202FAC5 -:100693008E3C8F3D300203020722AC3CAD3DE41299 -:1006A30002C17B9A7A997919783E1201161202FADD -:1006B3008E498F4AAD4A7F0A120A57AC4BAD4CE4C0 -:1006C3001202C1E4FBFA79207840120116E4FBFA26 -:1006D30079A0784112021FC004C005C006C007AC50 -:1006E3003AAD3BE41202C1D003D002D001D00012D4 -:1006F30000251202FA8E3A8F3B853A47853B4875AF -:100703005000853B51AD517F08120A57120B63E528 -:1007130047F54F754E00AD4F7F01120A5780237581 -:100723003A00753B00754200754307AD3B7F0112EC -:100733000A57AD3B7F08120A57AD437F05120A578C -:10074300C202D007D006D005D004D003D002D00116 -:0D075300D000D0D0D082D083D0F0D0E032E2 -:03001300020B8E4F -:0D0B8E00C0E00545E54570020544D0E032A9 -:10001E00020366E86480F8E933E83360110460F0A7 -:10002E00ED33EC337009E8FCE9FDEAFEEBFF220448 -:10003E0060DED3EB9FEA9EE99DE8C2E78CF0C2F743 -:10004E0095F0400CE8CCF8E9CDF9EACEFAEBCFFB0F -:10005E0012033185D0F05804700320D5B3E8047034 -:10006E00075002B2D502037092D5EC0460F7E4CCCF -:10007E00C0E0C398F8603B94186008400DD0E0FBD8 -:10008E00020348E4FBFAC9FC8028E830E406E4C920 -:10009E00FBE4CAFCE830E305E4C9CACBFCE854072C -:1000AE006010F8C3E913F9EA13FAEB13FBEC13FC37 -:1000BE00D8F130F52FC3E49CFCEF9BFFEE9AFEEDDA -:1000CE0099FDD0E0FBEF4E4D4C701222DB03020384 -:1000DE006DEC2CFCEF33FFEE33FEED33FDED30E730 -:1000EE00EB020348EF2BFFEE3AFEED39FDD0E0FBBD -:1000FE0050130BBB0003020370ED13FDEE13FEEF66 -:08010E0013FFEC13FC0203488F -:10011600EC4D6011E8497017ED33EC3304600DE4E3 -:10012600FCFFFEFD22E933E8330470F80203661291 -:10013600033158046009E4CC248150062850090292 -:10014600037028400302036DC0E0EB4A7044B98097 -:1001560006D0E0FB02035CEF4E701CBD8008EBFF8F -:10016600EAFEE9FD80EBE98DF0A4FEE5F00201FF71 -:10017600E9CDF9EAFEEBFFEF89F0A4FCE5F0CE89C4 -:10018600F0A42EFFE435F0CD89F0A42DFEE435F081 -:100196008067EF4E7005BD80D780C3EF8BF0A4ACAF -:1001A600F0EE8BF0A42CFCE435F0F8EF8AF0A42CEA -:1001B600E5F038FCE433CB8DF0A42CFCE5F03BF8FD -:1001C600EE8AF0A42CFCE5F038F8E433CF89F0A4ED -:1001D6002CFCE5F038CF3400CE89F0A42FFFE5F0F3 -:1001E6003EFEE433C98DF0A42EFEE5F039CD8AF04B -:1001F600A42FFFE5F03EFEE43DFD33D0E0FB5007C3 -:100206000BBB000F020370EC2CFCEF33FFEE33FE4A -:06021600ED33FD02034878 -:10021C00020370EC5D046005E85904700302036688 -:10022C00120331580460F6EC4860F2EC7004FDFEE9 -:10023C00FF22C860DB2481C85009C39860025006B5 -:10024C0002036D9850CAF582E9294B4A7005AB82BE -:10025C0002035C75F0007C1A7880C3EF9BEE9AED7C -:10026C0099400DC3EF9BFFEE9AFEED99FDE842F02D -:10027C00DC23ACF0D0E0FFD0E0FED0E0FDAB822080 -:10028C00E7101BEB60BAEC2CFCEF33FFEE33FEED0A -:10029C0033FD020348E803F830E705C0F075F000C1 -:1002AC00EF2FFFEE33FEED33FD40B830E7C280AAEE -:1002BC0075F020800E75F010800575F0087D007EBD -:1002CC00007F003392D530D5031203FBEC33401082 -:1002DC00EF33FFEE33FEED33FDEC33FCD5F0ED22C6 -:0E02EC00E5F0247EA2D513CC92E7CDCEFF2202 -:1002FA00EDD2E7CD33EC3392D524814006E4FFFEFC -:10030A00FDFC22FCE4CFCECDCC24E0501174FF805A -:10031A00EDC3CC13CCCD13CDCE13CECF13CF0470F7 -:07032A00F030D5DE0203FBF9 -:10033100E9D2E7C933E833F892D5EDD2E7CD33EC12 -:0703410033FC5002B2D5228B -:10034800EC30E7100FBF000C0EBE00080DBD000416 -:100358000BEB6014A2D5EB13FCED92E7FD2274FFC2 -:10036800FCFDFEFF22E480F8A2D574FF13FC7D801B -:03037800E480EF2F -:0300000002076094 -:0C076000787FE4F6D8FD7581520207A7EF -:10037B00BB010689828A83E0225002E722BBFE0280 -:09038B00E32289828A83E49322B3 -:10039400EF8DF0A4A8F0CF8CF0A428CE8DF0A42E7D -:0203A400FE2237 -:1003A600BC000BBE0029EF8DF084FFADF022E4CC3B -:1003B600F875F008EF2FFFEE33FEEC33FCEE9DEC04 -:1003C600984005FCEE9DFE0FD5F0E9E4CEFD22ED4A -:1003D600F8F5F0EE8420D21CFEADF075F008EF2F94 -:1003E600FFED33FD4007985006D5F0F222C398FD85 -:0503F6000FD5F0EA2222 -:0E03FB00C3E49FFFE49EFEE49DFDE49CFC2213 -:10076C00020853E493A3F8E493A34003F68001F248 -:10077C0008DFF48029E493A3F85407240CC8C3338E -:10078C00C4540F4420C8834004F456800146F6DF5D -:10079C00E4800B01020408102040809008A9E47E3C -:1007AC00019360BCA3FF543F30E509541FFEE49352 -:1007BC00A360010ECF54C025E060A840B8E493A319 -:1007CC00FAE493A3F8E493A3C8C582C8CAC583CA44 -:1007DC00F0A3C8C582C8CAC583CADFE9DEE780BEFC -:0108F6000001 +: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 +: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 :00000001FF diff --git a/pro.uvgui.QY b/pro.uvgui.QY index ba24900..8233d2d 100644 --- a/pro.uvgui.QY +++ b/pro.uvgui.QY @@ -81,7 +81,7 @@ 44 2 - 3 + 1 -32000 -32000 @@ -91,17 +91,17 @@ -1 - 260 - 241 - 2161 - 1319 + 302 + 539 + 2459 + 1305 0 - 690 - 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000800000000000000010000002A453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C6D61696E2E6300000000066D61696E2E6300000000FFDC7800FFFFFFFF29453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C6C63642E6300000000056C63642E6300000000BECEA100FFFFFFFF29453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C6C63642E6800000000056C63642E6800000000F0A0A100FFFFFFFF2A453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C4952494E2E6300000000064952494E2E6300000000BCA8E100FFFFFFFF29453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C6932632E6300000000056932632E63000000009CC1B600FFFFFFFF29453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C6932632E6800000000056932632E6800000000F7B88600FFFFFFFF29453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C70776D2E63000000000570776D2E6300000000D9ADC200FFFFFFFF2A453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C4952494E2E6800000000064952494E2E6800000000A5C2D700FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000004401000066000000000A00009B040000 + 754 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000900000000000000010000002A453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C6D61696E2E6300000000066D61696E2E6300000000FFDC7800FFFFFFFF29453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C6C63642E6800000000056C63642E6800000000BECEA100FFFFFFFF2A453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C4952494E2E6300000000064952494E2E6300000000F0A0A100FFFFFFFF29453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C70776D2E63000000000570776D2E6300000000BCA8E100FFFFFFFF29453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C70776D2E68000000000570776D2E68000000009CC1B600FFFFFFFF29453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C6C63642E6300000000056C63642E6300000000F7B88600FFFFFFFF2A453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C4952494E2E6800000000064952494E2E6800000000D9ADC200FFFFFFFF29453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C6932632E6300000000056932632E6300000000A5C2D700FFFFFFFF29453A5CCFEEC4BF5CBCE6D6B0CFEEC4BF5C32303232303430362D536D61727442696B655C6932632E6800000000056932632E6800000000B3A6BE00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000450100006E000000FF0400009A040000 @@ -124,7 +124,7 @@ 16 - B902000023010000E5080000E9010000 + C20100000C020000EE070000D2020000 @@ -140,7 +140,7 @@ 0 16 - 03000000660000003D0100006B040000 + 03000000660000003D01000062040000 16 @@ -160,7 +160,7 @@ 0 16 - 03000000660000003D0100006B040000 + 03000000660000003D01000062040000 16 @@ -440,7 +440,7 @@ 0 16 - 03000000660000003D0100006B040000 + 03000000660000003D01000062040000 16 @@ -460,7 +460,7 @@ 0 16 - 03000000660000003D0100006B040000 + 03000000660000003D01000062040000 16 @@ -480,7 +480,7 @@ 0 16 - 000000009C040000000A00004E050000 + 0000000093040000FE04000045050000 16 @@ -520,7 +520,7 @@ 0 16 - 030000009F0400006D07000035050000 + 03000000960400006D0700002C050000 16 @@ -1160,7 +1160,7 @@ 0 16 - 030000009F0400006D07000035050000 + 03000000960400006D0700002C050000 16 @@ -1180,7 +1180,7 @@ 0 16 - 030000009F0400006D07000035050000 + 03000000960400006D0700002C050000 16 @@ -1240,7 +1240,7 @@ 0 16 - 030000009F0400006D07000035050000 + 03000000960400006D0700002C050000 16 @@ -1260,7 +1260,7 @@ 0 16 - 030000009F0400006D07000035050000 + 03000000960400006D0700002C050000 16 @@ -1720,7 +1720,7 @@ 0 16 - 000000004E050000000A000061050000 + 0000000045050000FE04000058050000 16 @@ -1789,14 +1789,14 @@ 3317 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF44010000150100007007000019010000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000B902000023010000E5080000E9010000440100004F00000070070000150100000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF2C0600004F0000003006000001030000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A507000023010000E5080000D5030000300600004F000000700700000103000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF400100004F0000004401000084040000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000007501000023010000B5020000BB030000000000004F00000040010000840400000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000ED02000070070000F102000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB0900000180008000000000000075010000C5030000E50800009F04000000000000F102000070070000CB03000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFB8030000F1020000BC030000CB03000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000084040000000A000088040000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000075010000BF030000E5080000850400000000000088040000000A00004E0500000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF1346696E6420416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF44010000150100007007000019010000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000C20100000C020000EE070000D2020000440100004F00000070070000150100000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF2C0600004F0000003006000001030000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000AE0600000C020000EE070000BE040000300600004F000000700700000103000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF400100004F000000440100007B040000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000007E0000000C020000BE010000A4040000000000004F000000400100007B0400000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000ED02000070070000F102000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000018000800000000000007E000000AE040000EE0700008805000000000000F102000070070000CB03000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFB8030000F1020000BC030000CB03000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000007B040000FE0400007F040000010000000100001004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000010000007E000000A8040000EE0700006E050000000000007F040000FE040000450500000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF1346696E6420416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 File - 2374 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000363757496000000000000000C00036375740A73656E64546F576966690B676574546F74616C4461790C74696D696E67735B695D2D3E0630783030663006307830303066054750494F4106307866303030054750494F42124775695F44726177466F6E745F4E756D3332066C6162656C320A4750494F5F50696E5F37000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000 + 2493 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000574696D65319600000000000000140003736574084B65795F7363616E076D696C656167650A75696E742073706565640E446973706C61794F6E65436861720541534349490E4163636570745F7375636365737307526563656976650474696D650574696D65310F52696768745F6D6F746F5F73746F700E707573685F76616C5F72696768741170776D5F6F75745F6C6566745F6D6F746F0273300875735F64656C6179036375740A73656E64546F576966690B676574546F74616C4461790C74696D696E67735B695D2D3E063078303066300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000 1423 @@ -1855,72 +1855,81 @@ 0 .\main.c - 0 - 69 - 71 + 28 + 115 + 138 1 0 - .\lcd.c - 0 + lcd.h + 13 + 1 + 50 + 1 + + 0 + + + .\IRIN.c + 9 44 - 70 + 69 1 0 - lcd.h - 13 - 19 - 50 + .\pwm.c + 1 + 1 + 27 1 0 - .\IRIN.c - 0 - 35 - 50 + pwm.h + 19 + 1 + 21 1 0 - .\i2c.c - 0 - 40 - 10 + .\lcd.c + 4 + 1 + 75 1 0 - i2c.h - 6 + IRIN.h + 7 1 - 16 + 10 1 0 - .\pwm.c - 3 - 25 - 14 + .\i2c.c + 0 + 1 + 10 1 0 - IRIN.h - 14 + i2c.h + 6 1 - 14 + 17 1 0 diff --git a/pro.uvopt b/pro.uvopt index a2756c7..a4432e8 100644 --- a/pro.uvopt +++ b/pro.uvopt @@ -191,7 +191,7 @@ 1 1 1 - 1 + 0 0 0 .\main.c @@ -203,7 +203,7 @@ 1 2 1 - 1 + 0 0 0 .\lcd.c @@ -215,7 +215,7 @@ 1 3 1 - 1 + 0 0 0 .\pwm.c diff --git a/pwm.LST b/pwm.LST index 4a5634e..76a3d12 100644 --- a/pwm.LST +++ b/pwm.LST @@ -1,4 +1,4 @@ -C51 COMPILER V9.56.0.0 PWM 04/06/2022 22:23:01 PAGE 1 +C51 COMPILER V9.56.0.0 PWM 04/08/2022 03:07:52 PAGE 1 C51 COMPILER V9.56.0.0, COMPILATION OF MODULE PWM @@ -9,135 +9,67 @@ line level source 1 #include "pwm.h" 2 - 3 unsigned char pwm_val_left =0;//变量定义 - 4 unsigned char push_val_left =0;// 左电机占空比N/20 - 5 unsigned char pwm_val_right =0; - 6 unsigned char push_val_right=0;// 右电机占空比N/20 - 7 unsigned char pwm_left=0; - 8 - 9 bit Right_moto_stop=1; - 10 bit Left_moto_stop =1; + 3 unsigned char pwm_val_right =0; + 4 unsigned char push_val_right=0; + 5 + 6 unsigned char pwm_value=0; + 7 + 8 extern uint model; + 9 + 10 bit Right_moto_stop = 0; 11 - 12 unsigned int time1=0; - 13 - 14 - 15 - 16 /************************************************************************/ - 17 //延时函数 - 18 void delay(unsigned int k) - 19 { - 20 1 unsigned int x,y; - 21 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 - 52 //右转 - 53 void rightrun(void) - 54 { - 55 1 push_val_right=0; - C51 COMPILER V9.56.0.0 PWM 04/06/2022 22:23:01 PAGE 2 - - 56 1 push_val_left=4; - 57 1 Left_moto_go ; //左电机往前走 - 58 1 } - 59 - 60 - 61 void pwm_out_left_moto(void) - 62 { - 63 1 if(Left_moto_stop) - 64 1 { - 65 2 if(pwm_val_left<=push_val_left) - 66 2 { - 67 3 Left_moto_pwm=1; - 68 3 } - 69 2 else - 70 2 { - 71 3 Left_moto_pwm=0; - 72 3 } - 73 2 if(pwm_val_left>=20) - 74 2 pwm_val_left=0; - 75 2 } - 76 1 else - 77 1 { - 78 2 Left_moto_pwm=0; - 79 2 } - 80 1 } - 81 /******************************************************************/ - 82 /* 右电机调速 */ - 83 void pwm_out_right_moto(void) - 84 { - 85 1 if(Right_moto_stop) - 86 1 { - 87 2 if(pwm_val_right<=push_val_right) - 88 2 { - 89 3 Right_moto_pwm=1; - 90 3 } - 91 2 else - 92 2 { - 93 3 Right_moto_pwm=0; - 94 3 } - 95 2 if(pwm_val_right>=20) - 96 2 pwm_val_right=0; - 97 2 } - 98 1 else - 99 1 { - 100 2 Right_moto_pwm=0; - 101 2 } - 102 1 } - 103 - 104 void timer1()interrupt 3 - 105 { - 106 1 TH1=0XFc; //1Ms定时 - 107 1 TL1=0X18; - 108 1 time1++; - 109 1 // pwm_val_left++; - 110 1 pwm_val_right++; - 111 1 // pwm_out_left_moto(); - 112 1 pwm_out_right_moto(); - 113 1 } - 114 - 115 - 116 - 117 - C51 COMPILER V9.56.0.0 PWM 04/06/2022 22:23:01 PAGE 3 - MODULE INFORMATION: STATIC OVERLAYABLE - CODE SIZE = 172 ---- + CODE SIZE = 112 ---- + C51 COMPILER V9.56.0.0 PWM 04/08/2022 03:07:52 PAGE 2 + CONSTANT SIZE = ---- ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- - DATA SIZE = 7 ---- + DATA SIZE = 3 ---- IDATA SIZE = ---- ---- - BIT SIZE = 2 ---- + BIT SIZE = 1 ---- END OF MODULE INFORMATION. diff --git a/pwm.OBJ b/pwm.OBJ index 2f62303bcdac29a9b8dc656427201618a944b0e0..46d4453bbe1fd2b62f4f7f3ea50a2bf7b8069b3c 100644 GIT binary patch literal 3898 zcmb_f+iw(A82@HwXSchh+Y6L?WxLCz#ZqXc1P!Lr-A%j7c9(WrD5;J+yA6xqlu@RGw1u} zeE0AC=5+WnJ!%d&H3WjgFAvmbf`LRb6^qA?L~Hiebta?HNNu2{BXOuR8i+(&x>^H? zmS>~kRP=Bv+8zm{_P2D_G}aQG-IFjqtN^bS8Uv*Zbt=`W_ByB1+9w}&ua7*{`&{3# ze&b|QFUapS6)`aPfb;R14a9xg@dVeNcpZiGlkd{0Yf2b&>XGtOc zQGoo-$&O|t5f>R?~WBf?*`OQbtFtwJl}D6R8BVT-Kgq z@->HzSbHqh8Ew_c#YPnJG`GZflbcj#XkbKA%uv>?AedB1k0;%=krF;JY z%ZerEPj+>-&0|8B*WTC_g*DKnb8Z=(sYDXKV^r|2`A)+KhK3N?B_g+#guXI2xY+*3 zW*@V4EbGHLPnpn;t=8`ws`gfkHGJb&ikssUPa+?=6&=EtLaSH@hF)yM!cimA6_58A z&4CIED2P;7j)#f^p<=@CT<8YtQzuAMle@6Ez>5YfKI6p`!pmy6k?reGkBg{+6=)A* zC_ie996OpDH3o)8hlpGkNYP^L5OiG>t45I+rL<#qlW}5nXqf#b&C4oIru*}KA|D}b zBtHnrNmBfd{n#W*p!tXMCvv>sG6|+iT8XX0;(bx(CDl%5c}V0?6_Fk((-7dDPzC2h zbs_jMJW+aO{9Dgvj-93+{C)lIhj%_mR!-gjtN1D@zAK(Tuim;>@--Zp`e&Um`f3cM&-mll_MApA=ikx z7IPH>)95jJT+DTt1GGcT_4Fy?(-(>FArheR$(sX3NSkEZo8F%R?X5>sX<+o$&lZjR?4(6gaKY zGDzK$_6w|5$wuoJpoQ@oS_EPbm{v=B3`TRK?O?{D;VbGxbUs@to{T@D>%e=2@urFP z!+QR?^g-H%KR$%~_N{Cb6ru-ZfutqPZ#f;zV{J@VW6d&>#>Z;*{con_g%e*ofiH)b z^cGoxJP+2_Z=#p5UH~nZ3fyfHCfQwfn}>8~9oC!xNju%GF}*^)hPts!oGcEFO};&w zKpjWO8myzsv=GH@@Moj#;xdsq^M2X{3_y!6Ao>kR72&XzgU8(A>=xmqf*GwQ#t+?b zPznHSjy@%|44~=yU$fJoi+w~BcGXy?)FQ*Kgc7zS>D3G9H4fS@d&GhAM~CW`iF7Tb zd9e0DlK~drxdY)y!=7D@Mx;euQdFk^%VDr+#^i(mF%6?5+S=4$v>C?wC1o`LpEX$a zRTFp%QaSuIB$ldVqeJ4Ll<3*_UnMe)wgi93+3IOWw`_OV=#e&#Z!eILJv&!&j>B1U zrn#7$Aj99@0JooV3q9!~o}{8Q`2WLza`~+OT!jcg4ir z4C_Vi&_BVYrAi~)SeB*=DtIvclKhf6FcoorQjlSJYE*sN2ixeDGABky_S!Q1@!?Fo?!Y(a>Fr$P1JD0Jusm0eE5Y(}-N!d@ UYsk0)AZ6y`F0c3pi#hlI0rE!E9{>OV literal 6593 zcmb_gYiu0V6+W}Gvum&I^(G`ZaT3_~&r;OuTCon>e=X z*c6Id0!>0I1T9kAKdoAo^0Sqwl>8w@O$>d35K$Vbe`yO+D?w$cLahpfe&3n7yW`zB zDpIfPGjqp8xhEf`08Cr*%D)zd92FOm*xUa5 zSV&gwx_+>+>%O6VqvI3qPhTq@7(84fXIm&Z(@Juft)|#n2Cgn$?okoGZAm*Hd)OX2zPr2b1qrkp59z9 zDN(beF}S3kLW*muWDhm3_3TIJGyTovtp+b#ZID=7r<*;H%?)Js#w0{qRHAKNIWDS^ zFbN?LI!IQea!GUfi(oE2xI9{Zgg$Pm=nf*0T;LxmQ zPg%U^p*xW4?E?`8)R%lxDnx@?YfK#y;v=TQA$5>`2in?GtMwKqa z&QK@fz-eGGn3%tv)GT6y&d@-mmlK~PAe%|_&kZq>9lSPmjz!lBBF#_-|1QgA^m^+yNeiMJ>qNR{J+QLBAEdv-{0^NKJJfd%US8$PHuXLkofv&|c4lr;V{O;sxVeuH zPq?J2t+(p?ivrzKvs2Ts@&&Q&TsOEw&+~16v+n)I$n5yZ(V1r5pF3<= zt_fwu_Z!7NfB3vu@qknq2p=tR913X0yDfGV&8Eq)=Ym*uB_ZDOu-NhGxl>~r6ZKiM zWK%RhTsYxH%@Mnnpc{ovx)8%Eeb+~G=szXw2{li!}3acEAk4e8kKX6!nJ_5tOJb5ZGbTt6_U6lL1-f8hgp<9jRiL|{v5{z7VZ^%jJf z#mDmPV2kkVLGZD~BG`O=_N6DqrpVnY_{$300BzZ$upKZa9SS=EYo!Y?E)OW&3z(2@ zg;~G`c@VHs_5rSu9)$-0*GaF!KBKXp2rd2X<1(c1VZekuqR<6w zkYj+2G7Pvz3JOO6*U6~DM`aSOIX7_adX!~Q57)KoYTYXm{;UV z?uAe1o?qq22QrP;?Vt?El`B`?YxypG$4+B6LuftT)AQL96baBHvJ%$yu@r!vc z>cMNs0Ing2E5c%SC$uOG$4pd0|&+Kh&cDr4-aYmoH)zJ zN?!}{d-DydvGTj60~(gfDtx5rFj=)bfbYx4RAP8;d~)_(2%$q9e7@*cXLJF6(dqEa zawOW)V;S1NAoVuyJmZzSm$dfC4|x7XgjA4 z+Q&Es4;{CAaa_IaHue2CM#Gb9|Bo7Og*8UQo2E2%b>S|-{r}$%kLh~mBa`iY8MqgB zy;9p?#pYlX7+1zU7-yEMAkL~A#CMkA?ZC~hcbiI%&+a#i9g7vN@M2UoP?S8?<(cJPCQ! z#ldIkh=%a}=ndoGrU3pWv(fr9f;nLL2v#Z26vJfU6JW8F37{rjJ~N@lRgQIYDbM(; z5{L1u(L)uVF*5KQ%O4+n5>;Ej1A9xtwO3X$-!r;H^_A= zze-KN!Owp5YH`wfm73olabJW<+JOL0L(PSQ^Xw)DC*P|kh=I!)O3BZmZmIk(_xlLM z1oPnGGJGU}uQ7R1I63mLuY+fl8y390-UXb4Q8{RMPR-8j^m%yJ$@BHV4Tk54gFFL< z2ft%pD(a~$t!q4%;vSv=ZhZO24JsL%JZ)I2$(#B?8yNaQ$fKRaSBI=20) - pwm_val_left=0; - } - else - { - Left_moto_pwm=0; - } -} -/******************************************************************/ -/* 右电机调速 */ - void pwm_out_right_moto(void) -{ - if(Right_moto_stop) - { - if(pwm_val_right<=push_val_right) - { - Right_moto_pwm=1; - } - else - { - Right_moto_pwm=0; - } - if(pwm_val_right>=20) - pwm_val_right=0; - } - else - { - Right_moto_pwm=0; - } + pwm_val_right++; + if(~Right_moto_stop){ + if(pwm_val_right <= push_val_right) + { + Right_moto_pwm=1; + } + else + { + Right_moto_pwm=0; + } + if(pwm_val_right>=20) pwm_val_right=0; + } + else{ + Right_moto_pwm=0; + } } -void timer1()interrupt 3 -{ - TH1=0XFc; //1Ms定时 - TL1=0X18; - time1++; -// pwm_val_left++; - pwm_val_right++; -// pwm_out_left_moto(); - pwm_out_right_moto(); -} diff --git a/pwm.h b/pwm.h index 55781cf..ed59d07 100644 --- a/pwm.h +++ b/pwm.h @@ -15,26 +15,15 @@ void pwm_out_right_moto(void); //定义小车驱动模块输入IO口 -sbit IN1=P0^4; -sbit IN2=P0^5; -sbit IN3=P0^6; -sbit IN4=P0^7; - +sbit IN1=P1^0; +sbit IN2=P1^1; sbit EN1=P3^4; -sbit EN2=P3^5; - - - -sbit Left_moto_pwm=P3^5; //PWM信号端 - sbit Right_moto_pwm=P3^4; //PWM信号端 - -#define Left_moto_go {IN3=0,IN4=1;} //左电机向前走 -#define Left_moto_back {IN3=1,IN4=0;} //左边电机向后转 -#define Left_moto_Stop {EN1=0;} //左边电机停转 + #define Right_moto_go {IN1=1,IN2=0;} //右边电机向前走 #define Right_moto_back {IN1=0,IN2=1;} //右边电机向后走 -#define Right_moto_Stop {EN2=0;} //右边电机停转 +#define Right_moto_Stop {EN1=0;} //右边电机停转 + #endif \ No newline at end of file