; generated by ARM C/C++ Compiler, 4.1 [Build 894]
; commandline ArmCC [--list --split_sections --debug -c --asm --interleave -o.\obj\main.o --asm_dir=.\lst\ --list_dir=.\lst\ --depend=.\obj\main.d --cpu=Cortex-M0 --apcs=interwork -I..\..\..\..\Library\Device\Nuvoton\Nano1X2Series\Include -I..\..\..\..\Library\StdDriver\inc -I..\..\..\..\Library\CMSIS\Include -IC:\Keil\ARM\RV31\Inc -IC:\Keil\ARM\CMSIS\Include -D__MICROLIB --omf_browse=.\obj\main.crf ..\main.c]
                          THUMB

                          AREA ||i.ADC_IRQHandler||, CODE, READONLY, ALIGN=2

                  ADC_IRQHandler PROC
;;;148    
;;;149    void ADC_IRQHandler(void)
000000  b510              PUSH     {r4,lr}
;;;150    {
;;;151        uint32_t u32Flag;
;;;152    
;;;153        // Get ADC conversion finish interrupt flag
;;;154        u32Flag = ADC_GET_INT_FLAG(ADC, ADC_ADF_INT);
000002  490b              LDR      r1,|L1.48|
000004  6988              LDR      r0,[r1,#0x18]
000006  07c0              LSLS     r0,r0,#31
000008  0fc0              LSRS     r0,r0,#31
;;;155    
;;;156        if(u32Flag & ADC_ADF_INT) {
00000a  07c2              LSLS     r2,r0,#31
00000c  d00a              BEQ      |L1.36|
;;;157            LightValue = ADC_GET_CONVERSION_DATA(ADC, 4);
00000e  4b08              LDR      r3,|L1.48|
000010  3b40              SUBS     r3,r3,#0x40
000012  691a              LDR      r2,[r3,#0x10]
000014  0514              LSLS     r4,r2,#20
000016  4a07              LDR      r2,|L1.52|
000018  0d24              LSRS     r4,r4,#20
00001a  6294              STR      r4,[r2,#0x28]  ; LightValue
;;;158            GasValue = ADC_GET_CONVERSION_DATA(ADC, 5);			
00001c  695b              LDR      r3,[r3,#0x14]
00001e  051b              LSLS     r3,r3,#20
000020  0d1b              LSRS     r3,r3,#20
000022  62d3              STR      r3,[r2,#0x2c]  ; GasValue
                  |L1.36|
;;;159    
;;;160        }
;;;161        ADC_CLR_INT_FLAG(ADC, u32Flag);
000024  698a              LDR      r2,[r1,#0x18]
000026  08d2              LSRS     r2,r2,#3
000028  00d2              LSLS     r2,r2,#3
00002a  4302              ORRS     r2,r2,r0
00002c  618a              STR      r2,[r1,#0x18]
;;;162    }
00002e  bd10              POP      {r4,pc}
;;;163    
                          ENDP

                  |L1.48|
                          DCD      0x400e0040
                  |L1.52|
                          DCD      ||.data||

                          AREA ||i.AccCalibrationZ||, CODE, READONLY, ALIGN=2

                  AccCalibrationZ PROC
;;;486    
;;;487    void AccCalibrationZ()
000000  b510              PUSH     {r4,lr}
;;;488    {
;;;489    	signed char status;
;;;490    	
;;;491    		nvtCalACCInit();
000002  f7fffffe          BL       nvtCalACCInit
;;;492    	do {
;;;493    		DelayMsec(1);
;;;494    		rawACC[0] = Read_MPU6050_AccX();
000006  4c0b              LDR      r4,|L2.52|
                  |L2.8|
000008  2001              MOVS     r0,#1                 ;493
00000a  f7fffffe          BL       DelayMsec
00000e  f7fffffe          BL       Read_MPU6050_AccX
000012  8020              STRH     r0,[r4,#0]
;;;495    		rawACC[1] = Read_MPU6050_AccY();
000014  f7fffffe          BL       Read_MPU6050_AccY
000018  8060              STRH     r0,[r4,#2]
;;;496    		rawACC[2] = Read_MPU6050_AccZ();
00001a  f7fffffe          BL       Read_MPU6050_AccZ
00001e  80a0              STRH     r0,[r4,#4]
;;;497    		nvtInputSensorRawACC(rawACC);
000020  4804              LDR      r0,|L2.52|
000022  f7fffffe          BL       nvtInputSensorRawACC
;;;498    		status = nvtCalACCBufferFill(0);
000026  2000              MOVS     r0,#0
000028  f7fffffe          BL       nvtCalACCBufferFill
;;;499    	}while(status==STATUS_BUFFER_NOT_FILLED);
00002c  1c40              ADDS     r0,r0,#1
00002e  d0eb              BEQ      |L2.8|
;;;500    }
000030  bd10              POP      {r4,pc}
;;;501    
                          ENDP

000032  0000              DCW      0x0000
                  |L2.52|
                          DCD      ||.data||+0x34

                          AREA ||i.Buzz||, CODE, READONLY, ALIGN=2

                  Buzz PROC
;;;363    }
;;;364    void Buzz(uint8_t no) 
000000  b570              PUSH     {r4-r6,lr}
;;;365    {
000002  4605              MOV      r5,r0
;;;366    	uint8_t i;
;;;367        for (i=0;i<no;i++) {
000004  2400              MOVS     r4,#0
;;;368    			PWM_EnableOutput(PWM0, BIT3);
000006  4e0a              LDR      r6,|L3.48|
000008  e00f              B        |L3.42|
                  |L3.10|
00000a  2108              MOVS     r1,#8
00000c  4630              MOV      r0,r6
00000e  f7fffffe          BL       PWM_EnableOutput
;;;369    			DelayMsec(50);
000012  2032              MOVS     r0,#0x32
000014  f7fffffe          BL       DelayMsec
;;;370    			PWM_DisableOutput(PWM0, BIT3);
000018  2108              MOVS     r1,#8
00001a  4630              MOV      r0,r6
00001c  f7fffffe          BL       PWM_DisableOutput
;;;371    			DelayMsec(50);
000020  2032              MOVS     r0,#0x32
000022  f7fffffe          BL       DelayMsec
000026  1c64              ADDS     r4,r4,#1              ;367
000028  b2e4              UXTB     r4,r4                 ;367
                  |L3.42|
00002a  42ac              CMP      r4,r5                 ;367
00002c  d3ed              BCC      |L3.10|
;;;372    		}
;;;373    }
00002e  bd70              POP      {r4-r6,pc}
;;;374    
                          ENDP

                  |L3.48|
                          DCD      0x40040000

                          AREA ||i.GPABC_IRQHandler||, CODE, READONLY, ALIGN=2

                  GPABC_IRQHandler PROC
;;;132    
;;;133    void GPABC_IRQHandler(void)
000000  b510              PUSH     {r4,lr}
;;;134    {
;;;135        if (PB->ISRC & BIT12) {        // check if PB12 interrupt occurred
000002  4811              LDR      r0,|L4.72|
000004  6a01              LDR      r1,[r0,#0x20]
;;;136            PB->ISRC |= BIT12;         // clear PB12 interrupt status
;;;137    			  KEY1_Flag=1;               // set a flag for PB12(KEY1)
000006  4a11              LDR      r2,|L4.76|
000008  04cb              LSLS     r3,r1,#19             ;135
00000a  2101              MOVS     r1,#1
00000c  2b00              CMP      r3,#0                 ;135
;;;138        } else if (PB->ISRC & BIT13) { // check if PB13 interrupt occurred
00000e  6a03              LDR      r3,[r0,#0x20]
000010  da04              BGE      |L4.28|
000012  030c              LSLS     r4,r1,#12             ;136
000014  4323              ORRS     r3,r3,r4              ;136
000016  6203              STR      r3,[r0,#0x20]         ;136
000018  7051              STRB     r1,[r2,#1]            ;137
;;;139            PB->ISRC |= BIT13;         // clear PB13 interrupt status  
;;;140            KEY2_Flag=1;	              // set a flag for PB13(KEY2)
;;;141        } else if (PB->ISRC & BIT14) { // check if PB14 interrupt occurred
;;;142            PB->ISRC |= BIT14;         // clear PB14 interrupt status  
;;;143            KEY3_Flag=1;	              // set a flag for PB14(KEY3)
;;;144        } else {                      // else it is unexpected interrupts
;;;145            PB->ISRC = PB->ISRC;	      // clear all GPC pins
;;;146        }
;;;147    }
00001a  bd10              POP      {r4,pc}
                  |L4.28|
00001c  049b              LSLS     r3,r3,#18             ;138
00001e  6a03              LDR      r3,[r0,#0x20]         ;141
000020  d505              BPL      |L4.46|
000022  2401              MOVS     r4,#1                 ;139
000024  0364              LSLS     r4,r4,#13             ;139
000026  4323              ORRS     r3,r3,r4              ;139
000028  6203              STR      r3,[r0,#0x20]         ;139
00002a  7091              STRB     r1,[r2,#2]            ;140
00002c  bd10              POP      {r4,pc}
                  |L4.46|
00002e  045b              LSLS     r3,r3,#17             ;141
000030  d506              BPL      |L4.64|
000032  6a03              LDR      r3,[r0,#0x20]         ;142
000034  2401              MOVS     r4,#1                 ;142
000036  03a4              LSLS     r4,r4,#14             ;142
000038  4323              ORRS     r3,r3,r4              ;142
00003a  6203              STR      r3,[r0,#0x20]         ;142
00003c  70d1              STRB     r1,[r2,#3]            ;143
00003e  bd10              POP      {r4,pc}
                  |L4.64|
000040  6a01              LDR      r1,[r0,#0x20]         ;145
000042  6201              STR      r1,[r0,#0x20]         ;145
000044  bd10              POP      {r4,pc}
;;;148    
                          ENDP

000046  0000              DCW      0x0000
                  |L4.72|
                          DCD      0x50004040
                  |L4.76|
                          DCD      ||.data||

                          AREA ||i.Init_ADC||, CODE, READONLY, ALIGN=2

                  Init_ADC PROC
;;;284    
;;;285    void Init_ADC(void)
000000  b510              PUSH     {r4,lr}
;;;286    {
;;;287    	  ADC_Open(ADC, ADC_INPUT_MODE_SINGLE_END, ADC_OPERATION_MODE_SINGLE_CYCLE, ADC_CH_4_MASK | ADC_CH_5_MASK );
000002  4c0d              LDR      r4,|L5.56|
000004  2330              MOVS     r3,#0x30
000006  2208              MOVS     r2,#8
000008  2100              MOVS     r1,#0
00000a  4620              MOV      r0,r4
00000c  f7fffffe          BL       ADC_Open
;;;288    
;;;289        // Power on ADC
;;;290        ADC_POWER_ON(ADC);
000010  4909              LDR      r1,|L5.56|
000012  3140              ADDS     r1,r1,#0x40
000014  6888              LDR      r0,[r1,#8]
000016  2201              MOVS     r2,#1
000018  4310              ORRS     r0,r0,r2
00001a  6088              STR      r0,[r1,#8]
                  |L5.28|
00001c  698a              LDR      r2,[r1,#0x18]
00001e  03d0              LSLS     r0,r2,#15
000020  d5fc              BPL      |L5.28|
000022  6a48              LDR      r0,[r1,#0x24]
000024  07c0              LSLS     r0,r0,#31
000026  d0f9              BEQ      |L5.28|
;;;291    
;;;292        // Enable ADC ADC_IF interrupt
;;;293        ADC_EnableInt(ADC, ADC_ADF_INT);
000028  2101              MOVS     r1,#1
00002a  4620              MOV      r0,r4
00002c  f7fffffe          BL       ADC_EnableInt
;;;294        NVIC_EnableIRQ(ADC_IRQn);
000030  201d              MOVS     r0,#0x1d
000032  f7fffffe          BL       NVIC_EnableIRQ
;;;295    
;;;296    
;;;297    }
000036  bd10              POP      {r4,pc}
;;;298    
                          ENDP

                  |L5.56|
                          DCD      0x400e0000

                          AREA ||i.Init_AHRS||, CODE, READONLY, ALIGN=2

                  Init_AHRS PROC
;;;442     
;;;443    void Init_AHRS()
000000  b570              PUSH     {r4-r6,lr}
;;;444    {
;;;445    		TIMER_Init();
000002  f7fffffe          BL       TIMER_Init
;;;446    	
;;;447    		setup_system_tick(1000);
000006  207d              MOVS     r0,#0x7d
000008  00c0              LSLS     r0,r0,#3
00000a  f7fffffe          BL       setup_system_tick
;;;448    		nvtAHRSInit();
00000e  f7fffffe          BL       nvtAHRSInit
;;;449    	
;;;450    		//SensorsInit();
;;;451    		AccOffset[0] = 0;//0;
000012  4813              LDR      r0,|L6.96|
000014  2400              MOVS     r4,#0
;;;452    		AccOffset[1] = 0;//0;
000016  6004              STR      r4,[r0,#0]  ; AccOffset
;;;453    		AccOffset[2] = 0;//0;
000018  6044              STR      r4,[r0,#4]  ; AccOffset
;;;454    		AccScale[0] = IMU_G_PER_LSB_CFG;
00001a  2571              MOVS     r5,#0x71
00001c  6084              STR      r4,[r0,#8]  ; AccOffset
00001e  05ed              LSLS     r5,r5,#23
000020  3818              SUBS     r0,r0,#0x18
;;;455    		AccScale[1] = IMU_G_PER_LSB_CFG;
000022  6005              STR      r5,[r0,#0]  ; AccScale
;;;456    		AccScale[2] = IMU_G_PER_LSB_CFG;
000024  6045              STR      r5,[r0,#4]  ; AccScale
;;;457    		nvtSetAccScale(AccScale);
000026  6085              STR      r5,[r0,#8]  ; AccScale
000028  f7fffffe          BL       nvtSetAccScale
;;;458    		nvtSetAccOffset(AccOffset);
00002c  480c              LDR      r0,|L6.96|
00002e  f7fffffe          BL       nvtSetAccOffset
;;;459    		nvtSetAccG_PER_LSB(IMU_G_PER_LSB_CFG);
000032  4628              MOV      r0,r5
000034  f7fffffe          BL       nvtSetAccG_PER_LSB
;;;460    		
;;;461    		GyroOffset[0] = 0;
000038  4809              LDR      r0,|L6.96|
00003a  380c              SUBS     r0,r0,#0xc
;;;462    		GyroOffset[1] = 0;
00003c  6004              STR      r4,[r0,#0]  ; GyroOffset
;;;463    		GyroOffset[2] = 0;
00003e  6044              STR      r4,[r0,#4]  ; GyroOffset
;;;464    		GyroScale[0] = IMU_DEG_PER_LSB_CFG;
000040  6084              STR      r4,[r0,#8]  ; GyroOffset
000042  4c08              LDR      r4,|L6.100|
000044  3818              SUBS     r0,r0,#0x18
;;;465    		GyroScale[1] = IMU_DEG_PER_LSB_CFG;
000046  6004              STR      r4,[r0,#0]  ; GyroScale
;;;466    		GyroScale[2] = IMU_DEG_PER_LSB_CFG;
000048  6044              STR      r4,[r0,#4]  ; GyroScale
;;;467    		nvtSetGyroScale(GyroScale);
00004a  6084              STR      r4,[r0,#8]  ; GyroScale
00004c  f7fffffe          BL       nvtSetGyroScale
;;;468    		nvtSetGyroOffset(GyroOffset);
000050  4803              LDR      r0,|L6.96|
000052  380c              SUBS     r0,r0,#0xc
000054  f7fffffe          BL       nvtSetGyroOffset
;;;469    		nvtSetGYRODegPLSB(IMU_DEG_PER_LSB_CFG);		
000058  4620              MOV      r0,r4
00005a  f7fffffe          BL       nvtSetGYRODegPLSB
;;;470    }
00005e  bd70              POP      {r4-r6,pc}
;;;471    
                          ENDP

                  |L6.96|
                          DCD      ||.bss||+0x24
                  |L6.100|
                          DCD      0x3d7a0000

                          AREA ||i.Init_Bluetooth||, CODE, READONLY, ALIGN=2

                  Init_Bluetooth PROC
;;;348    
;;;349    void Init_Bluetooth(void)
000000  b510              PUSH     {r4,lr}
;;;350    {
;;;351    	  UART_Open(UART0,115200);	// enable UART1 at 9600 baudrate
000002  4c0a              LDR      r4,|L7.44|
000004  21e1              MOVS     r1,#0xe1
000006  0249              LSLS     r1,r1,#9
000008  4620              MOV      r0,r4
00000a  f7fffffe          BL       UART_Open
;;;352    		UART_SET_RX_FIFO_INTTRGLV(UART0, UART_TLCTL_RFITL_4BYTES));
00000e  68a0              LDR      r0,[r4,#8]
000010  2103              MOVS     r1,#3
000012  0209              LSLS     r1,r1,#8
000014  4388              BICS     r0,r0,r1
000016  30ff              ADDS     r0,r0,#0xff
000018  3001              ADDS     r0,#1
00001a  60a0              STR      r0,[r4,#8]
;;;353    		UART_ENABLE_INT(UART0, UART_IER_RDA_IE_Msk);
00001c  68e0              LDR      r0,[r4,#0xc]
00001e  2101              MOVS     r1,#1
000020  4308              ORRS     r0,r0,r1
000022  60e0              STR      r0,[r4,#0xc]
;;;354        NVIC_EnableIRQ(UART0_IRQn);	
000024  200c              MOVS     r0,#0xc
000026  f7fffffe          BL       NVIC_EnableIRQ
;;;355    }
00002a  bd10              POP      {r4,pc}
;;;356    void Init_WIFI(void)
                          ENDP

                  |L7.44|
                          DCD      0x40050000

                          AREA ||i.Init_GPIO||, CODE, READONLY, ALIGN=2

                  Init_GPIO PROC
;;;298    
;;;299    void Init_GPIO(void)
000000  b5f8              PUSH     {r3-r7,lr}
;;;300    {
;;;301    	  GPIO_SetMode(PC, BIT4,  GPIO_PMD_OUTPUT); // BT   Reset
000002  4f1d              LDR      r7,|L8.120|
000004  2201              MOVS     r2,#1
000006  2110              MOVS     r1,#0x10
000008  4638              MOV      r0,r7
00000a  f7fffffe          BL       GPIO_SetMode
;;;302    	  PC4=1; // BT   Reset	
00000e  4d1b              LDR      r5,|L8.124|
000010  2401              MOVS     r4,#1
000012  612c              STR      r4,[r5,#0x10]
;;;303    	  GPIO_SetMode(PC, BIT6,  GPIO_PMD_OUTPUT); // WiFi Reset
000014  4622              MOV      r2,r4
000016  2140              MOVS     r1,#0x40
000018  4638              MOV      r0,r7
00001a  f7fffffe          BL       GPIO_SetMode
;;;304    	  PC6=1; // WiFi Reset
00001e  61ac              STR      r4,[r5,#0x18]
;;;305    	  GPIO_SetMode(PC, BIT12, GPIO_PMD_OUTPUT); // WiFi Sleep
000020  2201              MOVS     r2,#1
000022  0311              LSLS     r1,r2,#12
000024  4638              MOV      r0,r7
000026  f7fffffe          BL       GPIO_SetMode
;;;306    	  PC12=0; 
00002a  2600              MOVS     r6,#0
00002c  632e              STR      r6,[r5,#0x30]
;;;307    	
;;;308    	  GPIO_SetMode(PC, BIT13, GPIO_PMD_INPUT);  // MPU6050 INT
00002e  4632              MOV      r2,r6
000030  0361              LSLS     r1,r4,#13
000032  4638              MOV      r0,r7
000034  f7fffffe          BL       GPIO_SetMode
;;;309    	
;;;310    		GPIO_SetMode(PA, BIT14,  GPIO_PMD_OUTPUT); 
000038  480f              LDR      r0,|L8.120|
00003a  2201              MOVS     r2,#1
00003c  0391              LSLS     r1,r2,#14
00003e  3880              SUBS     r0,r0,#0x80
000040  f7fffffe          BL       GPIO_SetMode
;;;311    	  PA14=1; 	
000044  480d              LDR      r0,|L8.124|
000046  3880              SUBS     r0,r0,#0x80
000048  6384              STR      r4,[r0,#0x38]
;;;312    	  GPIO_SetMode(PB, BIT15,  GPIO_PMD_OUTPUT); 
00004a  480b              LDR      r0,|L8.120|
00004c  2201              MOVS     r2,#1
00004e  03d1              LSLS     r1,r2,#15
000050  3840              SUBS     r0,r0,#0x40
000052  f7fffffe          BL       GPIO_SetMode
;;;313    	  PB15=1; 
000056  4809              LDR      r0,|L8.124|
000058  3840              SUBS     r0,r0,#0x40
00005a  63c4              STR      r4,[r0,#0x3c]
;;;314    	  GPIO_SetMode(PD, BIT10, GPIO_PMD_OUTPUT); 
00005c  4806              LDR      r0,|L8.120|
00005e  2201              MOVS     r2,#1
000060  0291              LSLS     r1,r2,#10
000062  3040              ADDS     r0,r0,#0x40
000064  f7fffffe          BL       GPIO_SetMode
;;;315    	  PD10=0;
000068  4804              LDR      r0,|L8.124|
00006a  3040              ADDS     r0,r0,#0x40
00006c  6286              STR      r6,[r0,#0x28]
;;;316    		DIS_Value |= 0x00;
00006e  4804              LDR      r0,|L8.128|
000070  7901              LDRB     r1,[r0,#4]  ; DIS_Value
000072  7101              STRB     r1,[r0,#4]
;;;317    }
000074  bdf8              POP      {r3-r7,pc}
;;;318    
                          ENDP

000076  0000              DCW      0x0000
                  |L8.120|
                          DCD      0x50004080
                  |L8.124|
                          DCD      0x50004280
                  |L8.128|
                          DCD      ||.data||

                          AREA ||i.Init_KEY||, CODE, READONLY, ALIGN=2

                  Init_KEY PROC
;;;318    
;;;319    void Init_KEY(void)
000000  b570              PUSH     {r4-r6,lr}
;;;320    {
;;;321        GPIO_SetMode(PB, (BIT12 | BIT13 | BIT14), GPIO_PMD_INPUT);
000002  2507              MOVS     r5,#7
000004  4c11              LDR      r4,|L9.76|
000006  032d              LSLS     r5,r5,#12
000008  2200              MOVS     r2,#0
00000a  4629              MOV      r1,r5
00000c  4620              MOV      r0,r4
00000e  f7fffffe          BL       GPIO_SetMode
;;;322        GPIO_ENABLE_PULL_UP(PB, (BIT12 | BIT13 | BIT14));	
000012  6a60              LDR      r0,[r4,#0x24]
000014  4328              ORRS     r0,r0,r5
000016  6260              STR      r0,[r4,#0x24]
;;;323        GPIO_EnableInt(PB, 12, GPIO_INT_FALLING);
000018  2201              MOVS     r2,#1
00001a  210c              MOVS     r1,#0xc
00001c  4620              MOV      r0,r4
00001e  f7fffffe          BL       GPIO_EnableInt
;;;324        GPIO_EnableInt(PB, 13, GPIO_INT_FALLING);
000022  2201              MOVS     r2,#1
000024  210d              MOVS     r1,#0xd
000026  4620              MOV      r0,r4
000028  f7fffffe          BL       GPIO_EnableInt
;;;325        GPIO_EnableInt(PB, 14, GPIO_INT_FALLING);		
00002c  2201              MOVS     r2,#1
00002e  210e              MOVS     r1,#0xe
000030  4620              MOV      r0,r4
000032  f7fffffe          BL       GPIO_EnableInt
;;;326        NVIC_EnableIRQ(GPABC_IRQn);   
000036  2004              MOVS     r0,#4
000038  f7fffffe          BL       NVIC_EnableIRQ
;;;327        GPIO_SET_DEBOUNCE_TIME(GPIO_DBCLKSRC_HCLK, GPIO_DBCLKSEL_64);
00003c  4904              LDR      r1,|L9.80|
00003e  2026              MOVS     r0,#0x26
000040  6008              STR      r0,[r1,#0]
;;;328        GPIO_ENABLE_DEBOUNCE(PB, (BIT12 | BIT13 | BIT14));	
000042  6960              LDR      r0,[r4,#0x14]
000044  4328              ORRS     r0,r0,r5
000046  6160              STR      r0,[r4,#0x14]
;;;329    }
000048  bd70              POP      {r4-r6,pc}
;;;330    
                          ENDP

00004a  0000              DCW      0x0000
                  |L9.76|
                          DCD      0x50004040
                  |L9.80|
                          DCD      0x50004180

                          AREA ||i.Init_PWM||, CODE, READONLY, ALIGN=2

                  Init_PWM PROC
;;;330    
;;;331    void Init_PWM(void)
000000  b510              PUSH     {r4,lr}
;;;332    {
;;;333        // PWM0 CH3 frequency is 1KHz, duty 50%,
;;;334        PWM_ConfigOutputChannel(PWM0, 3, 1000, 20);
000002  4c0a              LDR      r4,|L10.44|
000004  227d              MOVS     r2,#0x7d
000006  2314              MOVS     r3,#0x14
000008  00d2              LSLS     r2,r2,#3
00000a  2103              MOVS     r1,#3
00000c  4620              MOV      r0,r4
00000e  f7fffffe          BL       PWM_ConfigOutputChannel
;;;335    	    //PWM_ConfigOutputChannel(PWM0, 3,1000, 20);
;;;336        PWM_EnableOutput(PWM0, BIT3);
000012  2108              MOVS     r1,#8
000014  4620              MOV      r0,r4
000016  f7fffffe          BL       PWM_EnableOutput
;;;337        PWM_Start(PWM0, BIT3);
00001a  2108              MOVS     r1,#8
00001c  4620              MOV      r0,r4
00001e  f7fffffe          BL       PWM_Start
;;;338        PWM_DisableOutput(PWM0, BIT3);	
000022  2108              MOVS     r1,#8
000024  4620              MOV      r0,r4
000026  f7fffffe          BL       PWM_DisableOutput
;;;339    }
00002a  bd10              POP      {r4,pc}
;;;340    
                          ENDP

                  |L10.44|
                          DCD      0x40040000

                          AREA ||i.Init_RTC||, CODE, READONLY, ALIGN=2

                  Init_RTC PROC
;;;260    
;;;261    void Init_RTC(void)
000000  b500              PUSH     {lr}
;;;262    {
000002  b089              SUB      sp,sp,#0x24
;;;263    		S_RTC_TIME_DATA_T sInitTime;
;;;264    
;;;265        /* Time Setting */
;;;266        sInitTime.u32Year       = 2014;
000004  480e              LDR      r0,|L11.64|
;;;267        sInitTime.u32Month      = 7;
000006  9000              STR      r0,[sp,#0]
000008  2007              MOVS     r0,#7
;;;268        sInitTime.u32Day        = 3;
00000a  9001              STR      r0,[sp,#4]
00000c  2003              MOVS     r0,#3
;;;269        sInitTime.u32Hour       = 13;
00000e  9002              STR      r0,[sp,#8]
000010  200d              MOVS     r0,#0xd
;;;270        sInitTime.u32Minute     = 30;
000012  9004              STR      r0,[sp,#0x10]
000014  201e              MOVS     r0,#0x1e
;;;271        sInitTime.u32Second     = 0;
000016  9005              STR      r0,[sp,#0x14]
000018  2000              MOVS     r0,#0
;;;272        sInitTime.u32DayOfWeek  = RTC_THURSDAY;
00001a  9006              STR      r0,[sp,#0x18]
00001c  2004              MOVS     r0,#4
;;;273        sInitTime.u32TimeScale  = RTC_CLOCK_24;
00001e  9003              STR      r0,[sp,#0xc]
000020  2001              MOVS     r0,#1
;;;274    
;;;275    	  RTC_Open(&sInitTime);
000022  9007              STR      r0,[sp,#0x1c]
000024  4668              MOV      r0,sp
000026  f7fffffe          BL       RTC_Open
;;;276    
;;;277        /* Set Tick Period */
;;;278        RTC_SetTickPeriod(RTC_TICK_1_SEC);
00002a  2000              MOVS     r0,#0
00002c  f7fffffe          BL       RTC_SetTickPeriod
;;;279    
;;;280        /* Enable RTC Tick Interrupt */
;;;281        RTC_EnableInt(RTC_RIER_TIER_Msk);
000030  2002              MOVS     r0,#2
000032  f7fffffe          BL       RTC_EnableInt
;;;282        NVIC_EnableIRQ(RTC_IRQn);
000036  201f              MOVS     r0,#0x1f
000038  f7fffffe          BL       NVIC_EnableIRQ
;;;283    }
00003c  b009              ADD      sp,sp,#0x24
00003e  bd00              POP      {pc}
;;;284    
                          ENDP

                  |L11.64|
                          DCD      0x000007de

                          AREA ||i.Init_WIFI||, CODE, READONLY, ALIGN=2

                  Init_WIFI PROC
;;;355    }
;;;356    void Init_WIFI(void)
000000  b510              PUSH     {r4,lr}
;;;357    {
;;;358    	  UART_Open(UART1,115200);	// enable UART1 at 9600 baudrate
000002  4c0d              LDR      r4,|L12.56|
000004  21e1              MOVS     r1,#0xe1
000006  0249              LSLS     r1,r1,#9
000008  4620              MOV      r0,r4
00000a  f7fffffe          BL       UART_Open
;;;359    		UART_SET_RX_FIFO_INTTRGLV(UART1, UART_TLCTL_RFITL_4BYTES));
00000e  68a0              LDR      r0,[r4,#8]
000010  2103              MOVS     r1,#3
000012  0209              LSLS     r1,r1,#8
000014  4388              BICS     r0,r0,r1
000016  30ff              ADDS     r0,r0,#0xff
000018  3001              ADDS     r0,#1
00001a  60a0              STR      r0,[r4,#8]
;;;360    		UART_ENABLE_INT(UART1, UART_IER_RDA_IE_Msk);
00001c  68e0              LDR      r0,[r4,#0xc]
00001e  2101              MOVS     r1,#1
000020  4308              ORRS     r0,r0,r1
000022  60e0              STR      r0,[r4,#0xc]
;;;361        NVIC_EnableIRQ(UART1_IRQn);	
000024  200d              MOVS     r0,#0xd
000026  f7fffffe          BL       NVIC_EnableIRQ
;;;362    		UART1->THR = '\n'; UART1->THR = 'O';UART1->THR = 'K'; 
00002a  200a              MOVS     r0,#0xa
00002c  6020              STR      r0,[r4,#0]
00002e  204f              MOVS     r0,#0x4f
000030  6020              STR      r0,[r4,#0]
000032  204b              MOVS     r0,#0x4b
000034  6020              STR      r0,[r4,#0]
;;;363    }
000036  bd10              POP      {r4,pc}
;;;364    void Buzz(uint8_t no) 
                          ENDP

                  |L12.56|
                          DCD      0x40150000

                          AREA ||i.NVIC_EnableIRQ||, CODE, READONLY, ALIGN=2

                  NVIC_EnableIRQ PROC
;;;503     */
;;;504    __STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)
000000  06c1              LSLS     r1,r0,#27
;;;505    {
;;;506      NVIC->ISER[0] = (1 << ((uint32_t)(IRQn) & 0x1F));
000002  0ec9              LSRS     r1,r1,#27
000004  2001              MOVS     r0,#1
000006  4088              LSLS     r0,r0,r1
000008  4901              LDR      r1,|L13.16|
00000a  6008              STR      r0,[r1,#0]
;;;507    }
00000c  4770              BX       lr
;;;508    
                          ENDP

00000e  0000              DCW      0x0000
                  |L13.16|
                          DCD      0xe000e100

                          AREA ||i.RTC_IRQHandler||, CODE, READONLY, ALIGN=2

                  RTC_IRQHandler PROC
;;;163    
;;;164    void RTC_IRQHandler(void)
000000  b500              PUSH     {lr}
;;;165    {
;;;166    	S_RTC_TIME_DATA_T sCurTime;
;;;167        if ( (RTC->RIER & RTC_RIER_TIER_Msk) && (RTC->RIIR & RTC_RIIR_TIF_Msk) ) { // RTC interrupt
000002  4809              LDR      r0,|L14.40|
000004  b089              SUB      sp,sp,#0x24           ;165
000006  6a81              LDR      r1,[r0,#0x28]
000008  0789              LSLS     r1,r1,#30
00000a  d50b              BPL      |L14.36|
00000c  6ac1              LDR      r1,[r0,#0x2c]
00000e  0789              LSLS     r1,r1,#30
000010  d508              BPL      |L14.36|
;;;168            RTC->RIIR = 0x2;
000012  2102              MOVS     r1,#2
000014  62c1              STR      r1,[r0,#0x2c]
;;;169    
;;;170        RTC_GetDateAndTime(&sCurTime); // Get the current time
000016  4668              MOV      r0,sp
000018  f7fffffe          BL       RTC_GetDateAndTime
;;;171    
;;;172    	  //printf("Count:%4d,Time: %4d/%2d/%2d %2d:%2d:%2d\n", g_u32TICK,
;;;173    		//sCurTime.u32Year,sCurTime.u32Month,sCurTime.u32Day,sCurTime.u32Hour,sCurTime.u32Minute,sCurTime.u32Second);
;;;174    	
;;;175        g_u32TICK++;
00001c  4803              LDR      r0,|L14.44|
00001e  6941              LDR      r1,[r0,#0x14]  ; g_u32TICK
000020  1c49              ADDS     r1,r1,#1
000022  6141              STR      r1,[r0,#0x14]  ; g_u32TICK
                  |L14.36|
;;;176        }
;;;177    }
000024  b009              ADD      sp,sp,#0x24
000026  bd00              POP      {pc}
;;;178    
                          ENDP

                  |L14.40|
                          DCD      0x40008000
                  |L14.44|
                          DCD      ||.data||

                          AREA ||i.SYS_Init||, CODE, READONLY, ALIGN=2

                  SYS_Init PROC
;;;178    
;;;179    void SYS_Init(void)
000000  b5f8              PUSH     {r3-r7,lr}
;;;180    {
;;;181        /*---------------------------------------------------------------------------------------------------------*/
;;;182        /* Init System Clock                                                                                       */
;;;183        /*---------------------------------------------------------------------------------------------------------*/
;;;184        /* Unlock protected registers */
;;;185        SYS_UnlockReg();
000002  f7fffffe          BL       SYS_UnlockReg
;;;186    
;;;187        /* Enable Internal RC (12 MHz) */
;;;188        CLK_EnableXtalRC(CLK_PWRCTL_HIRC_EN_Msk | CLK_PWRCTL_LXT_EN_Msk);
000006  2006              MOVS     r0,#6
000008  f7fffffe          BL       CLK_EnableXtalRC
;;;189    
;;;190        /* Waiting for 12MHz clock ready */
;;;191        CLK_WaitClockReady(CLK_CLKSTATUS_HIRC_STB_Msk | CLK_CLKSTATUS_LXT_STB_Msk);
00000c  2012              MOVS     r0,#0x12
00000e  f7fffffe          BL       CLK_WaitClockReady
;;;192    
;;;193        /* Set HCLK clock source */	
;;;194    		//CLK_SetHCLK(CLK_CLKSEL0_HCLK_S_HIRC, CLK_HCLK_CLK_DIVIDER(1));
;;;195    	  CLK_SetCoreClock(32000000);
000012  484c              LDR      r0,|L15.324|
000014  f7fffffe          BL       CLK_SetCoreClock
;;;196    	
;;;197        /* Select IP clock source */	
;;;198        CLK_SetModuleClock(I2C1_MODULE, 0, 0);	
000018  4c4b              LDR      r4,|L15.328|
00001a  2200              MOVS     r2,#0
00001c  4611              MOV      r1,r2
00001e  4620              MOV      r0,r4
000020  f7fffffe          BL       CLK_SetModuleClock
;;;199        CLK_SetModuleClock(RTC_MODULE, 0, 0);
000024  4d49              LDR      r5,|L15.332|
000026  2200              MOVS     r2,#0
000028  4611              MOV      r1,r2
00002a  4628              MOV      r0,r5
00002c  f7fffffe          BL       CLK_SetModuleClock
;;;200        CLK_SetModuleClock(ADC_MODULE, CLK_CLKSEL1_ADC_S_HIRC, CLK_ADC_CLK_DIVIDER(1));
000030  4e47              LDR      r6,|L15.336|
000032  2103              MOVS     r1,#3
000034  2200              MOVS     r2,#0
000036  04c9              LSLS     r1,r1,#19
000038  4630              MOV      r0,r6
00003a  f7fffffe          BL       CLK_SetModuleClock
;;;201        CLK_SetModuleClock(PWM0_CH23_MODULE, CLK_CLKSEL1_PWM0_CH23_S_HIRC, 0);
00003e  2200              MOVS     r2,#0
000040  21c0              MOVS     r1,#0xc0
000042  4844              LDR      r0,|L15.340|
000044  f7fffffe          BL       CLK_SetModuleClock
;;;202    		CLK_SetModuleClock(TMR0_MODULE,  CLK_CLKSEL1_TMR0_S_HIRC, CLK_TMR0_CLK_DIVIDER(1));	
000048  2200              MOVS     r2,#0
00004a  0d61              LSRS     r1,r4,#21
00004c  4842              LDR      r0,|L15.344|
00004e  f7fffffe          BL       CLK_SetModuleClock
;;;203    		//CLK_SetModuleClock(TMR0_MODULE,  CLK_CLKSEL1_TMR1_S_HIRC, CLK_TMR0_CLK_DIVIDER(3));	// 12/3=4MHz
;;;204    // 		CLK_SetModuleClock(TMR1_MODULE,  CLK_CLKSEL1_TMR1_S_HIRC, CLK_TMR1_CLK_DIVIDER(3));	// 12/3=4MHz
;;;205    		CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART_S_HIRC, CLK_UART_CLK_DIVIDER(3));	
000052  0da7              LSRS     r7,r4,#22
000054  463a              MOV      r2,r7
000056  2103              MOVS     r1,#3
000058  4840              LDR      r0,|L15.348|
00005a  f7fffffe          BL       CLK_SetModuleClock
;;;206        CLK_SetModuleClock(UART1_MODULE, CLK_CLKSEL1_UART_S_HIRC, CLK_UART_CLK_DIVIDER(3));
00005e  463a              MOV      r2,r7
000060  4f3e              LDR      r7,|L15.348|
000062  2103              MOVS     r1,#3
000064  1c7f              ADDS     r7,r7,#1
000066  4638              MOV      r0,r7
000068  f7fffffe          BL       CLK_SetModuleClock
;;;207    		
;;;208    	
;;;209    	  /* Enable IP clock */
;;;210    		CLK_EnableModuleClock(I2C1_MODULE);
00006c  4620              MOV      r0,r4
00006e  f7fffffe          BL       CLK_EnableModuleClock
;;;211    		CLK_EnableModuleClock(RTC_MODULE);
000072  4628              MOV      r0,r5
000074  f7fffffe          BL       CLK_EnableModuleClock
;;;212    		CLK_EnableModuleClock(ADC_MODULE);		
000078  4630              MOV      r0,r6
00007a  f7fffffe          BL       CLK_EnableModuleClock
;;;213    		CLK_EnableModuleClock(PWM0_CH23_MODULE);
00007e  4835              LDR      r0,|L15.340|
000080  f7fffffe          BL       CLK_EnableModuleClock
;;;214    		CLK_EnableModuleClock(TMR0_MODULE);
000084  4834              LDR      r0,|L15.344|
000086  f7fffffe          BL       CLK_EnableModuleClock
;;;215    // 		CLK_EnableModuleClock(TMR1_MODULE);
;;;216    		CLK_EnableModuleClock(UART0_MODULE);
00008a  1e78              SUBS     r0,r7,#1
00008c  f7fffffe          BL       CLK_EnableModuleClock
;;;217    		CLK_EnableModuleClock(UART1_MODULE);		
000090  4638              MOV      r0,r7
000092  f7fffffe          BL       CLK_EnableModuleClock
;;;218    
;;;219        /* Update System Core Clock */
;;;220        /* User can use SystemCoreClockUpdate() to calculate PllClock, SystemCoreClock and CycylesPerUs automatically. */
;;;221        SystemCoreClockUpdate();
000096  f7fffffe          BL       SystemCoreClockUpdate
;;;222    
;;;223        /*---------------------------------------------------------------------------------------------------------*/
;;;224        /* Init I/O Multi-function                                                                                 */
;;;225        /*---------------------------------------------------------------------------------------------------------*/	
;;;226        /* Set multi function pin for I2C1 */
;;;227    		SYS->PC_H_MFP &= ~(SYS_PC_H_MFP_PC10_MFP_Msk);
00009a  4831              LDR      r0,|L15.352|
00009c  6841              LDR      r1,[r0,#4]
00009e  220f              MOVS     r2,#0xf
0000a0  0212              LSLS     r2,r2,#8
0000a2  4391              BICS     r1,r1,r2
0000a4  6041              STR      r1,[r0,#4]
;;;228        SYS->PC_H_MFP |= (SYS_PC_H_MFP_PC10_MFP_I2C1_SCL);
0000a6  6841              LDR      r1,[r0,#4]
0000a8  1502              ASRS     r2,r0,#20
0000aa  4311              ORRS     r1,r1,r2
0000ac  6041              STR      r1,[r0,#4]
;;;229    		SYS->PC_H_MFP &= ~(SYS_PC_H_MFP_PC11_MFP_Msk);
0000ae  6841              LDR      r1,[r0,#4]
0000b0  220f              MOVS     r2,#0xf
0000b2  0312              LSLS     r2,r2,#12
0000b4  4391              BICS     r1,r1,r2
0000b6  6041              STR      r1,[r0,#4]
;;;230        SYS->PC_H_MFP |= (SYS_PC_H_MFP_PC11_MFP_I2C1_SDA);
0000b8  6841              LDR      r1,[r0,#4]
0000ba  1402              ASRS     r2,r0,#16
0000bc  4311              ORRS     r1,r1,r2
0000be  6041              STR      r1,[r0,#4]
;;;231    		
;;;232        /* Set PA multi-function pins for ADC */
;;;233        SYS->PA_L_MFP &= ~SYS_PA_L_MFP_PA4_MFP_Msk;
0000c0  0411              LSLS     r1,r2,#16
0000c2  6b0a              LDR      r2,[r1,#0x30]
0000c4  230f              MOVS     r3,#0xf
0000c6  041b              LSLS     r3,r3,#16
0000c8  439a              BICS     r2,r2,r3
0000ca  630a              STR      r2,[r1,#0x30]
;;;234        SYS->PA_L_MFP |= SYS_PA_L_MFP_PA4_MFP_ADC_CH4;
0000cc  6b0a              LDR      r2,[r1,#0x30]
0000ce  02c3              LSLS     r3,r0,#11
0000d0  431a              ORRS     r2,r2,r3
0000d2  630a              STR      r2,[r1,#0x30]
;;;235        SYS->PA_L_MFP &= ~SYS_PA_L_MFP_PA5_MFP_Msk;
0000d4  6b0a              LDR      r2,[r1,#0x30]
0000d6  230f              MOVS     r3,#0xf
0000d8  051b              LSLS     r3,r3,#20
0000da  439a              BICS     r2,r2,r3
0000dc  630a              STR      r2,[r1,#0x30]
;;;236        SYS->PA_L_MFP |= SYS_PA_L_MFP_PA5_MFP_ADC_CH5;
0000de  6b0a              LDR      r2,[r1,#0x30]
0000e0  03c3              LSLS     r3,r0,#15
0000e2  431a              ORRS     r2,r2,r3
0000e4  630a              STR      r2,[r1,#0x30]
;;;237    		
;;;238        /* Disable digital input path */
;;;239        PA->OFFD = PA->OFFD | (ADC_CH_4_MASK << 16);		
0000e6  4a1f              LDR      r2,|L15.356|
0000e8  6854              LDR      r4,[r2,#4]
0000ea  0385              LSLS     r5,r0,#14
0000ec  432c              ORRS     r4,r4,r5
0000ee  6054              STR      r4,[r2,#4]
;;;240        PA->OFFD = PA->OFFD | (ADC_CH_5_MASK << 16);
0000f0  6854              LDR      r4,[r2,#4]
0000f2  431c              ORRS     r4,r4,r3
0000f4  6054              STR      r4,[r2,#4]
;;;241    		
;;;242        /* Set PD multi-function pins for PWM */
;;;243        SYS->PD_H_MFP = (SYS->PD_H_MFP & ~(SYS_PD_H_MFP_PD9_MFP_Msk) )| SYS_PD_H_MFP_PD9_MFP_PWM0_CH3;
0000f6  68c2              LDR      r2,[r0,#0xc]
0000f8  2370              MOVS     r3,#0x70
0000fa  439a              BICS     r2,r2,r3
0000fc  3230              ADDS     r2,r2,#0x30
0000fe  60c2              STR      r2,[r0,#0xc]
;;;244    		
;;;245        /* Set multi function pin for UART0 */
;;;246    	  SYS->PA_H_MFP &=  ~(SYS_PA_H_MFP_PA12_MFP_Msk);
000100  6b4b              LDR      r3,[r1,#0x34]
000102  2207              MOVS     r2,#7
000104  0412              LSLS     r2,r2,#16
000106  4393              BICS     r3,r3,r2
000108  634b              STR      r3,[r1,#0x34]
;;;247    		SYS->PA_H_MFP |=   (SYS_PA_H_MFP_PA12_MFP_UART0_TX); // LQFP64-pin56
00010a  6b4b              LDR      r3,[r1,#0x34]
00010c  4313              ORRS     r3,r3,r2
00010e  634b              STR      r3,[r1,#0x34]
;;;248    		SYS->PA_H_MFP &=  ~(SYS_PA_H_MFP_PA13_MFP_Msk);
000110  6b4b              LDR      r3,[r1,#0x34]
000112  0112              LSLS     r2,r2,#4
000114  4393              BICS     r3,r3,r2
000116  634b              STR      r3,[r1,#0x34]
;;;249    		SYS->PA_H_MFP |=   (SYS_PA_H_MFP_PA13_MFP_UART0_RX); // LQFP64-pin57
000118  6b4b              LDR      r3,[r1,#0x34]
00011a  4313              ORRS     r3,r3,r2
00011c  634b              STR      r3,[r1,#0x34]
;;;250    		
;;;251        /* Set multi function pin for UART1 */
;;;252    	  SYS->PC_L_MFP &=  ~(SYS_PC_L_MFP_PC7_MFP_Msk);
00011e  6801              LDR      r1,[r0,#0]
000120  0109              LSLS     r1,r1,#4
000122  0909              LSRS     r1,r1,#4
000124  6001              STR      r1,[r0,#0]
;;;253    		SYS->PC_L_MFP |=   (SYS_PC_L_MFP_PC7_MFP_UART1_RX); // LQFP64-pin14
000126  6801              LDR      r1,[r0,#0]
000128  0212              LSLS     r2,r2,#8
00012a  4311              ORRS     r1,r1,r2
00012c  6001              STR      r1,[r0,#0]
;;;254    		SYS->PC_H_MFP &=  ~(SYS_PC_H_MFP_PC8_MFP_Msk);
00012e  6841              LDR      r1,[r0,#4]
000130  0909              LSRS     r1,r1,#4
000132  0109              LSLS     r1,r1,#4
000134  6041              STR      r1,[r0,#4]
;;;255    		SYS->PC_H_MFP |=   (SYS_PC_H_MFP_PC8_MFP_UART1_TX); // LQFP64-pin15
000136  6841              LDR      r1,[r0,#4]
000138  2207              MOVS     r2,#7
00013a  4311              ORRS     r1,r1,r2
00013c  6041              STR      r1,[r0,#4]
;;;256    		
;;;257        /* Lock protected registers */
;;;258        SYS_LockReg();
00013e  f7fffffe          BL       SYS_LockReg
;;;259    }
000142  bdf8              POP      {r3-r7,pc}
;;;260    
                          ENDP

                  |L15.324|
                          DCD      0x01e84800
                  |L15.328|
                          DCD      0x80000009
                  |L15.332|
                          DCD      0xe0000001
                  |L15.336|
                          DCD      0xaf33fe1c
                  |L15.340|
                          DCD      0xa6600015
                  |L15.344|
                          DCD      0xae843d02
                  |L15.348|
                          DCD      0xa6003d10
                  |L15.352|
                          DCD      0x50000040
                  |L15.356|
                          DCD      0x50004000

                          AREA ||i.Send_Data||, CODE, READONLY, ALIGN=2

                  Send_Data PROC
;;;382    
;;;383    void Send_Data(void)
000000  b5f8              PUSH     {r3-r7,lr}
;;;384    {
;;;385    	int16_t tmp16;
;;;386    	int8_t  msb, lsb;
;;;387    	int16_t R, P, Y;
;;;388    
;;;389    	R = transfer(iEuler[0]);
000002  4a38              LDR      r2,|L16.228|
000004  8810              LDRH     r0,[r2,#0]  ; iEuler
000006  f7fffffe          BL       transfer
00000a  4605              MOV      r5,r0
;;;390    	P = transfer(iEuler[1]);
00000c  8850              LDRH     r0,[r2,#2]  ; iEuler
00000e  f7fffffe          BL       transfer
000012  4606              MOV      r6,r0
;;;391    	Y = transfer(iEuler[2]);
000014  8890              LDRH     r0,[r2,#4]  ; iEuler
000016  f7fffffe          BL       transfer
00001a  4607              MOV      r7,r0
;;;392    	
;;;393    	// Transfer Data formate for Android APP
;;;394    	GyroX = transfer(Read_MPU6050_GyroX());
00001c  f7fffffe          BL       Read_MPU6050_GyroX
000020  f7fffffe          BL       transfer
000024  4c2f              LDR      r4,|L16.228|
000026  3c40              SUBS     r4,r4,#0x40
000028  80e0              STRH     r0,[r4,#6]
;;;395    	GyroY = transfer(Read_MPU6050_GyroY());
00002a  f7fffffe          BL       Read_MPU6050_GyroY
00002e  f7fffffe          BL       transfer
000032  8120              STRH     r0,[r4,#8]
;;;396    	GyroZ = transfer(Read_MPU6050_GyroZ());
000034  f7fffffe          BL       Read_MPU6050_GyroZ
000038  f7fffffe          BL       transfer
00003c  8160              STRH     r0,[r4,#0xa]
;;;397    	
;;;398    	Text[4] = (uint8_t) (R >> 8 );
00003e  1228              ASRS     r0,r5,#8
000040  4621              MOV      r1,r4
000042  3146              ADDS     r1,r1,#0x46
000044  7108              STRB     r0,[r1,#4]
;;;399    	Text[5] = (uint8_t) (R & 0xFF);
000046  714d              STRB     r5,[r1,#5]
;;;400    	Text[6] = (uint8_t) (P >> 8 );
000048  1230              ASRS     r0,r6,#8
00004a  7188              STRB     r0,[r1,#6]
;;;401    	Text[7] = (uint8_t) (P & 0xFF);
00004c  71ce              STRB     r6,[r1,#7]
;;;402    	Text[8] = (uint8_t) (Y >> 8 );
00004e  1238              ASRS     r0,r7,#8
000050  7208              STRB     r0,[r1,#8]
;;;403    	Text[9] = (uint8_t) (Y & 0xFF);
000052  724f              STRB     r7,[r1,#9]
;;;404    		
;;;405    	Text[14] = (uint8_t) (GyroZ >> 8 );
000054  8960              LDRH     r0,[r4,#0xa]  ; GyroZ
000056  0a00              LSRS     r0,r0,#8
000058  7388              STRB     r0,[r1,#0xe]
;;;406    	Text[15] = (uint8_t) (GyroZ & 0xFF);
00005a  8960              LDRH     r0,[r4,#0xa]  ; GyroZ
00005c  73c8              STRB     r0,[r1,#0xf]
;;;407    	Text[16] = (uint8_t) (GyroY >> 8 );
00005e  8920              LDRH     r0,[r4,#8]  ; GyroY
000060  0a00              LSRS     r0,r0,#8
000062  7408              STRB     r0,[r1,#0x10]
;;;408    	Text[17] = (uint8_t) (GyroY & 0xFF);
000064  8920              LDRH     r0,[r4,#8]  ; GyroY
000066  7448              STRB     r0,[r1,#0x11]
;;;409    	Text[18] = (uint8_t) (GyroX >> 8 );
000068  88e0              LDRH     r0,[r4,#6]  ; GyroX
00006a  0a00              LSRS     r0,r0,#8
00006c  7488              STRB     r0,[r1,#0x12]
;;;410    	Text[19] = (uint8_t) (GyroX & 0xFF);
00006e  88e0              LDRH     r0,[r4,#6]  ; GyroX
000070  74c8              STRB     r0,[r1,#0x13]
;;;411    	
;;;412    	Text[14] = (uint8_t) (GyroZ >> 8 );
000072  8960              LDRH     r0,[r4,#0xa]  ; GyroZ
000074  0a00              LSRS     r0,r0,#8
000076  7388              STRB     r0,[r1,#0xe]
;;;413    	Text[15] = (uint8_t) (GyroZ & 0xFF);
000078  8960              LDRH     r0,[r4,#0xa]  ; GyroZ
00007a  73c8              STRB     r0,[r1,#0xf]
;;;414    	Text[16] = (uint8_t) (GyroY >> 8 );
00007c  8920              LDRH     r0,[r4,#8]  ; GyroY
00007e  0a00              LSRS     r0,r0,#8
000080  7408              STRB     r0,[r1,#0x10]
;;;415    	Text[17] = (uint8_t) (GyroY & 0xFF);
000082  8920              LDRH     r0,[r4,#8]  ; GyroY
000084  7448              STRB     r0,[r1,#0x11]
;;;416    	Text[18] = (uint8_t) (GyroX >> 8 );
000086  88e0              LDRH     r0,[r4,#6]  ; GyroX
000088  0a00              LSRS     r0,r0,#8
00008a  7488              STRB     r0,[r1,#0x12]
;;;417    	Text[19] = (uint8_t) (GyroX & 0xFF);
00008c  88e0              LDRH     r0,[r4,#6]  ; GyroX
00008e  74c8              STRB     r0,[r1,#0x13]
;;;418    	
;;;419    	Text[24] = (uint8_t) (DHT11_Data[1] >> 8 );
000090  4608              MOV      r0,r1
000092  3816              SUBS     r0,r0,#0x16
000094  8842              LDRH     r2,[r0,#2]  ; DHT11_Data
000096  0a12              LSRS     r2,r2,#8
000098  760a              STRB     r2,[r1,#0x18]
;;;420    	Text[25] = (uint8_t) (DHT11_Data[1] & 0xFF);
00009a  8842              LDRH     r2,[r0,#2]  ; DHT11_Data
00009c  764a              STRB     r2,[r1,#0x19]
;;;421    	
;;;422    	Text[30] = (uint8_t) (DHT11_Data[0] >> 8 );
00009e  8802              LDRH     r2,[r0,#0]  ; DHT11_Data
0000a0  0a12              LSRS     r2,r2,#8
0000a2  778a              STRB     r2,[r1,#0x1e]
;;;423    	Text[31] = (uint8_t) (DHT11_Data[0] & 0xFF);
0000a4  8800              LDRH     r0,[r0,#0]  ; DHT11_Data
0000a6  77c8              STRB     r0,[r1,#0x1f]
;;;424    	
;;;425    	Text[36] = (uint8_t) (LightValue >> 8 );
0000a8  6aa0              LDR      r0,[r4,#0x28]  ; LightValue
0000aa  0a01              LSRS     r1,r0,#8
0000ac  4620              MOV      r0,r4
0000ae  3066              ADDS     r0,r0,#0x66
0000b0  7101              STRB     r1,[r0,#4]
;;;426    	Text[37] = (uint8_t) (LightValue & 0xFF);
0000b2  6aa1              LDR      r1,[r4,#0x28]  ; LightValue
0000b4  7141              STRB     r1,[r0,#5]
;;;427    
;;;428    	Text[42] = (uint8_t) (GasValue >> 8 );
0000b6  6ae1              LDR      r1,[r4,#0x2c]  ; GasValue
0000b8  0a09              LSRS     r1,r1,#8
0000ba  7281              STRB     r1,[r0,#0xa]
;;;429    	Text[43] = (uint8_t) (GasValue & 0xFF);
0000bc  6ae1              LDR      r1,[r4,#0x2c]  ; GasValue
0000be  72c1              STRB     r1,[r0,#0xb]
;;;430    
;;;431    	Text[48] = DIS_Value;
0000c0  7921              LDRB     r1,[r4,#4]  ; DIS_Value
0000c2  7401              STRB     r1,[r0,#0x10]
;;;432    	if(uartno==0)
0000c4  7960              LDRB     r0,[r4,#5]  ; uartno
0000c6  2800              CMP      r0,#0
0000c8  d006              BEQ      |L16.216|
;;;433    	{
;;;434    		UART_Write(UART0, Text, 49);
;;;435    	}else{
;;;436    		UART_Write(UART1, Text, 49);
0000ca  4621              MOV      r1,r4
0000cc  2231              MOVS     r2,#0x31
0000ce  3146              ADDS     r1,r1,#0x46
0000d0  4805              LDR      r0,|L16.232|
                  |L16.210|
0000d2  f7fffffe          BL       UART_Write
;;;437    	}
;;;438    }
0000d6  bdf8              POP      {r3-r7,pc}
                  |L16.216|
0000d8  4902              LDR      r1,|L16.228|
0000da  2231              MOVS     r2,#0x31              ;434
0000dc  1d89              ADDS     r1,r1,#6              ;434
0000de  4803              LDR      r0,|L16.236|
0000e0  e7f7              B        |L16.210|
;;;439    
                          ENDP

0000e2  0000              DCW      0x0000
                  |L16.228|
                          DCD      ||.data||+0x40
                  |L16.232|
                          DCD      0x40150000
                  |L16.236|
                          DCD      0x40050000

                          AREA ||i.SensorsDynamicCalibrate||, CODE, READONLY, ALIGN=2

                  SensorsDynamicCalibrate PROC
;;;471    
;;;472    void SensorsDynamicCalibrate(char SensorType)
000000  b53e              PUSH     {r1-r5,lr}
;;;473    {
;;;474    
;;;475    	if(SensorType&SENSOR_GYRO&&SensorInitState.GYRO_Done) {
000002  0780              LSLS     r0,r0,#30
000004  d513              BPL      |L17.46|
000006  480a              LDR      r0,|L17.48|
000008  7840              LDRB     r0,[r0,#1]  ; SensorInitState
00000a  2800              CMP      r0,#0
00000c  d00f              BEQ      |L17.46|
;;;476    		if(!SensorCalState.GYRO_Done) {
00000e  4c08              LDR      r4,|L17.48|
000010  1ce4              ADDS     r4,r4,#3
000012  7860              LDRB     r0,[r4,#1]  ; SensorCalState
000014  2800              CMP      r0,#0
000016  d10a              BNE      |L17.46|
;;;477    			DelayMsec(1);
000018  2001              MOVS     r0,#1
00001a  f7fffffe          BL       DelayMsec
;;;478    			if(nvtGyroCenterCalibrate()==STATUS_GYRO_CAL_DONE) {
00001e  f7fffffe          BL       nvtGyroCenterCalibrate
000022  2801              CMP      r0,#1
000024  d103              BNE      |L17.46|
;;;479    				float GyroMean[3];
;;;480    				SensorCalState.GYRO_Done = true;
000026  7060              STRB     r0,[r4,#1]
;;;481    				nvtGetGyroOffset(GyroMean);
000028  4668              MOV      r0,sp
00002a  f7fffffe          BL       nvtGetGyroOffset
                  |L17.46|
;;;482    			}
;;;483    		}
;;;484    	}
;;;485    }
00002e  bd3e              POP      {r1-r5,pc}
;;;486    
                          ENDP

                  |L17.48|
                          DCD      ||.data||+0xc

                          AREA ||i.TMR0_IRQHandler||, CODE, READONLY, ALIGN=2

                  TMR0_IRQHandler PROC
;;;93     															
;;;94     void TMR0_IRQHandler(void)
000000  b510              PUSH     {r4,lr}
000002  4a06              LDR      r2,|L18.28|
000004  6991              LDR      r1,[r2,#0x18]
;;;95     {
;;;96         time_DHT11[capture_count] = TIMER_GetCaptureData(TIMER0);
000006  4806              LDR      r0,|L18.32|
000008  6983              LDR      r3,[r0,#0x18]  ; capture_count
00000a  4c06              LDR      r4,|L18.36|
00000c  005b              LSLS     r3,r3,#1
00000e  52e1              STRH     r1,[r4,r3]
;;;97     		capture_count++;
000010  6981              LDR      r1,[r0,#0x18]  ; capture_count
000012  1c49              ADDS     r1,r1,#1
000014  6181              STR      r1,[r0,#0x18]  ; capture_count
000016  2002              MOVS     r0,#2
000018  6110              STR      r0,[r2,#0x10]
;;;98         TIMER_ClearCaptureIntFlag(TIMER0);
;;;99     
;;;100    }
00001a  bd10              POP      {r4,pc}
;;;101    
                          ENDP

                  |L18.28|
                          DCD      0x40010000
                  |L18.32|
                          DCD      ||.data||
                  |L18.36|
                          DCD      ||.bss||+0x30

                          AREA ||i.UART0_IRQHandler||, CODE, READONLY, ALIGN=2

                  UART0_IRQHandler PROC
;;;101    
;;;102    void UART0_IRQHandler(void)
000000  b510              PUSH     {r4,lr}
;;;103    {
;;;104        uint32_t u32IntSts= UART0->ISR;
000002  480d              LDR      r0,|L19.56|
000004  6901              LDR      r1,[r0,#0x10]
;;;105    		uint8_t i;
;;;106        
;;;107        if(u32IntSts & UART_IS_RX_READY(UART0)) {			
000006  6902              LDR      r2,[r0,#0x10]
000008  400a              ANDS     r2,r2,r1
00000a  07d1              LSLS     r1,r2,#31
00000c  d012              BEQ      |L19.52|
;;;108          UART_Read(UART0, RX_buffer, RXBUFSIZE);
00000e  2204              MOVS     r2,#4
000010  490a              LDR      r1,|L19.60|
000012  f7fffffe          BL       UART_Read
000016  4a09              LDR      r2,|L19.60|
;;;109    			for(i=0;i<4;i++)
000018  2000              MOVS     r0,#0
;;;110    				command[i]=RX_buffer[i];
00001a  1d11              ADDS     r1,r2,#4
                  |L19.28|
00001c  5c13              LDRB     r3,[r2,r0]
00001e  540b              STRB     r3,[r1,r0]
000020  1c40              ADDS     r0,r0,#1              ;109
000022  b2c0              UXTB     r0,r0                 ;109
000024  2804              CMP      r0,#4                 ;109
000026  d3f9              BCC      |L19.28|
;;;111    			
;;;112    			Flag_report=1;
000028  4804              LDR      r0,|L19.60|
00002a  2101              MOVS     r1,#1
00002c  3820              SUBS     r0,r0,#0x20
00002e  7001              STRB     r1,[r0,#0]
;;;113    			//print_Line(2,RX_buffer);
;;;114    			uartno = 0;
000030  2100              MOVS     r1,#0
000032  7141              STRB     r1,[r0,#5]
                  |L19.52|
;;;115        }
;;;116    }
000034  bd10              POP      {r4,pc}
;;;117    void UART1_IRQHandler(void)
                          ENDP

000036  0000              DCW      0x0000
                  |L19.56|
                          DCD      0x40050000
                  |L19.60|
                          DCD      ||.data||+0x20

                          AREA ||i.UART1_IRQHandler||, CODE, READONLY, ALIGN=2

                  UART1_IRQHandler PROC
;;;116    }
;;;117    void UART1_IRQHandler(void)
000000  b510              PUSH     {r4,lr}
;;;118    {
;;;119        uint32_t u32IntSts= UART1->ISR;
000002  480c              LDR      r0,|L20.52|
000004  6901              LDR      r1,[r0,#0x10]
;;;120    		uint8_t i;
;;;121        
;;;122        if(u32IntSts & UART_IS_RX_READY(UART1)) {			
000006  6902              LDR      r2,[r0,#0x10]
000008  400a              ANDS     r2,r2,r1
00000a  07d1              LSLS     r1,r2,#31
00000c  d011              BEQ      |L20.50|
;;;123          UART_Read(UART1, RX_buffer, RXBUFSIZE);
00000e  2204              MOVS     r2,#4
000010  4909              LDR      r1,|L20.56|
000012  f7fffffe          BL       UART_Read
000016  4908              LDR      r1,|L20.56|
;;;124    			for(i=0;i<4;i++)
000018  2000              MOVS     r0,#0
;;;125    				command[i]=RX_buffer[i];
00001a  1d0a              ADDS     r2,r1,#4
                  |L20.28|
00001c  5c0b              LDRB     r3,[r1,r0]
00001e  5413              STRB     r3,[r2,r0]
000020  1c40              ADDS     r0,r0,#1              ;124
000022  b2c0              UXTB     r0,r0                 ;124
000024  2804              CMP      r0,#4                 ;124
000026  d3f9              BCC      |L20.28|
;;;126    			
;;;127    			Flag_report=1;
000028  4903              LDR      r1,|L20.56|
00002a  2001              MOVS     r0,#1
00002c  3920              SUBS     r1,r1,#0x20
00002e  7008              STRB     r0,[r1,#0]
;;;128    			//print_Line(2,RX_buffer);
;;;129    			uartno = 1;			
000030  7148              STRB     r0,[r1,#5]
                  |L20.50|
;;;130        }
;;;131    }
000032  bd10              POP      {r4,pc}
;;;132    
                          ENDP

                  |L20.52|
                          DCD      0x40150000
                  |L20.56|
                          DCD      ||.data||+0x20

                          AREA ||i.main||, CODE, READONLY, ALIGN=2

                  main PROC
;;;504    /*---------------------------------------------------------------------------------------------------------*/
;;;505    int32_t main()
000000  b50e              PUSH     {r1-r3,lr}
;;;506    {
;;;507    
;;;508    		float Euler[3] ;
;;;509    
;;;510    		uint8_t i=0;
;;;511    	
;;;512    		SYS_Init();
000002  f7fffffe          BL       SYS_Init
;;;513    		//SYS_UnlockReg();
;;;514    	  Init_GPIO();
000006  f7fffffe          BL       Init_GPIO
;;;515    	  Init_KEY();
00000a  f7fffffe          BL       Init_KEY
;;;516    	  Init_PWM();	
00000e  f7fffffe          BL       Init_PWM
;;;517    		Init_DHT11();
000012  f7fffffe          BL       Init_DHT11
;;;518    	
;;;519    	  I2C_Open(I2C1,400000);
000016  4990              LDR      r1,|L21.600|
000018  4890              LDR      r0,|L21.604|
00001a  f7fffffe          BL       I2C_Open
;;;520    		Init_MPU6050();
00001e  f7fffffe          BL       Init_MPU6050
;;;521    	
;;;522    	  Init_RTC();
000022  f7fffffe          BL       Init_RTC
;;;523    	  Init_ADC();
000026  f7fffffe          BL       Init_ADC
;;;524    		Init_AHRS();
00002a  f7fffffe          BL       Init_AHRS
;;;525    	
;;;526    	  GPIO_SetMode(PD, BIT12,GPIO_PMD_OUTPUT);
00002e  2201              MOVS     r2,#1
000030  0311              LSLS     r1,r2,#12
000032  488b              LDR      r0,|L21.608|
000034  f7fffffe          BL       GPIO_SetMode
;;;527    	  PD12=1; // MQ-7 H_EN 
000038  4d8a              LDR      r5,|L21.612|
00003a  2601              MOVS     r6,#1
00003c  632e              STR      r6,[r5,#0x30]
;;;528    
;;;529    	  Init_Bluetooth();
00003e  f7fffffe          BL       Init_Bluetooth
;;;530    		Init_WIFI();
000042  f7fffffe          BL       Init_WIFI
;;;531    
;;;532    	
;;;533    		//Calibrate Gyro
;;;534    		while (!SensorCalState.GYRO_Done)
;;;535    		{	
;;;536    				DelayMsec(1);
;;;537    				rawGYRO[0] = Read_MPU6050_GyroX();
000046  4c88              LDR      r4,|L21.616|
000048  4627              MOV      r7,r4                 ;534
00004a  3f2b              SUBS     r7,r7,#0x2b           ;534
;;;538    				rawGYRO[1] = Read_MPU6050_GyroY();
;;;539    				rawGYRO[2] = Read_MPU6050_GyroZ();
;;;540    				nvtInputSensorRawGYRO(rawGYRO);
;;;541    				SensorsDynamicCalibrate (SENSOR_GYRO);
00004c  e011              B        |L21.114|
                  |L21.78|
00004e  2001              MOVS     r0,#1                 ;536
000050  f7fffffe          BL       DelayMsec
000054  f7fffffe          BL       Read_MPU6050_GyroX
000058  8020              STRH     r0,[r4,#0]            ;537
00005a  f7fffffe          BL       Read_MPU6050_GyroY
00005e  8060              STRH     r0,[r4,#2]            ;538
000060  f7fffffe          BL       Read_MPU6050_GyroZ
000064  80a0              STRH     r0,[r4,#4]            ;539
000066  4880              LDR      r0,|L21.616|
000068  f7fffffe          BL       nvtInputSensorRawGYRO
00006c  2002              MOVS     r0,#2
00006e  f7fffffe          BL       SensorsDynamicCalibrate
                  |L21.114|
000072  7878              LDRB     r0,[r7,#1]            ;534  ; SensorCalState
000074  2800              CMP      r0,#0                 ;534
000076  d0ea              BEQ      |L21.78|
;;;542    		}
;;;543    		
;;;544    		//Calibrate Accel
;;;545    		AccCalibrationZ();
000078  f7fffffe          BL       AccCalibrationZ
;;;546    
;;;547    		 PD10= !PD10;  // Blue LED OFF for Calibrate 
00007c  6aa8              LDR      r0,[r5,#0x28]
00007e  2800              CMP      r0,#0
000080  d046              BEQ      |L21.272|
000082  2000              MOVS     r0,#0
                  |L21.132|
000084  4977              LDR      r1,|L21.612|
000086  6288              STR      r0,[r1,#0x28]
000088  466f              MOV      r7,sp                 ;508
00008a  2500              MOVS     r5,#0                 ;510
                  |L21.140|
;;;548    		
;;;549    	while(1)
;;;550    	{
;;;551    
;;;552    
;;;553    		ADC_START_CONV(ADC);
00008c  4877              LDR      r0,|L21.620|
00008e  6881              LDR      r1,[r0,#8]
000090  2201              MOVS     r2,#1
000092  02d2              LSLS     r2,r2,#11
000094  4311              ORRS     r1,r1,r2
000096  6081              STR      r1,[r0,#8]
;;;554    
;;;555    		rawACC[0] = Read_MPU6050_AccX();
000098  f7fffffe          BL       Read_MPU6050_AccX
00009c  4c72              LDR      r4,|L21.616|
00009e  1fa4              SUBS     r4,r4,#6
0000a0  8020              STRH     r0,[r4,#0]
;;;556    		rawACC[1] = Read_MPU6050_AccY();
0000a2  f7fffffe          BL       Read_MPU6050_AccY
0000a6  8060              STRH     r0,[r4,#2]
;;;557    		rawACC[2] = Read_MPU6050_AccZ();
0000a8  f7fffffe          BL       Read_MPU6050_AccZ
0000ac  80a0              STRH     r0,[r4,#4]
;;;558    		
;;;559    		rawGYRO[0] = Read_MPU6050_GyroX();
0000ae  f7fffffe          BL       Read_MPU6050_GyroX
0000b2  1da4              ADDS     r4,r4,#6
0000b4  8020              STRH     r0,[r4,#0]
;;;560    		rawGYRO[1] = Read_MPU6050_GyroY();
0000b6  f7fffffe          BL       Read_MPU6050_GyroY
0000ba  8060              STRH     r0,[r4,#2]
;;;561    		rawGYRO[2] = Read_MPU6050_GyroZ();
0000bc  f7fffffe          BL       Read_MPU6050_GyroZ
0000c0  80a0              STRH     r0,[r4,#4]
;;;562    		nvtInputSensorRawACC(rawACC);
0000c2  1fa0              SUBS     r0,r4,#6
0000c4  f7fffffe          BL       nvtInputSensorRawACC
;;;563    		nvtInputSensorRawGYRO(rawGYRO);
0000c8  4620              MOV      r0,r4
0000ca  f7fffffe          BL       nvtInputSensorRawGYRO
;;;564    		
;;;565    		
;;;566    		nvtUpdateAHRS(SENSOR_ACC|SENSOR_GYRO);
0000ce  2003              MOVS     r0,#3
0000d0  f7fffffe          BL       nvtUpdateAHRS
;;;567    		nvtGetEulerRPY(Euler);
0000d4  4668              MOV      r0,sp
0000d6  f7fffffe          BL       nvtGetEulerRPY
;;;568    		for (i=0 ; i<3 ; i++)
0000da  2400              MOVS     r4,#0
                  |L21.220|
;;;569    				iEuler[i] = (int) (Euler[i]);
0000dc  00a0              LSLS     r0,r4,#2
0000de  5838              LDR      r0,[r7,r0]
0000e0  f7fffffe          BL       __aeabi_f2iz
0000e4  0062              LSLS     r2,r4,#1
0000e6  4960              LDR      r1,|L21.616|
0000e8  1c64              ADDS     r4,r4,#1              ;568
0000ea  1d89              ADDS     r1,r1,#6
0000ec  b2e4              UXTB     r4,r4                 ;568
0000ee  5288              STRH     r0,[r1,r2]
0000f0  2c03              CMP      r4,#3                 ;568
0000f2  d3f3              BCC      |L21.220|
;;;570    	
;;;571    #if 1
;;;572    	if (Flag_report) {
0000f4  460c              MOV      r4,r1
0000f6  3c40              SUBS     r4,r4,#0x40
0000f8  7820              LDRB     r0,[r4,#0]  ; Flag_report
0000fa  2800              CMP      r0,#0
0000fc  d0c6              BEQ      |L21.140|
;;;573    		
;;;574        if (strncmp((char *)command,"@STA",4) == 0 )
0000fe  4620              MOV      r0,r4
000100  2204              MOVS     r2,#4
000102  a15b              ADR      r1,|L21.624|
000104  3024              ADDS     r0,r0,#0x24
000106  f7fffffe          BL       strncmp
00010a  2800              CMP      r0,#0
00010c  d002              BEQ      |L21.276|
00010e  e015              B        |L21.316|
                  |L21.272|
000110  2001              MOVS     r0,#1                 ;547
000112  e7b7              B        |L21.132|
                  |L21.276|
;;;575    			{
;;;576    				Buzz(1);Buzz(1);
000114  2001              MOVS     r0,#1
000116  f7fffffe          BL       Buzz
00011a  2001              MOVS     r0,#1
00011c  f7fffffe          BL       Buzz
;;;577    				sprintf(Text_ACK,"@AKS");
000120  4851              LDR      r0,|L21.616|
000122  a155              ADR      r1,|L21.632|
000124  381e              SUBS     r0,r0,#0x1e
000126  f7fffffe          BL       __2sprintf
;;;578    				if(uartno==0){
00012a  7960              LDRB     r0,[r4,#5]  ; uartno
00012c  2800              CMP      r0,#0
00012e  d00e              BEQ      |L21.334|
;;;579    					UART_Write(UART0, Text_ACK, 4);
;;;580    				}else{
;;;581    					UART_Write(UART1, Text_ACK, 4);
000130  494d              LDR      r1,|L21.616|
000132  2204              MOVS     r2,#4
000134  391e              SUBS     r1,r1,#0x1e
000136  4852              LDR      r0,|L21.640|
                  |L21.312|
000138  f7fffffe          BL       UART_Write
                  |L21.316|
;;;582    				}
;;;583    			}
;;;584    	
;;;585        if (strncmp((char *)command,"@DAT",4) == 0 )
00013c  484a              LDR      r0,|L21.616|
00013e  2204              MOVS     r2,#4
000140  a150              ADR      r1,|L21.644|
000142  3816              SUBS     r0,r0,#0x16
000144  f7fffffe          BL       strncmp
000148  2800              CMP      r0,#0
00014a  d005              BEQ      |L21.344|
00014c  e018              B        |L21.384|
                  |L21.334|
00014e  4946              LDR      r1,|L21.616|
000150  2204              MOVS     r2,#4                 ;579
000152  391e              SUBS     r1,r1,#0x1e           ;579
000154  484d              LDR      r0,|L21.652|
000156  e7ef              B        |L21.312|
                  |L21.344|
;;;586    			{
;;;587    				sprintf(Text_ACK,"@AKD");
000158  4843              LDR      r0,|L21.616|
00015a  a14d              ADR      r1,|L21.656|
00015c  381e              SUBS     r0,r0,#0x1e
00015e  f7fffffe          BL       __2sprintf
;;;588    				
;;;589    				if(uartno==0){
000162  7960              LDRB     r0,[r4,#5]  ; uartno
000164  2800              CMP      r0,#0
000166  d014              BEQ      |L21.402|
;;;590    					UART_Write(UART0, Text_ACK, 4);
;;;591    				}else{
;;;592    					UART_Write(UART1, Text_ACK, 4);
000168  493f              LDR      r1,|L21.616|
00016a  2204              MOVS     r2,#4
00016c  391e              SUBS     r1,r1,#0x1e
00016e  4844              LDR      r0,|L21.640|
                  |L21.368|
000170  f7fffffe          BL       UART_Write
;;;593    				}
;;;594    				Read_DHT11 (DHT11_Data);
000174  483c              LDR      r0,|L21.616|
000176  380a              SUBS     r0,r0,#0xa
000178  f7fffffe          BL       Read_DHT11
;;;595    				Send_Data();
00017c  f7fffffe          BL       Send_Data
                  |L21.384|
;;;596    			}			
;;;597    			
;;;598    		if (strncmp((char *)command,"@STP",4) == 0 )
000180  4839              LDR      r0,|L21.616|
000182  2204              MOVS     r2,#4
000184  a144              ADR      r1,|L21.664|
000186  3816              SUBS     r0,r0,#0x16
000188  f7fffffe          BL       strncmp
00018c  2800              CMP      r0,#0
00018e  d005              BEQ      |L21.412|
000190  e01b              B        |L21.458|
                  |L21.402|
000192  4935              LDR      r1,|L21.616|
000194  2204              MOVS     r2,#4                 ;590
000196  391e              SUBS     r1,r1,#0x1e           ;590
000198  483c              LDR      r0,|L21.652|
00019a  e7e9              B        |L21.368|
                  |L21.412|
;;;599    			{
;;;600    				Buzz(1);Buzz(1);Buzz(1);
00019c  2001              MOVS     r0,#1
00019e  f7fffffe          BL       Buzz
0001a2  2001              MOVS     r0,#1
0001a4  f7fffffe          BL       Buzz
0001a8  2001              MOVS     r0,#1
0001aa  f7fffffe          BL       Buzz
;;;601    				sprintf(Text_ACK,"@AKP");
0001ae  482e              LDR      r0,|L21.616|
0001b0  a13b              ADR      r1,|L21.672|
0001b2  381e              SUBS     r0,r0,#0x1e
0001b4  f7fffffe          BL       __2sprintf
;;;602    				if(uartno==0){
0001b8  7960              LDRB     r0,[r4,#5]  ; uartno
0001ba  2800              CMP      r0,#0
0001bc  d00e              BEQ      |L21.476|
;;;603    					UART_Write(UART0, Text_ACK, 4);
;;;604    				}else{
;;;605    					UART_Write(UART1, Text_ACK, 4);
0001be  492a              LDR      r1,|L21.616|
0001c0  2204              MOVS     r2,#4
0001c2  391e              SUBS     r1,r1,#0x1e
0001c4  482e              LDR      r0,|L21.640|
                  |L21.454|
0001c6  f7fffffe          BL       UART_Write
                  |L21.458|
;;;606    				}
;;;607    				//UART_Write(UART1, Text_ACK, 4);
;;;608    			}		
;;;609    		if (strncmp((char *)command,"@LB",3) == 0 )
0001ca  4827              LDR      r0,|L21.616|
0001cc  2203              MOVS     r2,#3
0001ce  a136              ADR      r1,|L21.680|
0001d0  3816              SUBS     r0,r0,#0x16
0001d2  f7fffffe          BL       strncmp
0001d6  2800              CMP      r0,#0
0001d8  d005              BEQ      |L21.486|
0001da  e035              B        |L21.584|
                  |L21.476|
0001dc  4922              LDR      r1,|L21.616|
0001de  2204              MOVS     r2,#4                 ;603
0001e0  391e              SUBS     r1,r1,#0x1e           ;603
0001e2  482a              LDR      r0,|L21.652|
0001e4  e7ef              B        |L21.454|
                  |L21.486|
;;;610    			{
;;;611    				DIS_Value = RX_buffer[3];
0001e6  4820              LDR      r0,|L21.616|
0001e8  381a              SUBS     r0,r0,#0x1a
0001ea  78c0              LDRB     r0,[r0,#3]  ; RX_buffer
0001ec  7120              STRB     r0,[r4,#4]
;;;612    				if ((DIS_Value& 0x01 ) != 0 )
0001ee  7920              LDRB     r0,[r4,#4]  ; DIS_Value
0001f0  07c0              LSLS     r0,r0,#31
0001f2  d006              BEQ      |L21.514|
;;;613    				{
;;;614    					Buzz(1);
0001f4  2001              MOVS     r0,#1
0001f6  f7fffffe          BL       Buzz
;;;615    					DIS_Value &= ~0x01;
0001fa  7920              LDRB     r0,[r4,#4]  ; DIS_Value
0001fc  0840              LSRS     r0,r0,#1
0001fe  0040              LSLS     r0,r0,#1
000200  7120              STRB     r0,[r4,#4]
                  |L21.514|
;;;616    				}
;;;617    				if ((DIS_Value & 0x02 ) != 0)
000202  7920              LDRB     r0,[r4,#4]  ; DIS_Value
000204  0780              LSLS     r0,r0,#30
;;;618    					PA14 = 0;
;;;619    				else 
;;;620    					PA14 = 1;
000206  4829              LDR      r0,|L21.684|
000208  d501              BPL      |L21.526|
00020a  6385              STR      r5,[r0,#0x38]         ;618
00020c  e000              B        |L21.528|
                  |L21.526|
00020e  6386              STR      r6,[r0,#0x38]
                  |L21.528|
;;;621    				if ((DIS_Value & 0x04 ) != 0)
000210  7920              LDRB     r0,[r4,#4]  ; DIS_Value
000212  0740              LSLS     r0,r0,#29
;;;622    					PB15 = 0;
;;;623    				else 
;;;624    					PB15 = 1;  
000214  4826              LDR      r0,|L21.688|
000216  d501              BPL      |L21.540|
000218  63c5              STR      r5,[r0,#0x3c]         ;622
00021a  e000              B        |L21.542|
                  |L21.540|
00021c  63c6              STR      r6,[r0,#0x3c]
                  |L21.542|
;;;625    				if ((DIS_Value & 0x08 ) != 0)
00021e  7920              LDRB     r0,[r4,#4]  ; DIS_Value
000220  0700              LSLS     r0,r0,#28
;;;626    					PD10 = 0;
;;;627    				else 
;;;628    					PD10 = 1;
000222  4810              LDR      r0,|L21.612|
000224  d501              BPL      |L21.554|
000226  6285              STR      r5,[r0,#0x28]         ;626
000228  e000              B        |L21.556|
                  |L21.554|
00022a  6286              STR      r6,[r0,#0x28]
                  |L21.556|
;;;629    				sprintf(Text_ACK,"@AKL");			
00022c  480e              LDR      r0,|L21.616|
00022e  a121              ADR      r1,|L21.692|
000230  381e              SUBS     r0,r0,#0x1e
000232  f7fffffe          BL       __2sprintf
;;;630    				//UART_Write(UART1, Text_ACK, 4);
;;;631    				if(uartno==0){
000236  7960              LDRB     r0,[r4,#5]  ; uartno
000238  2800              CMP      r0,#0
00023a  d007              BEQ      |L21.588|
;;;632    					UART_Write(UART0, Text_ACK, 4);
;;;633    				}else{
;;;634    					UART_Write(UART1, Text_ACK, 4);
00023c  490a              LDR      r1,|L21.616|
00023e  2204              MOVS     r2,#4
000240  391e              SUBS     r1,r1,#0x1e
000242  480f              LDR      r0,|L21.640|
                  |L21.580|
000244  f7fffffe          BL       UART_Write
                  |L21.584|
;;;635    				}
;;;636    			}
;;;637    			Flag_report=0;
000248  7025              STRB     r5,[r4,#0]
00024a  e71f              B        |L21.140|
                  |L21.588|
00024c  4906              LDR      r1,|L21.616|
00024e  2204              MOVS     r2,#4                 ;632
000250  391e              SUBS     r1,r1,#0x1e           ;632
000252  480e              LDR      r0,|L21.652|
000254  e7f6              B        |L21.580|
;;;638    	}
;;;639    #endif 	
;;;640    		
;;;641    }		
;;;642    	
;;;643    
;;;644    }
                          ENDP

000256  0000              DCW      0x0000
                  |L21.600|
                          DCD      0x00061a80
                  |L21.604|
                          DCD      0x40120000
                  |L21.608|
                          DCD      0x500040c0
                  |L21.612|
                          DCD      0x500042c0
                  |L21.616|
                          DCD      ||.data||+0x3a
                  |L21.620|
                          DCD      0x400e0040
                  |L21.624|
000270  40535441          DCB      "@STA",0
000274  00      
000275  00                DCB      0
000276  00                DCB      0
000277  00                DCB      0
                  |L21.632|
000278  40414b53          DCB      "@AKS",0
00027c  00      
00027d  00                DCB      0
00027e  00                DCB      0
00027f  00                DCB      0
                  |L21.640|
                          DCD      0x40150000
                  |L21.644|
000284  40444154          DCB      "@DAT",0
000288  00      
000289  00                DCB      0
00028a  00                DCB      0
00028b  00                DCB      0
                  |L21.652|
                          DCD      0x40050000
                  |L21.656|
000290  40414b44          DCB      "@AKD",0
000294  00      
000295  00                DCB      0
000296  00                DCB      0
000297  00                DCB      0
                  |L21.664|
000298  40535450          DCB      "@STP",0
00029c  00      
00029d  00                DCB      0
00029e  00                DCB      0
00029f  00                DCB      0
                  |L21.672|
0002a0  40414b50          DCB      "@AKP",0
0002a4  00      
0002a5  00                DCB      0
0002a6  00                DCB      0
0002a7  00                DCB      0
                  |L21.680|
0002a8  404c4200          DCB      "@LB",0
                  |L21.684|
                          DCD      0x50004200
                  |L21.688|
                          DCD      0x50004240
                  |L21.692|
0002b4  40414b4c          DCB      "@AKL",0
0002b8  00      
0002b9  00                DCB      0
0002ba  00                DCB      0
0002bb  00                DCB      0

                          AREA ||i.transfer||, CODE, READONLY, ALIGN=2

                  transfer PROC
;;;374    
;;;375    uint16_t transfer(uint16_t input)
000000  4904              LDR      r1,|L22.20|
;;;376    {
;;;377    		if(input > 0x7FFF)
000002  4288              CMP      r0,r1
000004  d904              BLS      |L22.16|
;;;378    			return ~(input - 0x8000) + 1;
000006  1c49              ADDS     r1,r1,#1
000008  1a40              SUBS     r0,r0,r1
00000a  43c0              MVNS     r0,r0
00000c  1c40              ADDS     r0,r0,#1
00000e  b280              UXTH     r0,r0
                  |L22.16|
;;;379    		else
;;;380    			return	input;
;;;381    }
000010  4770              BX       lr
;;;382    
                          ENDP

000012  0000              DCW      0x0000
                  |L22.20|
                          DCD      0x00007fff

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

                  GyroScale
                          %        12
                  AccScale
                          %        12
                  GyroOffset
                          %        12
                  AccOffset
                          %        12
                  time_DHT11
                          %        84

                          AREA ||area_number.25||, DATA, NOINIT, ALIGN=1

                          EXPORTAS ||area_number.25||, ||.bss||
                  Sensor
                          %        18

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

                  Flag_report
000000  00                DCB      0x00
                  KEY1_Flag
000001  00                DCB      0x00
                  KEY2_Flag
000002  00                DCB      0x00
                  KEY3_Flag
000003  00                DCB      0x00
                  DIS_Value
000004  00                DCB      0x00
                  uartno
000005  00                DCB      0x00
                  GyroX
000006  0000              DCB      0x00,0x00
                  GyroY
000008  0000              DCB      0x00,0x00
                  GyroZ
00000a  0000              DCB      0x00,0x00
                  SensorInitState
00000c  010100            DCB      0x01,0x01,0x00
                  SensorCalState
00000f  00                DCB      0x00
000010  00000000          DCB      0x00,0x00,0x00,0x00
                  g_u32TICK
                          DCD      0x00000000
                  capture_count
                          DCD      0x00000000
                  Text_ACK
                          DCD      0x00000000
                  RX_buffer
                          DCD      0x00000000
                  command
                          DCD      0x00000000
                  LightValue
                          DCD      0x00000000
                  GasValue
                          DCD      0x00000000
                  DHT11_Data
                          DCD      0x00000000
                  rawACC
                          DCD      0x00000000
000038  0000              DCB      0x00,0x00
                  rawGYRO
00003a  0000              DCB      0x00,0x00
                          DCD      0x00000000
                  iEuler
                          DCD      0x00000000
000044  0000              DCB      0x00,0x00
                  Text
000046  4041              DCB      0x40,0x41
000048  43430000          DCB      0x43,0x43,0x00,0x00
00004c  00000000          DCB      0x00,0x00,0x00,0x00
000050  40475952          DCB      0x40,0x47,0x59,0x52
000054  00000000          DCB      0x00,0x00,0x00,0x00
000058  00004054          DCB      0x00,0x00,0x40,0x54
00005c  454d0000          DCB      0x45,0x4d,0x00,0x00
000060  40485257          DCB      0x40,0x48,0x52,0x57
000064  0000404c          DCB      0x00,0x00,0x40,0x4c
000068  49520000          DCB      0x49,0x52,0x00,0x00
00006c  40474153          DCB      0x40,0x47,0x41,0x53
000070  00004044          DCB      0x00,0x00,0x40,0x44
000074  495300            DCB      0x49,0x53,0x00

                          AREA ||area_number.28||, DATA, ALIGN=0

                          EXPORTAS ||area_number.28||, ||.data||
                  report_rate
000000  01                DCB      0x01

                          AREA ||area_number.29||, DATA, ALIGN=0

                          EXPORTAS ||area_number.29||, ||.data||
                  Report_on
000000  00                DCB      0x00

                          AREA ||area_number.30||, DATA, ALIGN=2

                          EXPORTAS ||area_number.30||, ||.data||
                  Timer_F
                          DCD      0x00000000

                          AREA ||area_number.31||, DATA, ALIGN=1

                          EXPORTAS ||area_number.31||, ||.data||
                  AcceX
000000  0000              DCB      0x00,0x00

                          AREA ||area_number.32||, DATA, ALIGN=1

                          EXPORTAS ||area_number.32||, ||.data||
                  AcceY
000000  0000              DCB      0x00,0x00

                          AREA ||area_number.33||, DATA, ALIGN=1

                          EXPORTAS ||area_number.33||, ||.data||
                  AcceZ
000000  0000              DCB      0x00,0x00

                          AREA ||area_number.34||, DATA, ALIGN=1

                          EXPORTAS ||area_number.34||, ||.data||
                  Humidity
000000  0000              DCB      0x00,0x00

                          AREA ||area_number.35||, DATA, ALIGN=1

                          EXPORTAS ||area_number.35||, ||.data||
                  Temp
000000  0000              DCB      0x00,0x00

;*** Start embedded assembler ***

#line 1 "..\\main.c"
	AREA ||.rev16_text||, CODE, READONLY
	THUMB
	EXPORT |__asm___6_main_c_4ba5958f____REV16|
#line 118 "..\\..\\..\\..\\Library\\CMSIS\\Include\\core_cmInstr.h"
|__asm___6_main_c_4ba5958f____REV16| PROC
#line 119

 rev16 r0, r0
 bx lr
	ENDP
	AREA ||.revsh_text||, CODE, READONLY
	THUMB
	EXPORT |__asm___6_main_c_4ba5958f____REVSH|
#line 132
|__asm___6_main_c_4ba5958f____REVSH| PROC
#line 133

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***

                  __ARM_use_no_argv EQU 0
