; generated by ARM C/C++ Compiler, 4.1 [Build 894]
; commandline ArmCC [--list --split_sections --debug -c --asm --interleave -o.\obj\dht11.o --asm_dir=.\lst\ --list_dir=.\lst\ --depend=.\obj\dht11.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\dht11.crf ..\DHT11.c]
                          THUMB

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

                  Init_DHT11 PROC
;;;11     
;;;12     void Init_DHT11(void)
000000  b570              PUSH     {r4-r6,lr}
;;;13     {
;;;14     		TIMER_Open(TIMER0, TIMER_PERIODIC_MODE, 1000000);
000002  4c0e              LDR      r4,|L1.60|
000004  4a0c              LDR      r2,|L1.56|
000006  2110              MOVS     r1,#0x10
000008  4620              MOV      r0,r4
00000a  f7fffffe          BL       TIMER_Open
;;;15     		TIMER_SET_PRESCALE_VALUE(TIMER0, 11);
00000e  200b              MOVS     r0,#0xb
000010  6060              STR      r0,[r4,#4]
;;;16     	    // Set compare value as large as possible, so don't need to worry about counter overrun too frequently.
;;;17         TIMER_SET_CMP_VALUE(TIMER0, 0xFFFFFF);
000012  480b              LDR      r0,|L1.64|
000014  60a0              STR      r0,[r4,#8]
;;;18     		TIMER_EnableCapture(TIMER0, TIMER_CAPTURE_TRIGGER_COUNTING_MODE, TIMER_CAPTURE_RISING_THEN_FALLING_EDGE);
000016  2203              MOVS     r2,#3
000018  0492              LSLS     r2,r2,#18
00001a  0121              LSLS     r1,r4,#4
00001c  4620              MOV      r0,r4
00001e  f7fffffe          BL       TIMER_EnableCapture
;;;19     		GPIO_SetMode(PD,BIT11,GPIO_PMD_OUTPUT);
000022  2201              MOVS     r2,#1
000024  4c07              LDR      r4,|L1.68|
000026  02d5              LSLS     r5,r2,#11
000028  4629              MOV      r1,r5
00002a  4620              MOV      r0,r4
00002c  f7fffffe          BL       GPIO_SetMode
;;;20     		GPIO_ENABLE_PULL_UP(PD,BIT11);
000030  6a62              LDR      r2,[r4,#0x24]
000032  432a              ORRS     r2,r2,r5
000034  6262              STR      r2,[r4,#0x24]
;;;21     }
000036  bd70              POP      {r4-r6,pc}
;;;22     
                          ENDP

                  |L1.56|
                          DCD      0x000f4240
                  |L1.60|
                          DCD      0x40010000
                  |L1.64|
                          DCD      0x00ffffff
                  |L1.68|
                          DCD      0x500040c0

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

                  Read_DHT11 PROC
;;;24     
;;;25     void Read_DHT11(uint16_t DHT11[])
000000  b5f8              PUSH     {r3-r7,lr}
;;;26     {
000002  4606              MOV      r6,r0
;;;27     	
;;;28     		volatile uint32_t uu;
;;;29     		uint16_t DHT11_Humidity,DHT11_temp;
;;;30     	
;;;31     		capture_count = 0;
000004  492d              LDR      r1,|L2.188|
000006  2000              MOVS     r0,#0
000008  6008              STR      r0,[r1,#0]  ; capture_count
;;;32         DHT11_Humidity = 0; 
;;;33     		DHT11_temp = 0 ;
;;;34     	
;;;35     		PD11 = 0 ;
00000a  492d              LDR      r1,|L2.192|
00000c  4604              MOV      r4,r0                 ;32
00000e  4605              MOV      r5,r0                 ;33
000010  62c8              STR      r0,[r1,#0x2c]
;;;36     	
;;;37     
;;;38     		DelayMsec(20);
000012  2014              MOVS     r0,#0x14
000014  f7fffffe          BL       DelayMsec
000018  4f2a              LDR      r7,|L2.196|
00001a  68f8              LDR      r0,[r7,#0xc]
00001c  2102              MOVS     r1,#2
00001e  4308              ORRS     r0,r0,r1
000020  60f8              STR      r0,[r7,#0xc]
000022  2101              MOVS     r1,#1
000024  4a28              LDR      r2,|L2.200|
000026  0208              LSLS     r0,r1,#8
000028  6010              STR      r0,[r2,#0]
00002a  6838              LDR      r0,[r7,#0]
00002c  4308              ORRS     r0,r0,r1
00002e  6038              STR      r0,[r7,#0]
;;;39     		
;;;40     		TIMER_EnableCaptureInt(TIMER0);
;;;41         NVIC_EnableIRQ(TMR0_IRQn);
;;;42     		// Start Timer 0
;;;43         TIMER_Start(TIMER0);
;;;44     		PD11 = 1;
000030  4823              LDR      r0,|L2.192|
000032  62c1              STR      r1,[r0,#0x2c]
;;;45     		SYS_UnlockReg();
000034  f7fffffe          BL       SYS_UnlockReg
;;;46     		SYS->PD_H_MFP  = (SYS->PD_H_MFP & ~SYS_PD_H_MFP_PD11_MFP_Msk) | SYS_PD_H_MFP_PD11_MFP_TMR0_CAP;
000038  4824              LDR      r0,|L2.204|
00003a  68c2              LDR      r2,[r0,#0xc]
00003c  2107              MOVS     r1,#7
00003e  0309              LSLS     r1,r1,#12
000040  438a              BICS     r2,r2,r1
000042  01c1              LSLS     r1,r0,#7
000044  1851              ADDS     r1,r2,r1
000046  60c1              STR      r1,[r0,#0xc]
;;;47     	
;;;48     		DelayMsec(5);
000048  2005              MOVS     r0,#5
00004a  f7fffffe          BL       DelayMsec
00004e  68f8              LDR      r0,[r7,#0xc]
000050  2102              MOVS     r1,#2
000052  4388              BICS     r0,r0,r1
000054  60f8              STR      r0,[r7,#0xc]
000056  6838              LDR      r0,[r7,#0]
000058  0840              LSRS     r0,r0,#1
00005a  0040              LSLS     r0,r0,#1
00005c  6038              STR      r0,[r7,#0]
;;;49     							
;;;50     		TIMER_DisableCaptureInt(TIMER0);
;;;51     		TIMER_Stop(TIMER0);
;;;52     		
;;;53     		if (capture_count >=41) {
00005e  4817              LDR      r0,|L2.188|
000060  6800              LDR      r0,[r0,#0]  ; capture_count
000062  2829              CMP      r0,#0x29
000064  d31c              BCC      |L2.160|
;;;54     		
;;;55     			for (uu=2;uu<18;uu++)
;;;56     			{
;;;57     				if (time_DHT11[uu] >30 )
000066  4a1a              LDR      r2,|L2.208|
                  |L2.104|
000068  0048              LSLS     r0,r1,#1
00006a  5a10              LDRH     r0,[r2,r0]
00006c  281e              CMP      r0,#0x1e
00006e  d902              BLS      |L2.118|
;;;58     					DHT11_Humidity = ((DHT11_Humidity << 1) | 1);
000070  0060              LSLS     r0,r4,#1
000072  1c40              ADDS     r0,r0,#1
000074  e000              B        |L2.120|
                  |L2.118|
;;;59     				else
;;;60     					DHT11_Humidity = DHT11_Humidity << 1 ;
000076  0060              LSLS     r0,r4,#1
                  |L2.120|
000078  1c49              ADDS     r1,r1,#1              ;55
00007a  b284              UXTH     r4,r0
00007c  2912              CMP      r1,#0x12              ;55
00007e  d3f3              BCC      |L2.104|
;;;61     			}	
;;;62     			for (uu=18;uu<34;uu++)
000080  2012              MOVS     r0,#0x12
                  |L2.130|
;;;63     			{
;;;64     				if (time_DHT11[uu] >30 )
000082  0041              LSLS     r1,r0,#1
000084  5a51              LDRH     r1,[r2,r1]
000086  291e              CMP      r1,#0x1e
000088  d902              BLS      |L2.144|
;;;65     					DHT11_temp = ((DHT11_temp << 1)  | 1);
00008a  0069              LSLS     r1,r5,#1
00008c  1c49              ADDS     r1,r1,#1
00008e  e000              B        |L2.146|
                  |L2.144|
;;;66     				else
;;;67     					DHT11_temp = DHT11_temp << 1 ;
000090  0069              LSLS     r1,r5,#1
                  |L2.146|
000092  1c40              ADDS     r0,r0,#1              ;62
000094  b28d              UXTH     r5,r1
000096  2822              CMP      r0,#0x22              ;62
000098  d3f3              BCC      |L2.130|
;;;68     			}	
;;;69     			DHT11[0] = DHT11_Humidity;
00009a  8034              STRH     r4,[r6,#0]
;;;70     			DHT11[1] = DHT11_temp;
00009c  8075              STRH     r5,[r6,#2]
00009e  e002              B        |L2.166|
                  |L2.160|
;;;71     		}
;;;72     		else
;;;73     		{
;;;74     			DHT11[0] = 0;
0000a0  2000              MOVS     r0,#0
0000a2  8030              STRH     r0,[r6,#0]
;;;75     			DHT11[1] = 0;	
0000a4  8070              STRH     r0,[r6,#2]
                  |L2.166|
;;;76     		}
;;;77     		SYS->PD_H_MFP  = (SYS->PD_H_MFP & ~SYS_PD_H_MFP_PD11_MFP_Msk) | SYS_PD_H_MFP_PD11_MFP_GPD11 ;
0000a6  4809              LDR      r0,|L2.204|
0000a8  68c2              LDR      r2,[r0,#0xc]
0000aa  2107              MOVS     r1,#7
0000ac  0309              LSLS     r1,r1,#12
0000ae  438a              BICS     r2,r2,r1
0000b0  60c2              STR      r2,[r0,#0xc]
;;;78     		PD11 = 1;
0000b2  4903              LDR      r1,|L2.192|
0000b4  2001              MOVS     r0,#1
0000b6  62c8              STR      r0,[r1,#0x2c]
;;;79     }
0000b8  bdf8              POP      {r3-r7,pc}
                          ENDP

0000ba  0000              DCW      0x0000
                  |L2.188|
                          DCD      capture_count
                  |L2.192|
                          DCD      0x500042c0
                  |L2.196|
                          DCD      0x40010000
                  |L2.200|
                          DCD      0xe000e100
                  |L2.204|
                          DCD      0x50000040
                  |L2.208|
                          DCD      time_DHT11

;*** Start embedded assembler ***

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

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

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
