; generated by ARM C/C++ Compiler, 5.03 [Build 24]
; commandline ArmCC [--list --debug -c --asm --interleave -o..\OBJ\i2c.o --asm_dir=..\LIST\ --list_dir=..\LIST\ --depend=..\OBJ\i2c.d --cpu=Cortex-M3 --apcs=interwork -O0 -I..\..\Libraries\STM32F10x_StdPeriph_Driver\inc -I..\..\Libraries\CMSIS\CM3\CoreSupport -I..\..\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x -I..\..\USER\INC -IC:\Keil\ARM\RV31\INC -IC:\Keil\ARM\CMSIS\Include -IC:\Keil\ARM\Inc\ST\STM32F10x -D__MICROLIB -DUSE_STDPERIPH_DRIVER -DSTM32F10X_HD --omf_browse=..\OBJ\i2c.crf ..\..\USER\SRC\I2C.c]
                          THUMB

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

                  InitI2C0 PROC
;;;46     ***************************************************************************/
;;;47     void InitI2C0(void)
000000  48a0              LDR      r0,|L1.644|
;;;48     {
;;;49     	RCC->APB2ENR|=1<<4;//ʹIO PORTCʱ 							 
000002  6980              LDR      r0,[r0,#0x18]
000004  f0400010          ORR      r0,r0,#0x10
000008  499e              LDR      r1,|L1.644|
00000a  6188              STR      r0,[r1,#0x18]
;;;50     	GPIOC->CRH&=0XFFF00FFF;//PC11/12 
00000c  489e              LDR      r0,|L1.648|
00000e  6840              LDR      r0,[r0,#4]
000010  f420207f          BIC      r0,r0,#0xff000
000014  499c              LDR      r1,|L1.648|
000016  6048              STR      r0,[r1,#4]
;;;51     	GPIOC->CRH|=0X00033000;	   
000018  4608              MOV      r0,r1
00001a  6840              LDR      r0,[r0,#4]
00001c  f440304c          ORR      r0,r0,#0x33000
000020  6048              STR      r0,[r1,#4]
;;;52     	GPIOC->ODR|=3<<11;     //PC11,12 
000022  4608              MOV      r0,r1
000024  68c0              LDR      r0,[r0,#0xc]
000026  f44050c0          ORR      r0,r0,#0x1800
00002a  60c8              STR      r0,[r1,#0xc]
;;;53     }
00002c  4770              BX       lr
;;;54     
                          ENDP

                  StartI2C0 PROC
;;;62     ***************************************************************************/
;;;63     void StartI2C0(void)
00002e  b510              PUSH     {r4,lr}
;;;64     {
;;;65         I2C_SDA0=1;    
000030  2001              MOVS     r0,#1
000032  4996              LDR      r1,|L1.652|
000034  6008              STR      r0,[r1,#0]
;;;66         delay_us(100);
000036  f04f0064          MOV      r0,#0x64
00003a  f7fffffe          BL       delay_us
;;;67     
;;;68         I2C_SCL0=1;	   
00003e  2001              MOVS     r0,#1
000040  4993              LDR      r1,|L1.656|
000042  f8c101b0          STR      r0,[r1,#0x1b0]
;;;69         delay_us(100);
000046  2064              MOVS     r0,#0x64
000048  f7fffffe          BL       delay_us
;;;70      
;;;71         I2C_SDA0=0;
00004c  2000              MOVS     r0,#0
00004e  498f              LDR      r1,|L1.652|
000050  6008              STR      r0,[r1,#0]
;;;72         delay_us(100);
000052  f04f0064          MOV      r0,#0x64
000056  f7fffffe          BL       delay_us
;;;73     
;;;74         I2C_SCL0=0;	 
00005a  2000              MOVS     r0,#0
00005c  498c              LDR      r1,|L1.656|
00005e  f8c101b0          STR      r0,[r1,#0x1b0]
;;;75         delay_us(100);
000062  2064              MOVS     r0,#0x64
000064  f7fffffe          BL       delay_us
;;;76     
;;;77     
;;;78     }
000068  bd10              POP      {r4,pc}
;;;79     
                          ENDP

                  StopI2C0 PROC
;;;87     ***************************************************************************/
;;;88     void StopI2C0(void)
00006a  b510              PUSH     {r4,lr}
;;;89     {
;;;90     	I2C_SDA0=0;
00006c  2000              MOVS     r0,#0
00006e  4987              LDR      r1,|L1.652|
000070  6008              STR      r0,[r1,#0]
;;;91         delay_us(100);
000072  f04f0064          MOV      r0,#0x64
000076  f7fffffe          BL       delay_us
;;;92      
;;;93         I2C_SCL0=1;
00007a  2001              MOVS     r0,#1
00007c  4984              LDR      r1,|L1.656|
00007e  f8c101b0          STR      r0,[r1,#0x1b0]
;;;94         delay_us(100);  
000082  2064              MOVS     r0,#0x64
000084  f7fffffe          BL       delay_us
;;;95     
;;;96         I2C_SDA0=1;
000088  2001              MOVS     r0,#1
00008a  4980              LDR      r1,|L1.652|
00008c  6008              STR      r0,[r1,#0]
;;;97         delay_us(100);
00008e  f04f0064          MOV      r0,#0x64
000092  f7fffffe          BL       delay_us
;;;98      
;;;99     
;;;100    }
000096  bd10              POP      {r4,pc}
;;;101    
                          ENDP

                  NoAck0 PROC
;;;109    ***************************************************************************/
;;;110    void NoAck0(void)
000098  b510              PUSH     {r4,lr}
;;;111    {
;;;112    	
;;;113    	I2C_SDA0=1;
00009a  2001              MOVS     r0,#1
00009c  497b              LDR      r1,|L1.652|
00009e  6008              STR      r0,[r1,#0]
;;;114    	delay_us(100);
0000a0  f04f0064          MOV      r0,#0x64
0000a4  f7fffffe          BL       delay_us
;;;115    	
;;;116    	I2C_SCL0=1;
0000a8  2001              MOVS     r0,#1
0000aa  4979              LDR      r1,|L1.656|
0000ac  f8c101b0          STR      r0,[r1,#0x1b0]
;;;117    	delay_us(100);
0000b0  2064              MOVS     r0,#0x64
0000b2  f7fffffe          BL       delay_us
;;;118    	
;;;119    	I2C_SCL0=0;
0000b6  2000              MOVS     r0,#0
0000b8  4976              LDR      r1,|L1.660|
0000ba  6008              STR      r0,[r1,#0]
;;;120    	delay_us(100);
0000bc  f04f0064          MOV      r0,#0x64
0000c0  f7fffffe          BL       delay_us
;;;121    	
;;;122    	I2C_SDA0=0;
0000c4  2000              MOVS     r0,#0
0000c6  4972              LDR      r1,|L1.656|
0000c8  f8c101ac          STR      r0,[r1,#0x1ac]
;;;123    	delay_us(100);
0000cc  2064              MOVS     r0,#0x64
0000ce  f7fffffe          BL       delay_us
;;;124    
;;;125    }
0000d2  bd10              POP      {r4,pc}
;;;126    /***************************************************************************
                          ENDP

                  Ack0 PROC
;;;133    ***************************************************************************/
;;;134    void Ack0(void)
0000d4  b510              PUSH     {r4,lr}
;;;135    {
;;;136    	SDA_OUT0();
0000d6  486c              LDR      r0,|L1.648|
0000d8  6840              LDR      r0,[r0,#4]
0000da  f4204070          BIC      r0,r0,#0xf000
0000de  496a              LDR      r1,|L1.648|
0000e0  6048              STR      r0,[r1,#4]
0000e2  4608              MOV      r0,r1
0000e4  6840              LDR      r0,[r0,#4]
0000e6  f4405040          ORR      r0,r0,#0x3000
0000ea  6048              STR      r0,[r1,#4]
;;;137     	I2C_SDA0=1;
0000ec  2001              MOVS     r0,#1
0000ee  4967              LDR      r1,|L1.652|
0000f0  6008              STR      r0,[r1,#0]
;;;138        delay_us(100); 
0000f2  f04f0064          MOV      r0,#0x64
0000f6  f7fffffe          BL       delay_us
;;;139        I2C_SCL0=1;
0000fa  2001              MOVS     r0,#1
0000fc  4964              LDR      r1,|L1.656|
0000fe  f8c101b0          STR      r0,[r1,#0x1b0]
;;;140        delay_us(100); 
000102  2064              MOVS     r0,#0x64
000104  f7fffffe          BL       delay_us
;;;141    	I2C_SCL0=0;
000108  2000              MOVS     r0,#0
00010a  4962              LDR      r1,|L1.660|
00010c  6008              STR      r0,[r1,#0]
;;;142        delay_us(100); 
00010e  f04f0064          MOV      r0,#0x64
000112  f7fffffe          BL       delay_us
;;;143     	I2C_SDA0=1;
000116  2001              MOVS     r0,#1
000118  495d              LDR      r1,|L1.656|
00011a  f8c101ac          STR      r0,[r1,#0x1ac]
;;;144    
;;;145    	
;;;146    }
00011e  bd10              POP      {r4,pc}
;;;147    /***************************************************************************
                          ENDP

                  TestAck0 PROC
;;;154    ***************************************************************************/
;;;155    unsigned char TestAck0( )
000120  b510              PUSH     {r4,lr}
;;;156    {
;;;157    	unsigned char ack;
;;;158    
;;;159    	I2C_SCL0=1;
000122  2001              MOVS     r0,#1
000124  495b              LDR      r1,|L1.660|
000126  6008              STR      r0,[r1,#0]
;;;160    	delay_us(100);
000128  f04f0064          MOV      r0,#0x64
00012c  f7fffffe          BL       delay_us
;;;161    	SDA_IN0();
000130  4855              LDR      r0,|L1.648|
000132  6840              LDR      r0,[r0,#4]
000134  f4204070          BIC      r0,r0,#0xf000
000138  4953              LDR      r1,|L1.648|
00013a  6048              STR      r0,[r1,#4]
00013c  4608              MOV      r0,r1
00013e  6840              LDR      r0,[r0,#4]
000140  f4404000          ORR      r0,r0,#0x8000
000144  6048              STR      r0,[r1,#4]
;;;162    	delay_us(100);
000146  2064              MOVS     r0,#0x64
000148  f7fffffe          BL       delay_us
;;;163    	ack=SDA_STATE0;
00014c  4850              LDR      r0,|L1.656|
00014e  f8d0012c          LDR      r0,[r0,#0x12c]
000152  b2c4              UXTB     r4,r0
;;;164    	delay_us(100);
000154  2064              MOVS     r0,#0x64
000156  f7fffffe          BL       delay_us
;;;165    	I2C_SCL0=0;
00015a  2000              MOVS     r0,#0
00015c  494d              LDR      r1,|L1.660|
00015e  6008              STR      r0,[r1,#0]
;;;166    	delay_us(100);
000160  f04f0064          MOV      r0,#0x64
000164  f7fffffe          BL       delay_us
;;;167    	return(ack);
000168  4620              MOV      r0,r4
;;;168    
;;;169    
;;;170    }
00016a  bd10              POP      {r4,pc}
;;;171    /***************************************************************************
                          ENDP

                  I2CWrite0 PROC
;;;178    ***************************************************************************/
;;;179    unsigned char I2CWrite0(unsigned char DData)
00016c  b570              PUSH     {r4-r6,lr}
;;;180    {
00016e  4606              MOV      r6,r0
;;;181    	unsigned char j,tem;
;;;182    
;;;183    	for(j=0;j<8;j++) 
000170  2400              MOVS     r4,#0
000172  e01f              B        |L1.436|
                  |L1.372|
;;;184    	{
;;;185    		if((DData<<j)&0x80)
000174  fa06f004          LSL      r0,r6,r4
000178  f0100f80          TST      r0,#0x80
00017c  d003              BEQ      |L1.390|
;;;186    		{
;;;187    			I2C_SDA0=1;
00017e  2001              MOVS     r0,#1
000180  4942              LDR      r1,|L1.652|
000182  6008              STR      r0,[r1,#0]
000184  e002              B        |L1.396|
                  |L1.390|
;;;188    		}
;;;189    		else
;;;190    		{
;;;191    			I2C_SDA0=0;
000186  2000              MOVS     r0,#0
000188  4940              LDR      r1,|L1.652|
00018a  6008              STR      r0,[r1,#0]
                  |L1.396|
;;;192    		}
;;;193    		delay_us(100);
00018c  f04f0064          MOV      r0,#0x64
000190  f7fffffe          BL       delay_us
;;;194    		I2C_SCL0=1;
000194  2001              MOVS     r0,#1
000196  493f              LDR      r1,|L1.660|
000198  6008              STR      r0,[r1,#0]
;;;195    		delay_us(100);
00019a  f04f0064          MOV      r0,#0x64
00019e  f7fffffe          BL       delay_us
;;;196    		I2C_SCL0=0;;
0001a2  2000              MOVS     r0,#0
0001a4  493a              LDR      r1,|L1.656|
0001a6  f8c101b0          STR      r0,[r1,#0x1b0]
;;;197    		delay_us(100);
0001aa  2064              MOVS     r0,#0x64
0001ac  f7fffffe          BL       delay_us
0001b0  1c60              ADDS     r0,r4,#1              ;183
0001b2  b2c4              UXTB     r4,r0                 ;183
                  |L1.436|
0001b4  2c08              CMP      r4,#8                 ;183
0001b6  dbdd              BLT      |L1.372|
;;;198    
;;;199    	}
;;;200    	delay_us(100);
0001b8  2064              MOVS     r0,#0x64
0001ba  f7fffffe          BL       delay_us
;;;201    	
;;;202    	SDA_IN0();
0001be  4832              LDR      r0,|L1.648|
0001c0  6840              LDR      r0,[r0,#4]
0001c2  f4204070          BIC      r0,r0,#0xf000
0001c6  4930              LDR      r1,|L1.648|
0001c8  6048              STR      r0,[r1,#4]
0001ca  4608              MOV      r0,r1
0001cc  6840              LDR      r0,[r0,#4]
0001ce  f4404000          ORR      r0,r0,#0x8000
0001d2  6048              STR      r0,[r1,#4]
;;;203    	delay_us(100);
0001d4  2064              MOVS     r0,#0x64
0001d6  f7fffffe          BL       delay_us
;;;204    	I2C_SCL0=1;
0001da  2001              MOVS     r0,#1
0001dc  492d              LDR      r1,|L1.660|
0001de  6008              STR      r0,[r1,#0]
;;;205    	delay_us(1000);
0001e0  f44f707a          MOV      r0,#0x3e8
0001e4  f7fffffe          BL       delay_us
;;;206    	if(SDA_STATE0==1)
0001e8  4829              LDR      r0,|L1.656|
0001ea  f8d0012c          LDR      r0,[r0,#0x12c]
0001ee  2801              CMP      r0,#1
0001f0  d101              BNE      |L1.502|
;;;207    	{
;;;208    		tem=0;  
0001f2  2500              MOVS     r5,#0
0001f4  e000              B        |L1.504|
                  |L1.502|
;;;209    	}
;;;210    	else
;;;211    	{
;;;212    		tem=1;   
0001f6  2501              MOVS     r5,#1
                  |L1.504|
;;;213    	}
;;;214    	I2C_SCL0=0;
0001f8  2000              MOVS     r0,#0
0001fa  4926              LDR      r1,|L1.660|
0001fc  6008              STR      r0,[r1,#0]
;;;215    	delay_us(100);	
0001fe  f04f0064          MOV      r0,#0x64
000202  f7fffffe          BL       delay_us
;;;216        SDA_OUT0();
000206  4820              LDR      r0,|L1.648|
000208  6840              LDR      r0,[r0,#4]
00020a  f4204070          BIC      r0,r0,#0xf000
00020e  491e              LDR      r1,|L1.648|
000210  6048              STR      r0,[r1,#4]
000212  4608              MOV      r0,r1
000214  6840              LDR      r0,[r0,#4]
000216  f4405040          ORR      r0,r0,#0x3000
00021a  6048              STR      r0,[r1,#4]
;;;217    
;;;218    	return(tem);  
00021c  4628              MOV      r0,r5
;;;219    }
00021e  bd70              POP      {r4-r6,pc}
;;;220    
                          ENDP

                  I2CRead0 PROC
;;;228    ***************************************************************************/
;;;229    unsigned char I2CRead0(void)
000220  b570              PUSH     {r4-r6,lr}
;;;230    {
;;;231    	unsigned char read,j;
;;;232    	read=0x00;
000222  2400              MOVS     r4,#0
;;;233    	
;;;234    	SDA_IN0();
000224  4818              LDR      r0,|L1.648|
000226  6840              LDR      r0,[r0,#4]
000228  f4204070          BIC      r0,r0,#0xf000
00022c  4916              LDR      r1,|L1.648|
00022e  6048              STR      r0,[r1,#4]
000230  4608              MOV      r0,r1
000232  6840              LDR      r0,[r0,#4]
000234  f4404000          ORR      r0,r0,#0x8000
000238  6048              STR      r0,[r1,#4]
;;;235    	delay_us(100);
00023a  2064              MOVS     r0,#0x64
00023c  f7fffffe          BL       delay_us
;;;236    	for(j=8;j>0;j--) 
000240  2508              MOVS     r5,#8
000242  e01b              B        |L1.636|
                  |L1.580|
;;;237    	{		     
;;;238    		delay_us(100);
000244  2064              MOVS     r0,#0x64
000246  f7fffffe          BL       delay_us
;;;239    		I2C_SCL0=1;
00024a  2001              MOVS     r0,#1
00024c  4911              LDR      r1,|L1.660|
00024e  6008              STR      r0,[r1,#0]
;;;240    		delay_us(100);
000250  f04f0064          MOV      r0,#0x64
000254  f7fffffe          BL       delay_us
;;;241    		read=read<<1;
000258  0660              LSLS     r0,r4,#25
00025a  0e04              LSRS     r4,r0,#24
;;;242    		if(SDA_STATE0==1) 
00025c  480c              LDR      r0,|L1.656|
00025e  f8d0012c          LDR      r0,[r0,#0x12c]
000262  2801              CMP      r0,#1
000264  d101              BNE      |L1.618|
;;;243    		{
;;;244    			read=read+1;
000266  1c60              ADDS     r0,r4,#1
000268  b2c4              UXTB     r4,r0
                  |L1.618|
;;;245    		}
;;;246    		I2C_SCL0=0;
00026a  2000              MOVS     r0,#0
00026c  4909              LDR      r1,|L1.660|
00026e  6008              STR      r0,[r1,#0]
;;;247    		delay_us(100);
000270  f04f0064          MOV      r0,#0x64
000274  f7fffffe          BL       delay_us
000278  1e68              SUBS     r0,r5,#1              ;236
00027a  b2c5              UXTB     r5,r0                 ;236
                  |L1.636|
00027c  2d00              CMP      r5,#0                 ;236
00027e  dce1              BGT      |L1.580|
;;;248    	}	
;;;249    	return(read);
000280  4620              MOV      r0,r4
;;;250    }
000282  bd70              POP      {r4-r6,pc}
;;;251    
                          ENDP

                  |L1.644|
                          DCD      0x40021000
                  |L1.648|
                          DCD      0x40011000
                  |L1.652|
                          DCD      0x422201ac
                  |L1.656|
                          DCD      0x42220000
                  |L1.660|
                          DCD      0x422201b0
