; generated by Component: ARM Compiler 5.05 update 2 (build 169) Tool: ArmCC [4d0f38]
; commandline ArmCC [--list --debug -c --asm --interleave -o.\obj\vkl280_drv_bdio.o --asm_dir=.\lst\ --list_dir=.\lst\ --depend=.\obj\vkl280_drv_bdio.d --cpu=Cortex-M4.fp --apcs=interwork -O0 --diag_suppress=9931 -I..\..\..\Library\CMSIS\Include -I..\..\..\Library\Device\Nuvoton\M451Series\Include -I..\..\..\Library\StdDriver\inc -I..\Bsp -I..\User -I..\lcd_driver -I.\RTE\_project -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\4.3.0\CMSIS\Include -IDevice\M451\Include -D__UVISION_VERSION=527 -D_RTE_ --omf_browse=.\obj\vkl280_drv_bdio.crf ..\Lcd_driver\VKL280_DRV_BDIO.c]
                          THUMB

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

                  Delay_nuS PROC
;;;32     *******************************************************************************/
;;;33     void Delay_nuS(unsigned int n)	   
000000  e007              B        |L1.18|
                  |L1.2|
;;;34     {
;;;35     	unsigned char i;
;;;36     	while(n--)
;;;37     	{
;;;38     		i=14;   		//12Mhz=10  16Mhz=14
000002  210e              MOVS     r1,#0xe
;;;39     		while(i--)
000004  e000              B        |L1.8|
                  |L1.6|
;;;40     		{
;;;41     			__nop();	//nopָݵƬӦ޸
000006  bf00              NOP      
                  |L1.8|
000008  000a              MOVS     r2,r1                 ;39
00000a  f1a10301          SUB      r3,r1,#1              ;39
00000e  b2d9              UXTB     r1,r3                 ;39
000010  d1f9              BNE      |L1.6|
                  |L1.18|
000012  0002              MOVS     r2,r0                 ;36
000014  f1a00001          SUB      r0,r0,#1              ;36
000018  d1f3              BNE      |L1.2|
;;;42     		}
;;;43     	}
;;;44     }
00001a  4770              BX       lr
;;;45     /*******************************************************************************
                          ENDP

                  Delay_nmS PROC
;;;51     *******************************************************************************/
;;;52     void Delay_nmS(unsigned long int n)
00001c  b510              PUSH     {r4,lr}
;;;53     {
00001e  4604              MOV      r4,r0
;;;54     	while(n--)
000020  e003              B        |L1.42|
                  |L1.34|
;;;55     	{
;;;56     		Delay_nuS(1000);
000022  f44f707a          MOV      r0,#0x3e8
000026  f7fffffe          BL       Delay_nuS
                  |L1.42|
00002a  0020              MOVS     r0,r4                 ;54
00002c  f1a40401          SUB      r4,r4,#1              ;54
000030  d1f7              BNE      |L1.34|
;;;57     	}
;;;58     }
000032  bd10              POP      {r4,pc}
;;;59     /*******************************************************************************
                          ENDP

                  VKL280_I2CStart PROC
;;;65     *******************************************************************************/
;;;66     void VKL280_I2CStart( void )
000034  b500              PUSH     {lr}
;;;67     {
;;;68       VKL280_SCL_H();
000036  2001              MOVS     r0,#1
000038  49e3              LDR      r1,|L1.968|
00003a  6008              STR      r0,[r1,#0]
;;;69       VKL280_SDA_H();
00003c  49e2              LDR      r1,|L1.968|
00003e  3928              SUBS     r1,r1,#0x28
000040  6008              STR      r0,[r1,#0]
;;;70       Delay_nuS(VKL280_CLK);
000042  f7fffffe          BL       Delay_nuS
;;;71       VKL280_SDA_L();
000046  2000              MOVS     r0,#0
000048  49df              LDR      r1,|L1.968|
00004a  3928              SUBS     r1,r1,#0x28
00004c  6008              STR      r0,[r1,#0]
;;;72       Delay_nuS(VKL280_CLK);
00004e  2001              MOVS     r0,#1
000050  f7fffffe          BL       Delay_nuS
;;;73     }
000054  bd00              POP      {pc}
;;;74     /*******************************************************************************
                          ENDP

                  VKL280_I2CStop PROC
;;;80     *******************************************************************************/
;;;81     void VKL280_I2CStop( void )
000056  b500              PUSH     {lr}
;;;82     {
;;;83       VKL280_SCL_H();
000058  2001              MOVS     r0,#1
00005a  49db              LDR      r1,|L1.968|
00005c  6008              STR      r0,[r1,#0]
;;;84       VKL280_SDA_L();
00005e  2000              MOVS     r0,#0
000060  49d9              LDR      r1,|L1.968|
000062  3928              SUBS     r1,r1,#0x28
000064  6008              STR      r0,[r1,#0]
;;;85       Delay_nuS(VKL280_CLK);
000066  2001              MOVS     r0,#1
000068  f7fffffe          BL       Delay_nuS
;;;86       VKL280_SDA_H();
00006c  2001              MOVS     r0,#1
00006e  49d6              LDR      r1,|L1.968|
000070  3928              SUBS     r1,r1,#0x28
000072  6008              STR      r0,[r1,#0]
;;;87       Delay_nuS(VKL280_CLK);
000074  f7fffffe          BL       Delay_nuS
;;;88     }
000078  bd00              POP      {pc}
;;;89     /*******************************************************************************
                          ENDP

                  VKL280_I2CSlaveAck PROC
;;;95     *******************************************************************************/
;;;96     unsigned char VKL280_I2CSlaveAck( void )
00007a  b530              PUSH     {r4,r5,lr}
;;;97     {
;;;98       unsigned int TimeOut;
;;;99       unsigned char RetValue=1;
00007c  2401              MOVS     r4,#1
;;;100    	
;;;101      VKL280_SCL_L();
00007e  2000              MOVS     r0,#0
000080  49d1              LDR      r1,|L1.968|
000082  6008              STR      r0,[r1,#0]
;;;102      Delay_nuS(VKL280_CLK);
000084  2001              MOVS     r0,#1
000086  f7fffffe          BL       Delay_nuS
;;;103      VKL280_SCL_H();//9SCLʱ
00008a  2001              MOVS     r0,#1
00008c  49ce              LDR      r1,|L1.968|
00008e  6008              STR      r0,[r1,#0]
;;;104      TimeOut = 10000;
000090  f2427510          MOV      r5,#0x2710
;;;105      while( TimeOut-- > 0 )
000094  e007              B        |L1.166|
                  |L1.150|
;;;106      {
;;;107        if( VKL280_GET_SDA()!=0 )//ȡack
000096  48cc              LDR      r0,|L1.968|
000098  3828              SUBS     r0,r0,#0x28
00009a  6800              LDR      r0,[r0,#0]
00009c  b108              CBZ      r0,|L1.162|
;;;108        {
;;;109          RetValue = 1;
00009e  2401              MOVS     r4,#1
0000a0  e001              B        |L1.166|
                  |L1.162|
;;;110        }
;;;111        else
;;;112        {
;;;113          RetValue = 0;
0000a2  2400              MOVS     r4,#0
;;;114          break;
0000a4  e003              B        |L1.174|
                  |L1.166|
0000a6  0028              MOVS     r0,r5                 ;105
0000a8  f1a50501          SUB      r5,r5,#1              ;105
0000ac  d1f3              BNE      |L1.150|
                  |L1.174|
0000ae  bf00              NOP      
;;;115        }
;;;116      } 
;;;117    	VKL280_SCL_L(); //һʱΪ,ݻSTOPźš
0000b0  2000              MOVS     r0,#0
0000b2  49c5              LDR      r1,|L1.968|
0000b4  6008              STR      r0,[r1,#0]
;;;118      
;;;119      return RetValue;
0000b6  4620              MOV      r0,r4
;;;120    }
0000b8  bd30              POP      {r4,r5,pc}
;;;121    /*******************************************************************************
                          ENDP

                  VKL280_I2CSendAck PROC
;;;127    *******************************************************************************/
;;;128    void VKL280_I2CSendAck( void )
0000ba  b500              PUSH     {lr}
;;;129    {
;;;130      VKL280_SCL_L();
0000bc  2000              MOVS     r0,#0
0000be  49c2              LDR      r1,|L1.968|
0000c0  6008              STR      r0,[r1,#0]
;;;131      VKL280_SDA_L();
0000c2  49c1              LDR      r1,|L1.968|
0000c4  3928              SUBS     r1,r1,#0x28
0000c6  6008              STR      r0,[r1,#0]
;;;132      Delay_nuS(VKL280_CLK*2);
0000c8  2002              MOVS     r0,#2
0000ca  f7fffffe          BL       Delay_nuS
;;;133      VKL280_SCL_H();
0000ce  2001              MOVS     r0,#1
0000d0  49bd              LDR      r1,|L1.968|
0000d2  6008              STR      r0,[r1,#0]
;;;134      Delay_nuS(VKL280_CLK*2);
0000d4  2002              MOVS     r0,#2
0000d6  f7fffffe          BL       Delay_nuS
;;;135      VKL280_SCL_L();
0000da  2000              MOVS     r0,#0
0000dc  49ba              LDR      r1,|L1.968|
0000de  6008              STR      r0,[r1,#0]
;;;136      VKL280_SDA_H();
0000e0  2001              MOVS     r0,#1
0000e2  49b9              LDR      r1,|L1.968|
0000e4  3928              SUBS     r1,r1,#0x28
0000e6  6008              STR      r0,[r1,#0]
;;;137    }
0000e8  bd00              POP      {pc}
;;;138    /*******************************************************************************
                          ENDP

                  VKL280_I2CSendNAck PROC
;;;144    *******************************************************************************/
;;;145    void VKL280_I2CSendNAck( void )
0000ea  b500              PUSH     {lr}
;;;146    {
;;;147      VKL280_SCL_L();
0000ec  2000              MOVS     r0,#0
0000ee  49b6              LDR      r1,|L1.968|
0000f0  6008              STR      r0,[r1,#0]
;;;148      VKL280_SDA_H();
0000f2  2001              MOVS     r0,#1
0000f4  49b4              LDR      r1,|L1.968|
0000f6  3928              SUBS     r1,r1,#0x28
0000f8  6008              STR      r0,[r1,#0]
;;;149      Delay_nuS(VKL280_CLK);
0000fa  f7fffffe          BL       Delay_nuS
;;;150      VKL280_SCL_H();
0000fe  2001              MOVS     r0,#1
000100  49b1              LDR      r1,|L1.968|
000102  6008              STR      r0,[r1,#0]
;;;151      Delay_nuS(VKL280_CLK);
000104  f7fffffe          BL       Delay_nuS
;;;152    }
000108  bd00              POP      {pc}
;;;153    /*******************************************************************************
                          ENDP

                  VKL280_I2CWRCmd PROC
;;;159    *******************************************************************************/
;;;160    void VKL280_I2CWRCmd( unsigned char cmd )
00010a  b530              PUSH     {r4,r5,lr}
;;;161    {
00010c  4604              MOV      r4,r0
;;;162    	unsigned char i=8;
00010e  2508              MOVS     r5,#8
;;;163    	
;;;164    	while (i--)
000110  e018              B        |L1.324|
                  |L1.274|
;;;165    	{ 
;;;166    		VKL280_SCL_L();
000112  2000              MOVS     r0,#0
000114  49ac              LDR      r1,|L1.968|
000116  6008              STR      r0,[r1,#0]
;;;167    		if(cmd&0x80)
000118  f0040080          AND      r0,r4,#0x80
00011c  b120              CBZ      r0,|L1.296|
;;;168    			VKL280_SDA_H();
00011e  2001              MOVS     r0,#1
000120  49a9              LDR      r1,|L1.968|
000122  3928              SUBS     r1,r1,#0x28
000124  6008              STR      r0,[r1,#0]
000126  e003              B        |L1.304|
                  |L1.296|
;;;169    		else
;;;170    			VKL280_SDA_L();
000128  2000              MOVS     r0,#0
00012a  49a7              LDR      r1,|L1.968|
00012c  3928              SUBS     r1,r1,#0x28
00012e  6008              STR      r0,[r1,#0]
                  |L1.304|
;;;171    		cmd<<=1; 
000130  0660              LSLS     r0,r4,#25
000132  0e04              LSRS     r4,r0,#24
;;;172    		Delay_nuS(VKL280_CLK);
000134  2001              MOVS     r0,#1
000136  f7fffffe          BL       Delay_nuS
;;;173    		VKL280_SCL_H();     
00013a  2001              MOVS     r0,#1
00013c  49a2              LDR      r1,|L1.968|
00013e  6008              STR      r0,[r1,#0]
;;;174    		Delay_nuS(VKL280_CLK);
000140  f7fffffe          BL       Delay_nuS
                  |L1.324|
000144  0028              MOVS     r0,r5                 ;164
000146  f1a50101          SUB      r1,r5,#1              ;164
00014a  b2cd              UXTB     r5,r1                 ;164
00014c  d1e1              BNE      |L1.274|
;;;175    	}
;;;176    }
00014e  bd30              POP      {r4,r5,pc}
;;;177    /*******************************************************************************
                          ENDP

                  VKL280_I2CWRDat PROC
;;;183    *******************************************************************************/
;;;184    void VKL280_I2CWRDat( unsigned char dat )
000150  b530              PUSH     {r4,r5,lr}
;;;185    {
000152  4604              MOV      r4,r0
;;;186    	unsigned char i=8;
000154  2508              MOVS     r5,#8
;;;187    	while (i--)
000156  e017              B        |L1.392|
                  |L1.344|
;;;188    	{ 
;;;189    		VKL280_SCL_L();
000158  2000              MOVS     r0,#0
00015a  499b              LDR      r1,|L1.968|
00015c  6008              STR      r0,[r1,#0]
;;;190    		if(dat&0x01)
00015e  f0040001          AND      r0,r4,#1
000162  b120              CBZ      r0,|L1.366|
;;;191    			VKL280_SDA_H();
000164  2001              MOVS     r0,#1
000166  4998              LDR      r1,|L1.968|
000168  3928              SUBS     r1,r1,#0x28
00016a  6008              STR      r0,[r1,#0]
00016c  e003              B        |L1.374|
                  |L1.366|
;;;192    		else
;;;193    			VKL280_SDA_L();
00016e  2000              MOVS     r0,#0
000170  4995              LDR      r1,|L1.968|
000172  3928              SUBS     r1,r1,#0x28
000174  6008              STR      r0,[r1,#0]
                  |L1.374|
;;;194    		dat>>=1; 
000176  1064              ASRS     r4,r4,#1
;;;195    		Delay_nuS(VKL280_CLK);
000178  2001              MOVS     r0,#1
00017a  f7fffffe          BL       Delay_nuS
;;;196    		VKL280_SCL_H();     
00017e  2001              MOVS     r0,#1
000180  4991              LDR      r1,|L1.968|
000182  6008              STR      r0,[r1,#0]
;;;197    		Delay_nuS(VKL280_CLK);
000184  f7fffffe          BL       Delay_nuS
                  |L1.392|
000188  0028              MOVS     r0,r5                 ;187
00018a  f1a50101          SUB      r1,r5,#1              ;187
00018e  b2cd              UXTB     r5,r1                 ;187
000190  d1e2              BNE      |L1.344|
;;;198    	}
;;;199    }
000192  bd30              POP      {r4,r5,pc}
;;;200    
                          ENDP

                  VKL280_I2CRDDat PROC
;;;207    *******************************************************************************/
;;;208    unsigned char VKL280_I2CRDDat( void )
000194  b530              PUSH     {r4,r5,lr}
;;;209    {
;;;210    	unsigned char i,RetValue;
;;;211    	
;;;212    	RetValue=0;	
000196  2400              MOVS     r4,#0
;;;213      for( i=0; i<8; i++ )
000198  2500              MOVS     r5,#0
00019a  e013              B        |L1.452|
                  |L1.412|
;;;214      {
;;;215    		RetValue>>=1; 
00019c  1064              ASRS     r4,r4,#1
;;;216    		VKL280_SCL_L();     
00019e  2000              MOVS     r0,#0
0001a0  4989              LDR      r1,|L1.968|
0001a2  6008              STR      r0,[r1,#0]
;;;217    		Delay_nuS(VKL280_CLK);
0001a4  2001              MOVS     r0,#1
0001a6  f7fffffe          BL       Delay_nuS
;;;218    		VKL280_SCL_H();
0001aa  2001              MOVS     r0,#1
0001ac  4986              LDR      r1,|L1.968|
0001ae  6008              STR      r0,[r1,#0]
;;;219    		Delay_nuS(VKL280_CLK);
0001b0  f7fffffe          BL       Delay_nuS
;;;220    		if( VKL280_GET_SDA()!=0 )
0001b4  4884              LDR      r0,|L1.968|
0001b6  3828              SUBS     r0,r0,#0x28
0001b8  6800              LDR      r0,[r0,#0]
0001ba  b108              CBZ      r0,|L1.448|
;;;221    			RetValue|=0x80;
0001bc  f0440480          ORR      r4,r4,#0x80
                  |L1.448|
0001c0  1c68              ADDS     r0,r5,#1              ;213
0001c2  b2c5              UXTB     r5,r0                 ;213
                  |L1.452|
0001c4  2d08              CMP      r5,#8                 ;213
0001c6  dbe9              BLT      |L1.412|
;;;222    	}
;;;223      
;;;224      return RetValue;
0001c8  4620              MOV      r0,r4
;;;225    }
0001ca  bd30              POP      {r4,r5,pc}
;;;226    /*******************************************************************************
                          ENDP

                  WriteCmdVKL280 PROC
;;;232    *******************************************************************************/
;;;233    unsigned char  WriteCmdVKL280(unsigned char cmd)
0001cc  b510              PUSH     {r4,lr}
;;;234    {
0001ce  4604              MOV      r4,r0
;;;235    	//STARTź	
;;;236    	VKL280_I2CStart(); 									
0001d0  f7fffffe          BL       VKL280_I2CStart
;;;237    	//SLAVEַ
;;;238    	VKL280_I2CWRCmd(VKL280_ADDRWR); 	
0001d4  207c              MOVS     r0,#0x7c
0001d6  f7fffffe          BL       VKL280_I2CWRCmd
;;;239    	if( 1 == VKL280_I2CSlaveAck() )
0001da  f7fffffe          BL       VKL280_I2CSlaveAck
0001de  2801              CMP      r0,#1
0001e0  d103              BNE      |L1.490|
;;;240    	{
;;;241    		VKL280_I2CStop();													
0001e2  f7fffffe          BL       VKL280_I2CStop
;;;242    		return 0;										
0001e6  2000              MOVS     r0,#0
                  |L1.488|
;;;243    	}
;;;244    	
;;;245    	VKL280_I2CWRCmd(cmd); 						
;;;246    	if( 1 == VKL280_I2CSlaveAck() )
;;;247    	{
;;;248    		VKL280_I2CStop();													
;;;249    		return 0;
;;;250    	}
;;;251    	//STOPź
;;;252    	 VKL280_I2CStop();											
;;;253    	 return 0;    
;;;254    }
0001e8  bd10              POP      {r4,pc}
                  |L1.490|
0001ea  4620              MOV      r0,r4                 ;245
0001ec  f7fffffe          BL       VKL280_I2CWRCmd
0001f0  f7fffffe          BL       VKL280_I2CSlaveAck
0001f4  2801              CMP      r0,#1                 ;246
0001f6  d103              BNE      |L1.512|
0001f8  f7fffffe          BL       VKL280_I2CStop
0001fc  2000              MOVS     r0,#0                 ;249
0001fe  e7f3              B        |L1.488|
                  |L1.512|
000200  f7fffffe          BL       VKL280_I2CStop
000204  2000              MOVS     r0,#0                 ;253
000206  e7ef              B        |L1.488|
;;;255    /*******************************************************************************
                          ENDP

                  WritenDataVKL280 PROC
;;;263    *******************************************************************************/
;;;264    unsigned char  WritenDataVKL280(unsigned char Addr,unsigned char *Databuf,unsigned char Cnt)
000208  b5f0              PUSH     {r4-r7,lr}
;;;265    {
00020a  4607              MOV      r7,r0
00020c  460c              MOV      r4,r1
00020e  4616              MOV      r6,r2
;;;266    	unsigned char n;
;;;267    	
;;;268    	//STARTź	
;;;269    	VKL280_I2CStart(); 									
000210  f7fffffe          BL       VKL280_I2CStart
;;;270    	//SLAVEַ
;;;271    	VKL280_I2CWRCmd(VKL280_ADDRWR); 	
000214  207c              MOVS     r0,#0x7c
000216  f7fffffe          BL       VKL280_I2CWRCmd
;;;272    	if( 1 == VKL280_I2CSlaveAck() )
00021a  f7fffffe          BL       VKL280_I2CSlaveAck
00021e  2801              CMP      r0,#1
000220  d103              BNE      |L1.554|
;;;273    	{
;;;274    		VKL280_I2CStop();													
000222  f7fffffe          BL       VKL280_I2CStop
;;;275    		return 0;										
000226  2000              MOVS     r0,#0
                  |L1.552|
;;;276    	}
;;;277    	//ʾRAMʼַ
;;;278    	VKL280_I2CWRCmd(Addr); 						
;;;279    	if( 1 == VKL280_I2CSlaveAck() )
;;;280    	{
;;;281    		VKL280_I2CStop();													
;;;282    		return 0;
;;;283    	}
;;;284    	//CntݵʾRAM
;;;285    	for(n=0;n<Cnt;n++)
;;;286    	{ 
;;;287    		VKL280_I2CWRDat(*Databuf++);
;;;288    		if( VKL280_I2CSlaveAck()==1 )
;;;289    		{
;;;290    			VKL280_I2CStop();													
;;;291    			return 0;
;;;292    		}
;;;293    	}
;;;294    	//STOPź
;;;295    	 VKL280_I2CStop();	
;;;296       return 0;    
;;;297    }
000228  bdf0              POP      {r4-r7,pc}
                  |L1.554|
00022a  4638              MOV      r0,r7                 ;278
00022c  f7fffffe          BL       VKL280_I2CWRCmd
000230  f7fffffe          BL       VKL280_I2CSlaveAck
000234  2801              CMP      r0,#1                 ;279
000236  d103              BNE      |L1.576|
000238  f7fffffe          BL       VKL280_I2CStop
00023c  2000              MOVS     r0,#0                 ;282
00023e  e7f3              B        |L1.552|
                  |L1.576|
000240  2500              MOVS     r5,#0                 ;285
000242  e00d              B        |L1.608|
                  |L1.580|
000244  f8140b01          LDRB     r0,[r4],#1            ;287
000248  f7fffffe          BL       VKL280_I2CWRDat
00024c  f7fffffe          BL       VKL280_I2CSlaveAck
000250  2801              CMP      r0,#1                 ;288
000252  d103              BNE      |L1.604|
000254  f7fffffe          BL       VKL280_I2CStop
000258  2000              MOVS     r0,#0                 ;291
00025a  e7e5              B        |L1.552|
                  |L1.604|
00025c  1c68              ADDS     r0,r5,#1              ;285
00025e  b2c5              UXTB     r5,r0                 ;285
                  |L1.608|
000260  42b5              CMP      r5,r6                 ;285
000262  dbef              BLT      |L1.580|
000264  f7fffffe          BL       VKL280_I2CStop
000268  2000              MOVS     r0,#0                 ;296
00026a  e7dd              B        |L1.552|
;;;298    
                          ENDP

                  ReadnDataVKL280 PROC
;;;307    *******************************************************************************/
;;;308    unsigned char  ReadnDataVKL280(unsigned char Addr,unsigned char *Databuf,unsigned char Cnt)
00026c  b5f0              PUSH     {r4-r7,lr}
;;;309    {
00026e  4607              MOV      r7,r0
000270  460c              MOV      r4,r1
000272  4616              MOV      r6,r2
;;;310    	unsigned char n;
;;;311    	
;;;312    	//STARTź	
;;;313    	VKL280_I2CStart(); 									
000274  f7fffffe          BL       VKL280_I2CStart
;;;314    	//SLAVEַд
;;;315    	VKL280_I2CWRCmd(VKL280_ADDRWR); 	
000278  207c              MOVS     r0,#0x7c
00027a  f7fffffe          BL       VKL280_I2CWRCmd
;;;316    	if( 1 == VKL280_I2CSlaveAck() )
00027e  f7fffffe          BL       VKL280_I2CSlaveAck
000282  2801              CMP      r0,#1
000284  d103              BNE      |L1.654|
;;;317    	{
;;;318    		VKL280_I2CStop();													
000286  f7fffffe          BL       VKL280_I2CStop
;;;319    		return 0;										
00028a  2000              MOVS     r0,#0
                  |L1.652|
;;;320    	}
;;;321    	VKL280_I2CWRCmd(Addr); 						
;;;322    	if( 1 == VKL280_I2CSlaveAck() )
;;;323    	{
;;;324    		VKL280_I2CStop();													
;;;325    		return 0;
;;;326    	}
;;;327    	//STOPź
;;;328    	VKL280_I2CStop();	
;;;329    	//STARTź	
;;;330    	VKL280_I2CStart(); 									
;;;331    	//SLAVEַ
;;;332    	VKL280_I2CWRCmd(VKL280_ADDRRD); 	
;;;333    	if( 1 == VKL280_I2CSlaveAck() )
;;;334    	{
;;;335    		VKL280_I2CStop();													
;;;336    		return 0;										
;;;337    	}	
;;;338    	//CntݵʾRAM
;;;339    	for(n=0;n<Cnt-1;n++)
;;;340    	{ 
;;;341    		*Databuf++=VKL280_I2CRDDat();
;;;342    		VKL280_I2CSendAck();
;;;343    	}
;;;344    	*Databuf++=VKL280_I2CRDDat();
;;;345    	VKL280_I2CSendNAck();
;;;346    	//STOPź
;;;347    	VKL280_I2CStop();											
;;;348    	return 0;    
;;;349    }
00028c  bdf0              POP      {r4-r7,pc}
                  |L1.654|
00028e  4638              MOV      r0,r7                 ;321
000290  f7fffffe          BL       VKL280_I2CWRCmd
000294  f7fffffe          BL       VKL280_I2CSlaveAck
000298  2801              CMP      r0,#1                 ;322
00029a  d103              BNE      |L1.676|
00029c  f7fffffe          BL       VKL280_I2CStop
0002a0  2000              MOVS     r0,#0                 ;325
0002a2  e7f3              B        |L1.652|
                  |L1.676|
0002a4  f7fffffe          BL       VKL280_I2CStop
0002a8  f7fffffe          BL       VKL280_I2CStart
0002ac  207d              MOVS     r0,#0x7d              ;332
0002ae  f7fffffe          BL       VKL280_I2CWRCmd
0002b2  f7fffffe          BL       VKL280_I2CSlaveAck
0002b6  2801              CMP      r0,#1                 ;333
0002b8  d103              BNE      |L1.706|
0002ba  f7fffffe          BL       VKL280_I2CStop
0002be  2000              MOVS     r0,#0                 ;336
0002c0  e7e4              B        |L1.652|
                  |L1.706|
0002c2  2500              MOVS     r5,#0                 ;339
0002c4  e007              B        |L1.726|
                  |L1.710|
0002c6  f7fffffe          BL       VKL280_I2CRDDat
0002ca  f8040b01          STRB     r0,[r4],#1            ;341
0002ce  f7fffffe          BL       VKL280_I2CSendAck
0002d2  1c68              ADDS     r0,r5,#1              ;339
0002d4  b2c5              UXTB     r5,r0                 ;339
                  |L1.726|
0002d6  1e70              SUBS     r0,r6,#1              ;339
0002d8  42a8              CMP      r0,r5                 ;339
0002da  dcf4              BGT      |L1.710|
0002dc  f7fffffe          BL       VKL280_I2CRDDat
0002e0  f8040b01          STRB     r0,[r4],#1            ;344
0002e4  f7fffffe          BL       VKL280_I2CSendNAck
0002e8  f7fffffe          BL       VKL280_I2CStop
0002ec  2000              MOVS     r0,#0                 ;348
0002ee  e7cd              B        |L1.652|
;;;350    /*******************************************************************************
                          ENDP

                  VKL280_Enter_Shutoff PROC
;;;356    *******************************************************************************/
;;;357    unsigned char VKL280_Enter_Shutoff(void)
0002f0  b500              PUSH     {lr}
;;;358    {		
;;;359    	WriteCmdVKL280(VKL280_CMD_ICSET|VKL280_LCD_OFF);		//ʾ
0002f2  20f0              MOVS     r0,#0xf0
0002f4  f7fffffe          BL       WriteCmdVKL280
;;;360    
;;;361      return 0; 
0002f8  2000              MOVS     r0,#0
;;;362    }
0002fa  bd00              POP      {pc}
;;;363    /*******************************************************************************
                          ENDP

                  VKL280_SOFTREST PROC
;;;369    *******************************************************************************/
;;;370    unsigned char VKL280_SOFTREST(void)
0002fc  b500              PUSH     {lr}
;;;371    {		
;;;372    	WriteCmdVKL280(VKL280_SOFTRST);		//λ
0002fe  2002              MOVS     r0,#2
000300  f7fffffe          BL       WriteCmdVKL280
;;;373    	
;;;374      return 0; 
000304  2000              MOVS     r0,#0
;;;375    }
000306  bd00              POP      {pc}
;;;376    /*******************************************************************************
                          ENDP

                  VKL280_InitSequence PROC
;;;395    *******************************************************************************/
;;;396    unsigned char VKL280_InitSequence(void)
000308  b500              PUSH     {lr}
;;;397    {	
;;;398      //ϵʼʱ򣨲οֲϵ縴λʱͼͲ	
;;;399    	//ϵ100uSʼ
;;;400      Delay_nuS(100);
00030a  2064              MOVS     r0,#0x64
00030c  f7fffffe          BL       Delay_nuS
;;;401    	//STOPź
;;;402    	VKL280_I2CStop();
000310  f7fffffe          BL       VKL280_I2CStop
;;;403    	//STARTź
;;;404    	VKL280_I2CStart();
000314  f7fffffe          BL       VKL280_I2CStart
;;;405    	//SLAVEַ(0x7C)
;;;406    	VKL280_I2CWRCmd(VKL280_ADDRWR); 
000318  207c              MOVS     r0,#0x7c
00031a  f7fffffe          BL       VKL280_I2CWRCmd
;;;407    	if( 1 == VKL280_I2CSlaveAck() )
00031e  f7fffffe          BL       VKL280_I2CSlaveAck
000322  2801              CMP      r0,#1
000324  d103              BNE      |L1.814|
;;;408    	{
;;;409    		VKL280_I2CStop();	
000326  f7fffffe          BL       VKL280_I2CStop
;;;410    		return 1;
00032a  2001              MOVS     r0,#1
                  |L1.812|
;;;411    	}
;;;412    	//ICSET λ
;;;413    	VKL280_I2CWRCmd(VKL280_CMD_ICSET|VKL280_SOFTRST);
;;;414    	if( 1 == VKL280_I2CSlaveAck() )
;;;415    	{
;;;416    		VKL280_I2CStop();	
;;;417    		return 1;
;;;418    	}
;;;419    	//DISCTL ʾ ֡Ƶģʽ
;;;420    	VKL280_I2CWRCmd(VKL280_CMD_DISCTL|VKL280_FR80HZ|VKL280_PWRLP1);  	//ϵĬ 
;;;421    //  VKL280_I2CWRCmd(VKL280_CMD_DISCTL|VKL280_FR53HZ|VKL280_PWRLP2);  	//	
;;;422    //  VKL280_I2CWRCmd(VKL280_CMD_DISCTL|VKL280_FR80HZ|VKL280_PWRHP);  	//		
;;;423    	if( 1 == VKL280_I2CSlaveAck() )
;;;424    	{
;;;425    		VKL280_I2CStop();	
;;;426    		return 1;
;;;427    	}
;;;428    	//EVRSET EVRȼ
;;;429      VKL280_I2CWRCmd(VKL280_CMD_EVRSET|VKL280_EVR1); 
;;;430      if( 1 == VKL280_I2CSlaveAck() )
;;;431      {
;;;432        VKL280_I2CStop();	
;;;433        return 1;
;;;434      }
;;;435    	//ICSET ʾ
;;;436    	VKL280_I2CWRCmd(VKL280_CMD_ICSET | VKL280_FRAME |VKL280_LCD_ON); //Frameת
;;;437    //  VKL280_I2CWRCmd(VKL280_CMD_ICSET | VKL280_LINE |VKL280_LCD_ON); //Frameת
;;;438    	if( 1 == VKL280_I2CSlaveAck() )
;;;439    	{
;;;440    		VKL280_I2CStop();													
;;;441    		return 0;
;;;442    	}
;;;443    	
;;;444    	//STOPź
;;;445    	VKL280_I2CStop();	
;;;446      return  0; 
;;;447    }
00032c  bd00              POP      {pc}
                  |L1.814|
00032e  20f2              MOVS     r0,#0xf2              ;413
000330  f7fffffe          BL       VKL280_I2CWRCmd
000334  f7fffffe          BL       VKL280_I2CSlaveAck
000338  2801              CMP      r0,#1                 ;414
00033a  d103              BNE      |L1.836|
00033c  f7fffffe          BL       VKL280_I2CStop
000340  2001              MOVS     r0,#1                 ;417
000342  e7f3              B        |L1.812|
                  |L1.836|
000344  20e0              MOVS     r0,#0xe0              ;420
000346  f7fffffe          BL       VKL280_I2CWRCmd
00034a  f7fffffe          BL       VKL280_I2CSlaveAck
00034e  2801              CMP      r0,#1                 ;423
000350  d103              BNE      |L1.858|
000352  f7fffffe          BL       VKL280_I2CStop
000356  2001              MOVS     r0,#1                 ;426
000358  e7e8              B        |L1.812|
                  |L1.858|
00035a  20c1              MOVS     r0,#0xc1              ;429
00035c  f7fffffe          BL       VKL280_I2CWRCmd
000360  f7fffffe          BL       VKL280_I2CSlaveAck
000364  2801              CMP      r0,#1                 ;430
000366  d103              BNE      |L1.880|
000368  f7fffffe          BL       VKL280_I2CStop
00036c  2001              MOVS     r0,#1                 ;433
00036e  e7dd              B        |L1.812|
                  |L1.880|
000370  20f5              MOVS     r0,#0xf5              ;436
000372  f7fffffe          BL       VKL280_I2CWRCmd
000376  f7fffffe          BL       VKL280_I2CSlaveAck
00037a  2801              CMP      r0,#1                 ;438
00037c  d103              BNE      |L1.902|
00037e  f7fffffe          BL       VKL280_I2CStop
000382  2000              MOVS     r0,#0                 ;441
000384  e7d2              B        |L1.812|
                  |L1.902|
000386  f7fffffe          BL       VKL280_I2CStop
00038a  2000              MOVS     r0,#0                 ;446
00038c  e7ce              B        |L1.812|
;;;448    /*******************************************************************************
                          ENDP

                  VKL280_Lowlevel_Init PROC
;;;454    *******************************************************************************/
;;;455    void VKL280_Lowlevel_Init(void)
00038e  b510              PUSH     {r4,lr}
;;;456    {
;;;457    	//ͨߵƽͬӵƽת·
;;;458    	//˺ݿͻƬӦ޸	
;;;459    	GPIO_SetMode(VKL280_SCL_PORT, VKL280_SCL_PIN, GPIO_MODE_OUTPUT);
000390  2201              MOVS     r2,#1
000392  03d1              LSLS     r1,r2,#15
000394  480d              LDR      r0,|L1.972|
000396  f7fffffe          BL       GPIO_SetMode
;;;460    	GPIO_SetMode(VKL280_SDA_PORT, VKL280_SDA_PIN, GPIO_MODE_QUASI);
00039a  2203              MOVS     r2,#3
00039c  2120              MOVS     r1,#0x20
00039e  480b              LDR      r0,|L1.972|
0003a0  f7fffffe          BL       GPIO_SetMode
;;;461    	
;;;462      //I2C߿Ϊߵƽ	
;;;463    	VKL280_SCL_H();  
0003a4  2001              MOVS     r0,#1
0003a6  4908              LDR      r1,|L1.968|
0003a8  6008              STR      r0,[r1,#0]
;;;464    	VKL280_SDA_H(); 	
0003aa  4907              LDR      r1,|L1.968|
0003ac  3928              SUBS     r1,r1,#0x28
0003ae  6008              STR      r0,[r1,#0]
;;;465    }
0003b0  bd10              POP      {r4,pc}
;;;466    /*******************************************************************************
                          ENDP

                  VKL280_Init PROC
;;;472    *******************************************************************************/
;;;473    void VKL280_Init(void)
0003b2  b510              PUSH     {r4,lr}
;;;474    {	
;;;475    	//ܽøݿͻƬӦ޸
;;;476    	VKL280_Lowlevel_Init();
0003b4  f7fffffe          BL       VKL280_Lowlevel_Init
;;;477    	//ʼʱ
;;;478    	VKL280_InitSequence();
0003b8  f7fffffe          BL       VKL280_InitSequence
;;;479    }
0003bc  bd10              POP      {r4,pc}
;;;480    /************************END OF FILE****/
                          ENDP

                  VKL280_Exit_Shutoff PROC
;;;382    *******************************************************************************/
;;;383    void VKL280_Exit_Shutoff(void)
0003be  b510              PUSH     {r4,lr}
;;;384    {	
;;;385    	//˳ػģʽ³ʼʱ
;;;386    	VKL280_Init();
0003c0  f7fffffe          BL       VKL280_Init
;;;387    
;;;388    }
0003c4  bd10              POP      {r4,pc}
;;;389    /*******************************************************************************
                          ENDP

0003c6  0000              DCW      0x0000
                  |L1.968|
                          DCD      0x4000487c
                  |L1.972|
                          DCD      0x40004040

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

                  test_data
                          %        35

;*** Start embedded assembler ***

#line 1 "..\\Lcd_driver\\VKL280_DRV_BDIO.c"
	AREA ||.rev16_text||, CODE
	THUMB
	EXPORT |__asm___17_VKL280_DRV_BDIO_c_f70de489____REV16|
#line 114 "..\\..\\..\\Library\\CMSIS\\Include\\core_cmInstr.h"
|__asm___17_VKL280_DRV_BDIO_c_f70de489____REV16| PROC
#line 115

 rev16 r0, r0
 bx lr
	ENDP
	AREA ||.revsh_text||, CODE
	THUMB
	EXPORT |__asm___17_VKL280_DRV_BDIO_c_f70de489____REVSH|
#line 128
|__asm___17_VKL280_DRV_BDIO_c_f70de489____REVSH| PROC
#line 129

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
