; generated by Component: ARM Compiler 5.06 update 7 (build 960) Tool: ArmCC [4d365d]
; commandline ArmCC [--c99 --list --split_sections --debug -c --asm --interleave -o..\output\scdriver_iic.o --asm_dir=..\List\ --list_dir=..\List\ --depend=..\output\scdriver_iic.d --cpu=Cortex-M0+ --apcs=interwork --diag_suppress=9931 -I..\FWLib\SC32F1XXX_Lib\inc -I..\User\HeadFiles -I..\User -I..\Drivers -I..\Apps -I..\CMSIS -D__UVISION_VERSION=536 -DSC32f12xx --omf_browse=..\output\scdriver_iic.crf ..\Apps\SCDriver_IIC.c]
                          THUMB

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

                  IIC_Ack PROC
;;;467      */
;;;468    void IIC_Ack(void)
000000  b570              PUSH     {r4-r6,lr}
;;;469    {
;;;470    	GPIO_ResetBits ( IIC_SCL, IIC_SCL_INIT ); 
000002  4c10              LDR      r4,|L1.68|
000004  2104              MOVS     r1,#4
000006  4620              MOV      r0,r4
000008  f7fffffe          BL       GPIO_ResetBits
;;;471    	SCD_NT_PinMode(IIC_SDA_INIT,GPIO_Mode_OUT_PP); 
00000c  2102              MOVS     r1,#2
00000e  2008              MOVS     r0,#8
000010  f7fffffe          BL       SCD_NT_PinMode
;;;472    	GPIO_ResetBits ( IIC_SDA, IIC_SDA_INIT ); 
000014  2108              MOVS     r1,#8
000016  4620              MOV      r0,r4
000018  f7fffffe          BL       GPIO_ResetBits
;;;473    	#if USE_TIMER0 ==1
;;;474    		TR0=1;
;;;475    		while(!timeflag);
;;;476    		timeflag=0;
;;;477    	#else 
;;;478    		delay_us(TIMER);
00001c  4d0a              LDR      r5,|L1.72|
00001e  6869              LDR      r1,[r5,#4]  ; TIMER
000020  e000              B        |L1.36|
                  |L1.34|
000022  1e49              SUBS     r1,r1,#1
                  |L1.36|
000024  2900              CMP      r1,#0
000026  d1fc              BNE      |L1.34|
;;;479    	#endif
;;;480    	GPIO_SetBits ( IIC_SCL, IIC_SCL_INIT ); 
000028  2104              MOVS     r1,#4
00002a  4620              MOV      r0,r4
00002c  f7fffffe          BL       GPIO_SetBits
;;;481    	#if USE_TIMER0 ==1
;;;482    		TR0=1;
;;;483    		while(!timeflag);
;;;484    		timeflag=0;
;;;485    	#else 
;;;486    		delay_us(TIMER);
000030  6869              LDR      r1,[r5,#4]  ; TIMER
000032  e000              B        |L1.54|
                  |L1.52|
000034  1e49              SUBS     r1,r1,#1
                  |L1.54|
000036  2900              CMP      r1,#0
000038  d1fc              BNE      |L1.52|
;;;487    	#endif
;;;488    	GPIO_ResetBits ( IIC_SCL, IIC_SCL_INIT ); 
00003a  2104              MOVS     r1,#4
00003c  4620              MOV      r0,r4
00003e  f7fffffe          BL       GPIO_ResetBits
;;;489    }
000042  bd70              POP      {r4-r6,pc}
;;;490    
                          ENDP

                  |L1.68|
                          DCD      0x40011200
                  |L1.72|
                          DCD      ||.data||

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

                  IIC_NAck PROC
;;;495     */	    
;;;496    void IIC_NAck(void)
000000  b570              PUSH     {r4-r6,lr}
;;;497    {
;;;498    	GPIO_ResetBits ( IIC_SCL, IIC_SCL_INIT ); 
000002  4c10              LDR      r4,|L2.68|
000004  2104              MOVS     r1,#4
000006  4620              MOV      r0,r4
000008  f7fffffe          BL       GPIO_ResetBits
;;;499    	SCD_NT_PinMode(IIC_SDA_INIT,GPIO_Mode_OUT_PP); 
00000c  2102              MOVS     r1,#2
00000e  2008              MOVS     r0,#8
000010  f7fffffe          BL       SCD_NT_PinMode
;;;500    	GPIO_SetBits ( IIC_SDA, IIC_SDA_INIT ); 
000014  2108              MOVS     r1,#8
000016  4620              MOV      r0,r4
000018  f7fffffe          BL       GPIO_SetBits
;;;501    	#if USE_TIMER0 ==1
;;;502    		TR0=1;
;;;503    		while(!timeflag);
;;;504    		timeflag=0;
;;;505    	#else 
;;;506    		delay_us(TIMER);
00001c  4d0a              LDR      r5,|L2.72|
00001e  6869              LDR      r1,[r5,#4]  ; TIMER
000020  e000              B        |L2.36|
                  |L2.34|
000022  1e49              SUBS     r1,r1,#1
                  |L2.36|
000024  2900              CMP      r1,#0
000026  d1fc              BNE      |L2.34|
;;;507    	#endif
;;;508    	GPIO_SetBits ( IIC_SCL, IIC_SCL_INIT ); 
000028  2104              MOVS     r1,#4
00002a  4620              MOV      r0,r4
00002c  f7fffffe          BL       GPIO_SetBits
;;;509    	#if USE_TIMER0 ==1
;;;510    		TR0=1;
;;;511    		while(!timeflag);
;;;512    		timeflag=0;
;;;513    	#else 
;;;514    		delay_us(TIMER);
000030  6869              LDR      r1,[r5,#4]  ; TIMER
000032  e000              B        |L2.54|
                  |L2.52|
000034  1e49              SUBS     r1,r1,#1
                  |L2.54|
000036  2900              CMP      r1,#0
000038  d1fc              BNE      |L2.52|
;;;515    	#endif
;;;516    	GPIO_ResetBits ( IIC_SCL, IIC_SCL_INIT ); 
00003a  2104              MOVS     r1,#4
00003c  4620              MOV      r0,r4
00003e  f7fffffe          BL       GPIO_ResetBits
;;;517    }					 				     
000042  bd70              POP      {r4-r6,pc}
;;;518    
                          ENDP

                  |L2.68|
                          DCD      0x40011200
                  |L2.72|
                          DCD      ||.data||

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

                  IIC_Read_Byte PROC
;;;571      */
;;;572    uint8_t IIC_Read_Byte(unsigned char ack)
000000  b5f1              PUSH     {r0,r4-r7,lr}
;;;573    {
;;;574    	unsigned char i,receive=0;
000002  2400              MOVS     r4,#0
;;;575    	SCD_NT_PinMode(IIC_SDA_INIT,GPIO_Mode_IN_PU); 
000004  2101              MOVS     r1,#1
000006  2008              MOVS     r0,#8
000008  f7fffffe          BL       SCD_NT_PinMode
;;;576    
;;;577        for(i=0;i<8;i++ )
;;;578    	{
;;;579            GPIO_ResetBits ( IIC_SCL, IIC_SCL_INIT ); 
00000c  4f19              LDR      r7,|L3.116|
;;;580            delay_us(2);
;;;581    	#if USE_TIMER0 ==1
;;;582    		TR0=1;
;;;583    		while(!timeflag);
;;;584    		timeflag=0;
;;;585    	#else 
;;;586    		delay_us(TIMER);
00000e  4e1a              LDR      r6,|L3.120|
000010  2500              MOVS     r5,#0                 ;577
                  |L3.18|
000012  2104              MOVS     r1,#4                 ;579
000014  4638              MOV      r0,r7                 ;579
000016  f7fffffe          BL       GPIO_ResetBits
00001a  2002              MOVS     r0,#2                 ;580
                  |L3.28|
00001c  1e40              SUBS     r0,r0,#1              ;580
00001e  d1fd              BNE      |L3.28|
000020  6870              LDR      r0,[r6,#4]  ; TIMER
000022  e000              B        |L3.38|
                  |L3.36|
000024  1e40              SUBS     r0,r0,#1
                  |L3.38|
000026  2800              CMP      r0,#0
000028  d1fc              BNE      |L3.36|
;;;587    	#endif
;;;588    		GPIO_SetBits ( IIC_SCL, IIC_SCL_INIT ); 
00002a  2104              MOVS     r1,#4
00002c  4638              MOV      r0,r7
00002e  f7fffffe          BL       GPIO_SetBits
;;;589            receive<<=1;
000032  0660              LSLS     r0,r4,#25
000034  0e04              LSRS     r4,r0,#24
;;;590            if(GPIO_ReadDataBit (IIC_SDA,IIC_SDA_INIT))receive++;   
000036  2108              MOVS     r1,#8
000038  4638              MOV      r0,r7
00003a  f7fffffe          BL       GPIO_ReadDataBit
00003e  2800              CMP      r0,#0
000040  d001              BEQ      |L3.70|
000042  1c64              ADDS     r4,r4,#1
000044  b2e4              UXTB     r4,r4
                  |L3.70|
;;;591    		delay_us(2);
000046  2002              MOVS     r0,#2
                  |L3.72|
000048  1e40              SUBS     r0,r0,#1
00004a  d1fd              BNE      |L3.72|
;;;592    	#if USE_TIMER0 ==1
;;;593    		TR0=1;
;;;594    		while(!timeflag);
;;;595    		timeflag=0;
;;;596    	#else 
;;;597    		delay_us(TIMER);
00004c  6870              LDR      r0,[r6,#4]  ; TIMER
00004e  e000              B        |L3.82|
                  |L3.80|
000050  1e40              SUBS     r0,r0,#1
                  |L3.82|
000052  2800              CMP      r0,#0
000054  d1fc              BNE      |L3.80|
000056  1c6d              ADDS     r5,r5,#1
000058  b2ed              UXTB     r5,r5                 ;577
00005a  2d08              CMP      r5,#8                 ;577
00005c  d3d9              BCC      |L3.18|
;;;598    	#endif
;;;599        }					 
;;;600        if (!ack)
00005e  9800              LDR      r0,[sp,#0]
000060  2800              CMP      r0,#0
000062  d003              BEQ      |L3.108|
;;;601            IIC_NAck();
;;;602        else
;;;603            IIC_Ack();   
000064  f7fffffe          BL       IIC_Ack
                  |L3.104|
;;;604        return receive;
000068  4620              MOV      r0,r4
;;;605    }
00006a  bdf8              POP      {r3-r7,pc}
                  |L3.108|
00006c  f7fffffe          BL       IIC_NAck
000070  e7fa              B        |L3.104|
;;;606    
                          ENDP

000072  0000              DCW      0x0000
                  |L3.116|
                          DCD      0x40011200
                  |L3.120|
                          DCD      ||.data||

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

                  IIC_Send_Byte PROC
;;;523      */	  
;;;524    void IIC_Send_Byte(uint8_t txd)
000000  b5f8              PUSH     {r3-r7,lr}
;;;525    {                        
000002  4605              MOV      r5,r0
;;;526      uint8_t t;   
;;;527    	SCD_NT_PinMode(IIC_SDA_INIT,GPIO_Mode_OUT_PP);
000004  2102              MOVS     r1,#2
000006  2008              MOVS     r0,#8
000008  f7fffffe          BL       SCD_NT_PinMode
;;;528      GPIO_ResetBits ( IIC_SCL, IIC_SCL_INIT ); 
00000c  4f1a              LDR      r7,|L4.120|
00000e  2104              MOVS     r1,#4
000010  4638              MOV      r0,r7
000012  f7fffffe          BL       GPIO_ResetBits
;;;529    	#if USE_TIMER0 ==1
;;;530    		TR0=1;
;;;531    		while(!timeflag);
;;;532    		timeflag=0;
;;;533    	#else 
;;;534    		delay_us(TIMER);
000016  4e19              LDR      r6,|L4.124|
000018  6870              LDR      r0,[r6,#4]  ; TIMER
00001a  e000              B        |L4.30|
                  |L4.28|
00001c  1e40              SUBS     r0,r0,#1
                  |L4.30|
00001e  2800              CMP      r0,#0
000020  d1fc              BNE      |L4.28|
;;;535    	#endif
;;;536        for(t=0;t<8;t++)		
000022  2400              MOVS     r4,#0
                  |L4.36|
;;;537        {              
;;;538    		if((txd&0x80)>>7)
000024  09e8              LSRS     r0,r5,#7
000026  d004              BEQ      |L4.50|
;;;539    			GPIO_SetBits ( IIC_SDA, IIC_SDA_INIT ); 
000028  2108              MOVS     r1,#8
00002a  4638              MOV      r0,r7
00002c  f7fffffe          BL       GPIO_SetBits
000030  e003              B        |L4.58|
                  |L4.50|
;;;540    		else
;;;541    			GPIO_ResetBits ( IIC_SDA, IIC_SDA_INIT ); 
000032  2108              MOVS     r1,#8
000034  4638              MOV      r0,r7
000036  f7fffffe          BL       GPIO_ResetBits
                  |L4.58|
;;;542    		txd<<=1; 	   	   
00003a  0668              LSLS     r0,r5,#25
00003c  0e05              LSRS     r5,r0,#24
;;;543    		GPIO_SetBits ( IIC_SCL, IIC_SCL_INIT ); 
00003e  2104              MOVS     r1,#4
000040  4638              MOV      r0,r7
000042  f7fffffe          BL       GPIO_SetBits
;;;544    		delay_us(2);
000046  2002              MOVS     r0,#2
                  |L4.72|
000048  1e40              SUBS     r0,r0,#1
00004a  d1fd              BNE      |L4.72|
;;;545    	#if USE_TIMER0 ==1
;;;546    		TR0=1;
;;;547    		while(!timeflag);
;;;548    		timeflag=0;
;;;549    	#else 
;;;550    		delay_us(TIMER);
00004c  6870              LDR      r0,[r6,#4]  ; TIMER
00004e  e000              B        |L4.82|
                  |L4.80|
000050  1e40              SUBS     r0,r0,#1
                  |L4.82|
000052  2800              CMP      r0,#0
000054  d1fc              BNE      |L4.80|
;;;551    	#endif
;;;552    		GPIO_ResetBits ( IIC_SCL, IIC_SCL_INIT ); 
000056  2104              MOVS     r1,#4
000058  4638              MOV      r0,r7
00005a  f7fffffe          BL       GPIO_ResetBits
;;;553    		delay_us(2);
00005e  2002              MOVS     r0,#2
                  |L4.96|
000060  1e40              SUBS     r0,r0,#1
000062  d1fd              BNE      |L4.96|
;;;554    	#if USE_TIMER0 ==1
;;;555    		TR0=1;
;;;556    		while(!timeflag);
;;;557    		timeflag=0;
;;;558    	#else 
;;;559    		delay_us(TIMER);
000064  6870              LDR      r0,[r6,#4]  ; TIMER
000066  e000              B        |L4.106|
                  |L4.104|
000068  1e40              SUBS     r0,r0,#1
                  |L4.106|
00006a  2800              CMP      r0,#0
00006c  d1fc              BNE      |L4.104|
00006e  1c64              ADDS     r4,r4,#1
000070  b2e4              UXTB     r4,r4                 ;536
000072  2c08              CMP      r4,#8                 ;536
000074  d3d6              BCC      |L4.36|
;;;560    	#endif
;;;561        }
;;;562    	 
;;;563    } 	    
000076  bdf8              POP      {r3-r7,pc}
;;;564    
                          ENDP

                  |L4.120|
                          DCD      0x40011200
                  |L4.124|
                          DCD      ||.data||

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

                  IIC_Start PROC
;;;371      */
;;;372    void IIC_Start(void)
000000  b570              PUSH     {r4-r6,lr}
;;;373    {
;;;374    	SCD_NT_PinMode(IIC_SDA_INIT,GPIO_Mode_OUT_PP);    
000002  2102              MOVS     r1,#2
000004  2008              MOVS     r0,#8
000006  f7fffffe          BL       SCD_NT_PinMode
;;;375    	SCD_NT_PinMode(IIC_SCL_INIT,GPIO_Mode_OUT_PP); 
00000a  2102              MOVS     r1,#2
00000c  2004              MOVS     r0,#4
00000e  f7fffffe          BL       SCD_NT_PinMode
;;;376    	GPIO_SetBits ( IIC_SDA, IIC_SDA_INIT ); 
000012  4c0e              LDR      r4,|L5.76|
000014  2108              MOVS     r1,#8
000016  4620              MOV      r0,r4
000018  f7fffffe          BL       GPIO_SetBits
;;;377    	GPIO_SetBits ( IIC_SCL, IIC_SCL_INIT ); 
00001c  2104              MOVS     r1,#4
00001e  4620              MOV      r0,r4
000020  f7fffffe          BL       GPIO_SetBits
;;;378    	#if USE_TIMER0 ==1
;;;379    		TR0=1;
;;;380    		while(!timeflag);
;;;381    		timeflag=0;
;;;382    	#else 
;;;383    		delay_us(TIMER);
000024  4d0a              LDR      r5,|L5.80|
000026  6869              LDR      r1,[r5,#4]  ; TIMER
000028  e000              B        |L5.44|
                  |L5.42|
00002a  1e49              SUBS     r1,r1,#1
                  |L5.44|
00002c  2900              CMP      r1,#0
00002e  d1fc              BNE      |L5.42|
;;;384    	#endif
;;;385     	GPIO_ResetBits ( IIC_SDA, IIC_SDA_INIT );  
000030  2108              MOVS     r1,#8
000032  4620              MOV      r0,r4
000034  f7fffffe          BL       GPIO_ResetBits
;;;386    	#if USE_TIMER0 ==1
;;;387    		TR0=1;
;;;388    		while(!timeflag);
;;;389    		timeflag=0;
;;;390    	#else 
;;;391    		delay_us(TIMER);
000038  6869              LDR      r1,[r5,#4]  ; TIMER
00003a  e000              B        |L5.62|
                  |L5.60|
00003c  1e49              SUBS     r1,r1,#1
                  |L5.62|
00003e  2900              CMP      r1,#0
000040  d1fc              BNE      |L5.60|
;;;392    	#endif
;;;393    	GPIO_SetBits ( IIC_SCL, IIC_SCL_INIT );              
000042  2104              MOVS     r1,#4
000044  4620              MOV      r0,r4
000046  f7fffffe          BL       GPIO_SetBits
;;;394    }	  
00004a  bd70              POP      {r4-r6,pc}
;;;395    
                          ENDP

                  |L5.76|
                          DCD      0x40011200
                  |L5.80|
                          DCD      ||.data||

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

                  IIC_Stop PROC
;;;400      */
;;;401    void IIC_Stop(void)
000000  b570              PUSH     {r4-r6,lr}
;;;402    {
;;;403    	SCD_NT_PinMode(IIC_SDA_INIT,GPIO_Mode_OUT_PP);
000002  2102              MOVS     r1,#2
000004  2008              MOVS     r0,#8
000006  f7fffffe          BL       SCD_NT_PinMode
;;;404    	GPIO_ResetBits ( IIC_SCL, IIC_SCL_INIT ); 
00000a  4c0e              LDR      r4,|L6.68|
00000c  2104              MOVS     r1,#4
00000e  4620              MOV      r0,r4
000010  f7fffffe          BL       GPIO_ResetBits
;;;405    	GPIO_ResetBits ( IIC_SDA, IIC_SDA_INIT ); 
000014  2108              MOVS     r1,#8
000016  4620              MOV      r0,r4
000018  f7fffffe          BL       GPIO_ResetBits
;;;406    	#if USE_TIMER0 ==1
;;;407    		TR0=1;
;;;408    		while(!timeflag);
;;;409    		timeflag=0;
;;;410    	#else 
;;;411    		delay_us(TIMER);
00001c  4d0a              LDR      r5,|L6.72|
00001e  6869              LDR      r1,[r5,#4]  ; TIMER
000020  e000              B        |L6.36|
                  |L6.34|
000022  1e49              SUBS     r1,r1,#1
                  |L6.36|
000024  2900              CMP      r1,#0
000026  d1fc              BNE      |L6.34|
;;;412    	#endif
;;;413    	GPIO_SetBits ( IIC_SCL, IIC_SCL_INIT ); 
000028  2104              MOVS     r1,#4
00002a  4620              MOV      r0,r4
00002c  f7fffffe          BL       GPIO_SetBits
;;;414    	#if USE_TIMER0 ==1
;;;415    		TR0=1;
;;;416    		while(!timeflag);
;;;417    		timeflag=0;
;;;418    	#else 
;;;419    		delay_us(TIMER);
000030  6869              LDR      r1,[r5,#4]  ; TIMER
000032  e000              B        |L6.54|
                  |L6.52|
000034  1e49              SUBS     r1,r1,#1
                  |L6.54|
000036  2900              CMP      r1,#0
000038  d1fc              BNE      |L6.52|
;;;420    	#endif
;;;421    	GPIO_SetBits ( IIC_SDA, IIC_SDA_INIT );           
00003a  2108              MOVS     r1,#8
00003c  4620              MOV      r0,r4
00003e  f7fffffe          BL       GPIO_SetBits
;;;422    						   	
;;;423    }
000042  bd70              POP      {r4-r6,pc}
;;;424    
                          ENDP

                  |L6.68|
                          DCD      0x40011200
                  |L6.72|
                          DCD      ||.data||

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

                  IIC_Timer0_Init PROC
;;;53       */
;;;54     extern void IIC_Timer0_Init()
000000  b57f              PUSH     {r0-r6,lr}
;;;55     {
;;;56     	/*Init Struct*/TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
;;;57     	TIM_TimeBaseInitStruct.TIM_WorkMode = TIM_WorkMode_Timer;
000002  2400              MOVS     r4,#0
000004  4668              MOV      r0,sp
000006  8044              STRH     r4,[r0,#2]
;;;58     	TIM_TimeBaseInitStruct.TIM_Prescaler = TIM_PRESCALER_1;
000008  8004              STRH     r4,[r0,#0]
;;;59     	TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
00000a  8084              STRH     r4,[r0,#4]
;;;60     	TIM_TimeBaseInitStruct.TIM_Preload = 0;
00000c  8104              STRH     r4,[r0,#8]
;;;61     	TIM_TimeBaseInitStruct.TIM_EXENX = TIM_EXENX_Enable;
00000e  2120              MOVS     r1,#0x20
000010  80c1              STRH     r1,[r0,#6]
;;;62     	TIM_TIMBaseInit(TIM0, &TIM_TimeBaseInitStruct);
000012  4d2a              LDR      r5,|L7.188|
000014  4669              MOV      r1,sp
000016  4628              MOV      r0,r5
000018  f7fffffe          BL       TIM_TIMBaseInit
;;;63     	/*Init Struct*/TIM_IC_InitTypeDef TIM_IC_InitStruct;
;;;64     	TIM_IC_InitStruct.TIM_RICPIN = TIM_RICPin_Disable;
00001c  4668              MOV      r0,sp
00001e  8184              STRH     r4,[r0,#0xc]
;;;65     	TIM_IC_InitStruct.TIM_FICPIN = TIM_FICPin_TnEx;
000020  2630              MOVS     r6,#0x30
000022  81c6              STRH     r6,[r0,#0xe]
;;;66     	TIM_ICInit(TIM0, &TIM_IC_InitStruct);
000024  a903              ADD      r1,sp,#0xc
000026  4628              MOV      r0,r5
000028  f7fffffe          BL       TIM_ICInit
;;;67     	TIM_ICCmd(TIM0, ENABLE);
00002c  2101              MOVS     r1,#1
00002e  4628              MOV      r0,r5
000030  f7fffffe          BL       TIM_ICCmd
;;;68     	/*INTEN*/TIM_ITConfig(TIM0,TIM_IT_INTEN, DISABLE);
000034  2200              MOVS     r2,#0
000036  2101              MOVS     r1,#1
000038  4628              MOV      r0,r5
00003a  f7fffffe          BL       TIM_ITConfig
;;;69     	/*EXF*/TIM_ITConfig(TIM0,TIM_IT_EXF,DISABLE);
00003e  2200              MOVS     r2,#0
000040  2108              MOVS     r1,#8
000042  4628              MOV      r0,r5
000044  f7fffffe          BL       TIM_ITConfig
;;;70     	/*TI*/TIM_ITConfig(TIM0,TIM_IT_TI,DISABLE);
000048  2200              MOVS     r2,#0
00004a  2102              MOVS     r1,#2
00004c  4628              MOV      r0,r5
00004e  f7fffffe          BL       TIM_ITConfig
;;;71     	/*Init Struct*/NVIC_SetPriority(TIMER0_IRQn,3); 
000052  2103              MOVS     r1,#3
000054  200f              MOVS     r0,#0xf
000056  f7fffffe          BL       __NVIC_SetPriority
00005a  2001              MOVS     r0,#1
00005c  4918              LDR      r1,|L7.192|
00005e  03c0              LSLS     r0,r0,#15
000060  6008              STR      r0,[r1,#0]
000062  f3bf8f4f          DSB      
000066  f3bf8f6f          ISB      
;;;72     	NVIC_DisableIRQ(TIMER0_IRQn);
;;;73     	TIM_Cmd(TIM0,DISABLE);
00006a  2100              MOVS     r1,#0
00006c  4628              MOV      r0,r5
00006e  f7fffffe          BL       TIM_Cmd
;;;74     	#if Fhrc==32
;;;75     		#if IIC_SPEED==250
;;;76     		TIM0->TIM_CNT = TIM0->TIM_RLD = 0x0700;
;;;77     		#endif
;;;78     		#if IIC_SPEED==500
;;;79     		TIM0->TIM_CNT = TIM0->TIM_RLD = 0x83ED;
;;;80     		#endif
;;;81     		#if IIC_SPEED==1000
;;;82     		TIM0->TIM_CNT = TIM0->TIM_RLD = 0XC260;
;;;83     		#endif
;;;84     		#if IIC_SPEED==2000
;;;85     		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xE19A;
;;;86     		#endif
;;;87     		#if IIC_SPEED==5000
;;;88     		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xF44B;
;;;89     		#endif
;;;90     		#if IIC_SPEED==10000
;;;91     		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xFA8A;
;;;92     		#endif
;;;93     		#if IIC_SPEED==25000
;;;94     		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xFE48;
;;;95     		#endif
;;;96     		#if IIC_SPEED==50000
;;;97     		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xFF88;
000072  4914              LDR      r1,|L7.196|
000074  60a9              STR      r1,[r5,#8]
000076  6069              STR      r1,[r5,#4]
;;;98     		#endif
;;;99     	#endif
;;;100    	#if Fhrc==16
;;;101    		#if IIC_SPEED==250
;;;102    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0x83ED;
;;;103    		#endif
;;;104    		#if IIC_SPEED==500
;;;105    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xC260;
;;;106    		#endif
;;;107    		#if IIC_SPEED==1000
;;;108    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xE19A;
;;;109    		#endif
;;;110    		#if IIC_SPEED==2000
;;;111    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xF130;
;;;112    		#endif
;;;113    		#if IIC_SPEED==5000
;;;114    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xFA8A;
;;;115    		#endif
;;;116    		#if IIC_SPEED==10000
;;;117    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xFDA9;
;;;118    		#endif
;;;119    		#if IIC_SPEED==25000
;;;120    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xFF88;
;;;121    		#endif
;;;122    	#endif
;;;123    	#if Fhrc==8
;;;124    		#if IIC_SPEED==250
;;;125    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xC260;
;;;126    		#endif
;;;127    		#if IIC_SPEED==500
;;;128    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xE19A;
;;;129    		#endif
;;;130    		#if IIC_SPEED==1000
;;;131    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xF130;
;;;132    		#endif
;;;133    		#if IIC_SPEED==2000
;;;134    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xF900;
;;;135    		#endif
;;;136    		#if IIC_SPEED==5000
;;;137    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xFDA9;
;;;138    		#endif
;;;139    		#if IIC_SPEED==10000
;;;140    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xFF38;
;;;141    		#endif
;;;142    	#endif
;;;143    	#if Fhrc==4
;;;144    		#if IIC_SPEED==250
;;;145    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xE19A;
;;;146    		#endif
;;;147    		#if IIC_SPEED==500
;;;148    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xF130;
;;;149    		#endif
;;;150    		#if IIC_SPEED==1000
;;;151    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xF900;
;;;152    		#endif
;;;153    		#if IIC_SPEED==2000
;;;154    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xFCE0;
;;;155    		#endif
;;;156    		#if IIC_SPEED==5000
;;;157    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xFF38;
;;;158    		#endif
;;;159    	#endif
;;;160    	TIM_IC_InitStruct.TIM_RICPIN = TIM_RICPin_Disable;
000078  4668              MOV      r0,sp
00007a  8184              STRH     r4,[r0,#0xc]
;;;161    	TIM_IC_InitStruct.TIM_FICPIN = TIM_FICPin_TnEx;
00007c  81c6              STRH     r6,[r0,#0xe]
;;;162    	TIM_ICInit(TIM0, &TIM_IC_InitStruct);
00007e  a903              ADD      r1,sp,#0xc
000080  4628              MOV      r0,r5
000082  f7fffffe          BL       TIM_ICInit
;;;163    	TIM_ICCmd(TIM0, ENABLE);
000086  2101              MOVS     r1,#1
000088  4628              MOV      r0,r5
00008a  f7fffffe          BL       TIM_ICCmd
;;;164    	/*INTEN*/TIM_ITConfig(TIM0,TIM_IT_INTEN, ENABLE); 
00008e  2201              MOVS     r2,#1
000090  4611              MOV      r1,r2
000092  4628              MOV      r0,r5
000094  f7fffffe          BL       TIM_ITConfig
;;;165    	/*Init Struct*/NVIC_SetPriority(TIMER0_IRQn,3);/*TIMER0*/ 
000098  2103              MOVS     r1,#3
00009a  200f              MOVS     r0,#0xf
00009c  f7fffffe          BL       __NVIC_SetPriority
;;;166    	TIM_ClearFlag(TIM0, TIM_Flag_TI|TIM_Flag_EXR|TIM_Flag_EXF);  
0000a0  2107              MOVS     r1,#7
0000a2  4628              MOV      r0,r5
0000a4  f7fffffe          BL       TIM_ClearFlag
;;;167    	/*INTEN*/TIM_ITConfig(TIM0,TIM_IT_INTEN, ENABLE); 
0000a8  2201              MOVS     r2,#1
0000aa  4611              MOV      r1,r2
0000ac  4628              MOV      r0,r5
0000ae  f7fffffe          BL       TIM_ITConfig
;;;168    	TIM_Cmd(TIM0,ENABLE); 
0000b2  2101              MOVS     r1,#1
0000b4  4628              MOV      r0,r5
0000b6  f7fffffe          BL       TIM_Cmd
;;;169    }
0000ba  bd7f              POP      {r0-r6,pc}
;;;170    
                          ENDP

                  |L7.188|
                          DCD      0x40020100
                  |L7.192|
                          DCD      0xe000e180
                  |L7.196|
                          DCD      0x0000ff88

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

                  IIC_Timer0_Load PROC
;;;197      */
;;;198    extern void IIC_Timer0_Load()
000000  b510              PUSH     {r4,lr}
;;;199    {
;;;200    	///TR0=0;
;;;201    	TIM_Cmd(TIM0,DISABLE);
000002  4c06              LDR      r4,|L8.28|
000004  2100              MOVS     r1,#0
000006  4620              MOV      r0,r4
000008  f7fffffe          BL       TIM_Cmd
;;;202    	#if Fhrc==32
;;;203    		#if IIC_SPEED==250
;;;204    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0x0700;
;;;205    		#endif
;;;206    		#if IIC_SPEED==500
;;;207    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0x83ED;
;;;208    		#endif
;;;209    		#if IIC_SPEED==1000
;;;210    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0XC260;
;;;211    		#endif
;;;212    		#if IIC_SPEED==2000
;;;213    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xE19A;
;;;214    		#endif
;;;215    		#if IIC_SPEED==5000
;;;216    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xF44B;
;;;217    		#endif
;;;218    		#if IIC_SPEED==10000
;;;219    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xFA8A;
;;;220    		#endif
;;;221    		#if IIC_SPEED==25000
;;;222    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xFE48;
;;;223    		#endif
;;;224    		#if IIC_SPEED==50000
;;;225    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xFF88;
00000c  4904              LDR      r1,|L8.32|
00000e  60a1              STR      r1,[r4,#8]
000010  6061              STR      r1,[r4,#4]
;;;226    		#endif
;;;227    	#endif
;;;228    	#if Fhrc==16
;;;229    		#if IIC_SPEED==250
;;;230    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0x83ED;
;;;231    		#endif
;;;232    		#if IIC_SPEED==500
;;;233    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xC260;
;;;234    		#endif
;;;235    		#if IIC_SPEED==1000
;;;236    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xE19A;
;;;237    		#endif
;;;238    		#if IIC_SPEED==2000
;;;239    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xF130;
;;;240    		#endif
;;;241    		#if IIC_SPEED==5000
;;;242    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xFA8A;
;;;243    		#endif
;;;244    		#if IIC_SPEED==10000
;;;245    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xFDA9;
;;;246    		#endif
;;;247    		#if IIC_SPEED==25000
;;;248    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xFF88;
;;;249    		#endif
;;;250    	#endif
;;;251    	#if Fhrc==8
;;;252    		#if IIC_SPEED==250
;;;253    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xC260;
;;;254    		#endif
;;;255    		#if IIC_SPEED==500
;;;256    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xE19A;
;;;257    		#endif
;;;258    		#if IIC_SPEED==1000
;;;259    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xF130;
;;;260    		#endif
;;;261    		#if IIC_SPEED==2000
;;;262    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xF900;
;;;263    		#endif
;;;264    		#if IIC_SPEED==5000
;;;265    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xFDA9;
;;;266    		#endif
;;;267    		#if IIC_SPEED==10000
;;;268    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xFF38;
;;;269    		#endif
;;;270    	#endif
;;;271    	#if Fhrc==4
;;;272    		#if IIC_SPEED==250
;;;273    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xE19A;
;;;274    		#endif
;;;275    		#if IIC_SPEED==500
;;;276    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xF130;
;;;277    		#endif
;;;278    		#if IIC_SPEED==1000
;;;279    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xF900;
;;;280    		#endif
;;;281    		#if IIC_SPEED==2000
;;;282    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xFCE0;
;;;283    		#endif
;;;284    		#if IIC_SPEED==5000
;;;285    		TIM0->TIM_CNT = TIM0->TIM_RLD = 0xFF38;
;;;286    		#endif
;;;287    	#endif
;;;288    	timeflag=TRUE; 
000012  4904              LDR      r1,|L8.36|
000014  2001              MOVS     r0,#1
000016  7008              STRB     r0,[r1,#0]
;;;289    	
;;;290    }
000018  bd10              POP      {r4,pc}
;;;291    
                          ENDP

00001a  0000              DCW      0x0000
                  |L8.28|
                          DCD      0x40020100
                  |L8.32|
                          DCD      0x0000ff88
                  |L8.36|
                          DCD      ||.data||

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

                  IIC_Wait_Ack PROC
;;;429      */
;;;430    boolType IIC_Wait_Ack(void)
000000  b570              PUSH     {r4-r6,lr}
;;;431    {
;;;432    	uint8_t ucErrTime=0;
000002  2400              MOVS     r4,#0
;;;433    	SCD_NT_PinMode(IIC_SDA_INIT,GPIO_Mode_IN_PU);   			 
000004  2101              MOVS     r1,#1
000006  2008              MOVS     r0,#8
000008  f7fffffe          BL       SCD_NT_PinMode
;;;434    	GPIO_SetBits ( IIC_SDA, IIC_SDA_INIT ); 
00000c  4d14              LDR      r5,|L9.96|
00000e  2108              MOVS     r1,#8
000010  4628              MOV      r0,r5
000012  f7fffffe          BL       GPIO_SetBits
;;;435    	GPIO_SetBits ( IIC_SCL, IIC_SCL_INIT ); 
000016  2104              MOVS     r1,#4
000018  4628              MOV      r0,r5
00001a  f7fffffe          BL       GPIO_SetBits
;;;436    	#if USE_TIMER0 ==1
;;;437    		TR0=1;
;;;438    		while(!timeflag);
;;;439    		timeflag=0;
;;;440    	#else 
;;;441    		delay_us(TIMER);
00001e  4e11              LDR      r6,|L9.100|
000020  6871              LDR      r1,[r6,#4]  ; TIMER
000022  e000              B        |L9.38|
                  |L9.36|
000024  1e49              SUBS     r1,r1,#1
                  |L9.38|
000026  2900              CMP      r1,#0
000028  d1fc              BNE      |L9.36|
00002a  e007              B        |L9.60|
                  |L9.44|
00002c  1c64              ADDS     r4,r4,#1
;;;442    	#endif
;;;443    	while(GPIO_ReadDataBit (IIC_SDA,IIC_SDA_INIT))
;;;444    	{
;;;445    		ucErrTime++;
00002e  b2e4              UXTB     r4,r4
;;;446    		if(ucErrTime>250)
000030  2cfa              CMP      r4,#0xfa
000032  d903              BLS      |L9.60|
;;;447    		{
;;;448    			IIC_Stop();
000034  f7fffffe          BL       IIC_Stop
;;;449    			return TRUE;
000038  2001              MOVS     r0,#1
;;;450    		}
;;;451    	}
;;;452    	#if USE_TIMER0 ==1
;;;453    		TR0=1;
;;;454    		while(!timeflag);
;;;455    		timeflag=0;
;;;456    	#else 
;;;457    		delay_us(TIMER);
;;;458    	#endif
;;;459    	GPIO_ResetBits ( IIC_SCL, IIC_SCL_INIT );  
;;;460    	return FALSE;  
;;;461    } 
00003a  bd70              POP      {r4-r6,pc}
                  |L9.60|
00003c  2108              MOVS     r1,#8                 ;443
00003e  4628              MOV      r0,r5                 ;443
000040  f7fffffe          BL       GPIO_ReadDataBit
000044  2800              CMP      r0,#0                 ;443
000046  d1f1              BNE      |L9.44|
000048  6871              LDR      r1,[r6,#4]            ;457  ; TIMER
00004a  e000              B        |L9.78|
                  |L9.76|
00004c  1e49              SUBS     r1,r1,#1              ;457
                  |L9.78|
00004e  2900              CMP      r1,#0                 ;457
000050  d1fc              BNE      |L9.76|
000052  2104              MOVS     r1,#4                 ;459
000054  4628              MOV      r0,r5                 ;459
000056  f7fffffe          BL       GPIO_ResetBits
00005a  2000              MOVS     r0,#0                 ;460
00005c  bd70              POP      {r4-r6,pc}
;;;462    
                          ENDP

00005e  0000              DCW      0x0000
                  |L9.96|
                          DCD      0x40011200
                  |L9.100|
                          DCD      ||.data||

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

                  ReadOneAddrByte PROC
;;;24       */
;;;25     extern uint8_t ReadOneAddrByte(uint8_t SlaverAddr,uint8_t ReadAddr)
000000  b570              PUSH     {r4-r6,lr}
;;;26     {
000002  460e              MOV      r6,r1
000004  4605              MOV      r5,r0
;;;27     	uint8_t temp=0;
;;;28     	IIC_Start();
000006  f7fffffe          BL       IIC_Start
;;;29     	IIC_Send_Byte(0X00+SlaverAddr);
00000a  4628              MOV      r0,r5
00000c  f7fffffe          BL       IIC_Send_Byte
;;;30     	IIC_Wait_Ack();
000010  f7fffffe          BL       IIC_Wait_Ack
;;;31     	ErrFlag=IIC_Wait_Ack(); 
000014  f7fffffe          BL       IIC_Wait_Ack
000018  4c10              LDR      r4,|L10.92|
;;;32     	if(ErrFlag==1)
00001a  2801              CMP      r0,#1
00001c  7060              STRB     r0,[r4,#1]            ;31
00001e  d01b              BEQ      |L10.88|
;;;33     		return ErrFlag;	
;;;34     	IIC_Send_Byte(ReadAddr);
000020  4630              MOV      r0,r6
000022  f7fffffe          BL       IIC_Send_Byte
;;;35     	IIC_Wait_Ack();
000026  f7fffffe          BL       IIC_Wait_Ack
;;;36     	ErrFlag=IIC_Wait_Ack(); 
00002a  f7fffffe          BL       IIC_Wait_Ack
00002e  7060              STRB     r0,[r4,#1]
;;;37     	if(ErrFlag==1)
000030  2801              CMP      r0,#1
000032  d011              BEQ      |L10.88|
000034  1c6d              ADDS     r5,r5,#1
;;;38     		return ErrFlag;	
;;;39     	IIC_Send_Byte(0X01+SlaverAddr);
000036  b2e8              UXTB     r0,r5
000038  f7fffffe          BL       IIC_Send_Byte
;;;40     	IIC_Wait_Ack();
00003c  f7fffffe          BL       IIC_Wait_Ack
;;;41     	ErrFlag=IIC_Wait_Ack(); 
000040  f7fffffe          BL       IIC_Wait_Ack
000044  7060              STRB     r0,[r4,#1]
;;;42     	if(ErrFlag==1)
000046  2801              CMP      r0,#1
000048  d006              BEQ      |L10.88|
;;;43     		return ErrFlag;	
;;;44     	temp=IIC_Read_Byte(0);
00004a  2000              MOVS     r0,#0
00004c  f7fffffe          BL       IIC_Read_Byte
000050  4604              MOV      r4,r0
;;;45        	IIC_Stop();	    
000052  f7fffffe          BL       IIC_Stop
;;;46     	return temp;	  
000056  4620              MOV      r0,r4
                  |L10.88|
;;;47     }
000058  bd70              POP      {r4-r6,pc}
;;;48     
                          ENDP

00005a  0000              DCW      0x0000
                  |L10.92|
                          DCD      ||.data||

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

                  ReadOneByte PROC
;;;298      */
;;;299    extern uint8_t ReadOneByte(uint8_t SlaverAddr)
000000  b510              PUSH     {r4,lr}
;;;300    {
000002  4604              MOV      r4,r0
;;;301    	uint8_t temp=0;
;;;302    	IIC_Start();
000004  f7fffffe          BL       IIC_Start
000008  1c64              ADDS     r4,r4,#1
;;;303    	IIC_Send_Byte(0X01+SlaverAddr);
00000a  b2e0              UXTB     r0,r4
00000c  f7fffffe          BL       IIC_Send_Byte
;;;304    	ErrFlag=IIC_Wait_Ack(); 
000010  f7fffffe          BL       IIC_Wait_Ack
000014  4905              LDR      r1,|L11.44|
;;;305    	if(ErrFlag==1)
000016  2801              CMP      r0,#1
000018  7048              STRB     r0,[r1,#1]            ;304
00001a  d006              BEQ      |L11.42|
;;;306    		return ErrFlag;	
;;;307    	temp=IIC_Read_Byte(0);
00001c  2000              MOVS     r0,#0
00001e  f7fffffe          BL       IIC_Read_Byte
000022  4604              MOV      r4,r0
;;;308       	IIC_Stop();	    
000024  f7fffffe          BL       IIC_Stop
;;;309    	return temp;  
000028  4620              MOV      r0,r4
                  |L11.42|
;;;310    }
00002a  bd10              POP      {r4,pc}
;;;311    
                          ENDP

                  |L11.44|
                          DCD      ||.data||

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

                  SCD_NT_PinMode PROC
;;;344      */
;;;345    void SCD_NT_PinMode(uint16_t GPIO_Pin, GPIO_Mode_TypeDef IO_Pxx_Mode)
000000  22ff              MOVS     r2,#0xff
;;;346    {
;;;347    	if(GPIO_Pin != IO_NULL)
000002  0212              LSLS     r2,r2,#8
000004  4290              CMP      r0,r2
000006  d00e              BEQ      |L12.38|
;;;348    	{
;;;349    		if ( IO_Pxx_Mode == GPIO_Mode_OUT_PP )
;;;350    		{				
;;;351    				GPIOB->PXCON |= ( uint32_t ) GPIO_Pin;/* Configure Pins to High-resistance output mode */
000008  4a0c              LDR      r2,|L12.60|
00000a  2902              CMP      r1,#2                 ;349
00000c  d00c              BEQ      |L12.40|
;;;352    		}
;;;353    		else if ( IO_Pxx_Mode == GPIO_Mode_IN_PU )
;;;354    		{				
;;;355    				GPIOB->PXCON &= ( uint32_t ) ( ~GPIO_Pin );/* Configure Pins to Pull-up input mode */
;;;356    				GPIOB->PXPH |= ( uint32_t ) GPIO_Pin;
00000e  4b0b              LDR      r3,|L12.60|
000010  3340              ADDS     r3,r3,#0x40
000012  2901              CMP      r1,#1                 ;353
000014  d00c              BEQ      |L12.48|
;;;357    		}
;;;358    		else if ( IO_Pxx_Mode == GPIO_Mode_IN_HI )
000016  2900              CMP      r1,#0
000018  d105              BNE      |L12.38|
;;;359    		{	
;;;360    				GPIOB->PXCON &= ( uint32_t ) ( ~GPIO_Pin );/* Configure Pin to High-resistance intput mode */
00001a  6a11              LDR      r1,[r2,#0x20]
00001c  4381              BICS     r1,r1,r0
00001e  6211              STR      r1,[r2,#0x20]
;;;361    				GPIOB->PXPH &= ( uint32_t ) ( ~GPIO_Pin );
000020  6819              LDR      r1,[r3,#0]
000022  4381              BICS     r1,r1,r0
                  |L12.36|
000024  6019              STR      r1,[r3,#0]            ;356
                  |L12.38|
;;;362    		}
;;;363    		//GPIO_Init(SCD_IO_PORT(IO_Pxx), SCD_IO_PIN(IO_Pxx), IO_Pxx_Mode);	
;;;364    	}	
;;;365    }
000026  4770              BX       lr
                  |L12.40|
000028  6a11              LDR      r1,[r2,#0x20]         ;351
00002a  4301              ORRS     r1,r1,r0              ;351
00002c  6211              STR      r1,[r2,#0x20]         ;351
00002e  4770              BX       lr
                  |L12.48|
000030  6a11              LDR      r1,[r2,#0x20]         ;355
000032  4381              BICS     r1,r1,r0              ;355
000034  6211              STR      r1,[r2,#0x20]         ;355
000036  6819              LDR      r1,[r3,#0]            ;356
000038  4301              ORRS     r1,r1,r0              ;356
00003a  e7f3              B        |L12.36|
;;;366    
                          ENDP

                  |L12.60|
                          DCD      0x40011100

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

                  WriteOneAddrByte PROC
;;;319      */
;;;320    extern uint8_t WriteOneAddrByte(uint8_t SlaverAddr,uint8_t WriteAddr,uint8_t DataToWrite)
000000  b570              PUSH     {r4-r6,lr}
;;;321    {
000002  4615              MOV      r5,r2
000004  460e              MOV      r6,r1
000006  4604              MOV      r4,r0
;;;322    	IIC_Start();
000008  f7fffffe          BL       IIC_Start
;;;323    	IIC_Send_Byte(0X00+SlaverAddr);
00000c  4620              MOV      r0,r4
00000e  f7fffffe          BL       IIC_Send_Byte
;;;324    	ErrFlag=IIC_Wait_Ack(); 
000012  f7fffffe          BL       IIC_Wait_Ack
000016  4c0c              LDR      r4,|L13.72|
;;;325    	if(ErrFlag==1)
000018  2801              CMP      r0,#1
00001a  7060              STRB     r0,[r4,#1]            ;324
00001c  d012              BEQ      |L13.68|
;;;326    		return ErrFlag;	
;;;327    	IIC_Send_Byte(WriteAddr);
00001e  4630              MOV      r0,r6
000020  f7fffffe          BL       IIC_Send_Byte
;;;328    	ErrFlag=IIC_Wait_Ack(); 
000024  f7fffffe          BL       IIC_Wait_Ack
000028  7060              STRB     r0,[r4,#1]
;;;329    	if(ErrFlag==1)
00002a  2801              CMP      r0,#1
00002c  d00a              BEQ      |L13.68|
;;;330    		return ErrFlag;	
;;;331    	IIC_Send_Byte(DataToWrite);    							   
00002e  4628              MOV      r0,r5
000030  f7fffffe          BL       IIC_Send_Byte
;;;332    	ErrFlag=IIC_Wait_Ack(); 
000034  f7fffffe          BL       IIC_Wait_Ack
000038  7060              STRB     r0,[r4,#1]
;;;333    	if(ErrFlag==1)
00003a  2801              CMP      r0,#1
00003c  d002              BEQ      |L13.68|
;;;334    		return ErrFlag;	 		    	   
;;;335        IIC_Stop();
00003e  f7fffffe          BL       IIC_Stop
;;;336    	return 0;  
000042  2000              MOVS     r0,#0
                  |L13.68|
;;;337    }
000044  bd70              POP      {r4-r6,pc}
;;;338    
                          ENDP

000046  0000              DCW      0x0000
                  |L13.72|
                          DCD      ||.data||

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

                  WriteOneByte PROC
;;;177      */
;;;178    extern uint8_t WriteOneByte(uint8_t SlaverAddr,uint8_t DataToWrite)
000000  b570              PUSH     {r4-r6,lr}
;;;179    {
000002  460d              MOV      r5,r1
000004  4604              MOV      r4,r0
;;;180    	IIC_Start();
000006  f7fffffe          BL       IIC_Start
;;;181    	IIC_Send_Byte(0X00+SlaverAddr);
00000a  4620              MOV      r0,r4
00000c  f7fffffe          BL       IIC_Send_Byte
;;;182    	ErrFlag=IIC_Wait_Ack();
000010  f7fffffe          BL       IIC_Wait_Ack
000014  4c07              LDR      r4,|L14.52|
;;;183    	if(ErrFlag==1)
000016  2801              CMP      r0,#1
000018  7060              STRB     r0,[r4,#1]            ;182
00001a  d00a              BEQ      |L14.50|
;;;184    		return ErrFlag;
;;;185    	IIC_Send_Byte(DataToWrite);    							   
00001c  4628              MOV      r0,r5
00001e  f7fffffe          BL       IIC_Send_Byte
;;;186    	ErrFlag=IIC_Wait_Ack(); 
000022  f7fffffe          BL       IIC_Wait_Ack
000026  7060              STRB     r0,[r4,#1]
;;;187    	if(ErrFlag==1)
000028  2801              CMP      r0,#1
00002a  d002              BEQ      |L14.50|
;;;188    		return ErrFlag;		    	   
;;;189        IIC_Stop();
00002c  f7fffffe          BL       IIC_Stop
;;;190    	return 0;  
000030  2000              MOVS     r0,#0
                  |L14.50|
;;;191    }
000032  bd70              POP      {r4-r6,pc}
;;;192    
                          ENDP

                  |L14.52|
                          DCD      ||.data||

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

                  __NVIC_SetPriority PROC
;;;847     */
;;;848    __STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
000000  0783              LSLS     r3,r0,#30
;;;849    {
;;;850      if ((int32_t)(IRQn) >= 0)
;;;851      {
;;;852        NVIC->IP[_IP_IDX(IRQn)]  = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)]  & ~(0xFFUL << _BIT_SHIFT(IRQn))) |
000002  22ff              MOVS     r2,#0xff
000004  0edb              LSRS     r3,r3,#27
000006  409a              LSLS     r2,r2,r3
000008  0789              LSLS     r1,r1,#30
00000a  0e09              LSRS     r1,r1,#24
00000c  4099              LSLS     r1,r1,r3
00000e  2800              CMP      r0,#0                 ;850
000010  db08              BLT      |L15.36|
000012  0883              LSRS     r3,r0,#2
000014  4809              LDR      r0,|L15.60|
000016  009b              LSLS     r3,r3,#2
000018  1818              ADDS     r0,r3,r0
00001a  6803              LDR      r3,[r0,#0]
00001c  4393              BICS     r3,r3,r2
00001e  430b              ORRS     r3,r3,r1
000020  6003              STR      r3,[r0,#0]
;;;853           (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));
;;;854      }
;;;855      else
;;;856      {
;;;857        SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |
;;;858           (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));
;;;859      }
;;;860    }
000022  4770              BX       lr
                  |L15.36|
000024  0700              LSLS     r0,r0,#28             ;857
000026  0f00              LSRS     r0,r0,#28             ;857
000028  3808              SUBS     r0,r0,#8              ;857
00002a  0883              LSRS     r3,r0,#2              ;857
00002c  4804              LDR      r0,|L15.64|
00002e  009b              LSLS     r3,r3,#2              ;857
000030  1818              ADDS     r0,r3,r0              ;857
000032  69c3              LDR      r3,[r0,#0x1c]         ;857
000034  4393              BICS     r3,r3,r2              ;857
000036  430b              ORRS     r3,r3,r1              ;857
000038  61c3              STR      r3,[r0,#0x1c]         ;857
00003a  4770              BX       lr
;;;861    
                          ENDP

                  |L15.60|
                          DCD      0xe000e400
                  |L15.64|
                          DCD      0xe000ed00

                          AREA ||i.delay_us||, CODE, READONLY, ALIGN=1

                  delay_us PROC
;;;611      */
;;;612    void delay_us(uint32_t timer)
000000  e000              B        |L16.4|
                  |L16.2|
;;;613    {
;;;614    	for(;timer>0;timer--);
000002  1e40              SUBS     r0,r0,#1
                  |L16.4|
000004  2800              CMP      r0,#0
000006  d1fc              BNE      |L16.2|
;;;615    }
000008  4770              BX       lr
;;;616    
                          ENDP


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

                  timeflag
000000  00                DCB      0x00
                  ErrFlag
000001  000000            DCB      0x00,0x00,0x00
                  TIMER
                          DCD      0x00000002

;*** Start embedded assembler ***

#line 1 "..\\Apps\\SCDriver_IIC.c"
	AREA ||.rev16_text||, CODE
	THUMB
	EXPORT |__asm___14_SCDriver_IIC_c_timeflag____REV16|
#line 463 "..\\CMSIS\\cmsis_armcc.h"
|__asm___14_SCDriver_IIC_c_timeflag____REV16| PROC
#line 464

 rev16 r0, r0
 bx lr
	ENDP
	AREA ||.revsh_text||, CODE
	THUMB
	EXPORT |__asm___14_SCDriver_IIC_c_timeflag____REVSH|
#line 478
|__asm___14_SCDriver_IIC_c_timeflag____REVSH| PROC
#line 479

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
