; generated by ARM C/C++ Compiler with , RVCT4.0 [Build 524] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o.\obj\main.o --depend=.\obj\main.d --device=DARMSTM --apcs=interwork -O0 -I.\FWlib\inc -I.\user -I.\CM3 -Id:\Keil\ARM\INC\ST\STM32F10x -D__MICROLIB -DUSE_STDPERIPH_DRIVER -DSTM32F10X_MD --omf_browse=.\obj\main.crf user\main.c]
                          THUMB

                          AREA ||.text||, CODE, READONLY, ALIGN=2

                  Delay PROC
;;;103    ****************************************************************************/  
;;;104    void Delay(__IO uint32_t nTime)
000000  49fb              LDR      r1,|L1.1008|
;;;105    { 
;;;106      TimingDelay = nTime;
000002  6008              STR      r0,[r1,#0]  ; TimingDelay
;;;107    
;;;108      while(TimingDelay != 0);
000004  bf00              NOP      
                  |L1.6|
000006  49fa              LDR      r1,|L1.1008|
000008  6809              LDR      r1,[r1,#0]  ; TimingDelay
00000a  2900              CMP      r1,#0
00000c  d1fb              BNE      |L1.6|
;;;109    }
00000e  4770              BX       lr
;;;110    
                          ENDP

                  TimingDelay_Decrement PROC
;;;121    ****************************************************************************/  
;;;122    void TimingDelay_Decrement(void)
000010  48f7              LDR      r0,|L1.1008|
;;;123    {
;;;124      if (TimingDelay != 0x00)
000012  6800              LDR      r0,[r0,#0]  ; TimingDelay
000014  b120              CBZ      r0,|L1.32|
;;;125      { 
;;;126        TimingDelay--;
000016  48f6              LDR      r0,|L1.1008|
000018  6800              LDR      r0,[r0,#0]  ; TimingDelay
00001a  1e40              SUBS     r0,r0,#1
00001c  49f4              LDR      r1,|L1.1008|
00001e  6008              STR      r0,[r1,#0]  ; TimingDelay
                  |L1.32|
;;;127      }
;;;128    }
000020  4770              BX       lr
;;;129    //
                          ENDP

                  SPI_Configuration PROC
;;;130    ////////////SPI2ӿ/////////////////////////////////////////////////////
;;;131    void SPI_Configuration(void)
000022  b500              PUSH     {lr}
;;;132    {
000024  b087              SUB      sp,sp,#0x1c
;;;133    	  SPI_InitTypeDef  SPI_InitStructure;
;;;134    	  GPIO_InitTypeDef GPIO_InitStructure;
;;;135    
;;;136    	  RCC_APB1PeriphClockCmd( RCC_APB1Periph_SPI2, ENABLE);
000026  2101              MOVS     r1,#1
000028  0388              LSLS     r0,r1,#14
00002a  f7fffffe          BL       RCC_APB1PeriphClockCmd
;;;137    
;;;138    
;;;139    	  /* SPI2Ŷ  PB13--SPI2_SCK  PB15--SPI2_MOSI */
;;;140    	  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15 ;
00002e  f44f4020          MOV      r0,#0xa000
000032  f8ad0004          STRH     r0,[sp,#4]
;;;141    	  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
000036  2018              MOVS     r0,#0x18
000038  f88d0007          STRB     r0,[sp,#7]
;;;142    	  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
00003c  2003              MOVS     r0,#3
00003e  f88d0006          STRB     r0,[sp,#6]
;;;143    	  GPIO_Init(GPIOB, &GPIO_InitStructure);
000042  a901              ADD      r1,sp,#4
000044  48eb              LDR      r0,|L1.1012|
000046  f7fffffe          BL       GPIO_Init
;;;144    
;;;145    	  /* PA0--OLED RST  Ŷ */
;;;146    	  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0  ;
00004a  2001              MOVS     r0,#1
00004c  f8ad0004          STRH     r0,[sp,#4]
;;;147    	  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
000050  2010              MOVS     r0,#0x10
000052  f88d0007          STRB     r0,[sp,#7]
;;;148    	  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
000056  2003              MOVS     r0,#3
000058  f88d0006          STRB     r0,[sp,#6]
;;;149    	  GPIO_Init(GPIOA, &GPIO_InitStructure);
00005c  a901              ADD      r1,sp,#4
00005e  48e6              LDR      r0,|L1.1016|
000060  f7fffffe          BL       GPIO_Init
;;;150    
;;;151    
;;;152          /* PB1--OLED C/D Ŷ */
;;;153    	  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1  ;
000064  2002              MOVS     r0,#2
000066  f8ad0004          STRH     r0,[sp,#4]
;;;154    	  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
00006a  2010              MOVS     r0,#0x10
00006c  f88d0007          STRB     r0,[sp,#7]
;;;155    	  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
000070  2003              MOVS     r0,#3
000072  f88d0006          STRB     r0,[sp,#6]
;;;156    	  GPIO_Init(GPIOB, &GPIO_InitStructure);
000076  a901              ADD      r1,sp,#4
000078  48de              LDR      r0,|L1.1012|
00007a  f7fffffe          BL       GPIO_Init
;;;157    
;;;158    	  /* SPI2 OLEDƬѡ  PB12 */
;;;159      	  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;			  					 
00007e  f44f5080          MOV      r0,#0x1000
000082  f8ad0004          STRH     r0,[sp,#4]
;;;160          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		   //ģʽٶ50MHz
000086  2003              MOVS     r0,#3
000088  f88d0006          STRB     r0,[sp,#6]
;;;161          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;		   //ͨģʽ
00008c  2010              MOVS     r0,#0x10
00008e  f88d0007          STRB     r0,[sp,#7]
;;;162          GPIO_Init(GPIOB, &GPIO_InitStructure);
000092  a901              ADD      r1,sp,#4
000094  48d7              LDR      r0,|L1.1012|
000096  f7fffffe          BL       GPIO_Init
;;;163    
;;;164    
;;;165    	  /* SPI2 Config -------------------------------------------------------------*/
;;;166    	  SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Tx;   //SPI_Direction_2Lines_FullDuplex;
00009a  f44f4040          MOV      r0,#0xc000
00009e  f8ad0008          STRH     r0,[sp,#8]
;;;167    	  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
0000a2  f44f7082          MOV      r0,#0x104
0000a6  f8ad000a          STRH     r0,[sp,#0xa]
;;;168    	  SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
0000aa  2000              MOVS     r0,#0
0000ac  f8ad000c          STRH     r0,[sp,#0xc]
;;;169    	  SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
0000b0  2002              MOVS     r0,#2
0000b2  f8ad000e          STRH     r0,[sp,#0xe]
;;;170    	  SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
0000b6  2001              MOVS     r0,#1
0000b8  f8ad0010          STRH     r0,[sp,#0x10]
;;;171    	  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
0000bc  0240              LSLS     r0,r0,#9
0000be  f8ad0012          STRH     r0,[sp,#0x12]
;;;172    	  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;
0000c2  2018              MOVS     r0,#0x18
0000c4  f8ad0014          STRH     r0,[sp,#0x14]
;;;173    	  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
0000c8  2000              MOVS     r0,#0
0000ca  f8ad0016          STRH     r0,[sp,#0x16]
;;;174    	  SPI_InitStructure.SPI_CRCPolynomial = 7;
0000ce  2007              MOVS     r0,#7
0000d0  f8ad0018          STRH     r0,[sp,#0x18]
;;;175    	  SPI_Init(SPI2, &SPI_InitStructure);
0000d4  a902              ADD      r1,sp,#8
0000d6  48c9              LDR      r0,|L1.1020|
0000d8  f7fffffe          BL       SPI_Init
;;;176    	  /* Enable SPI2 */
;;;177    	  SPI_Cmd(SPI2, ENABLE);
0000dc  2101              MOVS     r1,#1
0000de  48c7              LDR      r0,|L1.1020|
0000e0  f7fffffe          BL       SPI_Cmd
;;;178    }
0000e4  b007              ADD      sp,sp,#0x1c
0000e6  bd00              POP      {pc}
;;;179    
                          ENDP

                  NVIC_Configuration PROC
;;;188    ****************************************************************************/ 
;;;189    void NVIC_Configuration(void)
0000e8  b508              PUSH     {r3,lr}
;;;190    {
;;;191      NVIC_InitTypeDef NVIC_InitStructure;
;;;192    
;;;193    
;;;194    
;;;195      
;;;196      NVIC_InitStructure.NVIC_IRQChannel =TIM3_IRQn; ;			     //öʱ3ж 
0000ea  201d              MOVS     r0,#0x1d
0000ec  f88d0000          STRB     r0,[sp,#0]
;;;197      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
0000f0  2000              MOVS     r0,#0
0000f2  f88d0001          STRB     r0,[sp,#1]
;;;198      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 6;
0000f6  2006              MOVS     r0,#6
0000f8  f88d0002          STRB     r0,[sp,#2]
;;;199      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
0000fc  2001              MOVS     r0,#1
0000fe  f88d0003          STRB     r0,[sp,#3]
;;;200      NVIC_Init(&NVIC_InitStructure); 
000102  4668              MOV      r0,sp
000104  f7fffffe          BL       NVIC_Init
;;;201      
;;;202    
;;;203    
;;;204      NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;			     	//ô2ж
000108  2026              MOVS     r0,#0x26
00010a  f88d0000          STRB     r0,[sp,#0]
;;;205      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;	     	//ռȼ 0
00010e  2000              MOVS     r0,#0
000110  f88d0001          STRB     r0,[sp,#1]
;;;206      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;				//ȼΪ0
000114  2002              MOVS     r0,#2
000116  f88d0002          STRB     r0,[sp,#2]
;;;207      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;					//ʹ
00011a  2001              MOVS     r0,#1
00011c  f88d0003          STRB     r0,[sp,#3]
;;;208      
;;;209      NVIC_Init(&NVIC_InitStructure); 
000120  4668              MOV      r0,sp
000122  f7fffffe          BL       NVIC_Init
;;;210    
;;;211    }
000126  bd08              POP      {r3,pc}
;;;212    /****************************************************************************
                          ENDP

                  LED_Config PROC
;;;219    ****************************************************************************/ 
;;;220    void LED_Config(void){
000128  b508              PUSH     {r3,lr}
;;;221      GPIO_InitTypeDef GPIO_InitStructure;	  
;;;222      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;				     //LED1  V1	  Ϊͨ  
00012a  2020              MOVS     r0,#0x20
00012c  f8ad0000          STRH     r0,[sp,#0]
;;;223      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
000130  2010              MOVS     r0,#0x10
000132  f88d0003          STRB     r0,[sp,#3]
;;;224      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;			 //߷תٶΪ50MHz
000136  2003              MOVS     r0,#3
000138  f88d0002          STRB     r0,[sp,#2]
;;;225      GPIO_Init(GPIOB, &GPIO_InitStructure);
00013c  4669              MOV      r1,sp
00013e  48ad              LDR      r0,|L1.1012|
000140  f7fffffe          BL       GPIO_Init
;;;226      
;;;227     
;;;228      
;;;229      GPIO_ResetBits(GPIOB, GPIO_Pin_5);	                      //LED1		
000144  2120              MOVS     r1,#0x20
000146  48ab              LDR      r0,|L1.1012|
000148  f7fffffe          BL       GPIO_ResetBits
;;;230    }
00014c  bd08              POP      {r3,pc}
;;;231    
                          ENDP

                  GPIO_Config PROC
;;;233    //----------------------------------------------
;;;234    void GPIO_Config(void){
00014e  b508              PUSH     {r3,lr}
;;;235      GPIO_InitTypeDef GPIO_InitStructure;
;;;236      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB , ENABLE);	
000150  2101              MOVS     r1,#1
000152  200c              MOVS     r0,#0xc
000154  f7fffffe          BL       RCC_APB2PeriphClockCmd
;;;237    	
;;;238      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5| GPIO_Pin_6|GPIO_Pin_7 ;				     //LED1  V1	   
000158  20f0              MOVS     r0,#0xf0
00015a  f8ad0000          STRH     r0,[sp,#0]
;;;239      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
00015e  2010              MOVS     r0,#0x10
000160  f88d0003          STRB     r0,[sp,#3]
;;;240      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;			 //߷תٶΪ50MHz
000164  2003              MOVS     r0,#3
000166  f88d0002          STRB     r0,[sp,#2]
;;;241      GPIO_Init(GPIOA, &GPIO_InitStructure);	
00016a  4669              MOV      r1,sp
00016c  48a2              LDR      r0,|L1.1016|
00016e  f7fffffe          BL       GPIO_Init
;;;242      
;;;243      GPIO_SetBits(GPIOA, GPIO_Pin_4);  	   
000172  2110              MOVS     r1,#0x10
000174  48a0              LDR      r0,|L1.1016|
000176  f7fffffe          BL       GPIO_SetBits
;;;244      GPIO_ResetBits(GPIOA, GPIO_Pin_5); 
00017a  2120              MOVS     r1,#0x20
00017c  489e              LDR      r0,|L1.1016|
00017e  f7fffffe          BL       GPIO_ResetBits
;;;245    
;;;246      GPIO_ResetBits(GPIOA, GPIO_Pin_6);  
000182  2140              MOVS     r1,#0x40
000184  489c              LDR      r0,|L1.1016|
000186  f7fffffe          BL       GPIO_ResetBits
;;;247      GPIO_SetBits(GPIOA, GPIO_Pin_7);  				 
00018a  2180              MOVS     r1,#0x80
00018c  489a              LDR      r0,|L1.1016|
00018e  f7fffffe          BL       GPIO_SetBits
;;;248    }
000192  bd08              POP      {r3,pc}
;;;249    
                          ENDP

                  brake PROC
;;;252    //---------------ɲ------------------------
;;;253    void brake(){
000194  b510              PUSH     {r4,lr}
;;;254     	Left_Val=0;
000196  2000              MOVS     r0,#0
000198  4999              LDR      r1,|L1.1024|
00019a  6008              STR      r0,[r1,#0]  ; Left_Val
;;;255    	Right_Val=0;
00019c  4999              LDR      r1,|L1.1028|
00019e  6008              STR      r0,[r1,#0]  ; Right_Val
;;;256    	TIM2_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; 					  //PWMģʽ2 
0001a0  2070              MOVS     r0,#0x70
0001a2  4999              LDR      r1,|L1.1032|
0001a4  8008              STRH     r0,[r1,#0]
;;;257      	TIM2_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; 		  //ֹ        
0001a6  2001              MOVS     r0,#1
0001a8  8048              STRH     r0,[r1,#2]
;;;258      	TIM2_OCInitStructure.TIM_Pulse = Left_Val; 							  //ȷռձ
0001aa  4895              LDR      r0,|L1.1024|
0001ac  6800              LDR      r0,[r0,#0]  ; Left_Val
0001ae  80c8              STRH     r0,[r1,#6]
;;;259      	TIM2_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; 
0001b0  2002              MOVS     r0,#2
0001b2  8108              STRH     r0,[r1,#8]
;;;260      	TIM_OC4Init(TIM2, &TIM2_OCInitStructure);
0001b4  0740              LSLS     r0,r0,#29
0001b6  f7fffffe          BL       TIM_OC4Init
;;;261      
;;;262      	TIM2_OCInitStructure.TIM_Pulse = Right_Val; 
0001ba  4892              LDR      r0,|L1.1028|
0001bc  6800              LDR      r0,[r0,#0]  ; Right_Val
0001be  4992              LDR      r1,|L1.1032|
0001c0  80c8              STRH     r0,[r1,#6]
;;;263      	TIM_OC3Init(TIM2, &TIM2_OCInitStructure);
0001c2  f04f4080          MOV      r0,#0x40000000
0001c6  f7fffffe          BL       TIM_OC3Init
;;;264    }
0001ca  bd10              POP      {r4,pc}
;;;265    
                          ENDP

                  Move_go PROC
;;;266    //---------------ǰ------------------------
;;;267    void Move_go(unsigned int val){
0001cc  b510              PUSH     {r4,lr}
0001ce  4604              MOV      r4,r0
;;;268     	Left_Val=val;
0001d0  488b              LDR      r0,|L1.1024|
0001d2  6004              STR      r4,[r0,#0]  ; Left_Val
;;;269    	Right_Val=val;
0001d4  488b              LDR      r0,|L1.1028|
0001d6  6004              STR      r4,[r0,#0]  ; Right_Val
;;;270    	GPIO_SetBits(GPIOA, GPIO_Pin_4);  	   
0001d8  2110              MOVS     r1,#0x10
0001da  4887              LDR      r0,|L1.1016|
0001dc  f7fffffe          BL       GPIO_SetBits
;;;271      	GPIO_ResetBits(GPIOA, GPIO_Pin_5); 
0001e0  2120              MOVS     r1,#0x20
0001e2  4885              LDR      r0,|L1.1016|
0001e4  f7fffffe          BL       GPIO_ResetBits
;;;272    
;;;273      	GPIO_ResetBits(GPIOA, GPIO_Pin_6);  
0001e8  2140              MOVS     r1,#0x40
0001ea  4883              LDR      r0,|L1.1016|
0001ec  f7fffffe          BL       GPIO_ResetBits
;;;274      	GPIO_SetBits(GPIOA, GPIO_Pin_7);  
0001f0  2180              MOVS     r1,#0x80
0001f2  4881              LDR      r0,|L1.1016|
0001f4  f7fffffe          BL       GPIO_SetBits
;;;275    
;;;276    	TIM2_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; 					  //PWMģʽ2 
0001f8  2070              MOVS     r0,#0x70
0001fa  4983              LDR      r1,|L1.1032|
0001fc  8008              STRH     r0,[r1,#0]
;;;277      	TIM2_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; 		  //ֹ        
0001fe  2001              MOVS     r0,#1
000200  8048              STRH     r0,[r1,#2]
;;;278      	TIM2_OCInitStructure.TIM_Pulse = Left_Val; 							  //ȷռձ
000202  487f              LDR      r0,|L1.1024|
000204  6800              LDR      r0,[r0,#0]  ; Left_Val
000206  80c8              STRH     r0,[r1,#6]
;;;279      	TIM2_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; 
000208  2002              MOVS     r0,#2
00020a  8108              STRH     r0,[r1,#8]
;;;280      	TIM_OC4Init(TIM2, &TIM2_OCInitStructure);
00020c  0740              LSLS     r0,r0,#29
00020e  f7fffffe          BL       TIM_OC4Init
;;;281      
;;;282      	TIM2_OCInitStructure.TIM_Pulse = Right_Val; 
000212  487c              LDR      r0,|L1.1028|
000214  6800              LDR      r0,[r0,#0]  ; Right_Val
000216  497c              LDR      r1,|L1.1032|
000218  80c8              STRH     r0,[r1,#6]
;;;283      	TIM_OC3Init(TIM2, &TIM2_OCInitStructure);
00021a  f04f4080          MOV      r0,#0x40000000
00021e  f7fffffe          BL       TIM_OC3Init
;;;284    }
000222  bd10              POP      {r4,pc}
;;;285    
                          ENDP

                  Move_back PROC
;;;286    //---------------------------------------
;;;287    void Move_back(unsigned int val){
000224  b510              PUSH     {r4,lr}
000226  4604              MOV      r4,r0
;;;288     	Left_Val=val;
000228  4875              LDR      r0,|L1.1024|
00022a  6004              STR      r4,[r0,#0]  ; Left_Val
;;;289    	Right_Val=val;
00022c  4875              LDR      r0,|L1.1028|
00022e  6004              STR      r4,[r0,#0]  ; Right_Val
;;;290    	GPIO_ResetBits(GPIOA, GPIO_Pin_4);    //left wheel 	   
000230  2110              MOVS     r1,#0x10
000232  4871              LDR      r0,|L1.1016|
000234  f7fffffe          BL       GPIO_ResetBits
;;;291      	GPIO_SetBits(GPIOA, GPIO_Pin_5); 
000238  2120              MOVS     r1,#0x20
00023a  486f              LDR      r0,|L1.1016|
00023c  f7fffffe          BL       GPIO_SetBits
;;;292    
;;;293      	GPIO_SetBits(GPIOA, GPIO_Pin_6);  	  //right wheel 	  
000240  2140              MOVS     r1,#0x40
000242  486d              LDR      r0,|L1.1016|
000244  f7fffffe          BL       GPIO_SetBits
;;;294      	GPIO_ResetBits(GPIOA, GPIO_Pin_7);  
000248  2180              MOVS     r1,#0x80
00024a  486b              LDR      r0,|L1.1016|
00024c  f7fffffe          BL       GPIO_ResetBits
;;;295    
;;;296    	TIM2_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; 					  //PWMģʽ2 
000250  2070              MOVS     r0,#0x70
000252  496d              LDR      r1,|L1.1032|
000254  8008              STRH     r0,[r1,#0]
;;;297      	TIM2_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; 		  //ֹ        
000256  2001              MOVS     r0,#1
000258  8048              STRH     r0,[r1,#2]
;;;298      	TIM2_OCInitStructure.TIM_Pulse = Left_Val; 							  //ȷռձ
00025a  4869              LDR      r0,|L1.1024|
00025c  6800              LDR      r0,[r0,#0]  ; Left_Val
00025e  80c8              STRH     r0,[r1,#6]
;;;299      	TIM2_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; 
000260  2002              MOVS     r0,#2
000262  8108              STRH     r0,[r1,#8]
;;;300      	TIM_OC4Init(TIM2, &TIM2_OCInitStructure);
000264  0740              LSLS     r0,r0,#29
000266  f7fffffe          BL       TIM_OC4Init
;;;301      
;;;302      	TIM2_OCInitStructure.TIM_Pulse = Right_Val; 
00026a  4866              LDR      r0,|L1.1028|
00026c  6800              LDR      r0,[r0,#0]  ; Right_Val
00026e  4966              LDR      r1,|L1.1032|
000270  80c8              STRH     r0,[r1,#6]
;;;303      	TIM_OC3Init(TIM2, &TIM2_OCInitStructure);
000272  f04f4080          MOV      r0,#0x40000000
000276  f7fffffe          BL       TIM_OC3Init
;;;304    }
00027a  bd10              POP      {r4,pc}
;;;305    
                          ENDP

                  Move_right PROC
;;;306    //---------------ת------------------------
;;;307    void Move_right(unsigned int val){
00027c  b510              PUSH     {r4,lr}
00027e  4604              MOV      r4,r0
;;;308     	Left_Val=val;
000280  485f              LDR      r0,|L1.1024|
000282  6004              STR      r4,[r0,#0]  ; Left_Val
;;;309    	Right_Val=val;
000284  485f              LDR      r0,|L1.1028|
000286  6004              STR      r4,[r0,#0]  ; Right_Val
;;;310    	GPIO_SetBits(GPIOA, GPIO_Pin_4);  	   
000288  2110              MOVS     r1,#0x10
00028a  485b              LDR      r0,|L1.1016|
00028c  f7fffffe          BL       GPIO_SetBits
;;;311      	GPIO_ResetBits(GPIOA, GPIO_Pin_5); 
000290  2120              MOVS     r1,#0x20
000292  4859              LDR      r0,|L1.1016|
000294  f7fffffe          BL       GPIO_ResetBits
;;;312    
;;;313      	GPIO_SetBits(GPIOA, GPIO_Pin_6);  
000298  2140              MOVS     r1,#0x40
00029a  4857              LDR      r0,|L1.1016|
00029c  f7fffffe          BL       GPIO_SetBits
;;;314      	GPIO_ResetBits(GPIOA, GPIO_Pin_7);  
0002a0  2180              MOVS     r1,#0x80
0002a2  4855              LDR      r0,|L1.1016|
0002a4  f7fffffe          BL       GPIO_ResetBits
;;;315    
;;;316    	TIM2_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; 					  //PWMģʽ2 
0002a8  2070              MOVS     r0,#0x70
0002aa  4957              LDR      r1,|L1.1032|
0002ac  8008              STRH     r0,[r1,#0]
;;;317      	TIM2_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; 		  //ֹ        
0002ae  2001              MOVS     r0,#1
0002b0  8048              STRH     r0,[r1,#2]
;;;318      	TIM2_OCInitStructure.TIM_Pulse = Left_Val; 							  //ȷռձ
0002b2  4853              LDR      r0,|L1.1024|
0002b4  6800              LDR      r0,[r0,#0]  ; Left_Val
0002b6  80c8              STRH     r0,[r1,#6]
;;;319      	TIM2_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; 
0002b8  2002              MOVS     r0,#2
0002ba  8108              STRH     r0,[r1,#8]
;;;320      	TIM_OC4Init(TIM2, &TIM2_OCInitStructure);
0002bc  0740              LSLS     r0,r0,#29
0002be  f7fffffe          BL       TIM_OC4Init
;;;321      
;;;322      	TIM2_OCInitStructure.TIM_Pulse = Right_Val; 
0002c2  4850              LDR      r0,|L1.1028|
0002c4  6800              LDR      r0,[r0,#0]  ; Right_Val
0002c6  4950              LDR      r1,|L1.1032|
0002c8  80c8              STRH     r0,[r1,#6]
;;;323      	TIM_OC3Init(TIM2, &TIM2_OCInitStructure);
0002ca  f04f4080          MOV      r0,#0x40000000
0002ce  f7fffffe          BL       TIM_OC3Init
;;;324    }
0002d2  bd10              POP      {r4,pc}
;;;325    
                          ENDP

                  Move_left PROC
;;;326    //---------------ת------------------------
;;;327    void Move_left(unsigned int val){
0002d4  b510              PUSH     {r4,lr}
0002d6  4604              MOV      r4,r0
;;;328     	Left_Val=val;
0002d8  4849              LDR      r0,|L1.1024|
0002da  6004              STR      r4,[r0,#0]  ; Left_Val
;;;329    	Right_Val=val;
0002dc  4849              LDR      r0,|L1.1028|
0002de  6004              STR      r4,[r0,#0]  ; Right_Val
;;;330    	GPIO_ResetBits(GPIOA, GPIO_Pin_4);  	   
0002e0  2110              MOVS     r1,#0x10
0002e2  4845              LDR      r0,|L1.1016|
0002e4  f7fffffe          BL       GPIO_ResetBits
;;;331      	GPIO_SetBits(GPIOA, GPIO_Pin_5); 
0002e8  2120              MOVS     r1,#0x20
0002ea  4843              LDR      r0,|L1.1016|
0002ec  f7fffffe          BL       GPIO_SetBits
;;;332    
;;;333      	GPIO_ResetBits(GPIOA, GPIO_Pin_6);  
0002f0  2140              MOVS     r1,#0x40
0002f2  4841              LDR      r0,|L1.1016|
0002f4  f7fffffe          BL       GPIO_ResetBits
;;;334      	GPIO_SetBits(GPIOA, GPIO_Pin_7);  
0002f8  2180              MOVS     r1,#0x80
0002fa  483f              LDR      r0,|L1.1016|
0002fc  f7fffffe          BL       GPIO_SetBits
;;;335    
;;;336    	TIM2_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; 					  //PWMģʽ2 
000300  2070              MOVS     r0,#0x70
000302  4941              LDR      r1,|L1.1032|
000304  8008              STRH     r0,[r1,#0]
;;;337      	TIM2_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; 		  //ֹ        
000306  2001              MOVS     r0,#1
000308  8048              STRH     r0,[r1,#2]
;;;338      	TIM2_OCInitStructure.TIM_Pulse = Left_Val; 							  //ȷռձ
00030a  483d              LDR      r0,|L1.1024|
00030c  6800              LDR      r0,[r0,#0]  ; Left_Val
00030e  80c8              STRH     r0,[r1,#6]
;;;339      	TIM2_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; 
000310  2002              MOVS     r0,#2
000312  8108              STRH     r0,[r1,#8]
;;;340      	TIM_OC4Init(TIM2, &TIM2_OCInitStructure);
000314  0740              LSLS     r0,r0,#29
000316  f7fffffe          BL       TIM_OC4Init
;;;341      
;;;342      	TIM2_OCInitStructure.TIM_Pulse = Right_Val; 
00031a  483a              LDR      r0,|L1.1028|
00031c  6800              LDR      r0,[r0,#0]  ; Right_Val
00031e  493a              LDR      r1,|L1.1032|
000320  80c8              STRH     r0,[r1,#6]
;;;343      	TIM_OC3Init(TIM2, &TIM2_OCInitStructure);
000322  f04f4080          MOV      r0,#0x40000000
000326  f7fffffe          BL       TIM_OC3Init
;;;344    }
00032a  bd10              POP      {r4,pc}
;;;345    
                          ENDP

                  csb_Configuration PROC
;;;355    ****************************************************************************/  
;;;356    void csb_Configuration(void)
00032c  b508              PUSH     {r3,lr}
;;;357    {
;;;358      GPIO_InitTypeDef GPIO_InitStructure;
;;;359      	
;;;360      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;		   			 //Trig
00032e  f44f7000          MOV      r0,#0x200
000332  f8ad0000          STRH     r0,[sp,#0]
;;;361      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;			 //ͨģʽ
000336  2010              MOVS     r0,#0x10
000338  f88d0003          STRB     r0,[sp,#3]
;;;362      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;			 //ģʽٶ50MHz
00033c  2003              MOVS     r0,#3
00033e  f88d0002          STRB     r0,[sp,#2]
;;;363      GPIO_Init(GPIOB, &GPIO_InitStructure); 
000342  4669              MOV      r1,sp
000344  482b              LDR      r0,|L1.1012|
000346  f7fffffe          BL       GPIO_Init
;;;364    
;;;365      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;		             //Echo
00034a  2001              MOVS     r0,#1
00034c  f8ad0000          STRH     r0,[sp,#0]
;;;366      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;		 //ͨģʽ
000350  2004              MOVS     r0,#4
000352  f88d0003          STRB     r0,[sp,#3]
;;;367      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;			 //ģʽٶ50MHz
000356  2003              MOVS     r0,#3
000358  f88d0002          STRB     r0,[sp,#2]
;;;368      GPIO_Init(GPIOB, &GPIO_InitStructure); 
00035c  4669              MOV      r1,sp
00035e  4825              LDR      r0,|L1.1012|
000360  f7fffffe          BL       GPIO_Init
;;;369    }
000364  bd08              POP      {r3,pc}
;;;370    
                          ENDP

                  numm PROC
;;;378    ****************************************************************************/
;;;379    void numm(void){
000366  b510              PUSH     {r4,lr}
;;;380       //num=0;
;;;381       if(_it0==1){			 									  //±־ 
000368  4828              LDR      r0,|L1.1036|
00036a  7800              LDRB     r0,[r0,#0]  ; _it0
00036c  2801              CMP      r0,#1
00036e  d120              BNE      |L1.946|
;;;382       	 if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5)==0){		  //K2  
000370  2120              MOVS     r1,#0x20
000372  4821              LDR      r0,|L1.1016|
000374  f7fffffe          BL       GPIO_ReadInputDataBit
000378  b9d8              CBNZ     r0,|L1.946|
;;;383    	  	Delay(20);										  
00037a  2014              MOVS     r0,#0x14
00037c  f7fffffe          BL       Delay
;;;384    		if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5)==0){		  //
000380  2120              MOVS     r1,#0x20
000382  481d              LDR      r0,|L1.1016|
000384  f7fffffe          BL       GPIO_ReadInputDataBit
000388  b998              CBNZ     r0,|L1.946|
;;;385    			while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5)==0);//Ƿɿ	 
00038a  bf00              NOP      
                  |L1.908|
00038c  2120              MOVS     r1,#0x20
00038e  481a              LDR      r0,|L1.1016|
000390  f7fffffe          BL       GPIO_ReadInputDataBit
000394  2800              CMP      r0,#0
000396  d0f9              BEQ      |L1.908|
;;;386    			num++;
000398  481d              LDR      r0,|L1.1040|
00039a  7800              LDRB     r0,[r0,#0]  ; num
00039c  1c40              ADDS     r0,r0,#1
00039e  491c              LDR      r1,|L1.1040|
0003a0  7008              STRB     r0,[r1,#0]
;;;387    			if(num>1) num=0;  								  //ֵ1  ΪK2
0003a2  4608              MOV      r0,r1
0003a4  7800              LDRB     r0,[r0,#0]  ; num
0003a6  2801              CMP      r0,#1
0003a8  dd01              BLE      |L1.942|
0003aa  2000              MOVS     r0,#0
0003ac  7008              STRB     r0,[r1,#0]
                  |L1.942|
;;;388    			LCD_CLS();
0003ae  f7fffffe          BL       LCD_CLS
                  |L1.946|
;;;389    		}
;;;390    	  }		  
;;;391       }
;;;392       _it0=0; 
0003b2  2000              MOVS     r0,#0
0003b4  4915              LDR      r1,|L1.1036|
0003b6  7008              STRB     r0,[r1,#0]
;;;393    }
0003b8  bd10              POP      {r4,pc}
;;;394    
                          ENDP

                  DIS_csb PROC
;;;404    ****************************************************************************/ 
;;;405    void DIS_csb(void){
0003ba  b510              PUSH     {r4,lr}
;;;406      LCD_P12x24Str_f(2,0,"Distance: ");	     //ʾ
0003bc  a215              ADR      r2,|L1.1044|
0003be  2100              MOVS     r1,#0
0003c0  2002              MOVS     r0,#2
0003c2  f7fffffe          BL       LCD_P12x24Str_f
;;;407      if(distance<10) LCD_P24x40Str(24,3,"  cm");
0003c6  4816              LDR      r0,|L1.1056|
0003c8  6800              LDR      r0,[r0,#0]  ; distance
0003ca  280a              CMP      r0,#0xa
0003cc  d205              BCS      |L1.986|
0003ce  a215              ADR      r2,|L1.1060|
0003d0  2103              MOVS     r1,#3
0003d2  2018              MOVS     r0,#0x18
0003d4  f7fffffe          BL       LCD_P24x40Str
0003d8  e02f              B        |L1.1082|
                  |L1.986|
;;;408      else if(distance<100) LCD_P24x40Str(48,3," cm"); 
0003da  4811              LDR      r0,|L1.1056|
0003dc  6800              LDR      r0,[r0,#0]  ; distance
0003de  2864              CMP      r0,#0x64
0003e0  d226              BCS      |L1.1072|
0003e2  a212              ADR      r2,|L1.1068|
0003e4  2103              MOVS     r1,#3
0003e6  2030              MOVS     r0,#0x30
0003e8  f7fffffe          BL       LCD_P24x40Str
0003ec  e025              B        |L1.1082|
0003ee  0000              DCW      0x0000
                  |L1.1008|
                          DCD      ||.data||+0x84
                  |L1.1012|
                          DCD      0x40010c00
                  |L1.1016|
                          DCD      0x40010800
                  |L1.1020|
                          DCD      0x40003800
                  |L1.1024|
                          DCD      Left_Val
                  |L1.1028|
                          DCD      Right_Val
                  |L1.1032|
                          DCD      TIM2_OCInitStructure
                  |L1.1036|
                          DCD      _it0
                  |L1.1040|
                          DCD      num
                  |L1.1044|
000414  44697374616e63653a2000        DCB      "Distance: ",0
00041f  00                DCB      0
                  |L1.1056|
                          DCD      distance
                  |L1.1060|
000424  2020636d00        DCB      "  cm",0
000429  00                DCB      0
00042a  00                DCB      0
00042b  00                DCB      0
                  |L1.1068|
00042c  20636d00          DCB      " cm",0
                  |L1.1072|
;;;409      else LCD_P24x40Str(72,3,"cm");  
000430  a2fa              ADR      r2,|L1.2076|
000432  2103              MOVS     r1,#3
000434  2048              MOVS     r0,#0x48
000436  f7fffffe          BL       LCD_P24x40Str
                  |L1.1082|
;;;410      if(csb_flag==1)LCD_P24x40Str(0,3,dis_str_distance); 
00043a  48f9              LDR      r0,|L1.2080|
00043c  6800              LDR      r0,[r0,#0]  ; csb_flag
00043e  2801              CMP      r0,#1
000440  d105              BNE      |L1.1102|
000442  4af8              LDR      r2,|L1.2084|
000444  2103              MOVS     r1,#3
000446  2000              MOVS     r0,#0
000448  f7fffffe          BL       LCD_P24x40Str
00044c  e004              B        |L1.1112|
                  |L1.1102|
;;;411      else LCD_P24x40Str(0,3,"0  "); 
00044e  a2f6              ADR      r2,|L1.2088|
000450  2103              MOVS     r1,#3
000452  2000              MOVS     r0,#0
000454  f7fffffe          BL       LCD_P24x40Str
                  |L1.1112|
;;;412    }
000458  bd10              POP      {r4,pc}
;;;413    
                          ENDP

                  csb_distance PROC
;;;421    ****************************************************************************/ 
;;;422    void csb_distance(void){
00045a  b510              PUSH     {r4,lr}
;;;423      if(csb_flag==1){
00045c  48f0              LDR      r0,|L1.2080|
00045e  6800              LDR      r0,[r0,#0]  ; csb_flag
000460  2801              CMP      r0,#1
000462  d12f              BNE      |L1.1220|
;;;424      	Delay(1000);	                    //ʱ10ms   
000464  f44f707a          MOV      r0,#0x3e8
000468  f7fffffe          BL       Delay
;;;425      	Trig_H 
00046c  f44f7100          MOV      r1,#0x200
000470  48ee              LDR      r0,|L1.2092|
000472  f7fffffe          BL       GPIO_SetBits
;;;426      	Delay(10);	                        //ʱ1ms
000476  200a              MOVS     r0,#0xa
000478  f7fffffe          BL       Delay
;;;427      	Trig_L  
00047c  f44f7100          MOV      r1,#0x200
000480  48ea              LDR      r0,|L1.2092|
000482  f7fffffe          BL       GPIO_ResetBits
;;;428      	while(Echo==0);		 	  	 	  
000486  bf00              NOP      
                  |L1.1160|
000488  2101              MOVS     r1,#1
00048a  48e8              LDR      r0,|L1.2092|
00048c  f7fffffe          BL       GPIO_ReadInputDataBit
000490  2800              CMP      r0,#0
000492  d0f9              BEQ      |L1.1160|
;;;429      	ct=0;		 					
000494  2000              MOVS     r0,#0
000496  49e6              LDR      r1,|L1.2096|
000498  6008              STR      r0,[r1,#0]  ; ct
;;;430      	while(Echo==1);						  //жECHOߣʼʱʱ
00049a  bf00              NOP      
                  |L1.1180|
00049c  2101              MOVS     r1,#1
00049e  48e3              LDR      r0,|L1.2092|
0004a0  f7fffffe          BL       GPIO_ReadInputDataBit
0004a4  2801              CMP      r0,#1
0004a6  d0f9              BEQ      |L1.1180|
;;;431      	distan[sample_ct]= ((ct*68)/100);		         //ݼĶʱʱϰľ   
0004a8  48e1              LDR      r0,|L1.2096|
0004aa  6800              LDR      r0,[r0,#0]  ; ct
0004ac  eb001000          ADD      r0,r0,r0,LSL #4
0004b0  0080              LSLS     r0,r0,#2
0004b2  2164              MOVS     r1,#0x64
0004b4  fbb0f0f1          UDIV     r0,r0,r1
0004b8  49de              LDR      r1,|L1.2100|
0004ba  4adf              LDR      r2,|L1.2104|
0004bc  6812              LDR      r2,[r2,#0]  ; sample_ct
0004be  f8410022          STR      r0,[r1,r2,LSL #2]
0004c2  e002              B        |L1.1226|
                  |L1.1220|
;;;432      	
;;;433    
;;;434    	//if(distance>400) distance=2; 
;;;435      }
;;;436      else distance=0;	
0004c4  2000              MOVS     r0,#0
0004c6  49dd              LDR      r1,|L1.2108|
0004c8  6008              STR      r0,[r1,#0]  ; distance
                  |L1.1226|
;;;437      //itoa(distance, (char *)dis_str_distance,10);	          //ֵתΪַ
;;;438    }
0004ca  bd10              POP      {r4,pc}
;;;439    
                          ENDP

                  USART_Config PROC
;;;449    ****************************************************************************/
;;;450    void USART_Config(USART_TypeDef* USARTx,u32 baud){
0004cc  b57f              PUSH     {r0-r6,lr}
0004ce  4605              MOV      r5,r0
0004d0  460c              MOV      r4,r1
;;;451      USART_InitTypeDef USART_InitStructure;    
;;;452    
;;;453      USART_InitStructure.USART_BaudRate =baud;						                    //115200bps
0004d2  9400              STR      r4,[sp,#0]
;;;454      USART_InitStructure.USART_WordLength = USART_WordLength_8b;		                //λ8λ
0004d4  2000              MOVS     r0,#0
0004d6  f8ad0004          STRH     r0,[sp,#4]
;;;455      USART_InitStructure.USART_StopBits = USART_StopBits_1;			                //ֹͣλ1λ
0004da  f8ad0006          STRH     r0,[sp,#6]
;;;456      USART_InitStructure.USART_Parity = USART_Parity_No;				                //Уλ
0004de  f8ad0008          STRH     r0,[sp,#8]
;;;457      USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;   //Ӳ
0004e2  f8ad000c          STRH     r0,[sp,#0xc]
;;;458      USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;					//շģʽ
0004e6  200c              MOVS     r0,#0xc
0004e8  f8ad000a          STRH     r0,[sp,#0xa]
;;;459    
;;;460      USART_Init(USARTx, &USART_InitStructure);							                //ôڲ
0004ec  4669              MOV      r1,sp
0004ee  4628              MOV      r0,r5
0004f0  f7fffffe          BL       USART_Init
;;;461      USART_ITConfig(USARTx, USART_IT_RXNE, ENABLE);                                    //ʹܽж
0004f4  2201              MOVS     r2,#1
0004f6  f2405125          MOV      r1,#0x525
0004fa  4628              MOV      r0,r5
0004fc  f7fffffe          BL       USART_ITConfig
;;;462      /* ʹܴ1 */
;;;463      USART_Cmd(USARTx, ENABLE);	
000500  2101              MOVS     r1,#1
000502  4628              MOV      r0,r5
000504  f7fffffe          BL       USART_Cmd
;;;464      
;;;465    }
000508  bd7f              POP      {r0-r6,pc}
;;;466    
                          ENDP

                  pub_info PROC
;;;467    //------------JSONʽPUB----------{"M-SPEED": "30", "ADC":"2.7", "RANGING": "170", "TEMP": "22", "HMI": "45" }-----------------------------------
;;;468    void pub_info(void){
00050a  b530              PUSH     {r4,r5,lr}
00050c  b08b              SUB      sp,sp,#0x2c
;;;469    
;;;470    	char str1a[1];
;;;471    	char str1b[1];
;;;472    	char str1c[1];
;;;473    
;;;474    	char str3a[1];	
;;;475    	char str3b[1];	
;;;476    	char str3c[1];	
;;;477    
;;;478        char str5a[1];	
;;;479    	char str5b[1];	
;;;480    	char str5c[1];
;;;481    
;;;482    
;;;483    	char *str8;	
;;;484    	char *str9;	
;;;485    
;;;486    	char str16b[1];	
;;;487    
;;;488    
;;;489    	str1a[0]='{';
00050e  207b              MOVS     r0,#0x7b
000510  900a              STR      r0,[sp,#0x28]
;;;490    	str1b[0]=92;
000512  205c              MOVS     r0,#0x5c
000514  9009              STR      r0,[sp,#0x24]
;;;491    
;;;492    	str1c[0]='"';
000516  2022              MOVS     r0,#0x22
000518  9008              STR      r0,[sp,#0x20]
;;;493    	
;;;494    	str3a[0]='"';
00051a  9007              STR      r0,[sp,#0x1c]
;;;495    	str3b[0]=':';
00051c  203a              MOVS     r0,#0x3a
00051e  9006              STR      r0,[sp,#0x18]
;;;496    	str3c[0]='"';
000520  2022              MOVS     r0,#0x22
000522  9005              STR      r0,[sp,#0x14]
;;;497    
;;;498    	str5a[0]='"';
000524  9004              STR      r0,[sp,#0x10]
;;;499    	str5b[0]=',';
000526  202c              MOVS     r0,#0x2c
000528  9003              STR      r0,[sp,#0xc]
;;;500    	str5c[0]='"'; 
00052a  2022              MOVS     r0,#0x22
00052c  9002              STR      r0,[sp,#8]
;;;501    	     
;;;502    
;;;503    	str8="RANGING";	  
00052e  a5c4              ADR      r5,|L1.2112|
;;;504    	if(csb_flag==0) str9="0";
000530  48bb              LDR      r0,|L1.2080|
000532  6800              LDR      r0,[r0,#0]  ; csb_flag
000534  b908              CBNZ     r0,|L1.1338|
000536  a4c4              ADR      r4,|L1.2120|
000538  e000              B        |L1.1340|
                  |L1.1338|
;;;505    	else str9=dis_str_distance ;       //         
00053a  4cba              LDR      r4,|L1.2084|
                  |L1.1340|
;;;506        
;;;507        
;;;508    	
;;;509    	str16b[0]='}';
00053c  207d              MOVS     r0,#0x7d
00053e  9001              STR      r0,[sp,#4]
;;;510    
;;;511    
;;;512    	strcpy(JSON_pub_info,str1a);
000540  a90a              ADD      r1,sp,#0x28
000542  48c2              LDR      r0,|L1.2124|
000544  f7fffffe          BL       strcpy
;;;513    	strcat(JSON_pub_info,str1b); 
000548  a909              ADD      r1,sp,#0x24
00054a  48c0              LDR      r0,|L1.2124|
00054c  f7fffffe          BL       strcat
;;;514    	strcat(JSON_pub_info,str1c);
000550  a908              ADD      r1,sp,#0x20
000552  48be              LDR      r0,|L1.2124|
000554  f7fffffe          BL       strcat
;;;515    	
;;;516    	
;;;517    	strcat(JSON_pub_info,str8);
000558  4629              MOV      r1,r5
00055a  48bc              LDR      r0,|L1.2124|
00055c  f7fffffe          BL       strcat
;;;518    	strcat(JSON_pub_info,str1b);     
000560  a909              ADD      r1,sp,#0x24
000562  48ba              LDR      r0,|L1.2124|
000564  f7fffffe          BL       strcat
;;;519    	strcat(JSON_pub_info,str3a);	 
000568  a907              ADD      r1,sp,#0x1c
00056a  48b8              LDR      r0,|L1.2124|
00056c  f7fffffe          BL       strcat
;;;520    	strcat(JSON_pub_info,str3b);
000570  a906              ADD      r1,sp,#0x18
000572  48b6              LDR      r0,|L1.2124|
000574  f7fffffe          BL       strcat
;;;521    	strcat(JSON_pub_info,str1b);     
000578  a909              ADD      r1,sp,#0x24
00057a  48b4              LDR      r0,|L1.2124|
00057c  f7fffffe          BL       strcat
;;;522    	strcat(JSON_pub_info,str3c);
000580  a905              ADD      r1,sp,#0x14
000582  48b2              LDR      r0,|L1.2124|
000584  f7fffffe          BL       strcat
;;;523    	strcat(JSON_pub_info,str9);     //-----
000588  4621              MOV      r1,r4
00058a  48b0              LDR      r0,|L1.2124|
00058c  f7fffffe          BL       strcat
;;;524    	strcat(JSON_pub_info,str1b);     	  
000590  a909              ADD      r1,sp,#0x24
000592  48ae              LDR      r0,|L1.2124|
000594  f7fffffe          BL       strcat
;;;525        strcat(JSON_pub_info,str5a);
000598  a904              ADD      r1,sp,#0x10
00059a  48ac              LDR      r0,|L1.2124|
00059c  f7fffffe          BL       strcat
;;;526    
;;;527    	 
;;;528    	strcat(JSON_pub_info,str16b);       
0005a0  a901              ADD      r1,sp,#4
0005a2  48aa              LDR      r0,|L1.2124|
0005a4  f7fffffe          BL       strcat
;;;529        
;;;530    	
;;;531    	//USART_OUT(USART1,"AT+MQTTPUB=0,\"fd001\",\"{\"SW_OPEN\\\":\"ON\"\,\"SE_TEMP\":\"100\"\}\",1,0\r\n");
;;;532    
;;;533    	//strcpy(JSON_pub_info,str16);
;;;534    
;;;535    	//USART_OUT(USART1,(uint8_t *)JSON_pub_info);
;;;536    }
0005a8  b00b              ADD      sp,sp,#0x2c
0005aa  bd30              POP      {r4,r5,pc}
;;;537    
                          ENDP

                  Delay1 PROC
;;;538    void Delay1(unsigned long i){
0005ac  e000              B        |L1.1456|
                  |L1.1454|
;;;539    	while(i>0){
;;;540    		i--;
0005ae  1e40              SUBS     r0,r0,#1
                  |L1.1456|
0005b0  2800              CMP      r0,#0                 ;539
0005b2  d1fc              BNE      |L1.1454|
;;;541    	}
;;;542    }
0005b4  4770              BX       lr
;;;543    /****************************************************************************
                          ENDP

                  itoa PROC
;;;849    **********************************************************/
;;;850    char *itoa(int value, char *string, int radix)
0005b6  b5f0              PUSH     {r4-r7,lr}
;;;851    {
0005b8  4603              MOV      r3,r0
;;;852        int     i, d;
;;;853        int     flag = 0;
0005ba  2700              MOVS     r7,#0
;;;854        char    *ptr = string;
0005bc  460e              MOV      r6,r1
;;;855    
;;;856        /* This implementation only works for decimal numbers. */
;;;857        if (radix != 10)
0005be  2a0a              CMP      r2,#0xa
0005c0  d003              BEQ      |L1.1482|
;;;858        {
;;;859            *ptr = 0;
0005c2  2000              MOVS     r0,#0
0005c4  7030              STRB     r0,[r6,#0]
;;;860            return string;
0005c6  4608              MOV      r0,r1
                  |L1.1480|
;;;861        }
;;;862    
;;;863        if (!value)
;;;864        {
;;;865            *ptr++ = 0x30;
;;;866            *ptr = 0;
;;;867            return string;
;;;868        }
;;;869    
;;;870        /* if this is a negative value insert the minus sign. */
;;;871        if (value < 0)
;;;872        {
;;;873            *ptr++ = '-';
;;;874    
;;;875            /* Make the value positive. */
;;;876            value *= -1;
;;;877        }
;;;878    
;;;879        for (i = 10000; i > 0; i /= 10)
;;;880        {
;;;881            d = value / i;
;;;882    
;;;883            if (d || flag)
;;;884            {
;;;885                *ptr++ = (char)(d + 0x30);
;;;886                value -= (d * i);
;;;887                flag = 1;
;;;888            }
;;;889        }
;;;890    
;;;891        /* Null terminate the string. */
;;;892        *ptr = 0;
;;;893    
;;;894        return string;
;;;895    
;;;896    } /* NCL_Itoa */
0005c8  bdf0              POP      {r4-r7,pc}
                  |L1.1482|
0005ca  b933              CBNZ     r3,|L1.1498|
0005cc  2030              MOVS     r0,#0x30              ;865
0005ce  f8060b01          STRB     r0,[r6],#1            ;865
0005d2  2000              MOVS     r0,#0                 ;866
0005d4  7030              STRB     r0,[r6,#0]            ;866
0005d6  4608              MOV      r0,r1                 ;867
0005d8  e7f6              B        |L1.1480|
                  |L1.1498|
0005da  2b00              CMP      r3,#0                 ;871
0005dc  da03              BGE      |L1.1510|
0005de  202d              MOVS     r0,#0x2d              ;873
0005e0  f8060b01          STRB     r0,[r6],#1            ;873
0005e4  425b              RSBS     r3,r3,#0              ;876
                  |L1.1510|
0005e6  f2427410          MOV      r4,#0x2710            ;879
0005ea  e00d              B        |L1.1544|
                  |L1.1516|
0005ec  fb93f5f4          SDIV     r5,r3,r4              ;881
0005f0  b905              CBNZ     r5,|L1.1524|
0005f2  b137              CBZ      r7,|L1.1538|
                  |L1.1524|
0005f4  f1050030          ADD      r0,r5,#0x30           ;885
0005f8  f8060b01          STRB     r0,[r6],#1            ;885
0005fc  fb053314          MLS      r3,r5,r4,r3           ;886
000600  2701              MOVS     r7,#1                 ;887
                  |L1.1538|
000602  200a              MOVS     r0,#0xa               ;879
000604  fb94f4f0          SDIV     r4,r4,r0              ;879
                  |L1.1544|
000608  2c00              CMP      r4,#0                 ;879
00060a  dcef              BGT      |L1.1516|
00060c  2000              MOVS     r0,#0                 ;892
00060e  7030              STRB     r0,[r6,#0]            ;892
000610  4608              MOV      r0,r1                 ;894
000612  e7d9              B        |L1.1480|
;;;897    /****************************************************************************
                          ENDP

                  USART_OUT PROC
;;;910    ****************************************************************************/
;;;911    void USART_OUT(USART_TypeDef* USARTx, uint8_t *Data,...){ 
000614  b40f              PUSH     {r0-r3}
000616  b570              PUSH     {r4-r6,lr}
000618  b086              SUB      sp,sp,#0x18
00061a  4604              MOV      r4,r0
;;;912    
;;;913    	const char *s;
;;;914        int d;
;;;915       
;;;916        char buf[16];
;;;917        va_list ap;
;;;918        va_start(ap, Data);
00061c  a80c              ADD      r0,sp,#0x30
00061e  9001              STR      r0,[sp,#4]
;;;919    
;;;920    	while(*Data!=0){				                          //жǷ񵽴ַ
000620  e083              B        |L1.1834|
                  |L1.1570|
;;;921    		if(*Data==0x5c){									  //'\'
000622  980b              LDR      r0,[sp,#0x2c]
000624  7800              LDRB     r0,[r0,#0]
000626  285c              CMP      r0,#0x5c
000628  d12c              BNE      |L1.1668|
;;;922    			switch (*++Data){
00062a  980b              LDR      r0,[sp,#0x2c]
00062c  1c40              ADDS     r0,r0,#1
00062e  900b              STR      r0,[sp,#0x2c]
000630  7800              LDRB     r0,[r0,#0]
000632  286e              CMP      r0,#0x6e
000634  d009              BEQ      |L1.1610|
000636  2872              CMP      r0,#0x72
000638  d10f              BNE      |L1.1626|
;;;923    				case 'r':							          //س
;;;924    					USART_SendData(USARTx, 0x0d);	   
00063a  210d              MOVS     r1,#0xd
00063c  4620              MOV      r0,r4
00063e  f7fffffe          BL       USART_SendData
;;;925    
;;;926    					Data++;
000642  980b              LDR      r0,[sp,#0x2c]
000644  1c40              ADDS     r0,r0,#1
000646  900b              STR      r0,[sp,#0x2c]
;;;927    					break;
000648  e01b              B        |L1.1666|
                  |L1.1610|
;;;928    				case 'n':							          //з
;;;929    					USART_SendData(USARTx, 0x0a);	
00064a  210a              MOVS     r1,#0xa
00064c  4620              MOV      r0,r4
00064e  f7fffffe          BL       USART_SendData
;;;930    					Data++;
000652  980b              LDR      r0,[sp,#0x2c]
000654  1c40              ADDS     r0,r0,#1
000656  900b              STR      r0,[sp,#0x2c]
;;;931    					break;
000658  e013              B        |L1.1666|
                  |L1.1626|
;;;932    				
;;;933    				default:
;;;934    					USART_SendData(USARTx, 0x5c);
00065a  215c              MOVS     r1,#0x5c
00065c  4620              MOV      r0,r4
00065e  f7fffffe          BL       USART_SendData
;;;935    					while(USART_GetFlagStatus(USARTx, USART_FLAG_TC)==RESET);		 	
000662  bf00              NOP      
                  |L1.1636|
000664  2140              MOVS     r1,#0x40
000666  4620              MOV      r0,r4
000668  f7fffffe          BL       USART_GetFlagStatus
00066c  2800              CMP      r0,#0
00066e  d0f9              BEQ      |L1.1636|
;;;936    					USART_SendData(USARTx, *Data);		 					
000670  980b              LDR      r0,[sp,#0x2c]
000672  7801              LDRB     r1,[r0,#0]
000674  4620              MOV      r0,r4
000676  f7fffffe          BL       USART_SendData
;;;937    					Data++;
00067a  980b              LDR      r0,[sp,#0x2c]
00067c  1c40              ADDS     r0,r0,#1
00067e  900b              STR      r0,[sp,#0x2c]
;;;938    				    break;
000680  bf00              NOP      
                  |L1.1666|
000682  e04b              B        |L1.1820|
                  |L1.1668|
;;;939    			}  			 
;;;940    		}
;;;941    	
;;;942    		else if(*Data=='%'){									  //
000684  980b              LDR      r0,[sp,#0x2c]
000686  7800              LDRB     r0,[r0,#0]
000688  2825              CMP      r0,#0x25
00068a  d140              BNE      |L1.1806|
;;;943    			switch (*++Data){				
00068c  980b              LDR      r0,[sp,#0x2c]
00068e  1c40              ADDS     r0,r0,#1
000690  900b              STR      r0,[sp,#0x2c]
000692  7800              LDRB     r0,[r0,#0]
000694  2864              CMP      r0,#0x64
000696  d018              BEQ      |L1.1738|
000698  2873              CMP      r0,#0x73
00069a  d133              BNE      |L1.1796|
;;;944    				case 's':										  //ַ
;;;945                    	s = va_arg(ap, const char *);
00069c  9801              LDR      r0,[sp,#4]
00069e  c820              LDM      r0!,{r5}
0006a0  9001              STR      r0,[sp,#4]
;;;946                    	for ( ; *s; s++) {
0006a2  e00b              B        |L1.1724|
                  |L1.1700|
;;;947                        	USART_SendData(USARTx,*s);
0006a4  7829              LDRB     r1,[r5,#0]
0006a6  4620              MOV      r0,r4
0006a8  f7fffffe          BL       USART_SendData
;;;948    						while(USART_GetFlagStatus(USARTx, USART_FLAG_TC)==RESET);
0006ac  bf00              NOP      
                  |L1.1710|
0006ae  2140              MOVS     r1,#0x40
0006b0  4620              MOV      r0,r4
0006b2  f7fffffe          BL       USART_GetFlagStatus
0006b6  2800              CMP      r0,#0
0006b8  d0f9              BEQ      |L1.1710|
0006ba  1c6d              ADDS     r5,r5,#1              ;946
                  |L1.1724|
0006bc  7828              LDRB     r0,[r5,#0]            ;946
0006be  2800              CMP      r0,#0                 ;946
0006c0  d1f0              BNE      |L1.1700|
;;;949                    	}
;;;950    					Data++;
0006c2  980b              LDR      r0,[sp,#0x2c]
0006c4  1c40              ADDS     r0,r0,#1
0006c6  900b              STR      r0,[sp,#0x2c]
;;;951                    	break;
0006c8  e020              B        |L1.1804|
                  |L1.1738|
;;;952                	case 'd':										  //ʮ
;;;953                    	d = va_arg(ap, int);
0006ca  9801              LDR      r0,[sp,#4]
0006cc  c840              LDM      r0!,{r6}
0006ce  9001              STR      r0,[sp,#4]
;;;954                    	itoa(d, buf, 10);
0006d0  220a              MOVS     r2,#0xa
0006d2  a902              ADD      r1,sp,#8
0006d4  4630              MOV      r0,r6
0006d6  f7fffffe          BL       itoa
;;;955                    	for (s = buf; *s; s++) {
0006da  ad02              ADD      r5,sp,#8
0006dc  e00b              B        |L1.1782|
                  |L1.1758|
;;;956                        	USART_SendData(USARTx,*s);
0006de  7829              LDRB     r1,[r5,#0]
0006e0  4620              MOV      r0,r4
0006e2  f7fffffe          BL       USART_SendData
;;;957    						while(USART_GetFlagStatus(USARTx, USART_FLAG_TC)==RESET);
0006e6  bf00              NOP      
                  |L1.1768|
0006e8  2140              MOVS     r1,#0x40
0006ea  4620              MOV      r0,r4
0006ec  f7fffffe          BL       USART_GetFlagStatus
0006f0  2800              CMP      r0,#0
0006f2  d0f9              BEQ      |L1.1768|
0006f4  1c6d              ADDS     r5,r5,#1              ;955
                  |L1.1782|
0006f6  7828              LDRB     r0,[r5,#0]            ;955
0006f8  2800              CMP      r0,#0                 ;955
0006fa  d1f0              BNE      |L1.1758|
;;;958                    	}
;;;959    					Data++;
0006fc  980b              LDR      r0,[sp,#0x2c]
0006fe  1c40              ADDS     r0,r0,#1
000700  900b              STR      r0,[sp,#0x2c]
;;;960                    	break;
000702  e003              B        |L1.1804|
                  |L1.1796|
;;;961    				default:
;;;962    					Data++;
000704  980b              LDR      r0,[sp,#0x2c]
000706  1c40              ADDS     r0,r0,#1
000708  900b              STR      r0,[sp,#0x2c]
;;;963    				    break;
00070a  bf00              NOP      
                  |L1.1804|
00070c  e006              B        |L1.1820|
                  |L1.1806|
;;;964    			}		 
;;;965    		}
;;;966    		else USART_SendData(USARTx, *Data++);
00070e  980b              LDR      r0,[sp,#0x2c]
000710  f8101b01          LDRB     r1,[r0],#1
000714  900b              STR      r0,[sp,#0x2c]
000716  4620              MOV      r0,r4
000718  f7fffffe          BL       USART_SendData
                  |L1.1820|
;;;967    		while(USART_GetFlagStatus(USARTx, USART_FLAG_TC)==RESET);
00071c  bf00              NOP      
                  |L1.1822|
00071e  2140              MOVS     r1,#0x40
000720  4620              MOV      r0,r4
000722  f7fffffe          BL       USART_GetFlagStatus
000726  2800              CMP      r0,#0
000728  d0f9              BEQ      |L1.1822|
                  |L1.1834|
00072a  980b              LDR      r0,[sp,#0x2c]         ;920
00072c  7800              LDRB     r0,[r0,#0]            ;920
00072e  2800              CMP      r0,#0                 ;920
000730  f47faf77          BNE      |L1.1570|
;;;968    	}
;;;969    }
000734  b006              ADD      sp,sp,#0x18
000736  bc70              POP      {r4-r6}
000738  f85dfb14          LDR      pc,[sp],#0x14
;;;970    /******************* (C) COPYRIGHT 2023 ܶSTM32 *****END OF FILE****/
                          ENDP

                  ATBACK PROC
;;;682    ****************************************************************************/
;;;683    void ATBACK(void){    
00073c  b570              PUSH     {r4-r6,lr}
;;;684     
;;;685       char *str1;
;;;686       char *str2;   
;;;687    
;;;688      if(rec_f==1){     	 
00073e  4844              LDR      r0,|L1.2128|
000740  7800              LDRB     r0,[r0,#0]  ; rec_f
000742  2801              CMP      r0,#1
000744  d167              BNE      |L1.2070|
;;;689          
;;;690    	  str1 = (char *)TxBuffer1;		                            //USART2ATָ 
000746  4d43              LDR      r5,|L1.2132|
;;;691    	  USART_OUT(USART1,(unsigned char *)str1);					//USART2ATָݴ͵USART1ڼ 
000748  4629              MOV      r1,r5
00074a  4843              LDR      r0,|L1.2136|
00074c  f7fffffe          BL       USART_OUT
;;;692    	  str2=strstr((const char *)str1, "APIP,");		        //wifiģ12λMACַ	    
000750  a142              ADR      r1,|L1.2140|
000752  4628              MOV      r0,r5
000754  f7fffffe          BL       strstr
000758  4604              MOV      r4,r0
;;;693    	  if(str2!= NULL ){
00075a  b1fc              CBZ      r4,|L1.1948|
;;;694    	  	mac[0]=str2[8];	mac[1]=str2[9];
00075c  7a20              LDRB     r0,[r4,#8]
00075e  4941              LDR      r1,|L1.2148|
000760  7008              STRB     r0,[r1,#0]
000762  7a60              LDRB     r0,[r4,#9]
000764  7048              STRB     r0,[r1,#1]
;;;695    		mac[2]=str2[11];mac[3]=str2[12];
000766  7ae0              LDRB     r0,[r4,#0xb]
000768  7088              STRB     r0,[r1,#2]
00076a  7b20              LDRB     r0,[r4,#0xc]
00076c  70c8              STRB     r0,[r1,#3]
;;;696    		mac[4]=str2[14];mac[5]=str2[15];
00076e  7ba0              LDRB     r0,[r4,#0xe]
000770  7108              STRB     r0,[r1,#4]
000772  7be0              LDRB     r0,[r4,#0xf]
000774  7148              STRB     r0,[r1,#5]
;;;697    		mac[6]=str2[17];mac[7]=str2[18];							  
000776  7c60              LDRB     r0,[r4,#0x11]
000778  7188              STRB     r0,[r1,#6]
00077a  7ca0              LDRB     r0,[r4,#0x12]
00077c  71c8              STRB     r0,[r1,#7]
;;;698    		mac[8]=str2[20];mac[9]=str2[21];
00077e  7d20              LDRB     r0,[r4,#0x14]
000780  7208              STRB     r0,[r1,#8]
000782  7d60              LDRB     r0,[r4,#0x15]
000784  7248              STRB     r0,[r1,#9]
;;;699    		mac[10]=str2[23];mac[11]=str2[24];	  
000786  7de0              LDRB     r0,[r4,#0x17]
000788  7288              STRB     r0,[r1,#0xa]
00078a  7e20              LDRB     r0,[r4,#0x18]
00078c  72c8              STRB     r0,[r1,#0xb]
;;;700    		AT_MODE=2;
00078e  2002              MOVS     r0,#2
000790  4935              LDR      r1,|L1.2152|
000792  6008              STR      r0,[r1,#0]  ; AT_MODE
;;;701    		buff=mac;
000794  4833              LDR      r0,|L1.2148|
000796  4935              LDR      r1,|L1.2156|
000798  6008              STR      r0,[r1,#0]  ; buff
00079a  e139              B        |L1.2576|
                  |L1.1948|
;;;702    	  }
;;;703    	  else if(strstr((const char *)str1, "T+CWMODE")!= NULL) {   //WIFIģʽóɹ 
00079c  a134              ADR      r1,|L1.2160|
00079e  4628              MOV      r0,r5
0007a0  f7fffffe          BL       strstr
0007a4  b118              CBZ      r0,|L1.1966|
;;;704    		AT_MODE=1;	
0007a6  2001              MOVS     r0,#1
0007a8  492f              LDR      r1,|L1.2152|
0007aa  6008              STR      r0,[r1,#0]  ; AT_MODE
0007ac  e130              B        |L1.2576|
                  |L1.1966|
;;;705    	  }	
;;;706    	  else if(strstr((const char *)str1, "MQTTCLEAN")!= NULL && strstr((const char *)str1, "busy p")!= NULL) {   //WIFIģʽóɹ 
0007ae  a133              ADR      r1,|L1.2172|
0007b0  4628              MOV      r0,r5
0007b2  f7fffffe          BL       strstr
0007b6  b140              CBZ      r0,|L1.1994|
0007b8  a133              ADR      r1,|L1.2184|
0007ba  4628              MOV      r0,r5
0007bc  f7fffffe          BL       strstr
0007c0  b118              CBZ      r0,|L1.1994|
;;;707    		AT_MODE=8;	
0007c2  2008              MOVS     r0,#8
0007c4  4928              LDR      r1,|L1.2152|
0007c6  6008              STR      r0,[r1,#0]  ; AT_MODE
0007c8  e122              B        |L1.2576|
                  |L1.1994|
;;;708    	  }	
;;;709    	  else if(strstr((const char *)str1, "T+CIPSTART")!= NULL) { //WIFI·½ɹ 
0007ca  a131              ADR      r1,|L1.2192|
0007cc  4628              MOV      r0,r5
0007ce  f7fffffe          BL       strstr
0007d2  b130              CBZ      r0,|L1.2018|
;;;710    	  	wifi_connected=1;
0007d4  2001              MOVS     r0,#1
0007d6  4931              LDR      r1,|L1.2204|
0007d8  7008              STRB     r0,[r1,#0]
;;;711    		AT_MODE=3;	  
0007da  2003              MOVS     r0,#3
0007dc  4922              LDR      r1,|L1.2152|
0007de  6008              STR      r0,[r1,#0]  ; AT_MODE
0007e0  e116              B        |L1.2576|
                  |L1.2018|
;;;712    	  }
;;;713    	  else if(strstr((const char *)str1, "T+MQTTUSERCFG")!= NULL) {  //MQTT ûòɹ
0007e2  a12f              ADR      r1,|L1.2208|
0007e4  4628              MOV      r0,r5
0007e6  f7fffffe          BL       strstr
0007ea  b118              CBZ      r0,|L1.2036|
;;;714    		AT_MODE=4;
0007ec  2004              MOVS     r0,#4
0007ee  491e              LDR      r1,|L1.2152|
0007f0  6008              STR      r0,[r1,#0]  ; AT_MODE
0007f2  e10d              B        |L1.2576|
                  |L1.2036|
;;;715    	  }	
;;;716    	  else if(strstr((const char *)str1, "MQTTCONNECTED")!= NULL && strstr((const char *)str1, "T+MQTTCONN")!= NULL) { //MQTT½ɹ
0007f4  a12e              ADR      r1,|L1.2224|
0007f6  4628              MOV      r0,r5
0007f8  f7fffffe          BL       strstr
0007fc  b160              CBZ      r0,|L1.2072|
0007fe  a130              ADR      r1,|L1.2240|
000800  4628              MOV      r0,r5
000802  f7fffffe          BL       strstr
000806  b138              CBZ      r0,|L1.2072|
;;;717    		AT_MODE=5;	
000808  2005              MOVS     r0,#5
00080a  4917              LDR      r1,|L1.2152|
00080c  6008              STR      r0,[r1,#0]  ; AT_MODE
;;;718    		mqtt_connected=1;
00080e  2001              MOVS     r0,#1
000810  492e              LDR      r1,|L1.2252|
000812  7008              STRB     r0,[r1,#0]
                  |L1.2068|
000814  e0fc              B        |L1.2576|
                  |L1.2070|
000816  e102              B        |L1.2590|
                  |L1.2072|
000818  e05a              B        |L1.2256|
00081a  0000              DCW      0x0000
                  |L1.2076|
00081c  636d00            DCB      "cm",0
00081f  00                DCB      0
                  |L1.2080|
                          DCD      csb_flag
                  |L1.2084|
                          DCD      dis_str_distance
                  |L1.2088|
000828  30202000          DCB      "0  ",0
                  |L1.2092|
                          DCD      0x40010c00
                  |L1.2096|
                          DCD      ||ct||
                  |L1.2100|
                          DCD      distan
                  |L1.2104|
                          DCD      sample_ct
                  |L1.2108|
                          DCD      distance
                  |L1.2112|
000840  52414e47494e4700        DCB      "RANGING",0
                  |L1.2120|
000848  3000              DCB      "0",0
00084a  00                DCB      0
00084b  00                DCB      0
                  |L1.2124|
                          DCD      JSON_pub_info
                  |L1.2128|
                          DCD      rec_f
                  |L1.2132|
                          DCD      TxBuffer1
                  |L1.2136|
                          DCD      0x40013800
                  |L1.2140|
00085c  415049502c00        DCB      "APIP,",0
000862  00                DCB      0
000863  00                DCB      0
                  |L1.2148|
                          DCD      mac
                  |L1.2152|
                          DCD      AT_MODE
                  |L1.2156|
                          DCD      buff
                  |L1.2160|
000870  542b43574d4f444500        DCB      "T+CWMODE",0
000879  00                DCB      0
00087a  00                DCB      0
00087b  00                DCB      0
                  |L1.2172|
00087c  4d515454434c45414e00        DCB      "MQTTCLEAN",0
000886  00                DCB      0
000887  00                DCB      0
                  |L1.2184|
000888  62757379207000        DCB      "busy p",0
00088f  00                DCB      0
                  |L1.2192|
000890  542b434950535441525400        DCB      "T+CIPSTART",0
00089b  00                DCB      0
                  |L1.2204|
                          DCD      wifi_connected
                  |L1.2208|
0008a0  542b4d5154545553455243464700        DCB      "T+MQTTUSERCFG",0
0008ae  00                DCB      0
0008af  00                DCB      0
                  |L1.2224|
0008b0  4d515454434f4e4e454354454400        DCB      "MQTTCONNECTED",0
0008be  00                DCB      0
0008bf  00                DCB      0
                  |L1.2240|
0008c0  542b4d515454434f4e4e00        DCB      "T+MQTTCONN",0
0008cb  00                DCB      0
                  |L1.2252|
                          DCD      mqtt_connected
                  |L1.2256|
;;;719    	  }
;;;720    	  else if(strstr((const char *)str1, "T+MQTTPUB")!= NULL) {   //MQTT ɹ
0008d0  a1ff              ADR      r1,|L1.3280|
0008d2  4628              MOV      r0,r5
0008d4  f7fffffe          BL       strstr
0008d8  b118              CBZ      r0,|L1.2274|
;;;721    		pub_send_flag=0;	
0008da  2000              MOVS     r0,#0
0008dc  49ff              LDR      r1,|L1.3292|
0008de  7008              STRB     r0,[r1,#0]
0008e0  e096              B        |L1.2576|
                  |L1.2274|
;;;722    		//USART_OUT1(USART1,"4\r\n");	
;;;723    	  }	
;;;724    	  else if(strstr((const char *)str1, "IPD")!= NULL) {  ////յMQTTѶϢ:led
0008e2  a1ff              ADR      r1,|L1.3296|
0008e4  4628              MOV      r0,r5
0008e6  f7fffffe          BL       strstr
0008ea  2800              CMP      r0,#0
0008ec  d092              BEQ      |L1.2068|
;;;725    		 if(strstr((const char *)str1, "go")!= NULL){  		 
0008ee  a1fd              ADR      r1,|L1.3300|
0008f0  4628              MOV      r0,r5
0008f2  f7fffffe          BL       strstr
0008f6  b128              CBZ      r0,|L1.2308|
;;;726    			move_status=1;	
0008f8  2001              MOVS     r0,#1
0008fa  49fb              LDR      r1,|L1.3304|
0008fc  7008              STRB     r0,[r1,#0]
;;;727    			first=1;															
0008fe  49fb              LDR      r1,|L1.3308|
000900  7008              STRB     r0,[r1,#0]
000902  e085              B        |L1.2576|
                  |L1.2308|
;;;728    		 }
;;;729    		 else if(strstr((const char *)str1, "back")!= NULL){  		 
000904  a1fa              ADR      r1,|L1.3312|
000906  4628              MOV      r0,r5
000908  f7fffffe          BL       strstr
00090c  b130              CBZ      r0,|L1.2332|
;;;730    			move_status=2;
00090e  2002              MOVS     r0,#2
000910  49f5              LDR      r1,|L1.3304|
000912  7008              STRB     r0,[r1,#0]
;;;731    			first=1;																	
000914  2001              MOVS     r0,#1
000916  49f5              LDR      r1,|L1.3308|
000918  7008              STRB     r0,[r1,#0]
00091a  e079              B        |L1.2576|
                  |L1.2332|
;;;732    		 }
;;;733    		 else if(strstr((const char *)str1, "right")!= NULL){  		 
00091c  a1f6              ADR      r1,|L1.3320|
00091e  4628              MOV      r0,r5
000920  f7fffffe          BL       strstr
000924  b130              CBZ      r0,|L1.2356|
;;;734    			move_status=3;
000926  2003              MOVS     r0,#3
000928  49ef              LDR      r1,|L1.3304|
00092a  7008              STRB     r0,[r1,#0]
;;;735    			first=1;																			
00092c  2001              MOVS     r0,#1
00092e  49ef              LDR      r1,|L1.3308|
000930  7008              STRB     r0,[r1,#0]
000932  e06d              B        |L1.2576|
                  |L1.2356|
;;;736    		 }
;;;737    		 else if(strstr((const char *)str1, "left")!= NULL){  		 
000934  a1f2              ADR      r1,|L1.3328|
000936  4628              MOV      r0,r5
000938  f7fffffe          BL       strstr
00093c  b130              CBZ      r0,|L1.2380|
;;;738    			move_status=4;	
00093e  2004              MOVS     r0,#4
000940  49e9              LDR      r1,|L1.3304|
000942  7008              STRB     r0,[r1,#0]
;;;739    			first=1;																		
000944  2001              MOVS     r0,#1
000946  49e9              LDR      r1,|L1.3308|
000948  7008              STRB     r0,[r1,#0]
00094a  e061              B        |L1.2576|
                  |L1.2380|
;;;740    		 }
;;;741    		 else if(strstr((const char *)str1, "stop")!= NULL){  		 
00094c  a1ee              ADR      r1,|L1.3336|
00094e  4628              MOV      r0,r5
000950  f7fffffe          BL       strstr
000954  b130              CBZ      r0,|L1.2404|
;;;742    			move_status=0;
000956  2000              MOVS     r0,#0
000958  49e3              LDR      r1,|L1.3304|
00095a  7008              STRB     r0,[r1,#0]
;;;743    			first=1;																			
00095c  2001              MOVS     r0,#1
00095e  49e3              LDR      r1,|L1.3308|
000960  7008              STRB     r0,[r1,#0]
000962  e055              B        |L1.2576|
                  |L1.2404|
;;;744    		 }
;;;745    		 else if(strstr((const char *)str1, "devon")!= NULL){  		 
000964  a1ea              ADR      r1,|L1.3344|
000966  4628              MOV      r0,r5
000968  f7fffffe          BL       strstr
00096c  b148              CBZ      r0,|L1.2434|
;;;746    			move_status=0;
00096e  2000              MOVS     r0,#0
000970  49dd              LDR      r1,|L1.3304|
000972  7008              STRB     r0,[r1,#0]
;;;747    			csb_flag=1; 
000974  2001              MOVS     r0,#1
000976  49e8              LDR      r1,|L1.3352|
000978  6008              STR      r0,[r1,#0]  ; csb_flag
;;;748    			first=0;																			
00097a  2000              MOVS     r0,#0
00097c  49db              LDR      r1,|L1.3308|
00097e  7008              STRB     r0,[r1,#0]
000980  e046              B        |L1.2576|
                  |L1.2434|
;;;749    		 }
;;;750    		 else if(strstr((const char *)str1, "devoff")!= NULL){  		 
000982  a1e6              ADR      r1,|L1.3356|
000984  4628              MOV      r0,r5
000986  f7fffffe          BL       strstr
00098a  b140              CBZ      r0,|L1.2462|
;;;751    			csb_flag=0;
00098c  2000              MOVS     r0,#0
00098e  49e2              LDR      r1,|L1.3352|
000990  6008              STR      r0,[r1,#0]  ; csb_flag
;;;752    			move_status=0;
000992  49d5              LDR      r1,|L1.3304|
000994  7008              STRB     r0,[r1,#0]
;;;753    			first=1;																			
000996  2001              MOVS     r0,#1
000998  49d4              LDR      r1,|L1.3308|
00099a  7008              STRB     r0,[r1,#0]
00099c  e038              B        |L1.2576|
                  |L1.2462|
;;;754    		 }	
;;;755    		 else if(strstr((const char *)str1, "low")!= NULL){  		 
00099e  a1e1              ADR      r1,|L1.3364|
0009a0  4628              MOV      r0,r5
0009a2  f7fffffe          BL       strstr
0009a6  b170              CBZ      r0,|L1.2502|
;;;756    			PWM_Val=10000;
0009a8  f2427010          MOV      r0,#0x2710
0009ac  49de              LDR      r1,|L1.3368|
0009ae  6008              STR      r0,[r1,#0]  ; PWM_Val
;;;757    			move_status=0;
0009b0  2000              MOVS     r0,#0
0009b2  49cd              LDR      r1,|L1.3304|
0009b4  7008              STRB     r0,[r1,#0]
;;;758    			if(csb_flag==0) first=1;																				
0009b6  48d8              LDR      r0,|L1.3352|
0009b8  6800              LDR      r0,[r0,#0]  ; csb_flag
0009ba  2800              CMP      r0,#0
0009bc  d128              BNE      |L1.2576|
0009be  2001              MOVS     r0,#1
0009c0  49ca              LDR      r1,|L1.3308|
0009c2  7008              STRB     r0,[r1,#0]
0009c4  e024              B        |L1.2576|
                  |L1.2502|
;;;759    		 }
;;;760    		 else if(strstr((const char *)str1, "mid")!= NULL){  		 
0009c6  a1d9              ADR      r1,|L1.3372|
0009c8  4628              MOV      r0,r5
0009ca  f7fffffe          BL       strstr
0009ce  b168              CBZ      r0,|L1.2540|
;;;761    			PWM_Val=20000;
0009d0  f6446020          MOV      r0,#0x4e20
0009d4  49d4              LDR      r1,|L1.3368|
0009d6  6008              STR      r0,[r1,#0]  ; PWM_Val
;;;762    			move_status=0;
0009d8  2000              MOVS     r0,#0
0009da  49c3              LDR      r1,|L1.3304|
0009dc  7008              STRB     r0,[r1,#0]
;;;763    			if(csb_flag==0) first=1;																					
0009de  48ce              LDR      r0,|L1.3352|
0009e0  6800              LDR      r0,[r0,#0]  ; csb_flag
0009e2  b9a8              CBNZ     r0,|L1.2576|
0009e4  2001              MOVS     r0,#1
0009e6  49c1              LDR      r1,|L1.3308|
0009e8  7008              STRB     r0,[r1,#0]
0009ea  e011              B        |L1.2576|
                  |L1.2540|
;;;764    		 }
;;;765    		 else if(strstr((const char *)str1, "high")!= NULL){  		 
0009ec  a1d0              ADR      r1,|L1.3376|
0009ee  4628              MOV      r0,r5
0009f0  f7fffffe          BL       strstr
0009f4  b160              CBZ      r0,|L1.2576|
;;;766    			PWM_Val=30000;
0009f6  f2475030          MOV      r0,#0x7530
0009fa  49cb              LDR      r1,|L1.3368|
0009fc  6008              STR      r0,[r1,#0]  ; PWM_Val
;;;767    			move_status=0;
0009fe  2000              MOVS     r0,#0
000a00  49b9              LDR      r1,|L1.3304|
000a02  7008              STRB     r0,[r1,#0]
;;;768    			if(csb_flag==0) first=1;																			
000a04  48c4              LDR      r0,|L1.3352|
000a06  6800              LDR      r0,[r0,#0]  ; csb_flag
000a08  b910              CBNZ     r0,|L1.2576|
000a0a  2001              MOVS     r0,#1
000a0c  49b7              LDR      r1,|L1.3308|
000a0e  7008              STRB     r0,[r1,#0]
                  |L1.2576|
;;;769    		 }
;;;770    
;;;771    		 
;;;772    	  }	
;;;773    	  
;;;774    	  //memset((char *)TxBuffer1, 0, strlen((const char*)TxBuffer1));	    //ݻ
;;;775    	  memset((char *)TxBuffer1, 0, 200);	    //ݻ
000a10  21c8              MOVS     r1,#0xc8
000a12  48c9              LDR      r0,|L1.3384|
000a14  f7fffffe          BL       __aeabi_memclr4
;;;776    	  rec_f=0;		
000a18  2000              MOVS     r0,#0
000a1a  49c8              LDR      r1,|L1.3388|
000a1c  7008              STRB     r0,[r1,#0]
                  |L1.2590|
;;;777    	  
;;;778       } 
;;;779    }
000a1e  bd70              POP      {r4-r6,pc}
;;;780    /****************************************************************************
                          ENDP

                  Usart_Init PROC
;;;810    ****************************************************************************/
;;;811    void Usart_Init(void)
000a20  b508              PUSH     {r3,lr}
;;;812    {
;;;813      GPIO_InitTypeDef GPIO_InitStructure;
;;;814    
;;;815    
;;;816      /*  USART2 Rx (PA.3) Ϊ */
;;;817      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
000a22  2008              MOVS     r0,#8
000a24  f8ad0000          STRH     r0,[sp,#0]
;;;818      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
000a28  2004              MOVS     r0,#4
000a2a  f88d0003          STRB     r0,[sp,#3]
;;;819      GPIO_Init(GPIOA, &GPIO_InitStructure);
000a2e  4669              MOV      r1,sp
000a30  48c3              LDR      r0,|L1.3392|
000a32  f7fffffe          BL       GPIO_Init
;;;820      
;;;821      /*  USART2 Tx (PA.02) Ϊù */
;;;822      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
000a36  2004              MOVS     r0,#4
000a38  f8ad0000          STRH     r0,[sp,#0]
;;;823      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
000a3c  2003              MOVS     r0,#3
000a3e  f88d0002          STRB     r0,[sp,#2]
;;;824      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
000a42  2018              MOVS     r0,#0x18
000a44  f88d0003          STRB     r0,[sp,#3]
;;;825      GPIO_Init(GPIOA, &GPIO_InitStructure);
000a48  4669              MOV      r1,sp
000a4a  48bd              LDR      r0,|L1.3392|
000a4c  f7fffffe          BL       GPIO_Init
;;;826      
;;;827      /*  USART1 Rx (PA.10) Ϊ */
;;;828      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
000a50  f44f6080          MOV      r0,#0x400
000a54  f8ad0000          STRH     r0,[sp,#0]
;;;829      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
000a58  2004              MOVS     r0,#4
000a5a  f88d0003          STRB     r0,[sp,#3]
;;;830      GPIO_Init(GPIOA, &GPIO_InitStructure);
000a5e  4669              MOV      r1,sp
000a60  48b7              LDR      r0,|L1.3392|
000a62  f7fffffe          BL       GPIO_Init
;;;831      
;;;832      /*  USART1 Tx (PA.09) Ϊù */
;;;833      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
000a66  f44f7000          MOV      r0,#0x200
000a6a  f8ad0000          STRH     r0,[sp,#0]
;;;834      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
000a6e  2003              MOVS     r0,#3
000a70  f88d0002          STRB     r0,[sp,#2]
;;;835      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
000a74  2018              MOVS     r0,#0x18
000a76  f88d0003          STRB     r0,[sp,#3]
;;;836      GPIO_Init(GPIOA, &GPIO_InitStructure);	 
000a7a  4669              MOV      r1,sp
000a7c  48b0              LDR      r0,|L1.3392|
000a7e  f7fffffe          BL       GPIO_Init
;;;837    
;;;838      
;;;839    }
000a82  bd08              POP      {r3,pc}
;;;840    /******************************************************
                          ENDP

                  RCC_Configuration PROC
;;;787    ****************************************************************************/ 
;;;788    void RCC_Configuration(void){
000a84  b510              PUSH     {r4,lr}
;;;789    
;;;790       SystemInit();   
000a86  f7fffffe          BL       SystemInit
;;;791       
;;;792       RCC_ADCCLKConfig(RCC_PCLK2_Div6); 
000a8a  f44f4000          MOV      r0,#0x8000
000a8e  f7fffffe          BL       RCC_ADCCLKConfig
;;;793       RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);	    
000a92  2101              MOVS     r1,#1
000a94  4608              MOV      r0,r1
000a96  f7fffffe          BL       RCC_APB2PeriphClockCmd
;;;794       RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB  , ENABLE);
000a9a  2101              MOVS     r1,#1
000a9c  200c              MOVS     r0,#0xc
000a9e  f7fffffe          BL       RCC_APB2PeriphClockCmd
;;;795       /* ʹUSART1 ʱ */ 
;;;796      RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
000aa2  2101              MOVS     r1,#1
000aa4  0388              LSLS     r0,r1,#14
000aa6  f7fffffe          BL       RCC_APB2PeriphClockCmd
;;;797      /* ʹUSART2 ʱ */ 
;;;798      RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
000aaa  2101              MOVS     r1,#1
000aac  0448              LSLS     r0,r1,#17
000aae  f7fffffe          BL       RCC_APB1PeriphClockCmd
;;;799       
;;;800    }
000ab2  bd10              POP      {r4,pc}
;;;801    
                          ENDP

                  main PROC
;;;550    ****************************************************************************/ 
;;;551    int main(void)
000ab4  b500              PUSH     {lr}
;;;552    { 
000ab6  b089              SUB      sp,sp,#0x24
;;;553      char id[30];						 //豸ID
;;;554      csb_flag=0;						 //ʲͣ־
000ab8  2000              MOVS     r0,#0
000aba  4997              LDR      r1,|L1.3352|
000abc  6008              STR      r0,[r1,#0]  ; csb_flag
;;;555      ssid="mywan";						 //wifi·
000abe  a0a1              ADR      r0,|L1.3396|
000ac0  49a2              LDR      r1,|L1.3404|
000ac2  6008              STR      r0,[r1,#0]  ; ssid
;;;556      password="www.ourstm.net"; 		 //wifi
000ac4  a0a2              ADR      r0,|L1.3408|
000ac6  49a6              LDR      r1,|L1.3424|
000ac8  6008              STR      r0,[r1,#0]  ; password
;;;557      mqtt_server="broker.emqx.io";		 //MQTTַ
000aca  a0a6              ADR      r0,|L1.3428|
000acc  49a9              LDR      r1,|L1.3444|
000ace  6008              STR      r0,[r1,#0]  ; mqtt_server
;;;558      mqtt_port="1883";					 //MQTT˿ں
000ad0  a0a9              ADR      r0,|L1.3448|
000ad2  49ab              LDR      r1,|L1.3456|
000ad4  6008              STR      r0,[r1,#0]  ; mqtt_port
;;;559    
;;;560      RCC_Configuration();	             //ڲʱӼʱʹ	 
000ad6  f7fffffe          BL       RCC_Configuration
;;;561      NVIC_Configuration();				 //жԴ
000ada  f7fffffe          BL       NVIC_Configuration
;;;562     
;;;563      Delay1(6000000);	                  //ʱ100ms
000ade  48a9              LDR      r0,|L1.3460|
000ae0  f7fffffe          BL       Delay1
;;;564      
;;;565      csb_Configuration();				  //ƽųʼ   
000ae4  f7fffffe          BL       csb_Configuration
;;;566      GPIO_Config();		
000ae8  f7fffffe          BL       GPIO_Config
;;;567      Usart_Init();		                 //ڳʼ  
000aec  f7fffffe          BL       Usart_Init
;;;568      
;;;569      USART_Config(USART1,115200);	     //1
000af0  f44f31e1          MOV      r1,#0x1c200
000af4  48a4              LDR      r0,|L1.3464|
000af6  f7fffffe          BL       USART_Config
;;;570      USART_Config(USART2,115200);	     //2   
000afa  f44f31e1          MOV      r1,#0x1c200
000afe  48a3              LDR      r0,|L1.3468|
000b00  f7fffffe          BL       USART_Config
;;;571      timer2_ini();						 //ʱ2ʼ
000b04  f7fffffe          BL       timer2_ini
;;;572      timer3_ini();						 //ʱ3ʼ    
000b08  f7fffffe          BL       timer3_ini
;;;573      SPI_Configuration();   
000b0c  f7fffffe          BL       SPI_Configuration
;;;574       
;;;575      Select_OLED
000b10  f44f5180          MOV      r1,#0x1000
000b14  489e              LDR      r0,|L1.3472|
000b16  f7fffffe          BL       GPIO_ResetBits
;;;576      
;;;577      if (SysTick_Config(72))		      //ʱӽжʱ1usһ  ڶʱ 
000b1a  bf00              NOP      
000b1c  2048              MOVS     r0,#0x48
000b1e  f1b07f80          CMP      r0,#0x1000000
000b22  d301              BCC      |L1.2856|
000b24  2001              MOVS     r0,#1
000b26  e01a              B        |L1.2910|
                  |L1.2856|
000b28  2047              MOVS     r0,#0x47
000b2a  f04f21e0          MOV      r1,#0xe000e000
000b2e  6148              STR      r0,[r1,#0x14]
000b30  bf00              NOP      
000b32  1748              ASRS     r0,r1,#29
000b34  2800              CMP      r0,#0
000b36  da05              BGE      |L1.2884|
000b38  200f              MOVS     r0,#0xf
000b3a  0100              LSLS     r0,r0,#4
000b3c  4995              LDR      r1,|L1.3476|
000b3e  220b              MOVS     r2,#0xb
000b40  5488              STRB     r0,[r1,r2]
000b42  e004              B        |L1.2894|
                  |L1.2884|
000b44  200f              MOVS     r0,#0xf
000b46  0100              LSLS     r0,r0,#4
000b48  4993              LDR      r1,|L1.3480|
000b4a  174a              ASRS     r2,r1,#29
000b4c  5488              STRB     r0,[r1,r2]
                  |L1.2894|
000b4e  bf00              NOP      
000b50  2000              MOVS     r0,#0
000b52  f04f21e0          MOV      r1,#0xe000e000
000b56  6188              STR      r0,[r1,#0x18]
000b58  2007              MOVS     r0,#7
000b5a  6108              STR      r0,[r1,#0x10]
000b5c  2000              MOVS     r0,#0
                  |L1.2910|
000b5e  b108              CBZ      r0,|L1.2916|
;;;578       { 
;;;579        
;;;580         while (1);
000b60  bf00              NOP      
                  |L1.2914|
000b62  e7fe              B        |L1.2914|
                  |L1.2916|
;;;581       }
;;;582    
;;;583      Delay(600000);	                  //ʱ100ms
000b64  488d              LDR      r0,|L1.3484|
000b66  f7fffffe          BL       Delay
;;;584      LED_Config();	
000b6a  f7fffffe          BL       LED_Config
;;;585      LCD_Init();						  //OLEDʼ
000b6e  f7fffffe          BL       LCD_Init
;;;586      
;;;587      
;;;588     
;;;589      Delay(100000);	                  //ʱ100ms
000b72  488b              LDR      r0,|L1.3488|
000b74  f7fffffe          BL       Delay
;;;590      AT_ATE(1);		                  //EPS8266 AT
000b78  2001              MOVS     r0,#1
000b7a  f7fffffe          BL       AT_ATE
;;;591      Delay(200000);					  //ʱ500ms
000b7e  4889              LDR      r0,|L1.3492|
000b80  f7fffffe          BL       Delay
;;;592      ATBACK();
000b84  f7fffffe          BL       ATBACK
;;;593      distance=0;
000b88  2000              MOVS     r0,#0
000b8a  4987              LDR      r1,|L1.3496|
000b8c  6008              STR      r0,[r1,#0]  ; distance
;;;594      while(1)
000b8e  e174              B        |L1.3706|
                  |L1.2960|
;;;595      {	 								    	 
;;;596    	 if(AT_MODE==0){
000b90  4886              LDR      r0,|L1.3500|
000b92  6800              LDR      r0,[r0,#0]  ; AT_MODE
000b94  b950              CBNZ     r0,|L1.2988|
;;;597    	 	LCD_CLS();
000b96  f7fffffe          BL       LCD_CLS
;;;598    	    LCD_P6x8Str(0,0,"UDP Connecting...");   
000b9a  a285              ADR      r2,|L1.3504|
000b9c  2100              MOVS     r1,#0
000b9e  4608              MOV      r0,r1
000ba0  f7fffffe          BL       LCD_P6x8Str
;;;599    	 	AT_CWMODE('2');	              //	station	mode
000ba4  2032              MOVS     r0,#0x32
000ba6  f7fffffe          BL       AT_CWMODE
000baa  e01e              B        |L1.3050|
                  |L1.2988|
;;;600    			
;;;601    	 }
;;;602    	 else if(AT_MODE==1){
000bac  487f              LDR      r0,|L1.3500|
000bae  6800              LDR      r0,[r0,#0]  ; AT_MODE
000bb0  2801              CMP      r0,#1
000bb2  d107              BNE      |L1.3012|
;;;603    	   LCD_P6x8Str(0,1,"UDP Connecting...");   
000bb4  a27e              ADR      r2,|L1.3504|
000bb6  2101              MOVS     r1,#1
000bb8  2000              MOVS     r0,#0
000bba  f7fffffe          BL       LCD_P6x8Str
;;;604    	   AT_CIFSR();	  
000bbe  f7fffffe          BL       AT_CIFSR
000bc2  e012              B        |L1.3050|
                  |L1.3012|
;;;605    	 }
;;;606    	 else if(AT_MODE==2){
000bc4  4879              LDR      r0,|L1.3500|
000bc6  6800              LDR      r0,[r0,#0]  ; AT_MODE
000bc8  2802              CMP      r0,#2
000bca  d10e              BNE      |L1.3050|
;;;607    	    strcpy(id,"ID:");
000bcc  a17d              ADR      r1,|L1.3524|
000bce  a801              ADD      r0,sp,#4
000bd0  f7fffffe          BL       strcpy
;;;608    	    strcat(id,mac);
000bd4  497c              LDR      r1,|L1.3528|
000bd6  a801              ADD      r0,sp,#4
000bd8  f7fffffe          BL       strcat
;;;609    	    LCD_P6x8Str(0,1,id);   
000bdc  aa01              ADD      r2,sp,#4
000bde  2101              MOVS     r1,#1
000be0  2000              MOVS     r0,#0
000be2  f7fffffe          BL       LCD_P6x8Str
;;;610    	    AT_CIPSTART();                     //UDP
000be6  f7fffffe          BL       AT_CIPSTART
                  |L1.3050|
;;;611    		
;;;612    		//AT_CWJAP(ssid,password);				    //½wifi·
;;;613    	 }
;;;614    	 
;;;615    	 
;;;616    	 ATBACK();
000bea  f7fffffe          BL       ATBACK
;;;617    	 if(AT_MODE==4 && csb_flag==1 && move_status==0){
000bee  486f              LDR      r0,|L1.3500|
000bf0  6800              LDR      r0,[r0,#0]  ; AT_MODE
000bf2  2804              CMP      r0,#4
000bf4  d152              BNE      |L1.3228|
000bf6  4848              LDR      r0,|L1.3352|
000bf8  6800              LDR      r0,[r0,#0]  ; csb_flag
000bfa  2801              CMP      r0,#1
000bfc  d14e              BNE      |L1.3228|
000bfe  483a              LDR      r0,|L1.3304|
000c00  7800              LDRB     r0,[r0,#0]  ; move_status
000c02  2800              CMP      r0,#0
000c04  d14a              BNE      |L1.3228|
;;;618    	 	//numm();										        //ɨ	 	 	
;;;619    	 	csb_distance();                                     //ࣨcm
000c06  f7fffffe          BL       csb_distance
;;;620    		
;;;621    		//distan[ct]= ((ct*68)/100);		         //ݼĶʱʱϰľ   
;;;622      	
;;;623    		if(distan[sample_ct]<=400){ 
000c0a  4870              LDR      r0,|L1.3532|
000c0c  4970              LDR      r1,|L1.3536|
000c0e  6809              LDR      r1,[r1,#0]  ; sample_ct
000c10  f8500021          LDR      r0,[r0,r1,LSL #2]
000c14  f5b07fc8          CMP      r0,#0x190
000c18  dc0e              BGT      |L1.3128|
;;;624    	 		distance=distance+distan[sample_ct];
000c1a  486c              LDR      r0,|L1.3532|
000c1c  496c              LDR      r1,|L1.3536|
000c1e  6809              LDR      r1,[r1,#0]  ; sample_ct
000c20  f8500021          LDR      r0,[r0,r1,LSL #2]
000c24  4960              LDR      r1,|L1.3496|
000c26  6809              LDR      r1,[r1,#0]  ; distance
000c28  4408              ADD      r0,r0,r1
000c2a  495f              LDR      r1,|L1.3496|
000c2c  6008              STR      r0,[r1,#0]  ; distance
;;;625    	 		sample_ct++;
000c2e  4868              LDR      r0,|L1.3536|
000c30  6800              LDR      r0,[r0,#0]  ; sample_ct
000c32  1c40              ADDS     r0,r0,#1
000c34  4966              LDR      r1,|L1.3536|
000c36  6008              STR      r0,[r1,#0]  ; sample_ct
                  |L1.3128|
;;;626    		}
;;;627    		if(sample_ct>=5){
000c38  4865              LDR      r0,|L1.3536|
000c3a  6800              LDR      r0,[r0,#0]  ; sample_ct
000c3c  2805              CMP      r0,#5
000c3e  db2d              BLT      |L1.3228|
;;;628    	 		distance=distance/5;      		
000c40  4859              LDR      r0,|L1.3496|
000c42  6800              LDR      r0,[r0,#0]  ; distance
000c44  2105              MOVS     r1,#5
000c46  fbb0f0f1          UDIV     r0,r0,r1
000c4a  4957              LDR      r1,|L1.3496|
000c4c  6008              STR      r0,[r1,#0]  ; distance
;;;629    			sample_ct=0;
000c4e  2000              MOVS     r0,#0
000c50  495f              LDR      r1,|L1.3536|
000c52  6008              STR      r0,[r1,#0]  ; sample_ct
;;;630    		  
;;;631    			itoa(distance, (char *)dis_str_distance,10);	          //ֵתΪַ
000c54  220a              MOVS     r2,#0xa
000c56  495f              LDR      r1,|L1.3540|
000c58  4853              LDR      r0,|L1.3496|
000c5a  6800              LDR      r0,[r0,#0]  ; distance
000c5c  f7fffffe          BL       itoa
;;;632    			DIS_csb();	
000c60  f7fffffe          BL       DIS_csb
;;;633    
;;;634    			if(distance<=10){
000c64  4850              LDR      r0,|L1.3496|
000c66  6800              LDR      r0,[r0,#0]  ; distance
000c68  280a              CMP      r0,#0xa
000c6a  d80e              BHI      |L1.3210|
;;;635    			
;;;636    				Move_back(PWM_Val);
000c6c  482e              LDR      r0,|L1.3368|
000c6e  6800              LDR      r0,[r0,#0]  ; PWM_Val
000c70  f7fffffe          BL       Move_back
;;;637    				Delay(600000);	
000c74  4849              LDR      r0,|L1.3484|
000c76  f7fffffe          BL       Delay
;;;638    				Move_right(PWM_Val); 
000c7a  482b              LDR      r0,|L1.3368|
000c7c  6800              LDR      r0,[r0,#0]  ; PWM_Val
000c7e  f7fffffe          BL       Move_right
;;;639    				Delay(100000);	
000c82  4847              LDR      r0,|L1.3488|
000c84  f7fffffe          BL       Delay
000c88  e005              B        |L1.3222|
                  |L1.3210|
;;;640    			} 
;;;641    			else{
;;;642    				brake();
000c8a  f7fffffe          BL       brake
;;;643    				Move_go(PWM_Val);
000c8e  4826              LDR      r0,|L1.3368|
000c90  6800              LDR      r0,[r0,#0]  ; PWM_Val
000c92  f7fffffe          BL       Move_go
                  |L1.3222|
;;;644    			} 
;;;645    			
;;;646    	 		distance=0;
000c96  2000              MOVS     r0,#0
000c98  4943              LDR      r1,|L1.3496|
000c9a  6008              STR      r0,[r1,#0]  ; distance
                  |L1.3228|
;;;647    	   	}
;;;648    	 }	 	 
;;;649    	
;;;650    	 if(num==0 && AT_MODE==3){
000c9c  484e              LDR      r0,|L1.3544|
000c9e  7800              LDRB     r0,[r0,#0]  ; num
000ca0  b940              CBNZ     r0,|L1.3252|
000ca2  4842              LDR      r0,|L1.3500|
000ca4  6800              LDR      r0,[r0,#0]  ; AT_MODE
000ca6  2803              CMP      r0,#3
000ca8  d104              BNE      |L1.3252|
;;;651    	 	 DIS_csb();	
000caa  f7fffffe          BL       DIS_csb
;;;652    		 AT_MODE=4;											//ʲʾ
000cae  2004              MOVS     r0,#4
000cb0  493e              LDR      r1,|L1.3500|
000cb2  6008              STR      r0,[r1,#0]  ; AT_MODE
                  |L1.3252|
;;;653    	 }
;;;654    	 if(csb_flag==0 && move_status==1 && first==1){
000cb4  4818              LDR      r0,|L1.3352|
000cb6  6800              LDR      r0,[r0,#0]  ; csb_flag
000cb8  b948              CBNZ     r0,|L1.3278|
000cba  480b              LDR      r0,|L1.3304|
000cbc  7800              LDRB     r0,[r0,#0]  ; move_status
000cbe  2801              CMP      r0,#1
000cc0  d105              BNE      |L1.3278|
000cc2  480a              LDR      r0,|L1.3308|
000cc4  7800              LDRB     r0,[r0,#0]  ; first
000cc6  2801              CMP      r0,#1
000cc8  d101              BNE      |L1.3278|
;;;655    		Move_go(PWM_Val);
000cca  4817              LDR      r0,|L1.3368|
000ccc  e086              B        |L1.3548|
                  |L1.3278|
000cce  e08c              B        |L1.3562|
                  |L1.3280|
000cd0  542b4d51545450554200        DCB      "T+MQTTPUB",0
000cda  00                DCB      0
000cdb  00                DCB      0
                  |L1.3292|
                          DCD      pub_send_flag
                  |L1.3296|
000ce0  49504400          DCB      "IPD",0
                  |L1.3300|
000ce4  676f00            DCB      "go",0
000ce7  00                DCB      0
                  |L1.3304|
                          DCD      move_status
                  |L1.3308|
                          DCD      first
                  |L1.3312|
000cf0  6261636b00        DCB      "back",0
000cf5  00                DCB      0
000cf6  00                DCB      0
000cf7  00                DCB      0
                  |L1.3320|
000cf8  726967687400        DCB      "right",0
000cfe  00                DCB      0
000cff  00                DCB      0
                  |L1.3328|
000d00  6c65667400        DCB      "left",0
000d05  00                DCB      0
000d06  00                DCB      0
000d07  00                DCB      0
                  |L1.3336|
000d08  73746f7000        DCB      "stop",0
000d0d  00                DCB      0
000d0e  00                DCB      0
000d0f  00                DCB      0
                  |L1.3344|
000d10  6465766f6e00        DCB      "devon",0
000d16  00                DCB      0
000d17  00                DCB      0
                  |L1.3352|
                          DCD      csb_flag
                  |L1.3356|
000d1c  6465766f666600        DCB      "devoff",0
000d23  00                DCB      0
                  |L1.3364|
000d24  6c6f7700          DCB      "low",0
                  |L1.3368|
                          DCD      PWM_Val
                  |L1.3372|
000d2c  6d696400          DCB      "mid",0
                  |L1.3376|
000d30  6869676800        DCB      "high",0
000d35  00                DCB      0
000d36  00                DCB      0
000d37  00                DCB      0
                  |L1.3384|
                          DCD      TxBuffer1
                  |L1.3388|
                          DCD      rec_f
                  |L1.3392|
                          DCD      0x40010800
                  |L1.3396|
000d44  6d7977616e00        DCB      "mywan",0
000d4a  00                DCB      0
000d4b  00                DCB      0
                  |L1.3404|
                          DCD      ssid
                  |L1.3408|
000d50  7777772e6f757273746d2e6e657400        DCB      "www.ourstm.net",0
000d5f  00                DCB      0
                  |L1.3424|
                          DCD      password
                  |L1.3428|
000d64  62726f6b65722e656d71782e696f00        DCB      "broker.emqx.io",0
000d73  00                DCB      0
                  |L1.3444|
                          DCD      mqtt_server
                  |L1.3448|
000d78  3138383300        DCB      "1883",0
000d7d  00                DCB      0
000d7e  00                DCB      0
000d7f  00                DCB      0
                  |L1.3456|
                          DCD      mqtt_port
                  |L1.3460|
                          DCD      0x005b8d80
                  |L1.3464|
                          DCD      0x40013800
                  |L1.3468|
                          DCD      0x40004400
                  |L1.3472|
                          DCD      0x40010c00
                  |L1.3476|
                          DCD      0xe000ed18
                  |L1.3480|
                          DCD      0xe000e400
                  |L1.3484|
                          DCD      0x000927c0
                  |L1.3488|
                          DCD      0x000186a0
                  |L1.3492|
                          DCD      0x00030d40
                  |L1.3496|
                          DCD      distance
                  |L1.3500|
                          DCD      AT_MODE
                  |L1.3504|
000db0  55445020436f6e6e656374696e672e2e2e00        DCB      "UDP Connecting...",0
000dc2  00                DCB      0
000dc3  00                DCB      0
                  |L1.3524|
000dc4  49443a00          DCB      "ID:",0
                  |L1.3528|
                          DCD      mac
                  |L1.3532|
                          DCD      distan
                  |L1.3536|
                          DCD      sample_ct
                  |L1.3540|
                          DCD      dis_str_distance
                  |L1.3544|
                          DCD      num
                  |L1.3548|
000ddc  6800              LDR      r0,[r0,#0]  ; PWM_Val
000dde  f7fffffe          BL       Move_go
;;;656    		first=0;
000de2  2000              MOVS     r0,#0
000de4  4925              LDR      r1,|L1.3708|
000de6  7008              STRB     r0,[r1,#0]
000de8  e047              B        |L1.3706|
                  |L1.3562|
;;;657    	 } 
;;;658    	 else if(csb_flag==0 && move_status==2 && first==1){
000dea  4825              LDR      r0,|L1.3712|
000dec  6800              LDR      r0,[r0,#0]  ; csb_flag
000dee  b978              CBNZ     r0,|L1.3600|
000df0  4824              LDR      r0,|L1.3716|
000df2  7800              LDRB     r0,[r0,#0]  ; move_status
000df4  2802              CMP      r0,#2
000df6  d10b              BNE      |L1.3600|
000df8  4820              LDR      r0,|L1.3708|
000dfa  7800              LDRB     r0,[r0,#0]  ; first
000dfc  2801              CMP      r0,#1
000dfe  d107              BNE      |L1.3600|
;;;659    		Move_back(PWM_Val);
000e00  4821              LDR      r0,|L1.3720|
000e02  6800              LDR      r0,[r0,#0]  ; PWM_Val
000e04  f7fffffe          BL       Move_back
;;;660    		first=0;
000e08  2000              MOVS     r0,#0
000e0a  491c              LDR      r1,|L1.3708|
000e0c  7008              STRB     r0,[r1,#0]
000e0e  e034              B        |L1.3706|
                  |L1.3600|
;;;661    	 } 
;;;662    	 else if(csb_flag==0 && move_status==3 && first==1){
000e10  481b              LDR      r0,|L1.3712|
000e12  6800              LDR      r0,[r0,#0]  ; csb_flag
000e14  b978              CBNZ     r0,|L1.3638|
000e16  481b              LDR      r0,|L1.3716|
000e18  7800              LDRB     r0,[r0,#0]  ; move_status
000e1a  2803              CMP      r0,#3
000e1c  d10b              BNE      |L1.3638|
000e1e  4817              LDR      r0,|L1.3708|
000e20  7800              LDRB     r0,[r0,#0]  ; first
000e22  2801              CMP      r0,#1
000e24  d107              BNE      |L1.3638|
;;;663    		Move_right(PWM_Val);
000e26  4818              LDR      r0,|L1.3720|
000e28  6800              LDR      r0,[r0,#0]  ; PWM_Val
000e2a  f7fffffe          BL       Move_right
;;;664    		first=0;
000e2e  2000              MOVS     r0,#0
000e30  4912              LDR      r1,|L1.3708|
000e32  7008              STRB     r0,[r1,#0]
000e34  e021              B        |L1.3706|
                  |L1.3638|
;;;665    	 }
;;;666    	 else if(csb_flag==0 && move_status==4 && first==1){
000e36  4812              LDR      r0,|L1.3712|
000e38  6800              LDR      r0,[r0,#0]  ; csb_flag
000e3a  b978              CBNZ     r0,|L1.3676|
000e3c  4811              LDR      r0,|L1.3716|
000e3e  7800              LDRB     r0,[r0,#0]  ; move_status
000e40  2804              CMP      r0,#4
000e42  d10b              BNE      |L1.3676|
000e44  480d              LDR      r0,|L1.3708|
000e46  7800              LDRB     r0,[r0,#0]  ; first
000e48  2801              CMP      r0,#1
000e4a  d107              BNE      |L1.3676|
;;;667    		Move_left(PWM_Val);
000e4c  480e              LDR      r0,|L1.3720|
000e4e  6800              LDR      r0,[r0,#0]  ; PWM_Val
000e50  f7fffffe          BL       Move_left
;;;668    		first=0;
000e54  2000              MOVS     r0,#0
000e56  4909              LDR      r1,|L1.3708|
000e58  7008              STRB     r0,[r1,#0]
000e5a  e00e              B        |L1.3706|
                  |L1.3676|
;;;669    	 }
;;;670    	 else if(csb_flag==0 && move_status==0 && first==1){
000e5c  4808              LDR      r0,|L1.3712|
000e5e  6800              LDR      r0,[r0,#0]  ; csb_flag
000e60  b958              CBNZ     r0,|L1.3706|
000e62  4808              LDR      r0,|L1.3716|
000e64  7800              LDRB     r0,[r0,#0]  ; move_status
000e66  b940              CBNZ     r0,|L1.3706|
000e68  4804              LDR      r0,|L1.3708|
000e6a  7800              LDRB     r0,[r0,#0]  ; first
000e6c  2801              CMP      r0,#1
000e6e  d104              BNE      |L1.3706|
;;;671    		brake();
000e70  f7fffffe          BL       brake
;;;672    		first=0;
000e74  2000              MOVS     r0,#0
000e76  4901              LDR      r1,|L1.3708|
000e78  7008              STRB     r0,[r1,#0]
                  |L1.3706|
000e7a  e689              B        |L1.2960|
;;;673    	 }
;;;674    	  	 
;;;675    
;;;676    	 
;;;677      }
;;;678    }
;;;679    
                          ENDP

                  |L1.3708|
                          DCD      first
                  |L1.3712|
                          DCD      csb_flag
                  |L1.3716|
                          DCD      move_status
                  |L1.3720|
                          DCD      PWM_Val

                          AREA ||.bss||, DATA, NOINIT, ALIGN=2

                  TxBuffer1
                          %        200
                  RxBuffer1
                          %        200
                  mac
                          %        20
                  ||sub||
                          %        20
                  distan
                          %        200
                  TIM2_OCInitStructure
                          %        16
                  JSON_pub_info
                          %        100

                          AREA ||.conststring||, DATA, READONLY, MERGE=1, STRINGS, ALIGN=0

000000  687474703a2f2f7777772e6664696f742e746f702f00        DCB      "http://www.fdiot.top/",0
000016  496f542f446174612f52756e74696d6500        DCB      "IoT/Data/Runtime",0

                          AREA ||.data||, DATA, ALIGN=2

                  move_status
000000  00                DCB      0x00
                  first
000001  000000            DCB      0x00,0x00,0x00
                  sample_ct
                          DCD      0x00000000
                  PWM_Val
                          DCD      0x00007530
                  _it0
00000c  00                DCB      0x00
                  num
00000d  000000            DCB      0x00,0x00,0x00
                  buff
                          DCD      ||.conststring||
                  pub1
                          DCD      ||.conststring||+0x16
                  distance
                          DCD      0x00000000
                  dis_str_distance
                          DCD      0x00000000
000020  00                DCB      0x00
                  dis_str_adc
                          DCDU     0x00000000
000025  00                DCB      0x00
                  dis_str_tmp
                          DCDU     0x00000000
00002a  00                DCB      0x00
                  dis_str_hmi
                          DCDU     0x00000000
00002f  00                DCB      0x00
                  dis_STR1
                          DCD      0x00000000
000034  00000000          DCB      0x00,0x00,0x00,0x00
                  motn_c
                          DCD      0x00000000
                  dis_str_spd
                          DCD      0x00000000
                  ||ct||
                          DCD      0x00000000
                  TxCounter1
000044  00000000          DCB      0x00,0x00,0x00,0x00
                  AT_MODE
                          DCD      0x00000000
                  wifi_connected
00004c  00                DCB      0x00
                  mqtt_connected
00004d  00                DCB      0x00
                  pub_send_flag
00004e  00                DCB      0x00
                  sub_send_flag
00004f  00                DCB      0x00
                  AT_rec_f
000050  00000000          DCB      0x00,0x00,0x00,0x00
                  ssid
                          DCD      0x00000000
                  password
                          DCD      0x00000000
                  mqtt_server
                          DCD      0x00000000
                  mqtt_port
                          DCD      0x00000000
                  RxCounter1
000064  0000              DCB      0x00,0x00
                  RxCounter2
000066  0000              DCB      0x00,0x00
                  rec_f
000068  00                DCB      0x00
                  page
000069  000000            DCB      0x00,0x00,0x00
                  Rec_Len
                          DCD      0x00000000
                  count2
                          DCD      0x00000000
                  csb_flag
                          DCD      0x00000000
                  m_nSymbolSize
                          DCD      0x00000000
                  Left_Val
                          DCD      0x00000000
                  Right_Val
                          DCD      0x00000000
                  TimingDelay
                          DCD      0x00000000

                  __ARM_use_no_argv EQU 0
