; generated by Component: ARM Compiler 5.05 update 2 (build 169) Tool: ArmCC [4d0f38]
; commandline ArmCC [--list --debug -c --asm --interleave -o.\obj\vkl076_io_i2c_quasi.o --asm_dir=.\lst\ --list_dir=.\lst\ --depend=.\obj\vkl076_io_i2c_quasi.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..\exti_driver -I..\led_driver -I..\touch -I..\dotmatix_lcd -I..\KH -IC:\Users\Administator\Desktop\͹ϵ_VKL\VKL\VKL076_TESTCODE\project\VKL076_FUNC\Keil\RTE -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\4.3.0\CMSIS\Include -D__UVISION_VERSION=515 -D_RTE_ --omf_browse=.\obj\vkl076_io_i2c_quasi.crf ..\lcd_driver\VKL076_IO_I2C_QUASI.c]
                          THUMB

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

                  Delay_nuS PROC
;;;40     *******************************************************************************/
;;;41     void Delay_nuS(unsigned int n)	   
000000  e007              B        |L1.18|
                  |L1.2|
;;;42     {
;;;43     	unsigned char i;
;;;44     	while(n--)
;;;45     	{
;;;46     		i=10;
000002  210a              MOVS     r1,#0xa
;;;47     		while(i--)
000004  e000              B        |L1.8|
                  |L1.6|
;;;48     		{//nopָݵƬӦ޸
;;;49     			__nop();
000006  bf00              NOP      
                  |L1.8|
000008  000a              MOVS     r2,r1                 ;47
00000a  f1a10301          SUB      r3,r1,#1              ;47
00000e  b2d9              UXTB     r1,r3                 ;47
000010  d1f9              BNE      |L1.6|
                  |L1.18|
000012  0002              MOVS     r2,r0                 ;44
000014  f1a00001          SUB      r0,r0,#1              ;44
000018  d1f3              BNE      |L1.2|
;;;50     		}
;;;51     	}
;;;52     }
00001a  4770              BX       lr
;;;53     /*******************************************************************************
                          ENDP

                  Delay_nmS PROC
;;;59     *******************************************************************************/
;;;60     void Delay_nmS(unsigned long int n)
00001c  b510              PUSH     {r4,lr}
;;;61     {
00001e  4604              MOV      r4,r0
;;;62     	while(n--)
000020  e003              B        |L1.42|
                  |L1.34|
;;;63     	{
;;;64     		Delay_nuS(1000);
000022  f44f707a          MOV      r0,#0x3e8
000026  f7fffffe          BL       Delay_nuS
                  |L1.42|
00002a  0020              MOVS     r0,r4                 ;62
00002c  f1a40401          SUB      r4,r4,#1              ;62
000030  d1f7              BNE      |L1.34|
;;;65     	}
;;;66     }
000032  bd10              POP      {r4,pc}
;;;67     /*******************************************************************************
                          ENDP

                  VKL076_I2CStart PROC
;;;73     *******************************************************************************/
;;;74     void VKL076_I2CStart( void )
000034  b500              PUSH     {lr}
;;;75     {
;;;76       VKL076_SCL_H();
000036  2001              MOVS     r0,#1
000038  49f7              LDR      r1,|L1.1048|
00003a  6008              STR      r0,[r1,#0]
;;;77       VKL076_SDA_H();
00003c  49f6              LDR      r1,|L1.1048|
00003e  3928              SUBS     r1,r1,#0x28
000040  6008              STR      r0,[r1,#0]
;;;78       Delay_nuS(VKL076_CLK);
000042  2005              MOVS     r0,#5
000044  f7fffffe          BL       Delay_nuS
;;;79       VKL076_SDA_L();
000048  2000              MOVS     r0,#0
00004a  49f3              LDR      r1,|L1.1048|
00004c  3928              SUBS     r1,r1,#0x28
00004e  6008              STR      r0,[r1,#0]
;;;80       Delay_nuS(VKL076_CLK);
000050  2005              MOVS     r0,#5
000052  f7fffffe          BL       Delay_nuS
;;;81     }
000056  bd00              POP      {pc}
;;;82     /*******************************************************************************
                          ENDP

                  VKL076_I2CStop PROC
;;;88     *******************************************************************************/
;;;89     void VKL076_I2CStop( void )
000058  b500              PUSH     {lr}
;;;90     {
;;;91       VKL076_SCL_H();
00005a  2001              MOVS     r0,#1
00005c  49ee              LDR      r1,|L1.1048|
00005e  6008              STR      r0,[r1,#0]
;;;92       VKL076_SDA_L();
000060  2000              MOVS     r0,#0
000062  49ed              LDR      r1,|L1.1048|
000064  3928              SUBS     r1,r1,#0x28
000066  6008              STR      r0,[r1,#0]
;;;93       Delay_nuS(VKL076_CLK);
000068  2005              MOVS     r0,#5
00006a  f7fffffe          BL       Delay_nuS
;;;94       VKL076_SDA_H();
00006e  2001              MOVS     r0,#1
000070  49e9              LDR      r1,|L1.1048|
000072  3928              SUBS     r1,r1,#0x28
000074  6008              STR      r0,[r1,#0]
;;;95       Delay_nuS(VKL076_CLK);
000076  2005              MOVS     r0,#5
000078  f7fffffe          BL       Delay_nuS
;;;96     }
00007c  bd00              POP      {pc}
;;;97     /*******************************************************************************
                          ENDP

                  VKL076_I2CSlaveAck PROC
;;;103    *******************************************************************************/
;;;104    unsigned char VKL076_I2CSlaveAck( void )
00007e  b530              PUSH     {r4,r5,lr}
;;;105    {
;;;106      unsigned int TimeOut;
;;;107      unsigned char RetValue;
;;;108    	
;;;109      VKL076_SCL_L();
000080  2000              MOVS     r0,#0
000082  49e5              LDR      r1,|L1.1048|
000084  6008              STR      r0,[r1,#0]
;;;110      Delay_nuS(VKL076_CLK);
000086  2005              MOVS     r0,#5
000088  f7fffffe          BL       Delay_nuS
;;;111      VKL076_SCL_H();//9SCLʱ
00008c  2001              MOVS     r0,#1
00008e  49e2              LDR      r1,|L1.1048|
000090  6008              STR      r0,[r1,#0]
;;;112      TimeOut = 10000;
000092  f2427510          MOV      r5,#0x2710
;;;113      while( TimeOut-- > 0 )
000096  e007              B        |L1.168|
                  |L1.152|
;;;114      {
;;;115        if( VKL076_GET_SDA()!=0 )//ȡack
000098  48df              LDR      r0,|L1.1048|
00009a  3828              SUBS     r0,r0,#0x28
00009c  6800              LDR      r0,[r0,#0]
00009e  b108              CBZ      r0,|L1.164|
;;;116        {
;;;117          RetValue = 1;
0000a0  2401              MOVS     r4,#1
0000a2  e001              B        |L1.168|
                  |L1.164|
;;;118        }
;;;119        else
;;;120        {
;;;121          RetValue = 0;
0000a4  2400              MOVS     r4,#0
;;;122          break;
0000a6  e003              B        |L1.176|
                  |L1.168|
0000a8  0028              MOVS     r0,r5                 ;113
0000aa  f1a50501          SUB      r5,r5,#1              ;113
0000ae  d1f3              BNE      |L1.152|
                  |L1.176|
0000b0  bf00              NOP      
;;;123        }
;;;124      } 
;;;125    	VKL076_SCL_L(); //һʱΪ,ݻSTOPźš
0000b2  2000              MOVS     r0,#0
0000b4  49d8              LDR      r1,|L1.1048|
0000b6  6008              STR      r0,[r1,#0]
;;;126      
;;;127      return RetValue;
0000b8  4620              MOV      r0,r4
;;;128    }
0000ba  bd30              POP      {r4,r5,pc}
;;;129    /*******************************************************************************
                          ENDP

                  VKL076_I2CSendAck PROC
;;;135    *******************************************************************************/
;;;136    void VKL076_I2CSendAck( void )
0000bc  b500              PUSH     {lr}
;;;137    {
;;;138      VKL076_SCL_L();
0000be  2000              MOVS     r0,#0
0000c0  49d5              LDR      r1,|L1.1048|
0000c2  6008              STR      r0,[r1,#0]
;;;139      VKL076_SDA_L();
0000c4  49d4              LDR      r1,|L1.1048|
0000c6  3928              SUBS     r1,r1,#0x28
0000c8  6008              STR      r0,[r1,#0]
;;;140      Delay_nuS(VKL076_CLK*2);
0000ca  200a              MOVS     r0,#0xa
0000cc  f7fffffe          BL       Delay_nuS
;;;141      VKL076_SCL_H();
0000d0  2001              MOVS     r0,#1
0000d2  49d1              LDR      r1,|L1.1048|
0000d4  6008              STR      r0,[r1,#0]
;;;142      Delay_nuS(VKL076_CLK*2);
0000d6  200a              MOVS     r0,#0xa
0000d8  f7fffffe          BL       Delay_nuS
;;;143      VKL076_SCL_L();
0000dc  2000              MOVS     r0,#0
0000de  49ce              LDR      r1,|L1.1048|
0000e0  6008              STR      r0,[r1,#0]
;;;144      VKL076_SDA_H();
0000e2  2001              MOVS     r0,#1
0000e4  49cc              LDR      r1,|L1.1048|
0000e6  3928              SUBS     r1,r1,#0x28
0000e8  6008              STR      r0,[r1,#0]
;;;145    }
0000ea  bd00              POP      {pc}
;;;146    /*******************************************************************************
                          ENDP

                  VKL076_I2CSendNAck PROC
;;;152    *******************************************************************************/
;;;153    void VKL076_I2CSendNAck( void )
0000ec  b500              PUSH     {lr}
;;;154    {
;;;155      VKL076_SCL_L();
0000ee  2000              MOVS     r0,#0
0000f0  49c9              LDR      r1,|L1.1048|
0000f2  6008              STR      r0,[r1,#0]
;;;156      VKL076_SDA_H();
0000f4  2001              MOVS     r0,#1
0000f6  49c8              LDR      r1,|L1.1048|
0000f8  3928              SUBS     r1,r1,#0x28
0000fa  6008              STR      r0,[r1,#0]
;;;157      Delay_nuS(VKL076_CLK);
0000fc  2005              MOVS     r0,#5
0000fe  f7fffffe          BL       Delay_nuS
;;;158      VKL076_SCL_H();
000102  2001              MOVS     r0,#1
000104  49c4              LDR      r1,|L1.1048|
000106  6008              STR      r0,[r1,#0]
;;;159      Delay_nuS(VKL076_CLK);
000108  2005              MOVS     r0,#5
00010a  f7fffffe          BL       Delay_nuS
;;;160    }
00010e  bd00              POP      {pc}
;;;161    /*******************************************************************************
                          ENDP

                  VKL076_I2CWRCmd PROC
;;;167    *******************************************************************************/
;;;168    void VKL076_I2CWRCmd( unsigned char cmd )
000110  b530              PUSH     {r4,r5,lr}
;;;169    {
000112  4604              MOV      r4,r0
;;;170    	unsigned char i=8;
000114  2508              MOVS     r5,#8
;;;171    	
;;;172    	while (i--)
000116  e019              B        |L1.332|
                  |L1.280|
;;;173    	{ 
;;;174    		VKL076_SCL_L();
000118  2000              MOVS     r0,#0
00011a  49bf              LDR      r1,|L1.1048|
00011c  6008              STR      r0,[r1,#0]
;;;175    		if(cmd&0x80)
00011e  f0040080          AND      r0,r4,#0x80
000122  b120              CBZ      r0,|L1.302|
;;;176    			VKL076_SDA_H();
000124  2001              MOVS     r0,#1
000126  49bc              LDR      r1,|L1.1048|
000128  3928              SUBS     r1,r1,#0x28
00012a  6008              STR      r0,[r1,#0]
00012c  e003              B        |L1.310|
                  |L1.302|
;;;177    		else
;;;178    			VKL076_SDA_L();
00012e  2000              MOVS     r0,#0
000130  49b9              LDR      r1,|L1.1048|
000132  3928              SUBS     r1,r1,#0x28
000134  6008              STR      r0,[r1,#0]
                  |L1.310|
;;;179    		cmd<<=1; 
000136  0660              LSLS     r0,r4,#25
000138  0e04              LSRS     r4,r0,#24
;;;180    		Delay_nuS(VKL076_CLK);
00013a  2005              MOVS     r0,#5
00013c  f7fffffe          BL       Delay_nuS
;;;181    		VKL076_SCL_H();     
000140  2001              MOVS     r0,#1
000142  49b5              LDR      r1,|L1.1048|
000144  6008              STR      r0,[r1,#0]
;;;182    		Delay_nuS(VKL076_CLK);
000146  2005              MOVS     r0,#5
000148  f7fffffe          BL       Delay_nuS
                  |L1.332|
00014c  0028              MOVS     r0,r5                 ;172
00014e  f1a50101          SUB      r1,r5,#1              ;172
000152  b2cd              UXTB     r5,r1                 ;172
000154  d1e0              BNE      |L1.280|
;;;183    	}
;;;184    }
000156  bd30              POP      {r4,r5,pc}
;;;185    /*******************************************************************************
                          ENDP

                  VKL076_I2CWRDat PROC
;;;191    *******************************************************************************/
;;;192    void VKL076_I2CWRDat( unsigned char dat )
000158  b530              PUSH     {r4,r5,lr}
;;;193    {
00015a  4604              MOV      r4,r0
;;;194    	unsigned char i=8;
00015c  2508              MOVS     r5,#8
;;;195    	while (i--)
00015e  e018              B        |L1.402|
                  |L1.352|
;;;196    	{ 
;;;197    		VKL076_SCL_L();
000160  2000              MOVS     r0,#0
000162  49ad              LDR      r1,|L1.1048|
000164  6008              STR      r0,[r1,#0]
;;;198    		if(dat&0x01)
000166  f0040001          AND      r0,r4,#1
00016a  b120              CBZ      r0,|L1.374|
;;;199    			VKL076_SDA_H();
00016c  2001              MOVS     r0,#1
00016e  49aa              LDR      r1,|L1.1048|
000170  3928              SUBS     r1,r1,#0x28
000172  6008              STR      r0,[r1,#0]
000174  e003              B        |L1.382|
                  |L1.374|
;;;200    		else
;;;201    			VKL076_SDA_L();
000176  2000              MOVS     r0,#0
000178  49a7              LDR      r1,|L1.1048|
00017a  3928              SUBS     r1,r1,#0x28
00017c  6008              STR      r0,[r1,#0]
                  |L1.382|
;;;202    		dat>>=1; 
00017e  1064              ASRS     r4,r4,#1
;;;203    		Delay_nuS(VKL076_CLK);
000180  2005              MOVS     r0,#5
000182  f7fffffe          BL       Delay_nuS
;;;204    		VKL076_SCL_H();     
000186  2001              MOVS     r0,#1
000188  49a3              LDR      r1,|L1.1048|
00018a  6008              STR      r0,[r1,#0]
;;;205    		Delay_nuS(VKL076_CLK);
00018c  2005              MOVS     r0,#5
00018e  f7fffffe          BL       Delay_nuS
                  |L1.402|
000192  0028              MOVS     r0,r5                 ;195
000194  f1a50101          SUB      r1,r5,#1              ;195
000198  b2cd              UXTB     r5,r1                 ;195
00019a  d1e1              BNE      |L1.352|
;;;206    	}
;;;207    }
00019c  bd30              POP      {r4,r5,pc}
;;;208    
                          ENDP

                  VKL076_I2CRDDat PROC
;;;215    *******************************************************************************/
;;;216    unsigned char VKL076_I2CRDDat( void )
00019e  b530              PUSH     {r4,r5,lr}
;;;217    {
;;;218    	unsigned char i,RetValue;
;;;219    	
;;;220    	RetValue=0;	
0001a0  2400              MOVS     r4,#0
;;;221      for( i=0; i<8; i++ )
0001a2  2500              MOVS     r5,#0
0001a4  e014              B        |L1.464|
                  |L1.422|
;;;222      {
;;;223    		RetValue>>=1; 
0001a6  1064              ASRS     r4,r4,#1
;;;224    		VKL076_SCL_L();     
0001a8  2000              MOVS     r0,#0
0001aa  499b              LDR      r1,|L1.1048|
0001ac  6008              STR      r0,[r1,#0]
;;;225    		Delay_nuS(VKL076_CLK);
0001ae  2005              MOVS     r0,#5
0001b0  f7fffffe          BL       Delay_nuS
;;;226    		VKL076_SCL_H();
0001b4  2001              MOVS     r0,#1
0001b6  4998              LDR      r1,|L1.1048|
0001b8  6008              STR      r0,[r1,#0]
;;;227    		Delay_nuS(VKL076_CLK);
0001ba  2005              MOVS     r0,#5
0001bc  f7fffffe          BL       Delay_nuS
;;;228    		if( VKL076_GET_SDA()!=0 )
0001c0  4895              LDR      r0,|L1.1048|
0001c2  3828              SUBS     r0,r0,#0x28
0001c4  6800              LDR      r0,[r0,#0]
0001c6  b108              CBZ      r0,|L1.460|
;;;229    			RetValue|=0x80;
0001c8  f0440480          ORR      r4,r4,#0x80
                  |L1.460|
0001cc  1c68              ADDS     r0,r5,#1              ;221
0001ce  b2c5              UXTB     r5,r0                 ;221
                  |L1.464|
0001d0  2d08              CMP      r5,#8                 ;221
0001d2  dbe8              BLT      |L1.422|
;;;230    	}
;;;231      
;;;232      return RetValue;
0001d4  4620              MOV      r0,r4
;;;233    }
0001d6  bd30              POP      {r4,r5,pc}
;;;234    /*******************************************************************************
                          ENDP

                  WriteCmdVKL076 PROC
;;;240    *******************************************************************************/
;;;241    unsigned char  WriteCmdVKL076(unsigned char cmd)
0001d8  b510              PUSH     {r4,lr}
;;;242    {
0001da  4604              MOV      r4,r0
;;;243    	//STARTź	
;;;244    	VKL076_I2CStart(); 									
0001dc  f7fffffe          BL       VKL076_I2CStart
;;;245    	//SLAVEַ
;;;246    	VKL076_I2CWRCmd(VKL076_ADDRWR); 	
0001e0  207c              MOVS     r0,#0x7c
0001e2  f7fffffe          BL       VKL076_I2CWRCmd
;;;247    	if( 1 == VKL076_I2CSlaveAck() )
0001e6  f7fffffe          BL       VKL076_I2CSlaveAck
0001ea  2801              CMP      r0,#1
0001ec  d103              BNE      |L1.502|
;;;248    	{
;;;249    		VKL076_I2CStop();													
0001ee  f7fffffe          BL       VKL076_I2CStop
;;;250    		return 0;										
0001f2  2000              MOVS     r0,#0
                  |L1.500|
;;;251    	}
;;;252    	
;;;253    	VKL076_I2CWRCmd(cmd); 						
;;;254    	if( 1 == VKL076_I2CSlaveAck() )
;;;255    	{
;;;256    		VKL076_I2CStop();													
;;;257    		return 0;
;;;258    	}
;;;259    	//STOPź
;;;260    	 VKL076_I2CStop();											
;;;261    	 return 0;    
;;;262    }
0001f4  bd10              POP      {r4,pc}
                  |L1.502|
0001f6  4620              MOV      r0,r4                 ;253
0001f8  f7fffffe          BL       VKL076_I2CWRCmd
0001fc  f7fffffe          BL       VKL076_I2CSlaveAck
000200  2801              CMP      r0,#1                 ;254
000202  d103              BNE      |L1.524|
000204  f7fffffe          BL       VKL076_I2CStop
000208  2000              MOVS     r0,#0                 ;257
00020a  e7f3              B        |L1.500|
                  |L1.524|
00020c  f7fffffe          BL       VKL076_I2CStop
000210  2000              MOVS     r0,#0                 ;261
000212  e7ef              B        |L1.500|
;;;263    /*******************************************************************************
                          ENDP

                  WritenDataVKL076 PROC
;;;271    *******************************************************************************/
;;;272    unsigned char  WritenDataVKL076(unsigned char Addr,unsigned char *Databuf,unsigned char Cnt)
000214  b5f0              PUSH     {r4-r7,lr}
;;;273    {
000216  4606              MOV      r6,r0
000218  460c              MOV      r4,r1
00021a  4617              MOV      r7,r2
;;;274    	unsigned char n;
;;;275    	
;;;276    	//STARTź	
;;;277    	VKL076_I2CStart(); 									
00021c  f7fffffe          BL       VKL076_I2CStart
;;;278    	//SLAVEַ
;;;279    	VKL076_I2CWRCmd(VKL076_ADDRWR); 	
000220  207c              MOVS     r0,#0x7c
000222  f7fffffe          BL       VKL076_I2CWRCmd
;;;280    	if( 1 == VKL076_I2CSlaveAck() )
000226  f7fffffe          BL       VKL076_I2CSlaveAck
00022a  2801              CMP      r0,#1
00022c  d103              BNE      |L1.566|
;;;281    	{
;;;282    		VKL076_I2CStop();													
00022e  f7fffffe          BL       VKL076_I2CStop
;;;283    		return 0;										
000232  2000              MOVS     r0,#0
                  |L1.564|
;;;284    	}
;;;285    	//ʾRAMʼַ                            
;;;286    	VKL076_I2CWRCmd(VKL076_ADDR5_0); 
;;;287    	if( 1 == VKL076_I2CSlaveAck() )
;;;288    	{
;;;289    		VKL076_I2CStop();													
;;;290    		return 0; 
;;;291    	}
;;;292    	VKL076_I2CWRCmd(Addr&0x1f); 						
;;;293    	if( 1 == VKL076_I2CSlaveAck() )
;;;294    	{
;;;295    		VKL076_I2CStop();													
;;;296    		return 0;
;;;297    	}
;;;298    	//CntݵʾRAM
;;;299    	for(n=0;n<Cnt;n++)
;;;300    	{ 
;;;301    		VKL076_I2CWRDat(*Databuf++);
;;;302    		if( VKL076_I2CSlaveAck()==1 )
;;;303    		{
;;;304    			VKL076_I2CStop();													
;;;305    			return 0;
;;;306    		}
;;;307    	}
;;;308    	//STOPź
;;;309    	 VKL076_I2CStop();											
;;;310    	 return 0;    
;;;311    }
000234  bdf0              POP      {r4-r7,pc}
                  |L1.566|
000236  20e8              MOVS     r0,#0xe8              ;286
000238  f7fffffe          BL       VKL076_I2CWRCmd
00023c  f7fffffe          BL       VKL076_I2CSlaveAck
000240  2801              CMP      r0,#1                 ;287
000242  d103              BNE      |L1.588|
000244  f7fffffe          BL       VKL076_I2CStop
000248  2000              MOVS     r0,#0                 ;290
00024a  e7f3              B        |L1.564|
                  |L1.588|
00024c  f006001f          AND      r0,r6,#0x1f           ;292
000250  f7fffffe          BL       VKL076_I2CWRCmd
000254  f7fffffe          BL       VKL076_I2CSlaveAck
000258  2801              CMP      r0,#1                 ;293
00025a  d103              BNE      |L1.612|
00025c  f7fffffe          BL       VKL076_I2CStop
000260  2000              MOVS     r0,#0                 ;296
000262  e7e7              B        |L1.564|
                  |L1.612|
000264  2500              MOVS     r5,#0                 ;299
000266  e00d              B        |L1.644|
                  |L1.616|
000268  f8140b01          LDRB     r0,[r4],#1            ;301
00026c  f7fffffe          BL       VKL076_I2CWRDat
000270  f7fffffe          BL       VKL076_I2CSlaveAck
000274  2801              CMP      r0,#1                 ;302
000276  d103              BNE      |L1.640|
000278  f7fffffe          BL       VKL076_I2CStop
00027c  2000              MOVS     r0,#0                 ;305
00027e  e7d9              B        |L1.564|
                  |L1.640|
000280  1c68              ADDS     r0,r5,#1              ;299
000282  b2c5              UXTB     r5,r0                 ;299
                  |L1.644|
000284  42bd              CMP      r5,r7                 ;299
000286  dbef              BLT      |L1.616|
000288  f7fffffe          BL       VKL076_I2CStop
00028c  2000              MOVS     r0,#0                 ;310
00028e  e7d1              B        |L1.564|
;;;312    
                          ENDP

                  ReadnDataVKL076 PROC
;;;321    *******************************************************************************/
;;;322    unsigned char  ReadnDataVKL076(unsigned char Addr,unsigned char *Databuf,unsigned char Cnt)
000290  b5f0              PUSH     {r4-r7,lr}
;;;323    {
000292  4606              MOV      r6,r0
000294  460c              MOV      r4,r1
000296  4617              MOV      r7,r2
;;;324    	unsigned char n;
;;;325    	
;;;326    	//STARTź	
;;;327    	VKL076_I2CStart(); 									
000298  f7fffffe          BL       VKL076_I2CStart
;;;328    	//SLAVEַд
;;;329    	VKL076_I2CWRCmd(VKL076_ADDRWR); 	
00029c  207c              MOVS     r0,#0x7c
00029e  f7fffffe          BL       VKL076_I2CWRCmd
;;;330    	if( 1 == VKL076_I2CSlaveAck() )
0002a2  f7fffffe          BL       VKL076_I2CSlaveAck
0002a6  2801              CMP      r0,#1
0002a8  d103              BNE      |L1.690|
;;;331    	{
;;;332    		VKL076_I2CStop();													
0002aa  f7fffffe          BL       VKL076_I2CStop
;;;333    		return 0;										
0002ae  2000              MOVS     r0,#0
                  |L1.688|
;;;334    	}
;;;335    	//ʾRAMʼַ                            
;;;336    	VKL076_I2CWRCmd(VKL076_ADDR5_0); 
;;;337    	if( 1 == VKL076_I2CSlaveAck() )
;;;338    	{
;;;339    		VKL076_I2CStop();													
;;;340    		return 0; 
;;;341    	}
;;;342    	VKL076_I2CWRCmd(Addr&0x1f); 						
;;;343    	if( 1 == VKL076_I2CSlaveAck() )
;;;344    	{
;;;345    		VKL076_I2CStop();													
;;;346    		return 0;
;;;347    	}
;;;348    	//STOPź
;;;349    	 VKL076_I2CStop();	
;;;350    	//STARTź	
;;;351    	VKL076_I2CStart(); 									
;;;352    	//SLAVEַ
;;;353    	VKL076_I2CWRCmd(VKL076_ADDRRD); 	
;;;354    	if( 1 == VKL076_I2CSlaveAck() )
;;;355    	{
;;;356    		VKL076_I2CStop();													
;;;357    		return 0;										
;;;358    	}	
;;;359    	//CntݵʾRAM
;;;360    	for(n=0;n<Cnt-1;n++)
;;;361    	{ 
;;;362    		*Databuf++=VKL076_I2CRDDat();
;;;363    		VKL076_I2CSendAck();
;;;364    	}
;;;365    	*Databuf++=VKL076_I2CRDDat();
;;;366    	VKL076_I2CSendNAck();
;;;367    	//STOPź
;;;368    	 VKL076_I2CStop();											
;;;369    	 return 0;    
;;;370    }
0002b0  bdf0              POP      {r4-r7,pc}
                  |L1.690|
0002b2  20e8              MOVS     r0,#0xe8              ;336
0002b4  f7fffffe          BL       VKL076_I2CWRCmd
0002b8  f7fffffe          BL       VKL076_I2CSlaveAck
0002bc  2801              CMP      r0,#1                 ;337
0002be  d103              BNE      |L1.712|
0002c0  f7fffffe          BL       VKL076_I2CStop
0002c4  2000              MOVS     r0,#0                 ;340
0002c6  e7f3              B        |L1.688|
                  |L1.712|
0002c8  f006001f          AND      r0,r6,#0x1f           ;342
0002cc  f7fffffe          BL       VKL076_I2CWRCmd
0002d0  f7fffffe          BL       VKL076_I2CSlaveAck
0002d4  2801              CMP      r0,#1                 ;343
0002d6  d103              BNE      |L1.736|
0002d8  f7fffffe          BL       VKL076_I2CStop
0002dc  2000              MOVS     r0,#0                 ;346
0002de  e7e7              B        |L1.688|
                  |L1.736|
0002e0  f7fffffe          BL       VKL076_I2CStop
0002e4  f7fffffe          BL       VKL076_I2CStart
0002e8  207d              MOVS     r0,#0x7d              ;353
0002ea  f7fffffe          BL       VKL076_I2CWRCmd
0002ee  f7fffffe          BL       VKL076_I2CSlaveAck
0002f2  2801              CMP      r0,#1                 ;354
0002f4  d103              BNE      |L1.766|
0002f6  f7fffffe          BL       VKL076_I2CStop
0002fa  2000              MOVS     r0,#0                 ;357
0002fc  e7d8              B        |L1.688|
                  |L1.766|
0002fe  2500              MOVS     r5,#0                 ;360
000300  e007              B        |L1.786|
                  |L1.770|
000302  f7fffffe          BL       VKL076_I2CRDDat
000306  f8040b01          STRB     r0,[r4],#1            ;362
00030a  f7fffffe          BL       VKL076_I2CSendAck
00030e  1c68              ADDS     r0,r5,#1              ;360
000310  b2c5              UXTB     r5,r0                 ;360
                  |L1.786|
000312  1e78              SUBS     r0,r7,#1              ;360
000314  42a8              CMP      r0,r5                 ;360
000316  dcf4              BGT      |L1.770|
000318  f7fffffe          BL       VKL076_I2CRDDat
00031c  f8040b01          STRB     r0,[r4],#1            ;365
000320  f7fffffe          BL       VKL076_I2CSendNAck
000324  f7fffffe          BL       VKL076_I2CStop
000328  2000              MOVS     r0,#0                 ;369
00032a  e7c1              B        |L1.688|
;;;371    /*******************************************************************************
                          ENDP

                  VKL076_DisAll PROC
;;;378    *******************************************************************************/
;;;379    void VKL076_DisAll(unsigned char dat)
00032c  b530              PUSH     {r4,r5,lr}
;;;380    {
00032e  4605              MOV      r5,r0
;;;381    	unsigned char segi;
;;;382    	
;;;383    	for(segi=0;segi<16;segi++)
000330  2400              MOVS     r4,#0
000332  e003              B        |L1.828|
                  |L1.820|
;;;384    	{
;;;385    		VKL076_dispram[segi]=dat;
000334  4839              LDR      r0,|L1.1052|
000336  5505              STRB     r5,[r0,r4]
000338  1c60              ADDS     r0,r4,#1              ;383
00033a  b2c4              UXTB     r4,r0                 ;383
                  |L1.828|
00033c  2c10              CMP      r4,#0x10              ;383
00033e  dbf9              BLT      |L1.820|
;;;386    	}
;;;387    	WritenDataVKL076(0,VKL076_dispram,16);	//8bitݶӦ2SEGÿ4bitݵַ1ÿ8λ1ACK
000340  2210              MOVS     r2,#0x10
000342  4936              LDR      r1,|L1.1052|
000344  2000              MOVS     r0,#0
000346  f7fffffe          BL       WritenDataVKL076
;;;388    }
00034a  bd30              POP      {r4,r5,pc}
;;;389    /*******************************************************************************
                          ENDP

                  VKL076_DisDotOn PROC
;;;396    *******************************************************************************/
;;;397    void VKL076_DisDotOn(unsigned char seg,unsigned char com)
00034c  b5f8              PUSH     {r3-r7,lr}
;;;398    {
00034e  4604              MOV      r4,r0
000350  460d              MOV      r5,r1
;;;399    	unsigned char addrbyte,addrbit,tempdat;
;;;400    	
;;;401    	//com/segӦʾRAMַbit
;;;402    	addrbyte=seg/2*2;
000352  4620              MOV      r0,r4
000354  eb0471d0          ADD      r1,r4,r0,LSR #31
000358  1049              ASRS     r1,r1,#1
00035a  0649              LSLS     r1,r1,#25
00035c  0e0f              LSRS     r7,r1,#24
;;;403    	if((seg%2)==0)
00035e  eb0471d0          ADD      r1,r4,r0,LSR #31
000362  1049              ASRS     r1,r1,#1
000364  eba40141          SUB      r1,r4,r1,LSL #1
000368  b919              CBNZ     r1,|L1.882|
;;;404    		addrbit=(1<<com);
00036a  2001              MOVS     r0,#1
00036c  40a8              LSLS     r0,r0,r5
00036e  b2c6              UXTB     r6,r0
000370  e003              B        |L1.890|
                  |L1.882|
;;;405    	else
;;;406    		addrbit=(1<<(4+com));
000372  1d28              ADDS     r0,r5,#4
000374  2101              MOVS     r1,#1
000376  4081              LSLS     r1,r1,r0
000378  b2ce              UXTB     r6,r1
                  |L1.890|
;;;407    	tempdat=VKL076_dispram[seg/2]|addrbit;
00037a  4620              MOV      r0,r4
00037c  eb0471d0          ADD      r1,r4,r0,LSR #31
000380  1049              ASRS     r1,r1,#1
000382  4a26              LDR      r2,|L1.1052|
000384  5c51              LDRB     r1,[r2,r1]
000386  4331              ORRS     r1,r1,r6
000388  9100              STR      r1,[sp,#0]
;;;408    	VKL076_dispram[seg/2]=tempdat;
00038a  f89d1000          LDRB     r1,[sp,#0]
00038e  eb0472d0          ADD      r2,r4,r0,LSR #31
000392  1052              ASRS     r2,r2,#1
000394  4b21              LDR      r3,|L1.1052|
000396  5499              STRB     r1,[r3,r2]
;;;409    	WritenDataVKL076(addrbyte,&tempdat,1);		//8bitݶӦ2SEGseg/comӦbit17bitı
000398  2201              MOVS     r2,#1
00039a  4669              MOV      r1,sp
00039c  4638              MOV      r0,r7
00039e  f7fffffe          BL       WritenDataVKL076
;;;410    }
0003a2  bdf8              POP      {r3-r7,pc}
;;;411    /*******************************************************************************
                          ENDP

                  VKL076_DisDotOff PROC
;;;418    *******************************************************************************/
;;;419    void VKL076_DisDotOff(unsigned char seg,unsigned char com)
0003a4  b5f8              PUSH     {r3-r7,lr}
;;;420    {
0003a6  4604              MOV      r4,r0
0003a8  460d              MOV      r5,r1
;;;421    	unsigned char addrbyte,addrbit,tempdat;
;;;422    	
;;;423    	//com/segӦʾRAMַbit
;;;424    	addrbyte=seg/2*2;
0003aa  4620              MOV      r0,r4
0003ac  eb0471d0          ADD      r1,r4,r0,LSR #31
0003b0  1049              ASRS     r1,r1,#1
0003b2  0649              LSLS     r1,r1,#25
0003b4  0e0f              LSRS     r7,r1,#24
;;;425    	if((seg%2)==0)
0003b6  eb0471d0          ADD      r1,r4,r0,LSR #31
0003ba  1049              ASRS     r1,r1,#1
0003bc  eba40141          SUB      r1,r4,r1,LSL #1
0003c0  b919              CBNZ     r1,|L1.970|
;;;426    		addrbit=(1<<com);
0003c2  2001              MOVS     r0,#1
0003c4  40a8              LSLS     r0,r0,r5
0003c6  b2c6              UXTB     r6,r0
0003c8  e003              B        |L1.978|
                  |L1.970|
;;;427    	else
;;;428    		addrbit=(1<<(4+com));
0003ca  1d28              ADDS     r0,r5,#4
0003cc  2101              MOVS     r1,#1
0003ce  4081              LSLS     r1,r1,r0
0003d0  b2ce              UXTB     r6,r1
                  |L1.978|
;;;429    	tempdat=VKL076_dispram[seg/2]&(~addrbit);
0003d2  4620              MOV      r0,r4
0003d4  eb0471d0          ADD      r1,r4,r0,LSR #31
0003d8  1049              ASRS     r1,r1,#1
0003da  4a10              LDR      r2,|L1.1052|
0003dc  5c51              LDRB     r1,[r2,r1]
0003de  43b1              BICS     r1,r1,r6
0003e0  9100              STR      r1,[sp,#0]
;;;430    	VKL076_dispram[seg/2]=tempdat;
0003e2  f89d1000          LDRB     r1,[sp,#0]
0003e6  eb0472d0          ADD      r2,r4,r0,LSR #31
0003ea  1052              ASRS     r2,r2,#1
0003ec  4b0b              LDR      r3,|L1.1052|
0003ee  5499              STRB     r1,[r3,r2]
;;;431    	WritenDataVKL076(addrbyte,&tempdat,1);		//8bitݶӦ2SEGseg/comӦbit07bitı
0003f0  2201              MOVS     r2,#1
0003f2  4669              MOV      r1,sp
0003f4  4638              MOV      r0,r7
0003f6  f7fffffe          BL       WritenDataVKL076
;;;432    }
0003fa  bdf8              POP      {r3-r7,pc}
;;;433    /*******************************************************************************
                          ENDP

                  VKL076_Enter_PowerOff PROC
;;;439    *******************************************************************************/
;;;440    unsigned char VKL076_Enter_PowerOff(void)
0003fc  b500              PUSH     {lr}
;;;441    {		
;;;442    	VKL076_I2CStart();
0003fe  f7fffffe          BL       VKL076_I2CStart
;;;443    	VKL076_I2CWRCmd(VKL076_ADDRWR); 
000402  207c              MOVS     r0,#0x7c
000404  f7fffffe          BL       VKL076_I2CWRCmd
;;;444    	if( 1 == VKL076_I2CSlaveAck() )
000408  f7fffffe          BL       VKL076_I2CSlaveAck
00040c  2801              CMP      r0,#1
00040e  d107              BNE      |L1.1056|
;;;445    	{
;;;446    		VKL076_I2CStop();
000410  f7fffffe          BL       VKL076_I2CStop
;;;447    		return 1; 
000414  2001              MOVS     r0,#1
                  |L1.1046|
;;;448    	}
;;;449    	VKL076_I2CWRCmd(VKL076_LCD_OFF);		//ʾ
;;;450    	if( 1 == VKL076_I2CSlaveAck() )
;;;451    	{
;;;452    		VKL076_I2CStop();
;;;453    		return 1; 
;;;454    	}
;;;455    	VKL076_I2CStop();
;;;456      return 0; 
;;;457    }
000416  bd00              POP      {pc}
                  |L1.1048|
                          DCD      0x4000487c
                  |L1.1052|
                          DCD      VKL076_dispram
                  |L1.1056|
000420  20c0              MOVS     r0,#0xc0              ;449
000422  f7fffffe          BL       VKL076_I2CWRCmd
000426  f7fffffe          BL       VKL076_I2CSlaveAck
00042a  2801              CMP      r0,#1                 ;450
00042c  d103              BNE      |L1.1078|
00042e  f7fffffe          BL       VKL076_I2CStop
000432  2001              MOVS     r0,#1                 ;453
000434  e7ef              B        |L1.1046|
                  |L1.1078|
000436  f7fffffe          BL       VKL076_I2CStop
00043a  2000              MOVS     r0,#0                 ;456
00043c  e7eb              B        |L1.1046|
;;;458    /*******************************************************************************
                          ENDP

                  VKL076_InitSequence PROC
;;;480    *******************************************************************************/
;;;481    unsigned char VKL076_InitSequence(void)
00043e  b500              PUSH     {lr}
;;;482    {			
;;;483      //ϵʼʱ򣨲οֲϵ縴λʱͼͲ	
;;;484    	//ϵ100uSʼ
;;;485      Delay_nuS(100);
000440  2064              MOVS     r0,#0x64
000442  f7fffffe          BL       Delay_nuS
;;;486    	//STOPź
;;;487    	VKL076_I2CStop();
000446  f7fffffe          BL       VKL076_I2CStop
;;;488    	//STARTź
;;;489    	VKL076_I2CStart();
00044a  f7fffffe          BL       VKL076_I2CStart
;;;490    	//SLAVEַ(0x7C)
;;;491    	VKL076_I2CWRCmd(VKL076_ADDRWR); 
00044e  207c              MOVS     r0,#0x7c
000450  f7fffffe          BL       VKL076_I2CWRCmd
;;;492    	if( 1 == VKL076_I2CSlaveAck() )
000454  f7fffffe          BL       VKL076_I2CSlaveAck
000458  2801              CMP      r0,#1
00045a  d103              BNE      |L1.1124|
;;;493    	{
;;;494    		VKL076_I2CStop();	
00045c  f7fffffe          BL       VKL076_I2CStop
;;;495    		return 1;
000460  2001              MOVS     r0,#1
                  |L1.1122|
;;;496    	}
;;;497    	//ϵͳ(λ)
;;;498    	VKL076_I2CWRCmd(VKL076_SOFTRST);
;;;499    	if( 1 == VKL076_I2CSlaveAck() )
;;;500    	{
;;;501    		VKL076_I2CStop();	
;;;502    		return 1;
;;;503    	}
;;;504    	//ʾ(֡Ƶģʽʽ)ΪʵƷֵο
;;;505    	//VKL076_I2CWRCmd(VKL076_FR80HZ|VKL076_SRNOR|VKL076_LINER);  	//ϵĬ 	VDD=5V:18.2uA  	VDD=3.3V:13uA
;;;506    	VKL076_I2CWRCmd(VKL076_FR53HZ|VKL076_SRPM1|VKL076_FRAMER);  //ʡ 		VDD=5V:9.1uA  VDD=3.3V:6.8uA
;;;507    	//VKL076_I2CWRCmd(VKL076_FR80HZ|VKL076_SRHP|VKL076_LINER);  	// 			VDD=5V:20uA  	VDD=3.3V:15uA 
;;;508    	if( 1 == VKL076_I2CSlaveAck() )
;;;509    	{
;;;510    		VKL076_I2CStop();	
;;;511    		return 1;
;;;512    	}
;;;513      //ģʽ
;;;514    	VKL076_I2CWRCmd(VKL076_BIAS_1_3|VKL076_LCD_ON);		//1/3bias,ʾ 
;;;515    	//VKL076_I2CWRCmd(VKL076_BIAS_1_2|VKL076_LCD_ON);		//1/2bias,ʾ 
;;;516    	if( 1 == VKL076_I2CSlaveAck() )
;;;517    	{
;;;518    		VKL076_I2CStop();	
;;;519    		return 1;
;;;520    	}
;;;521    	//STOPź
;;;522    	VKL076_I2CStop();	
;;;523    		
;;;524      return  0; 
;;;525    }
000462  bd00              POP      {pc}
                  |L1.1124|
000464  20ea              MOVS     r0,#0xea              ;498
000466  f7fffffe          BL       VKL076_I2CWRCmd
00046a  f7fffffe          BL       VKL076_I2CSlaveAck
00046e  2801              CMP      r0,#1                 ;499
000470  d103              BNE      |L1.1146|
000472  f7fffffe          BL       VKL076_I2CStop
000476  2001              MOVS     r0,#1                 ;502
000478  e7f3              B        |L1.1122|
                  |L1.1146|
00047a  20bc              MOVS     r0,#0xbc              ;506
00047c  f7fffffe          BL       VKL076_I2CWRCmd
000480  f7fffffe          BL       VKL076_I2CSlaveAck
000484  2801              CMP      r0,#1                 ;508
000486  d103              BNE      |L1.1168|
000488  f7fffffe          BL       VKL076_I2CStop
00048c  2001              MOVS     r0,#1                 ;511
00048e  e7e8              B        |L1.1122|
                  |L1.1168|
000490  20c8              MOVS     r0,#0xc8              ;514
000492  f7fffffe          BL       VKL076_I2CWRCmd
000496  f7fffffe          BL       VKL076_I2CSlaveAck
00049a  2801              CMP      r0,#1                 ;516
00049c  d103              BNE      |L1.1190|
00049e  f7fffffe          BL       VKL076_I2CStop
0004a2  2001              MOVS     r0,#1                 ;519
0004a4  e7dd              B        |L1.1122|
                  |L1.1190|
0004a6  f7fffffe          BL       VKL076_I2CStop
0004aa  2000              MOVS     r0,#0                 ;524
0004ac  e7d9              B        |L1.1122|
;;;526    /*******************************************************************************
                          ENDP

                  VKL076_Exit_PowerOff PROC
;;;464    *******************************************************************************/
;;;465    unsigned char VKL076_Exit_PowerOff(void)
0004ae  b510              PUSH     {r4,lr}
;;;466    {	
;;;467    	unsigned char errorflag; 
;;;468    	
;;;469    	//˳ģʽ³ʼʱ
;;;470    	errorflag=VKL076_InitSequence();
0004b0  f7fffffe          BL       VKL076_InitSequence
0004b4  4604              MOV      r4,r0
;;;471    	
;;;472      return(errorflag);
0004b6  4620              MOV      r0,r4
;;;473    }
0004b8  bd10              POP      {r4,pc}
;;;474    /*******************************************************************************
                          ENDP

                  VKL076_Lowlevel_Init PROC
;;;532    *******************************************************************************/
;;;533    void VKL076_Lowlevel_Init(void)
0004ba  b510              PUSH     {r4,lr}
;;;534    {
;;;535    	//ͨߵƽͬӵƽת·
;;;536    	//˺ݿͻƬӦ޸	
;;;537    	GPIO_SetMode(VKL076_SCL_PORT, VKL076_SCL_PIN, GPIO_MODE_OUTPUT);
0004bc  2201              MOVS     r2,#1
0004be  03d1              LSLS     r1,r2,#15
0004c0  4868              LDR      r0,|L1.1636|
0004c2  f7fffffe          BL       GPIO_SetMode
;;;538    	GPIO_SetMode(VKL076_SDA_PORT, VKL076_SDA_PIN, GPIO_MODE_QUASI);
0004c6  2203              MOVS     r2,#3
0004c8  2120              MOVS     r1,#0x20
0004ca  4866              LDR      r0,|L1.1636|
0004cc  f7fffffe          BL       GPIO_SetMode
;;;539    	
;;;540      //I2C߿Ϊߵƽ	
;;;541    	VKL076_SCL_H();  
0004d0  2001              MOVS     r0,#1
0004d2  4965              LDR      r1,|L1.1640|
0004d4  6008              STR      r0,[r1,#0]
;;;542    	VKL076_SDA_H(); 	
0004d6  4964              LDR      r1,|L1.1640|
0004d8  3928              SUBS     r1,r1,#0x28
0004da  6008              STR      r0,[r1,#0]
;;;543    }
0004dc  bd10              POP      {r4,pc}
;;;544    /*******************************************************************************
                          ENDP

                  VKL076_Init PROC
;;;550    *******************************************************************************/
;;;551    void VKL076_Init(void)
0004de  b510              PUSH     {r4,lr}
;;;552    {	
;;;553    	//ܽøݿͻƬӦ޸
;;;554    	VKL076_Lowlevel_Init();
0004e0  f7fffffe          BL       VKL076_Lowlevel_Init
;;;555    	//ʼʱ
;;;556    	VKL076_InitSequence();
0004e4  f7fffffe          BL       VKL076_InitSequence
;;;557    }
0004e8  bd10              POP      {r4,pc}
;;;558    /*******************************************************************************
                          ENDP

                  VKL076_Main PROC
;;;564    *******************************************************************************/
;;;565    void VKL076_Main(void)
0004ea  f7fffffe          BL       VKL076_Init
;;;566    {	
;;;567    	VKL076_Init();
;;;568    	
;;;569    	//ѡⲿʱ(OSCI)ƵΪ32KHz(ʵ֡ƵƵ)
;;;570    	//WriteCmdVKL076(VKL076_EXTCLK); //ʾַʱVKL076_ADDRWR5bit0һҪ1
;;;571    	
;;;572    	//˸
;;;573    	//WriteCmdVKL076(VKL076_BLKCTL_05HZ); //˸Ƶ0.5Hz
;;;574    	//WriteCmdVKL076(VKL076_BLKCTL_1HZ); 	//˸Ƶ1Hz
;;;575    	WriteCmdVKL076(VKL076_BLKCTL_2HZ); 	//˸Ƶ2Hz
0004ee  20f3              MOVS     r0,#0xf3
0004f0  f7fffffe          BL       WriteCmdVKL076
;;;576    	//WriteCmdVKL076(VKL076_BLKCTL_OFF);	//˸ر
;;;577    	
;;;578    	//ȫǿƿ
;;;579    	WriteCmdVKL076(VKL076_APCTL_ALLON2);	
0004f4  20fe              MOVS     r0,#0xfe
0004f6  f7fffffe          BL       WriteCmdVKL076
;;;580    	Delay_nmS(3000);					//ʱ
0004fa  f64030b8          MOV      r0,#0xbb8
0004fe  f7fffffe          BL       Delay_nmS
;;;581    	//ȫǿƹ
;;;582    	WriteCmdVKL076(VKL076_APCTL_ALLOFF1);
000502  20fd              MOVS     r0,#0xfd
000504  f7fffffe          BL       WriteCmdVKL076
;;;583    	Delay_nmS(1000);					//ʱ
000508  f44f707a          MOV      r0,#0x3e8
00050c  f7fffffe          BL       Delay_nmS
;;;584    	
;;;585    	//ȫǿȡ,ָ
;;;586    	WriteCmdVKL076(VKL076_APCTL_NORMAL);
000510  20fc              MOVS     r0,#0xfc
000512  f7fffffe          BL       WriteCmdVKL076
;;;587    	WriteCmdVKL076(VKL076_BLKCTL_OFF);	//˸ر
000516  20f0              MOVS     r0,#0xf0
000518  f7fffffe          BL       WriteCmdVKL076
;;;588    	
;;;589    	VKL076_DisAll(0x00);
00051c  2000              MOVS     r0,#0
00051e  f7fffffe          BL       VKL076_DisAll
;;;590    	while(1)
000522  e09e              B        |L1.1634|
                  |L1.1316|
;;;591    	{		
;;;592    		//LCDȫ
;;;593    		VKL076_DisAll(0xFF);			
000524  20ff              MOVS     r0,#0xff
000526  f7fffffe          BL       VKL076_DisAll
;;;594    		Delay_nmS(3000);					//ʱ
00052a  f64030b8          MOV      r0,#0xbb8
00052e  f7fffffe          BL       Delay_nmS
;;;595    		
;;;596    		//LCDȫ
;;;597    		VKL076_DisAll(0x00);			
000532  2000              MOVS     r0,#0
000534  f7fffffe          BL       VKL076_DisAll
;;;598    		Delay_nmS(3000);					//ʱ
000538  f64030b8          MOV      r0,#0xbb8
00053c  f7fffffe          BL       Delay_nmS
;;;599    	
;;;600    		//LCD
;;;601    		VKL076_DisAll(0x55);			
000540  2055              MOVS     r0,#0x55
000542  f7fffffe          BL       VKL076_DisAll
;;;602    		ReadnDataVKL076(0,VKL076_readbuf,16);	//RAM
000546  2210              MOVS     r2,#0x10
000548  4948              LDR      r1,|L1.1644|
00054a  2000              MOVS     r0,#0
00054c  f7fffffe          BL       ReadnDataVKL076
;;;603    		Delay_nmS(1500);					//ʱ
000550  f24050dc          MOV      r0,#0x5dc
000554  f7fffffe          BL       Delay_nmS
;;;604    		VKL076_DisAll(0xAA);			
000558  20aa              MOVS     r0,#0xaa
00055a  f7fffffe          BL       VKL076_DisAll
;;;605    		ReadnDataVKL076(0,VKL076_readbuf,16);	//RAM
00055e  2210              MOVS     r2,#0x10
000560  4942              LDR      r1,|L1.1644|
000562  2000              MOVS     r0,#0
000564  f7fffffe          BL       ReadnDataVKL076
;;;606    		Delay_nmS(1500);					//ʱ
000568  f24050dc          MOV      r0,#0x5dc
00056c  f7fffffe          BL       Delay_nmS
;;;607    		
;;;608    		//
;;;609    		VKL076_DisAll(0x00);			//LCDȫ		
000570  2000              MOVS     r0,#0
000572  f7fffffe          BL       VKL076_DisAll
;;;610    		VKL076_Enter_PowerOff();	//ģʽ
000576  f7fffffe          BL       VKL076_Enter_PowerOff
;;;611    		Delay_nmS(5000);					//ʱ5S		
00057a  f2413088          MOV      r0,#0x1388
00057e  f7fffffe          BL       Delay_nmS
;;;612    		VKL076_Exit_PowerOff();	//˳ģʽ
000582  f7fffffe          BL       VKL076_Exit_PowerOff
;;;613    				
;;;614    			//LCD
;;;615    		VKL076_DisAll(0x00);			//LCDȫ
000586  2000              MOVS     r0,#0
000588  f7fffffe          BL       VKL076_DisAll
;;;616    		Delay_nmS(500);						//ʱ
00058c  f44f70fa          MOV      r0,#0x1f4
000590  f7fffffe          BL       Delay_nmS
;;;617    		for(VKL076_segi=0;VKL076_segi<19;VKL076_segi++)//seg9-27
000594  2000              MOVS     r0,#0
000596  4936              LDR      r1,|L1.1648|
000598  7008              STRB     r0,[r1,#0]
00059a  e025              B        |L1.1512|
                  |L1.1436|
;;;618    		{
;;;619    			for(VKL076_comi=0;VKL076_comi<4;VKL076_comi++)//com0-3
00059c  2000              MOVS     r0,#0
00059e  4935              LDR      r1,|L1.1652|
0005a0  7008              STRB     r0,[r1,#0]
0005a2  e018              B        |L1.1494|
                  |L1.1444|
;;;620    			{
;;;621    				VKL076_DisDotOn(VKL076_segtab[VKL076_segi],VKL076_comi);		//LCD
0005a4  4934              LDR      r1,|L1.1656|
0005a6  4a32              LDR      r2,|L1.1648|
0005a8  7812              LDRB     r2,[r2,#0]  ; VKL076_segi
0005aa  5c88              LDRB     r0,[r1,r2]
0005ac  4931              LDR      r1,|L1.1652|
0005ae  7809              LDRB     r1,[r1,#0]  ; VKL076_comi
0005b0  f7fffffe          BL       VKL076_DisDotOn
;;;622    				Delay_nmS(300);				//ʱ
0005b4  f44f7096          MOV      r0,#0x12c
0005b8  f7fffffe          BL       Delay_nmS
;;;623    				VKL076_DisDotOff(VKL076_segtab[VKL076_segi],VKL076_comi);		//ϵʵֵδ˳
0005bc  492e              LDR      r1,|L1.1656|
0005be  4a2c              LDR      r2,|L1.1648|
0005c0  7812              LDRB     r2,[r2,#0]  ; VKL076_segi
0005c2  5c88              LDRB     r0,[r1,r2]
0005c4  492b              LDR      r1,|L1.1652|
0005c6  7809              LDRB     r1,[r1,#0]  ; VKL076_comi
0005c8  f7fffffe          BL       VKL076_DisDotOff
0005cc  4829              LDR      r0,|L1.1652|
0005ce  7800              LDRB     r0,[r0,#0]            ;619  ; VKL076_comi
0005d0  1c40              ADDS     r0,r0,#1              ;619
0005d2  4928              LDR      r1,|L1.1652|
0005d4  7008              STRB     r0,[r1,#0]            ;619
                  |L1.1494|
0005d6  4827              LDR      r0,|L1.1652|
0005d8  7800              LDRB     r0,[r0,#0]            ;619  ; VKL076_comi
0005da  2804              CMP      r0,#4                 ;619
0005dc  dbe2              BLT      |L1.1444|
0005de  4824              LDR      r0,|L1.1648|
0005e0  7800              LDRB     r0,[r0,#0]            ;617  ; VKL076_segi
0005e2  1c40              ADDS     r0,r0,#1              ;617
0005e4  4922              LDR      r1,|L1.1648|
0005e6  7008              STRB     r0,[r1,#0]            ;617
                  |L1.1512|
0005e8  4821              LDR      r0,|L1.1648|
0005ea  7800              LDRB     r0,[r0,#0]            ;617  ; VKL076_segi
0005ec  2813              CMP      r0,#0x13              ;617
0005ee  dbd5              BLT      |L1.1436|
;;;624    			}
;;;625    		}
;;;626    		
;;;627    		//LCDر
;;;628    		VKL076_DisAll(0xff);			//LCDȫ
0005f0  20ff              MOVS     r0,#0xff
0005f2  f7fffffe          BL       VKL076_DisAll
;;;629    		Delay_nmS(500);						//ʱ
0005f6  f44f70fa          MOV      r0,#0x1f4
0005fa  f7fffffe          BL       Delay_nmS
;;;630    		for(VKL076_segi=0;VKL076_segi<19;VKL076_segi++)//seg9-27
0005fe  2000              MOVS     r0,#0
000600  491b              LDR      r1,|L1.1648|
000602  7008              STRB     r0,[r1,#0]
000604  e025              B        |L1.1618|
                  |L1.1542|
;;;631    		{
;;;632    			for(VKL076_comi=0;VKL076_comi<4;VKL076_comi++)//com0-3
000606  2000              MOVS     r0,#0
000608  491a              LDR      r1,|L1.1652|
00060a  7008              STRB     r0,[r1,#0]
00060c  e018              B        |L1.1600|
                  |L1.1550|
;;;633    			{
;;;634    				VKL076_DisDotOff(VKL076_segtab[VKL076_segi],VKL076_comi);		//LCDر
00060e  491a              LDR      r1,|L1.1656|
000610  4a17              LDR      r2,|L1.1648|
000612  7812              LDRB     r2,[r2,#0]  ; VKL076_segi
000614  5c88              LDRB     r0,[r1,r2]
000616  4917              LDR      r1,|L1.1652|
000618  7809              LDRB     r1,[r1,#0]  ; VKL076_comi
00061a  f7fffffe          BL       VKL076_DisDotOff
;;;635    				Delay_nmS(300);				//ʱ
00061e  f44f7096          MOV      r0,#0x12c
000622  f7fffffe          BL       Delay_nmS
;;;636    				VKL076_DisDotOn(VKL076_segtab[VKL076_segi],VKL076_comi);		//ϵرպʵֵرգδ˳ر
000626  4914              LDR      r1,|L1.1656|
000628  4a11              LDR      r2,|L1.1648|
00062a  7812              LDRB     r2,[r2,#0]  ; VKL076_segi
00062c  5c88              LDRB     r0,[r1,r2]
00062e  4911              LDR      r1,|L1.1652|
000630  7809              LDRB     r1,[r1,#0]  ; VKL076_comi
000632  f7fffffe          BL       VKL076_DisDotOn
000636  480f              LDR      r0,|L1.1652|
000638  7800              LDRB     r0,[r0,#0]            ;632  ; VKL076_comi
00063a  1c40              ADDS     r0,r0,#1              ;632
00063c  490d              LDR      r1,|L1.1652|
00063e  7008              STRB     r0,[r1,#0]            ;632
                  |L1.1600|
000640  480c              LDR      r0,|L1.1652|
000642  7800              LDRB     r0,[r0,#0]            ;632  ; VKL076_comi
000644  2804              CMP      r0,#4                 ;632
000646  dbe2              BLT      |L1.1550|
000648  4809              LDR      r0,|L1.1648|
00064a  7800              LDRB     r0,[r0,#0]            ;630  ; VKL076_segi
00064c  1c40              ADDS     r0,r0,#1              ;630
00064e  4908              LDR      r1,|L1.1648|
000650  7008              STRB     r0,[r1,#0]            ;630
                  |L1.1618|
000652  4807              LDR      r0,|L1.1648|
000654  7800              LDRB     r0,[r0,#0]            ;630  ; VKL076_segi
000656  2813              CMP      r0,#0x13              ;630
000658  dbd5              BLT      |L1.1542|
;;;637    			}
;;;638    		}		
;;;639    		Delay_nmS(1000);					//ʱ
00065a  f44f707a          MOV      r0,#0x3e8
00065e  f7fffffe          BL       Delay_nmS
                  |L1.1634|
000662  e75f              B        |L1.1316|
;;;640    	}
;;;641    }
;;;642    /************************END OF FILE****/
                          ENDP

                  |L1.1636|
                          DCD      0x40004040
                  |L1.1640|
                          DCD      0x4000487c
                  |L1.1644|
                          DCD      VKL076_readbuf
                  |L1.1648|
                          DCD      VKL076_segi
                  |L1.1652|
                          DCD      VKL076_comi
                  |L1.1656|
                          DCD      VKL076_segtab

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

                  VKL076_dispram
                          %        10
                  VKL076_readbuf
                          %        10

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

                  VKL076_segi
000000  00                DCB      0x00
                  VKL076_comi
000001  00                DCB      0x00
                  VKL076_segtab
000002  090a              DCB      0x09,0x0a
000004  0b0c0d0e          DCB      0x0b,0x0c,0x0d,0x0e
000008  0f101112          DCB      0x0f,0x10,0x11,0x12
00000c  13141516          DCB      0x13,0x14,0x15,0x16
000010  1718191a          DCB      0x17,0x18,0x19,0x1a
000014  1b                DCB      0x1b

;*** Start embedded assembler ***

#line 1 "..\\lcd_driver\\VKL076_IO_I2C_QUASI.c"
	AREA ||.rev16_text||, CODE
	THUMB
	EXPORT |__asm___21_VKL076_IO_I2C_QUASI_c_79130889____REV16|
#line 114 "..\\..\\..\\Library\\CMSIS\\Include\\core_cmInstr.h"
|__asm___21_VKL076_IO_I2C_QUASI_c_79130889____REV16| PROC
#line 115

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

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
