; generated by Component: ARM Compiler 5.06 update 4 (build 422) Tool: ArmCC [4d3604]
; commandline ArmCC [--c99 --list --split_sections --debug -c --asm --interleave -o.\obj\lib_driver_adc_pan159.o --asm_dir=.\lst\ --list_dir=.\lst\ --depend=.\obj\lib_driver_adc_pan159.d --cpu=Cortex-M0 --apcs=interwork -O3 --diag_suppress=9931 -I..\..\..\Library\CMSIS\Include -I..\..\..\Library\Device\Nuvoton\Mini58Series\Include -I..\..\..\Library\StdDriver\inc -I..\..\Template -I..\..\..\Library\StdDriver\driver -I.\RTE\_Template -ID:\Keil_v5\ARM\PACK\Nuvoton\NuMicro_DFP\1.0.9\Device\Mini58\Include -ID:\Keil_v5\ARM\CMSIS\Include -D__MICROLIB -D__UVISION_VERSION=523 --omf_browse=.\obj\lib_driver_adc_pan159.crf ..\..\..\Library\StdDriver\driver\lib_driver_adc_pan159.c]
                          THUMB

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

                  adc_pan159_init PROC
;;;60     
;;;61     void adc_pan159_init(void)
000000  b510              PUSH     {r4,lr}
;;;62     {
;;;63         uint32_t u32tmp=0,u32sel=0,u32div=0;
;;;64         CLK_EnableModuleClock(ADC_MODULE);
000002  4816              LDR      r0,|L1.92|
000004  f7fffffe          BL       CLK_EnableModuleClock
;;;65         //CLK_SetModuleClock(ADC_MODULE,CLK_CLKSEL1_ADCSEL_HIRC,CLK_CLKDIV_ADC(80)); /** 276.480kHzʱ */
;;;66     
;;;67         if(MODULE_CLKSEL_Msk(ADC_MODULE)!=MODULE_NoMsk) {
;;;68             u32sel = (uint32_t)&CLK->CLKSEL0+((MODULE_CLKSEL(ADC_MODULE))*4);
000008  4915              LDR      r1,|L1.96|
;;;69             u32tmp = *(volatile uint32_t *)(u32sel);
00000a  6808              LDR      r0,[r1,#0]
;;;70             u32tmp = ( u32tmp & ~(MODULE_CLKSEL_Msk(ADC_MODULE)<<MODULE_CLKSEL_Pos(ADC_MODULE)) ) | CLK_CLKSEL1_ADCSEL_HIRC;
00000c  220c              MOVS     r2,#0xc
00000e  4310              ORRS     r0,r0,r2
;;;71             *(volatile uint32_t *)(u32sel) = u32tmp;
000010  6008              STR      r0,[r1,#0]
;;;72         }
;;;73         if(MODULE_CLKDIV_Msk(ADC_MODULE)!=MODULE_NoMsk) {
;;;74             u32div =(uint32_t)&CLK->CLKDIV+((MODULE_CLKDIV(ADC_MODULE))*4);
000012  1d09              ADDS     r1,r1,#4
;;;75             u32tmp = *(volatile uint32_t *)(u32div);
000014  6808              LDR      r0,[r1,#0]
;;;76             u32tmp = ( u32tmp & ~(MODULE_CLKDIV_Msk(ADC_MODULE)<<MODULE_CLKDIV_Pos(ADC_MODULE)) ) | CLK_CLKDIV_ADC(80);
000016  22ff              MOVS     r2,#0xff
000018  0412              LSLS     r2,r2,#16
00001a  4390              BICS     r0,r0,r2
00001c  224f              MOVS     r2,#0x4f
00001e  0412              LSLS     r2,r2,#16
000020  1880              ADDS     r0,r0,r2
;;;77             *(volatile uint32_t *)(u32div) = u32tmp;
000022  6008              STR      r0,[r1,#0]
;;;78         }
;;;79         
;;;80         ADC_POWER_ON(ADC);
000024  480f              LDR      r0,|L1.100|
000026  6a01              LDR      r1,[r0,#0x20]
000028  2201              MOVS     r2,#1
00002a  4311              ORRS     r1,r1,r2
00002c  6201              STR      r1,[r0,#0x20]
;;;81         //ADC_SetExtraSampleTime(ADC,NULL,6);
;;;82         ADC->EXTSMPT = (ADC->EXTSMPT & ~ADC_EXTSMPT_EXTSMPT_Msk) | 6;
00002e  480d              LDR      r0,|L1.100|
000030  3040              ADDS     r0,r0,#0x40
000032  6881              LDR      r1,[r0,#8]
000034  0909              LSRS     r1,r1,#4
000036  0109              LSLS     r1,r1,#4
000038  1d89              ADDS     r1,r1,#6
00003a  6081              STR      r1,[r0,#8]
;;;83         
;;;84         if(ADC_ENABLE_CH0_P53){
;;;85             SYS->P5_MFP &= ~SYS_MFP_P53_Msk;
;;;86             SYS->P5_MFP |= SYS_MFP_P53_ADC_CH0;
;;;87             GPIO_DISABLE_DIGITAL_PATH(P5,BIT3);
;;;88         }
;;;89         if(ADC_ENABLE_CH1_P10){
;;;90             SYS->P1_MFP &= ~SYS_MFP_P10_Msk;
;;;91             SYS->P1_MFP |= SYS_MFP_P10_ADC_CH1;
;;;92             GPIO_DISABLE_DIGITAL_PATH(P1,BIT0);
;;;93         }
;;;94         if(ADC_ENABLE_CH2_P12){
;;;95             SYS->P1_MFP &= ~SYS_MFP_P12_Msk;
;;;96             SYS->P1_MFP |= SYS_MFP_P12_ADC_CH2;
;;;97             GPIO_DISABLE_DIGITAL_PATH(P1,BIT2);
;;;98         }
;;;99         if(ADC_ENABLE_CH3_P13){
;;;100            SYS->P1_MFP &= ~SYS_MFP_P13_Msk;
00003c  2005              MOVS     r0,#5
00003e  0700              LSLS     r0,r0,#28
000040  6b41              LDR      r1,[r0,#0x34]
000042  4a09              LDR      r2,|L1.104|
000044  4011              ANDS     r1,r1,r2
000046  6341              STR      r1,[r0,#0x34]
;;;101            SYS->P1_MFP |= SYS_MFP_P13_ADC_CH3;
000048  6b41              LDR      r1,[r0,#0x34]
00004a  2208              MOVS     r2,#8
00004c  4311              ORRS     r1,r1,r2
00004e  6341              STR      r1,[r0,#0x34]
;;;102            GPIO_DISABLE_DIGITAL_PATH(P1,BIT3);
000050  4806              LDR      r0,|L1.108|
000052  6841              LDR      r1,[r0,#4]
000054  0412              LSLS     r2,r2,#16
000056  4311              ORRS     r1,r1,r2
000058  6041              STR      r1,[r0,#4]
;;;103        }
;;;104        if(ADC_ENABLE_CH4_P14){
;;;105            SYS->P1_MFP &= ~SYS_MFP_P14_Msk;
;;;106            SYS->P1_MFP |= SYS_MFP_P14_ADC_CH4;
;;;107            GPIO_DISABLE_DIGITAL_PATH(P1,BIT4);
;;;108        }
;;;109        if(ADC_ENABLE_CH5_P15){
;;;110            SYS->P1_MFP &= ~SYS_MFP_P15_Msk;
;;;111            SYS->P1_MFP |= SYS_MFP_P15_ADC_CH5;
;;;112            GPIO_DISABLE_DIGITAL_PATH(P1,BIT5);
;;;113        }
;;;114        if(ADC_ENABLE_CH6_P30){
;;;115            SYS->P3_MFP &= ~SYS_MFP_P30_Msk;
;;;116            SYS->P3_MFP |= SYS_MFP_P30_ADC_CH6;
;;;117            GPIO_DISABLE_DIGITAL_PATH(P3,BIT0);
;;;118        }
;;;119        if(ADC_ENABLE_CH7_P31){
;;;120            SYS->P3_MFP &= ~SYS_MFP_P31_Msk;
;;;121            SYS->P3_MFP |= SYS_MFP_P31_ADC_CH7;
;;;122            GPIO_DISABLE_DIGITAL_PATH(P3,BIT1);
;;;123        }
;;;124        //adc_pan159_start(adc_chns_table[adc_cur_chn_index],6);
;;;125    }
00005a  bd10              POP      {r4,pc}
;;;126    
                          ENDP

                  |L1.92|
                          DCD      0xa623fe1c
                  |L1.96|
                          DCD      0x50000214
                  |L1.100|
                          DCD      0x400e0000
                  |L1.104|
                          DCD      0xf7fff7f7
                  |L1.108|
                          DCD      0x50004040

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

                  adc_pan159_samp1 PROC
;;;157    
;;;158    void adc_pan159_samp1(uint16_t *buf)
000000  490b              LDR      r1,|L2.48|
;;;159    {    
;;;160        //adc_pan159_start(ADC_PAN159_CH3_P13,6);
;;;161        ADC->CHEN = ADC_PAN159_CH3_P13;
000002  2208              MOVS     r2,#8
000004  624a              STR      r2,[r1,#0x24]
;;;162        ADC->EXTSMPT = (ADC->EXTSMPT & ~ADC_EXTSMPT_EXTSMPT_Msk) | 6;
000006  4a0a              LDR      r2,|L2.48|
000008  3240              ADDS     r2,r2,#0x40
00000a  6893              LDR      r3,[r2,#8]
00000c  091b              LSRS     r3,r3,#4
00000e  011b              LSLS     r3,r3,#4
000010  1d9b              ADDS     r3,r3,#6
000012  6093              STR      r3,[r2,#8]
;;;163        ADC_START_CONV(ADC);
000014  6a0a              LDR      r2,[r1,#0x20]
000016  2301              MOVS     r3,#1
000018  02db              LSLS     r3,r3,#11
00001a  431a              ORRS     r2,r2,r3
00001c  620a              STR      r2,[r1,#0x20]
                  |L2.30|
;;;164        while(adc_pan159_is_busy());
00001e  6b0a              LDR      r2,[r1,#0x30]
000020  0712              LSLS     r2,r2,#28
000022  d4fc              BMI      |L2.30|
;;;165        /* ȡADCת */
;;;166        buf[0] = adc_pan159_value();
000024  6809              LDR      r1,[r1,#0]
000026  0589              LSLS     r1,r1,#22
000028  0d89              LSRS     r1,r1,#22
00002a  8001              STRH     r1,[r0,#0]
;;;167    }
00002c  4770              BX       lr
                          ENDP

00002e  0000              DCW      0x0000
                  |L2.48|
                          DCD      0x400e0000

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

                  adc_pan159_samp2 PROC
;;;133    
;;;134    void adc_pan159_samp2(uint16_t *buf)
000000  b530              PUSH     {r4,r5,lr}
;;;135    {
;;;136        /* ȡǰͨ */
;;;137        //uint8_t curr_index = adc_cur_chn_index;
;;;138        //int16_t curr_chn = adc_chns_table[curr_index];
;;;139        
;;;140        //adc_pan159_start(adc_chns_table[adc_cur_chn_index],6);
;;;141        ADC->CHEN = adc_chns_table[adc_cur_chn_index];
000002  4a10              LDR      r2,|L3.68|
000004  2300              MOVS     r3,#0
000006  490e              LDR      r1,|L3.64|
000008  56d3              LDRSB    r3,[r2,r3]  ; adc_cur_chn_index
00000a  5ccc              LDRB     r4,[r1,r3]
00000c  490e              LDR      r1,|L3.72|
00000e  624c              STR      r4,[r1,#0x24]
;;;142        ADC->EXTSMPT = (ADC->EXTSMPT & ~ADC_EXTSMPT_EXTSMPT_Msk) | 6;
000010  4c0d              LDR      r4,|L3.72|
000012  3440              ADDS     r4,r4,#0x40
000014  68a5              LDR      r5,[r4,#8]
000016  092d              LSRS     r5,r5,#4
000018  012d              LSLS     r5,r5,#4
00001a  1dad              ADDS     r5,r5,#6
00001c  60a5              STR      r5,[r4,#8]
;;;143        ADC_START_CONV(ADC);
00001e  6a0c              LDR      r4,[r1,#0x20]
000020  2501              MOVS     r5,#1
000022  02ed              LSLS     r5,r5,#11
000024  432c              ORRS     r4,r4,r5
000026  620c              STR      r4,[r1,#0x20]
                  |L3.40|
;;;144        while(adc_pan159_is_busy());
000028  6b0c              LDR      r4,[r1,#0x30]
00002a  0724              LSLS     r4,r4,#28
00002c  d4fc              BMI      |L3.40|
;;;145        /* ȡADCת */
;;;146        buf[adc_cur_chn_index] = adc_pan159_value();
00002e  6809              LDR      r1,[r1,#0]
000030  0589              LSLS     r1,r1,#22
000032  0d89              LSRS     r1,r1,#22
000034  005b              LSLS     r3,r3,#1
000036  52c1              STRH     r1,[r0,r3]
;;;147        
;;;148        /* һͨ */
;;;149        if(adc_cur_chn_index < ADC_CHN_NUM_COUNT-1){
;;;150            adc_cur_chn_index++;
;;;151        }
;;;152        else{
;;;153            adc_cur_chn_index = 0;
000038  2000              MOVS     r0,#0
00003a  7010              STRB     r0,[r2,#0]
;;;154        }
;;;155        //adc_pan159_start(adc_chns_table[adc_cur_chn_index],6);
;;;156    }
00003c  bd30              POP      {r4,r5,pc}
;;;157    
                          ENDP

00003e  0000              DCW      0x0000
                  |L3.64|
                          DCD      ||.constdata||
                  |L3.68|
                          DCD      ||.data||
                  |L3.72|
                          DCD      0x400e0000

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

                  adc_pan159_start PROC
;;;126    
;;;127    void adc_pan159_start(uint8_t chn, uint8_t smplclks)
000000  b510              PUSH     {r4,lr}
;;;128    {
;;;129        ADC->CHEN = chn;
000002  4c06              LDR      r4,|L4.28|
000004  6260              STR      r0,[r4,#0x24]
;;;130        ADC_SetExtraSampleTime(ADC,NULL,smplclks);
000006  460a              MOV      r2,r1
000008  2100              MOVS     r1,#0
00000a  4620              MOV      r0,r4
00000c  f7fffffe          BL       ADC_SetExtraSampleTime
;;;131        ADC_START_CONV(ADC);
000010  6a20              LDR      r0,[r4,#0x20]
000012  2101              MOVS     r1,#1
000014  02c9              LSLS     r1,r1,#11
000016  4308              ORRS     r0,r0,r1
000018  6220              STR      r0,[r4,#0x20]
;;;132    }
00001a  bd10              POP      {r4,pc}
;;;133    
                          ENDP

                  |L4.28|
                          DCD      0x400e0000

                          AREA ||.constdata||, DATA, READONLY, ALIGN=0

                  adc_chns_table
000000  0800              DCB      0x08,0x00

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

                  adc_cur_chn_index
000000  00                DCB      0x00

;*** Start embedded assembler ***

#line 1 "..\\..\\..\\Library\\StdDriver\\driver\\lib_driver_adc_pan159.c"
	AREA ||.rev16_text||, CODE
	THUMB
	EXPORT |__asm___23_lib_driver_adc_pan159_c_dd2d65b9____REV16|
#line 388 "..\\..\\..\\Library\\CMSIS\\Include\\cmsis_armcc.h"
|__asm___23_lib_driver_adc_pan159_c_dd2d65b9____REV16| PROC
#line 389

 rev16 r0, r0
 bx lr
	ENDP
	AREA ||.revsh_text||, CODE
	THUMB
	EXPORT |__asm___23_lib_driver_adc_pan159_c_dd2d65b9____REVSH|
#line 402
|__asm___23_lib_driver_adc_pan159_c_dd2d65b9____REVSH| PROC
#line 403

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
