; 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_dir.o --asm_dir=.\lst\ --list_dir=.\lst\ --depend=.\obj\vkl076_io_i2c_dir.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_dir.crf ..\lcd_driver\VKL076_IO_I2C_DIR.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  49fe              LDR      r1,|L1.1076|
00003a  6008              STR      r0,[r1,#0]
;;;77       VKL076_SDA_H();
00003c  49fd              LDR      r1,|L1.1076|
00003e  3928              SUBS     r1,r1,#0x28
000040  6008              STR      r0,[r1,#0]
;;;78       Delay_nuS(VKL076_CLK);
000042  200a              MOVS     r0,#0xa
000044  f7fffffe          BL       Delay_nuS
;;;79       VKL076_SDA_L();
000048  2000              MOVS     r0,#0
00004a  49fa              LDR      r1,|L1.1076|
00004c  3928              SUBS     r1,r1,#0x28
00004e  6008              STR      r0,[r1,#0]
;;;80       Delay_nuS(VKL076_CLK);
000050  200a              MOVS     r0,#0xa
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  49f5              LDR      r1,|L1.1076|
00005e  6008              STR      r0,[r1,#0]
;;;92       VKL076_SDA_L();
000060  2000              MOVS     r0,#0
000062  49f4              LDR      r1,|L1.1076|
000064  3928              SUBS     r1,r1,#0x28
000066  6008              STR      r0,[r1,#0]
;;;93       Delay_nuS(VKL076_CLK);
000068  200a              MOVS     r0,#0xa
00006a  f7fffffe          BL       Delay_nuS
;;;94       VKL076_SDA_H();
00006e  2001              MOVS     r0,#1
000070  49f0              LDR      r1,|L1.1076|
000072  3928              SUBS     r1,r1,#0x28
000074  6008              STR      r0,[r1,#0]
;;;95       Delay_nuS(VKL076_CLK);
000076  200a              MOVS     r0,#0xa
000078  f7fffffe          BL       Delay_nuS
;;;96     }
00007c  bd00              POP      {pc}
;;;97     /*******************************************************************************
                          ENDP

                  VKL076_I2CSlaveAck PROC
;;;103    *******************************************************************************/
;;;104    unsigned char VKL076_I2CSlaveAck( void )
00007e  b570              PUSH     {r4-r6,lr}
;;;105    {
;;;106      unsigned int TimeOut;
;;;107      unsigned char RetValue;
;;;108    	
;;;109    	VKL076_SET_SDA_IN();
000080  2200              MOVS     r2,#0
000082  2120              MOVS     r1,#0x20
000084  48ec              LDR      r0,|L1.1080|
000086  f7fffffe          BL       GPIO_SetMode
;;;110    	//VKL076_SDA_H();	
;;;111    	VKL076_SDA_L();	//SDAΪЩƬ1ЩƬ0
00008a  2000              MOVS     r0,#0
00008c  49e9              LDR      r1,|L1.1076|
00008e  3928              SUBS     r1,r1,#0x28
000090  6008              STR      r0,[r1,#0]
;;;112      VKL076_SCL_L();
000092  49e8              LDR      r1,|L1.1076|
000094  6008              STR      r0,[r1,#0]
;;;113      Delay_nuS(VKL076_CLK);
000096  200a              MOVS     r0,#0xa
000098  f7fffffe          BL       Delay_nuS
;;;114      VKL076_SCL_H();//9SCLʱ
00009c  2001              MOVS     r0,#1
00009e  49e5              LDR      r1,|L1.1076|
0000a0  6008              STR      r0,[r1,#0]
;;;115      TimeOut = 10000;
0000a2  f2427510          MOV      r5,#0x2710
;;;116      while( TimeOut-- > 0 )
0000a6  e007              B        |L1.184|
                  |L1.168|
;;;117      {
;;;118        if( VKL076_GET_SDA()!=0 )//ȡack
0000a8  48e2              LDR      r0,|L1.1076|
0000aa  3828              SUBS     r0,r0,#0x28
0000ac  6800              LDR      r0,[r0,#0]
0000ae  b108              CBZ      r0,|L1.180|
;;;119        {
;;;120          RetValue = 1;
0000b0  2401              MOVS     r4,#1
0000b2  e001              B        |L1.184|
                  |L1.180|
;;;121        }
;;;122        else
;;;123        {
;;;124          RetValue = 0;
0000b4  2400              MOVS     r4,#0
;;;125          break;
0000b6  e003              B        |L1.192|
                  |L1.184|
0000b8  0028              MOVS     r0,r5                 ;116
0000ba  f1a50501          SUB      r5,r5,#1              ;116
0000be  d1f3              BNE      |L1.168|
                  |L1.192|
0000c0  bf00              NOP      
;;;126        }
;;;127      } 
;;;128    	VKL076_SCL_L(); //һʱΪ,ݻSTOPźš
0000c2  2000              MOVS     r0,#0
0000c4  49db              LDR      r1,|L1.1076|
0000c6  6008              STR      r0,[r1,#0]
;;;129      VKL076_SET_SDA_OUT();
0000c8  2201              MOVS     r2,#1
0000ca  2120              MOVS     r1,#0x20
0000cc  48da              LDR      r0,|L1.1080|
0000ce  f7fffffe          BL       GPIO_SetMode
;;;130      return RetValue;
0000d2  4620              MOV      r0,r4
;;;131    }
0000d4  bd70              POP      {r4-r6,pc}
;;;132    /*******************************************************************************
                          ENDP

                  VKL076_I2CSendAck PROC
;;;138    *******************************************************************************/
;;;139    void VKL076_I2CSendAck( void )
0000d6  b500              PUSH     {lr}
;;;140    {
;;;141      VKL076_SCL_L();
0000d8  2000              MOVS     r0,#0
0000da  49d6              LDR      r1,|L1.1076|
0000dc  6008              STR      r0,[r1,#0]
;;;142      VKL076_SDA_L();
0000de  49d5              LDR      r1,|L1.1076|
0000e0  3928              SUBS     r1,r1,#0x28
0000e2  6008              STR      r0,[r1,#0]
;;;143      Delay_nuS(VKL076_CLK*2);
0000e4  2014              MOVS     r0,#0x14
0000e6  f7fffffe          BL       Delay_nuS
;;;144      VKL076_SCL_H();
0000ea  2001              MOVS     r0,#1
0000ec  49d1              LDR      r1,|L1.1076|
0000ee  6008              STR      r0,[r1,#0]
;;;145      Delay_nuS(VKL076_CLK*2);
0000f0  2014              MOVS     r0,#0x14
0000f2  f7fffffe          BL       Delay_nuS
;;;146      VKL076_SCL_L();
0000f6  2000              MOVS     r0,#0
0000f8  49ce              LDR      r1,|L1.1076|
0000fa  6008              STR      r0,[r1,#0]
;;;147      VKL076_SDA_H();
0000fc  2001              MOVS     r0,#1
0000fe  49cd              LDR      r1,|L1.1076|
000100  3928              SUBS     r1,r1,#0x28
000102  6008              STR      r0,[r1,#0]
;;;148    }
000104  bd00              POP      {pc}
;;;149    /*******************************************************************************
                          ENDP

                  VKL076_I2CSendNAck PROC
;;;155    *******************************************************************************/
;;;156    void VKL076_I2CSendNAck( void )
000106  b500              PUSH     {lr}
;;;157    {
;;;158      VKL076_SCL_L();
000108  2000              MOVS     r0,#0
00010a  49ca              LDR      r1,|L1.1076|
00010c  6008              STR      r0,[r1,#0]
;;;159      VKL076_SDA_H();
00010e  2001              MOVS     r0,#1
000110  49c8              LDR      r1,|L1.1076|
000112  3928              SUBS     r1,r1,#0x28
000114  6008              STR      r0,[r1,#0]
;;;160      Delay_nuS(VKL076_CLK);
000116  200a              MOVS     r0,#0xa
000118  f7fffffe          BL       Delay_nuS
;;;161      VKL076_SCL_H();
00011c  2001              MOVS     r0,#1
00011e  49c5              LDR      r1,|L1.1076|
000120  6008              STR      r0,[r1,#0]
;;;162      Delay_nuS(VKL076_CLK);
000122  200a              MOVS     r0,#0xa
000124  f7fffffe          BL       Delay_nuS
;;;163    }
000128  bd00              POP      {pc}
;;;164    /*******************************************************************************
                          ENDP

                  VKL076_I2CWRCmd PROC
;;;170    *******************************************************************************/
;;;171    void VKL076_I2CWRCmd( unsigned char cmd )
00012a  b530              PUSH     {r4,r5,lr}
;;;172    {
00012c  4604              MOV      r4,r0
;;;173    	unsigned char i=8;
00012e  2508              MOVS     r5,#8
;;;174    	
;;;175    	while (i--)
000130  e019              B        |L1.358|
                  |L1.306|
;;;176    	{ 
;;;177    		VKL076_SCL_L();
000132  2000              MOVS     r0,#0
000134  49bf              LDR      r1,|L1.1076|
000136  6008              STR      r0,[r1,#0]
;;;178    		if(cmd&0x80)
000138  f0040080          AND      r0,r4,#0x80
00013c  b120              CBZ      r0,|L1.328|
;;;179    			VKL076_SDA_H();
00013e  2001              MOVS     r0,#1
000140  49bc              LDR      r1,|L1.1076|
000142  3928              SUBS     r1,r1,#0x28
000144  6008              STR      r0,[r1,#0]
000146  e003              B        |L1.336|
                  |L1.328|
;;;180    		else
;;;181    			VKL076_SDA_L();
000148  2000              MOVS     r0,#0
00014a  49ba              LDR      r1,|L1.1076|
00014c  3928              SUBS     r1,r1,#0x28
00014e  6008              STR      r0,[r1,#0]
                  |L1.336|
;;;182    		cmd<<=1; 
000150  0660              LSLS     r0,r4,#25
000152  0e04              LSRS     r4,r0,#24
;;;183    		Delay_nuS(VKL076_CLK);
000154  200a              MOVS     r0,#0xa
000156  f7fffffe          BL       Delay_nuS
;;;184    		VKL076_SCL_H();     
00015a  2001              MOVS     r0,#1
00015c  49b5              LDR      r1,|L1.1076|
00015e  6008              STR      r0,[r1,#0]
;;;185    		Delay_nuS(VKL076_CLK);
000160  200a              MOVS     r0,#0xa
000162  f7fffffe          BL       Delay_nuS
                  |L1.358|
000166  0028              MOVS     r0,r5                 ;175
000168  f1a50101          SUB      r1,r5,#1              ;175
00016c  b2cd              UXTB     r5,r1                 ;175
00016e  d1e0              BNE      |L1.306|
;;;186    	}
;;;187    }
000170  bd30              POP      {r4,r5,pc}
;;;188    /*******************************************************************************
                          ENDP

                  VKL076_I2CWRDat PROC
;;;194    *******************************************************************************/
;;;195    void VKL076_I2CWRDat( unsigned char dat )
000172  b530              PUSH     {r4,r5,lr}
;;;196    {
000174  4604              MOV      r4,r0
;;;197    	unsigned char i=8;
000176  2508              MOVS     r5,#8
;;;198    	while (i--)
000178  e018              B        |L1.428|
                  |L1.378|
;;;199    	{ 
;;;200    		VKL076_SCL_L();
00017a  2000              MOVS     r0,#0
00017c  49ad              LDR      r1,|L1.1076|
00017e  6008              STR      r0,[r1,#0]
;;;201    		if(dat&0x01)
000180  f0040001          AND      r0,r4,#1
000184  b120              CBZ      r0,|L1.400|
;;;202    			VKL076_SDA_H();
000186  2001              MOVS     r0,#1
000188  49aa              LDR      r1,|L1.1076|
00018a  3928              SUBS     r1,r1,#0x28
00018c  6008              STR      r0,[r1,#0]
00018e  e003              B        |L1.408|
                  |L1.400|
;;;203    		else
;;;204    			VKL076_SDA_L();
000190  2000              MOVS     r0,#0
000192  49a8              LDR      r1,|L1.1076|
000194  3928              SUBS     r1,r1,#0x28
000196  6008              STR      r0,[r1,#0]
                  |L1.408|
;;;205    		dat>>=1; 
000198  1064              ASRS     r4,r4,#1
;;;206    		Delay_nuS(VKL076_CLK);
00019a  200a              MOVS     r0,#0xa
00019c  f7fffffe          BL       Delay_nuS
;;;207    		VKL076_SCL_H();     
0001a0  2001              MOVS     r0,#1
0001a2  49a4              LDR      r1,|L1.1076|
0001a4  6008              STR      r0,[r1,#0]
;;;208    		Delay_nuS(VKL076_CLK);
0001a6  200a              MOVS     r0,#0xa
0001a8  f7fffffe          BL       Delay_nuS
                  |L1.428|
0001ac  0028              MOVS     r0,r5                 ;198
0001ae  f1a50101          SUB      r1,r5,#1              ;198
0001b2  b2cd              UXTB     r5,r1                 ;198
0001b4  d1e1              BNE      |L1.378|
;;;209    	}
;;;210    }
0001b6  bd30              POP      {r4,r5,pc}
;;;211    
                          ENDP

                  VKL076_I2CRDDat PROC
;;;218    *******************************************************************************/
;;;219    unsigned char VKL076_I2CRDDat( void )
0001b8  b570              PUSH     {r4-r6,lr}
;;;220    {
;;;221    	unsigned char i,RetValue;
;;;222    	
;;;223    	VKL076_SET_SDA_IN();
0001ba  2200              MOVS     r2,#0
0001bc  2120              MOVS     r1,#0x20
0001be  489e              LDR      r0,|L1.1080|
0001c0  f7fffffe          BL       GPIO_SetMode
;;;224    	//VKL076_SDA_H();	
;;;225    	VKL076_SDA_L();	//SDAΪЩƬ1ЩƬ0
0001c4  2000              MOVS     r0,#0
0001c6  499b              LDR      r1,|L1.1076|
0001c8  3928              SUBS     r1,r1,#0x28
0001ca  6008              STR      r0,[r1,#0]
;;;226    	RetValue=0;	
0001cc  2400              MOVS     r4,#0
;;;227      for( i=0; i<8; i++ )
0001ce  2500              MOVS     r5,#0
0001d0  e014              B        |L1.508|
                  |L1.466|
;;;228      {
;;;229    		RetValue>>=1; 
0001d2  1064              ASRS     r4,r4,#1
;;;230    		VKL076_SCL_L();     
0001d4  2000              MOVS     r0,#0
0001d6  4997              LDR      r1,|L1.1076|
0001d8  6008              STR      r0,[r1,#0]
;;;231    		Delay_nuS(VKL076_CLK);
0001da  200a              MOVS     r0,#0xa
0001dc  f7fffffe          BL       Delay_nuS
;;;232    		VKL076_SCL_H();
0001e0  2001              MOVS     r0,#1
0001e2  4994              LDR      r1,|L1.1076|
0001e4  6008              STR      r0,[r1,#0]
;;;233    		Delay_nuS(VKL076_CLK);
0001e6  200a              MOVS     r0,#0xa
0001e8  f7fffffe          BL       Delay_nuS
;;;234    		if( VKL076_GET_SDA()!=0 )
0001ec  4891              LDR      r0,|L1.1076|
0001ee  3828              SUBS     r0,r0,#0x28
0001f0  6800              LDR      r0,[r0,#0]
0001f2  b108              CBZ      r0,|L1.504|
;;;235    			RetValue|=0x80;
0001f4  f0440480          ORR      r4,r4,#0x80
                  |L1.504|
0001f8  1c68              ADDS     r0,r5,#1              ;227
0001fa  b2c5              UXTB     r5,r0                 ;227
                  |L1.508|
0001fc  2d08              CMP      r5,#8                 ;227
0001fe  dbe8              BLT      |L1.466|
;;;236    	}
;;;237      VKL076_SET_SDA_OUT();
000200  2201              MOVS     r2,#1
000202  2120              MOVS     r1,#0x20
000204  488c              LDR      r0,|L1.1080|
000206  f7fffffe          BL       GPIO_SetMode
;;;238      return RetValue;
00020a  4620              MOV      r0,r4
;;;239    }
00020c  bd70              POP      {r4-r6,pc}
;;;240    /*******************************************************************************
                          ENDP

                  WriteCmdVKL076 PROC
;;;246    *******************************************************************************/
;;;247    unsigned char  WriteCmdVKL076(unsigned char cmd)
00020e  b510              PUSH     {r4,lr}
;;;248    {
000210  4604              MOV      r4,r0
;;;249    	//STARTź	
;;;250    	VKL076_I2CStart(); 									
000212  f7fffffe          BL       VKL076_I2CStart
;;;251    	//SLAVEַ
;;;252    	VKL076_I2CWRCmd(VKL076_ADDRWR); 	
000216  207c              MOVS     r0,#0x7c
000218  f7fffffe          BL       VKL076_I2CWRCmd
;;;253    	if( 1 == VKL076_I2CSlaveAck() )
00021c  f7fffffe          BL       VKL076_I2CSlaveAck
000220  2801              CMP      r0,#1
000222  d103              BNE      |L1.556|
;;;254    	{
;;;255    		VKL076_I2CStop();													
000224  f7fffffe          BL       VKL076_I2CStop
;;;256    		return 0;										
000228  2000              MOVS     r0,#0
                  |L1.554|
;;;257    	}
;;;258    	
;;;259    	VKL076_I2CWRCmd(cmd); 						
;;;260    	if( 1 == VKL076_I2CSlaveAck() )
;;;261    	{
;;;262    		VKL076_I2CStop();													
;;;263    		return 0;
;;;264    	}
;;;265    	//STOPź
;;;266    	 VKL076_I2CStop();											
;;;267    	 return 0;    
;;;268    }
00022a  bd10              POP      {r4,pc}
                  |L1.556|
00022c  4620              MOV      r0,r4                 ;259
00022e  f7fffffe          BL       VKL076_I2CWRCmd
000232  f7fffffe          BL       VKL076_I2CSlaveAck
000236  2801              CMP      r0,#1                 ;260
000238  d103              BNE      |L1.578|
00023a  f7fffffe          BL       VKL076_I2CStop
00023e  2000              MOVS     r0,#0                 ;263
000240  e7f3              B        |L1.554|
                  |L1.578|
000242  f7fffffe          BL       VKL076_I2CStop
000246  2000              MOVS     r0,#0                 ;267
000248  e7ef              B        |L1.554|
;;;269    /*******************************************************************************
                          ENDP

                  WritenDataVKL076 PROC
;;;277    *******************************************************************************/
;;;278    unsigned char  WritenDataVKL076(unsigned char Addr,unsigned char *Databuf,unsigned char Cnt)
00024a  e92d41f0          PUSH     {r4-r8,lr}
;;;279    {
00024e  4606              MOV      r6,r0
000250  460c              MOV      r4,r1
000252  4617              MOV      r7,r2
;;;280    	unsigned char n;
;;;281    	
;;;282    	//STARTź	
;;;283    	VKL076_I2CStart(); 									
000254  f7fffffe          BL       VKL076_I2CStart
;;;284    	//SLAVEַ
;;;285    	VKL076_I2CWRCmd(VKL076_ADDRWR); 	
000258  207c              MOVS     r0,#0x7c
00025a  f7fffffe          BL       VKL076_I2CWRCmd
;;;286    	if( 1 == VKL076_I2CSlaveAck() )
00025e  f7fffffe          BL       VKL076_I2CSlaveAck
000262  2801              CMP      r0,#1
000264  d104              BNE      |L1.624|
;;;287    	{
;;;288    		VKL076_I2CStop();													
000266  f7fffffe          BL       VKL076_I2CStop
;;;289    		return 0;										
00026a  2000              MOVS     r0,#0
                  |L1.620|
;;;290    	}
;;;291    	//ʾRAMʼַ                             
;;;292    	VKL076_I2CWRCmd(VKL076_ADDR5_0); 
;;;293    	if( 1 == VKL076_I2CSlaveAck() )
;;;294    	{
;;;295    		VKL076_I2CStop();													
;;;296    		return 0; 
;;;297    	}
;;;298    	VKL076_I2CWRCmd(Addr&0x1f); 						
;;;299    	if( 1 == VKL076_I2CSlaveAck() )
;;;300    	{
;;;301    		VKL076_I2CStop();													
;;;302    		return 0;
;;;303    	}
;;;304    	//CntݵʾRAM
;;;305    	for(n=0;n<Cnt;n++)
;;;306    	{ 
;;;307    		VKL076_I2CWRDat(*Databuf++);
;;;308    		if( VKL076_I2CSlaveAck()==1 )
;;;309    		{
;;;310    			VKL076_I2CStop();													
;;;311    			return 0;
;;;312    		}
;;;313    	}
;;;314    	//STOPź
;;;315    	 VKL076_I2CStop();											
;;;316    	 return 0;    
;;;317    }
00026c  e8bd81f0          POP      {r4-r8,pc}
                  |L1.624|
000270  20e8              MOVS     r0,#0xe8              ;292
000272  f7fffffe          BL       VKL076_I2CWRCmd
000276  f7fffffe          BL       VKL076_I2CSlaveAck
00027a  2801              CMP      r0,#1                 ;293
00027c  d103              BNE      |L1.646|
00027e  f7fffffe          BL       VKL076_I2CStop
000282  2000              MOVS     r0,#0                 ;296
000284  e7f2              B        |L1.620|
                  |L1.646|
000286  f006001f          AND      r0,r6,#0x1f           ;298
00028a  f7fffffe          BL       VKL076_I2CWRCmd
00028e  f7fffffe          BL       VKL076_I2CSlaveAck
000292  2801              CMP      r0,#1                 ;299
000294  d103              BNE      |L1.670|
000296  f7fffffe          BL       VKL076_I2CStop
00029a  2000              MOVS     r0,#0                 ;302
00029c  e7e6              B        |L1.620|
                  |L1.670|
00029e  2500              MOVS     r5,#0                 ;305
0002a0  e00d              B        |L1.702|
                  |L1.674|
0002a2  f8140b01          LDRB     r0,[r4],#1            ;307
0002a6  f7fffffe          BL       VKL076_I2CWRDat
0002aa  f7fffffe          BL       VKL076_I2CSlaveAck
0002ae  2801              CMP      r0,#1                 ;308
0002b0  d103              BNE      |L1.698|
0002b2  f7fffffe          BL       VKL076_I2CStop
0002b6  2000              MOVS     r0,#0                 ;311
0002b8  e7d8              B        |L1.620|
                  |L1.698|
0002ba  1c68              ADDS     r0,r5,#1              ;305
0002bc  b2c5              UXTB     r5,r0                 ;305
                  |L1.702|
0002be  42bd              CMP      r5,r7                 ;305
0002c0  dbef              BLT      |L1.674|
0002c2  f7fffffe          BL       VKL076_I2CStop
0002c6  2000              MOVS     r0,#0                 ;316
0002c8  e7d0              B        |L1.620|
;;;318    
                          ENDP

                  ReadnDataVKL076 PROC
;;;327    *******************************************************************************/
;;;328    unsigned char  ReadnDataVKL076(unsigned char Addr,unsigned char *Databuf,unsigned char Cnt)
0002ca  e92d41f0          PUSH     {r4-r8,lr}
;;;329    {
0002ce  4606              MOV      r6,r0
0002d0  460c              MOV      r4,r1
0002d2  4617              MOV      r7,r2
;;;330    	unsigned char n;
;;;331    	
;;;332    	//STARTź	
;;;333    	VKL076_I2CStart(); 									
0002d4  f7fffffe          BL       VKL076_I2CStart
;;;334    	//SLAVEַд
;;;335    	VKL076_I2CWRCmd(VKL076_ADDRWR); 	
0002d8  207c              MOVS     r0,#0x7c
0002da  f7fffffe          BL       VKL076_I2CWRCmd
;;;336    	if( 1 == VKL076_I2CSlaveAck() )
0002de  f7fffffe          BL       VKL076_I2CSlaveAck
0002e2  2801              CMP      r0,#1
0002e4  d104              BNE      |L1.752|
;;;337    	{
;;;338    		VKL076_I2CStop();													
0002e6  f7fffffe          BL       VKL076_I2CStop
;;;339    		return 0;										
0002ea  2000              MOVS     r0,#0
                  |L1.748|
;;;340    	}
;;;341    	//ʾRAMʼַ
;;;342      VKL076_I2CWRCmd(VKL076_ADDR5_0); 
;;;343    	if( 1 == VKL076_I2CSlaveAck() )
;;;344    	{
;;;345    		VKL076_I2CStop();													
;;;346    		return 0; 
;;;347    	}
;;;348    	VKL076_I2CWRCmd(Addr&0x1f); 						
;;;349    	if( 1 == VKL076_I2CSlaveAck() )
;;;350    	{
;;;351    		VKL076_I2CStop();													
;;;352    		return 0;
;;;353    	}
;;;354    	//STOPź
;;;355    	 VKL076_I2CStop();	
;;;356    	//STARTź	
;;;357    	VKL076_I2CStart(); 									
;;;358    	//SLAVEַ
;;;359    	VKL076_I2CWRCmd(VKL076_ADDRRD); 	
;;;360    	if( 1 == VKL076_I2CSlaveAck() )
;;;361    	{
;;;362    		VKL076_I2CStop();													
;;;363    		return 0;										
;;;364    	}	
;;;365    	//CntݵʾRAM
;;;366    	for(n=0;n<Cnt-1;n++)
;;;367    	{ 
;;;368    		*Databuf++=VKL076_I2CRDDat();
;;;369    		VKL076_I2CSendAck();
;;;370    	}
;;;371    	*Databuf++=VKL076_I2CRDDat();
;;;372    	VKL076_I2CSendNAck();
;;;373    	//STOPź
;;;374    	 VKL076_I2CStop();											
;;;375    	 return 0;    
;;;376    }
0002ec  e8bd81f0          POP      {r4-r8,pc}
                  |L1.752|
0002f0  20e8              MOVS     r0,#0xe8              ;342
0002f2  f7fffffe          BL       VKL076_I2CWRCmd
0002f6  f7fffffe          BL       VKL076_I2CSlaveAck
0002fa  2801              CMP      r0,#1                 ;343
0002fc  d103              BNE      |L1.774|
0002fe  f7fffffe          BL       VKL076_I2CStop
000302  2000              MOVS     r0,#0                 ;346
000304  e7f2              B        |L1.748|
                  |L1.774|
000306  f006001f          AND      r0,r6,#0x1f           ;348
00030a  f7fffffe          BL       VKL076_I2CWRCmd
00030e  f7fffffe          BL       VKL076_I2CSlaveAck
000312  2801              CMP      r0,#1                 ;349
000314  d103              BNE      |L1.798|
000316  f7fffffe          BL       VKL076_I2CStop
00031a  2000              MOVS     r0,#0                 ;352
00031c  e7e6              B        |L1.748|
                  |L1.798|
00031e  f7fffffe          BL       VKL076_I2CStop
000322  f7fffffe          BL       VKL076_I2CStart
000326  207d              MOVS     r0,#0x7d              ;359
000328  f7fffffe          BL       VKL076_I2CWRCmd
00032c  f7fffffe          BL       VKL076_I2CSlaveAck
000330  2801              CMP      r0,#1                 ;360
000332  d103              BNE      |L1.828|
000334  f7fffffe          BL       VKL076_I2CStop
000338  2000              MOVS     r0,#0                 ;363
00033a  e7d7              B        |L1.748|
                  |L1.828|
00033c  2500              MOVS     r5,#0                 ;366
00033e  e007              B        |L1.848|
                  |L1.832|
000340  f7fffffe          BL       VKL076_I2CRDDat
000344  f8040b01          STRB     r0,[r4],#1            ;368
000348  f7fffffe          BL       VKL076_I2CSendAck
00034c  1c68              ADDS     r0,r5,#1              ;366
00034e  b2c5              UXTB     r5,r0                 ;366
                  |L1.848|
000350  1e78              SUBS     r0,r7,#1              ;366
000352  42a8              CMP      r0,r5                 ;366
000354  dcf4              BGT      |L1.832|
000356  f7fffffe          BL       VKL076_I2CRDDat
00035a  f8040b01          STRB     r0,[r4],#1            ;371
00035e  f7fffffe          BL       VKL076_I2CSendNAck
000362  f7fffffe          BL       VKL076_I2CStop
000366  2000              MOVS     r0,#0                 ;375
000368  e7c0              B        |L1.748|
;;;377    /*******************************************************************************
                          ENDP

                  VKL076_DisAll PROC
;;;384    *******************************************************************************/
;;;385    void VKL076_DisAll(unsigned char dat)
00036a  b570              PUSH     {r4-r6,lr}
;;;386    {
00036c  4605              MOV      r5,r0
;;;387    	unsigned char segi;
;;;388    	
;;;389    	for(segi=0;segi<16;segi++)
00036e  2400              MOVS     r4,#0
000370  e003              B        |L1.890|
                  |L1.882|
;;;390    	{
;;;391    		VKL076_dispram[segi]=dat;
000372  4832              LDR      r0,|L1.1084|
000374  5505              STRB     r5,[r0,r4]
000376  1c60              ADDS     r0,r4,#1              ;389
000378  b2c4              UXTB     r4,r0                 ;389
                  |L1.890|
00037a  2c10              CMP      r4,#0x10              ;389
00037c  dbf9              BLT      |L1.882|
;;;392    	}
;;;393    	WritenDataVKL076(0,VKL076_dispram,16);	//8bitݶӦ2SEGÿ4bitݵַ1ÿ8λ1ACK
00037e  2210              MOVS     r2,#0x10
000380  492e              LDR      r1,|L1.1084|
000382  2000              MOVS     r0,#0
000384  f7fffffe          BL       WritenDataVKL076
;;;394    }
000388  bd70              POP      {r4-r6,pc}
;;;395    /*******************************************************************************
                          ENDP

                  VKL076_DisDotOn PROC
;;;402    *******************************************************************************/
;;;403    void VKL076_DisDotOn(unsigned char seg,unsigned char com)
00038a  b5f8              PUSH     {r3-r7,lr}
;;;404    {
00038c  4604              MOV      r4,r0
00038e  460d              MOV      r5,r1
;;;405    	unsigned char addrbyte,addrbit,tempdat;
;;;406    	
;;;407    	//com/segӦʾRAMַbit
;;;408    	addrbyte=seg/2*2;
000390  4620              MOV      r0,r4
000392  eb0471d0          ADD      r1,r4,r0,LSR #31
000396  1049              ASRS     r1,r1,#1
000398  0649              LSLS     r1,r1,#25
00039a  0e0f              LSRS     r7,r1,#24
;;;409    	if((seg%2)==0)
00039c  eb0471d0          ADD      r1,r4,r0,LSR #31
0003a0  1049              ASRS     r1,r1,#1
0003a2  eba40141          SUB      r1,r4,r1,LSL #1
0003a6  b919              CBNZ     r1,|L1.944|
;;;410    		addrbit=(1<<com);
0003a8  2001              MOVS     r0,#1
0003aa  40a8              LSLS     r0,r0,r5
0003ac  b2c6              UXTB     r6,r0
0003ae  e003              B        |L1.952|
                  |L1.944|
;;;411    	else
;;;412    		addrbit=(1<<(4+com));
0003b0  1d28              ADDS     r0,r5,#4
0003b2  2101              MOVS     r1,#1
0003b4  4081              LSLS     r1,r1,r0
0003b6  b2ce              UXTB     r6,r1
                  |L1.952|
;;;413    	tempdat=VKL076_dispram[seg/2]|addrbit;
0003b8  4620              MOV      r0,r4
0003ba  eb0471d0          ADD      r1,r4,r0,LSR #31
0003be  1049              ASRS     r1,r1,#1
0003c0  4a1e              LDR      r2,|L1.1084|
0003c2  5c51              LDRB     r1,[r2,r1]
0003c4  4331              ORRS     r1,r1,r6
0003c6  9100              STR      r1,[sp,#0]
;;;414    	VKL076_dispram[seg/2]=tempdat;
0003c8  f89d1000          LDRB     r1,[sp,#0]
0003cc  eb0472d0          ADD      r2,r4,r0,LSR #31
0003d0  1052              ASRS     r2,r2,#1
0003d2  4b1a              LDR      r3,|L1.1084|
0003d4  5499              STRB     r1,[r3,r2]
;;;415    	WritenDataVKL076(addrbyte,&tempdat,1);		//8bitݶӦ2SEGseg/comӦbit17bitı
0003d6  2201              MOVS     r2,#1
0003d8  4669              MOV      r1,sp
0003da  4638              MOV      r0,r7
0003dc  f7fffffe          BL       WritenDataVKL076
;;;416    }
0003e0  bdf8              POP      {r3-r7,pc}
;;;417    /*******************************************************************************
                          ENDP

                  VKL076_DisDotOff PROC
;;;424    *******************************************************************************/
;;;425    void VKL076_DisDotOff(unsigned char seg,unsigned char com)
0003e2  b5f8              PUSH     {r3-r7,lr}
;;;426    {
0003e4  4604              MOV      r4,r0
0003e6  460d              MOV      r5,r1
;;;427    	unsigned char addrbyte,addrbit,tempdat;
;;;428    	
;;;429    	//com/segӦʾRAMַbit
;;;430    	addrbyte=seg/2*2;
0003e8  4620              MOV      r0,r4
0003ea  eb0471d0          ADD      r1,r4,r0,LSR #31
0003ee  1049              ASRS     r1,r1,#1
0003f0  0649              LSLS     r1,r1,#25
0003f2  0e0f              LSRS     r7,r1,#24
;;;431    	if((seg%2)==0)
0003f4  eb0471d0          ADD      r1,r4,r0,LSR #31
0003f8  1049              ASRS     r1,r1,#1
0003fa  eba40141          SUB      r1,r4,r1,LSL #1
0003fe  b919              CBNZ     r1,|L1.1032|
;;;432    		addrbit=(1<<com);
000400  2001              MOVS     r0,#1
000402  40a8              LSLS     r0,r0,r5
000404  b2c6              UXTB     r6,r0
000406  e003              B        |L1.1040|
                  |L1.1032|
;;;433    	else
;;;434    		addrbit=(1<<(4+com));
000408  1d28              ADDS     r0,r5,#4
00040a  2101              MOVS     r1,#1
00040c  4081              LSLS     r1,r1,r0
00040e  b2ce              UXTB     r6,r1
                  |L1.1040|
;;;435    	tempdat=VKL076_dispram[seg/2]&(~addrbit);
000410  4620              MOV      r0,r4
000412  eb0471d0          ADD      r1,r4,r0,LSR #31
000416  1049              ASRS     r1,r1,#1
000418  4a08              LDR      r2,|L1.1084|
00041a  5c51              LDRB     r1,[r2,r1]
00041c  43b1              BICS     r1,r1,r6
00041e  9100              STR      r1,[sp,#0]
;;;436    	VKL076_dispram[seg/2]=tempdat;
000420  f89d1000          LDRB     r1,[sp,#0]
000424  eb0472d0          ADD      r2,r4,r0,LSR #31
000428  1052              ASRS     r2,r2,#1
00042a  4b04              LDR      r3,|L1.1084|
00042c  5499              STRB     r1,[r3,r2]
;;;437    	WritenDataVKL076(addrbyte,&tempdat,1);		//8bitݶӦ2SEGseg/comӦbit07bitı
00042e  2201              MOVS     r2,#1
000430  4669              MOV      r1,sp
000432  e005              B        |L1.1088|
                  |L1.1076|
                          DCD      0x4000487c
                  |L1.1080|
                          DCD      0x40004040
                  |L1.1084|
                          DCD      VKL076_dispram
                  |L1.1088|
000440  4638              MOV      r0,r7
000442  f7fffffe          BL       WritenDataVKL076
;;;438    }
000446  bdf8              POP      {r3-r7,pc}
;;;439    /*******************************************************************************
                          ENDP

                  VKL076_Enter_PowerOff PROC
;;;445    *******************************************************************************/
;;;446    unsigned char VKL076_Enter_PowerOff(void)
000448  b510              PUSH     {r4,lr}
;;;447    {		
;;;448    	VKL076_I2CStart();
00044a  f7fffffe          BL       VKL076_I2CStart
;;;449    	VKL076_I2CWRCmd(VKL076_ADDRWR); 
00044e  207c              MOVS     r0,#0x7c
000450  f7fffffe          BL       VKL076_I2CWRCmd
;;;450    	if( 1 == VKL076_I2CSlaveAck() )
000454  f7fffffe          BL       VKL076_I2CSlaveAck
000458  2801              CMP      r0,#1
00045a  d103              BNE      |L1.1124|
;;;451    	{
;;;452    		VKL076_I2CStop();
00045c  f7fffffe          BL       VKL076_I2CStop
;;;453    		return 1; 
000460  2001              MOVS     r0,#1
                  |L1.1122|
;;;454    	}
;;;455    	VKL076_I2CWRCmd(VKL076_LCD_OFF);		//ʾ
;;;456    	if( 1 == VKL076_I2CSlaveAck() )
;;;457    	{
;;;458    		VKL076_I2CStop();
;;;459    		return 1; 
;;;460    	}
;;;461    	VKL076_I2CStop();
;;;462      return 0; 
;;;463    }
000462  bd10              POP      {r4,pc}
                  |L1.1124|
000464  20c0              MOVS     r0,#0xc0              ;455
000466  f7fffffe          BL       VKL076_I2CWRCmd
00046a  f7fffffe          BL       VKL076_I2CSlaveAck
00046e  2801              CMP      r0,#1                 ;456
000470  d103              BNE      |L1.1146|
000472  f7fffffe          BL       VKL076_I2CStop
000476  2001              MOVS     r0,#1                 ;459
000478  e7f3              B        |L1.1122|
                  |L1.1146|
00047a  f7fffffe          BL       VKL076_I2CStop
00047e  2000              MOVS     r0,#0                 ;462
000480  e7ef              B        |L1.1122|
;;;464    /*******************************************************************************
                          ENDP

                  VKL076_InitSequence PROC
;;;486    *******************************************************************************/
;;;487    unsigned char VKL076_InitSequence(void)
000482  b510              PUSH     {r4,lr}
;;;488    {			
;;;489      //ϵʼʱ򣨲οֲϵ縴λʱͼͲ	
;;;490    	//ϵ100uSʼ
;;;491      Delay_nuS(100);
000484  2064              MOVS     r0,#0x64
000486  f7fffffe          BL       Delay_nuS
;;;492    	//STOPź
;;;493    	VKL076_I2CStop();
00048a  f7fffffe          BL       VKL076_I2CStop
;;;494    	//STARTź
;;;495    	VKL076_I2CStart();
00048e  f7fffffe          BL       VKL076_I2CStart
;;;496    	//SLAVEַ(0x7C)
;;;497    	VKL076_I2CWRCmd(VKL076_ADDRWR); 
000492  207c              MOVS     r0,#0x7c
000494  f7fffffe          BL       VKL076_I2CWRCmd
;;;498    	if( 1 == VKL076_I2CSlaveAck() )
000498  f7fffffe          BL       VKL076_I2CSlaveAck
00049c  2801              CMP      r0,#1
00049e  d103              BNE      |L1.1192|
;;;499    	{
;;;500    		VKL076_I2CStop();	
0004a0  f7fffffe          BL       VKL076_I2CStop
;;;501    		return 1;
0004a4  2001              MOVS     r0,#1
                  |L1.1190|
;;;502    	}
;;;503    	//ϵͳ(λ)
;;;504    	VKL076_I2CWRCmd(VKL076_SOFTRST);
;;;505    	if( 1 == VKL076_I2CSlaveAck() )
;;;506    	{
;;;507    		VKL076_I2CStop();	
;;;508    		return 1;
;;;509    	}
;;;510    	//ʾ(֡Ƶģʽʽ)ΪʵƷֵο
;;;511    	//VKL076_I2CWRCmd(VKL076_FR80HZ|VKL076_SRNOR|VKL076_LINER);  	//ϵĬ 	VDD=5V:18.2uA  	VDD=3.3V:13uA
;;;512    	VKL076_I2CWRCmd(VKL076_FR53HZ|VKL076_SRPM1|VKL076_FRAMER);  //ʡ 		VDD=5V:9.1uA  VDD=3.3V:6.8uA
;;;513    	//VKL076_I2CWRCmd(VKL076_FR80HZ|VKL076_SRHP|VKL076_LINER);  	// 			VDD=5V:20uA  	VDD=3.3V:15uA 
;;;514    	if( 1 == VKL076_I2CSlaveAck() )
;;;515    	{
;;;516    		VKL076_I2CStop();	
;;;517    		return 1;
;;;518    	}
;;;519      //ģʽ
;;;520    	VKL076_I2CWRCmd(VKL076_BIAS_1_3|VKL076_LCD_ON);		//1/3bias,ʾ 
;;;521    	//VKL076_I2CWRCmd(VKL076_BIAS_1_2|VKL076_LCD_ON);		//1/2bias,ʾ 
;;;522    	if( 1 == VKL076_I2CSlaveAck() )
;;;523    	{
;;;524    		VKL076_I2CStop();	
;;;525    		return 1;
;;;526    	}
;;;527    	//STOPź
;;;528    	VKL076_I2CStop();	
;;;529    		
;;;530      return  0; 
;;;531    }
0004a6  bd10              POP      {r4,pc}
                  |L1.1192|
0004a8  20ea              MOVS     r0,#0xea              ;504
0004aa  f7fffffe          BL       VKL076_I2CWRCmd
0004ae  f7fffffe          BL       VKL076_I2CSlaveAck
0004b2  2801              CMP      r0,#1                 ;505
0004b4  d103              BNE      |L1.1214|
0004b6  f7fffffe          BL       VKL076_I2CStop
0004ba  2001              MOVS     r0,#1                 ;508
0004bc  e7f3              B        |L1.1190|
                  |L1.1214|
0004be  20bc              MOVS     r0,#0xbc              ;512
0004c0  f7fffffe          BL       VKL076_I2CWRCmd
0004c4  f7fffffe          BL       VKL076_I2CSlaveAck
0004c8  2801              CMP      r0,#1                 ;514
0004ca  d103              BNE      |L1.1236|
0004cc  f7fffffe          BL       VKL076_I2CStop
0004d0  2001              MOVS     r0,#1                 ;517
0004d2  e7e8              B        |L1.1190|
                  |L1.1236|
0004d4  20c8              MOVS     r0,#0xc8              ;520
0004d6  f7fffffe          BL       VKL076_I2CWRCmd
0004da  f7fffffe          BL       VKL076_I2CSlaveAck
0004de  2801              CMP      r0,#1                 ;522
0004e0  d103              BNE      |L1.1258|
0004e2  f7fffffe          BL       VKL076_I2CStop
0004e6  2001              MOVS     r0,#1                 ;525
0004e8  e7dd              B        |L1.1190|
                  |L1.1258|
0004ea  f7fffffe          BL       VKL076_I2CStop
0004ee  2000              MOVS     r0,#0                 ;530
0004f0  e7d9              B        |L1.1190|
;;;532    /*******************************************************************************
                          ENDP

                  VKL076_Exit_PowerOff PROC
;;;470    *******************************************************************************/
;;;471    unsigned char VKL076_Exit_PowerOff(void)
0004f2  b510              PUSH     {r4,lr}
;;;472    {	
;;;473    	unsigned char errorflag; 
;;;474    	
;;;475    	//˳ģʽ³ʼʱ
;;;476    	errorflag=VKL076_InitSequence();
0004f4  f7fffffe          BL       VKL076_InitSequence
0004f8  4604              MOV      r4,r0
;;;477    	
;;;478      return(errorflag);
0004fa  4620              MOV      r0,r4
;;;479    }
0004fc  bd10              POP      {r4,pc}
;;;480    /*******************************************************************************
                          ENDP

                  VKL076_Lowlevel_Init PROC
;;;538    *******************************************************************************/
;;;539    void VKL076_Lowlevel_Init(void)
0004fe  b510              PUSH     {r4,lr}
;;;540    {
;;;541    	//ͨߵƽͬӵƽת·
;;;542    	//˺ݿͻƬӦ޸	
;;;543    	GPIO_SetMode(VKL076_SCL_PORT, VKL076_SCL_PIN, GPIO_MODE_OUTPUT);
000500  2201              MOVS     r2,#1
000502  03d1              LSLS     r1,r2,#15
000504  4868              LDR      r0,|L1.1704|
000506  f7fffffe          BL       GPIO_SetMode
;;;544    	VKL076_SET_SDA_OUT();
00050a  2201              MOVS     r2,#1
00050c  2120              MOVS     r1,#0x20
00050e  4866              LDR      r0,|L1.1704|
000510  f7fffffe          BL       GPIO_SetMode
;;;545    	
;;;546      //I2C߿Ϊߵƽ	
;;;547    	VKL076_SCL_H();  
000514  2001              MOVS     r0,#1
000516  4965              LDR      r1,|L1.1708|
000518  6008              STR      r0,[r1,#0]
;;;548    	VKL076_SDA_H(); 	
00051a  4964              LDR      r1,|L1.1708|
00051c  3928              SUBS     r1,r1,#0x28
00051e  6008              STR      r0,[r1,#0]
;;;549    }
000520  bd10              POP      {r4,pc}
;;;550    /*******************************************************************************
                          ENDP

                  VKL076_Init PROC
;;;556    *******************************************************************************/
;;;557    void VKL076_Init(void)
000522  b510              PUSH     {r4,lr}
;;;558    {	
;;;559    	//ܽøݿͻƬӦ޸
;;;560    	VKL076_Lowlevel_Init();
000524  f7fffffe          BL       VKL076_Lowlevel_Init
;;;561    	//ʼʱ
;;;562    	VKL076_InitSequence();
000528  f7fffffe          BL       VKL076_InitSequence
;;;563    }
00052c  bd10              POP      {r4,pc}
;;;564    /*******************************************************************************
                          ENDP

                  VKL076_Main PROC
;;;570    *******************************************************************************/
;;;571    void VKL076_Main(void)
00052e  f7fffffe          BL       VKL076_Init
;;;572    {	
;;;573    	VKL076_Init();
;;;574    	
;;;575    	//ѡⲿʱ(OSCI)ƵΪ32KHz(ʵ֡ƵƵ)
;;;576    	//WriteCmdVKL076(VKL076_EXTCLK); //ʾַʱVKL076_ADDRWR5bit0һҪ1
;;;577    	
;;;578    	//˸
;;;579    	//WriteCmdVKL076(VKL076_BLKCTL_05HZ); //˸Ƶ0.5Hz
;;;580    	//WriteCmdVKL076(VKL076_BLKCTL_1HZ); 	//˸Ƶ1Hz
;;;581    	WriteCmdVKL076(VKL076_BLKCTL_2HZ); 	//˸Ƶ2Hz
000532  20f3              MOVS     r0,#0xf3
000534  f7fffffe          BL       WriteCmdVKL076
;;;582    	//WriteCmdVKL076(VKL076_BLKCTL_OFF);	//˸ر
;;;583    	
;;;584    	//ȫǿƿ
;;;585    	WriteCmdVKL076(VKL076_APCTL_ALLON2);	
000538  20fe              MOVS     r0,#0xfe
00053a  f7fffffe          BL       WriteCmdVKL076
;;;586    	Delay_nmS(3000);					//ʱ
00053e  f64030b8          MOV      r0,#0xbb8
000542  f7fffffe          BL       Delay_nmS
;;;587    	//ȫǿƹ
;;;588    	WriteCmdVKL076(VKL076_APCTL_ALLOFF1);
000546  20fd              MOVS     r0,#0xfd
000548  f7fffffe          BL       WriteCmdVKL076
;;;589    	Delay_nmS(1000);					//ʱ
00054c  f44f707a          MOV      r0,#0x3e8
000550  f7fffffe          BL       Delay_nmS
;;;590    	
;;;591    	//ȫǿȡ,ָ
;;;592    	WriteCmdVKL076(VKL076_APCTL_NORMAL);
000554  20fc              MOVS     r0,#0xfc
000556  f7fffffe          BL       WriteCmdVKL076
;;;593    	WriteCmdVKL076(VKL076_BLKCTL_OFF);	//˸ر
00055a  20f0              MOVS     r0,#0xf0
00055c  f7fffffe          BL       WriteCmdVKL076
;;;594    	
;;;595    	VKL076_DisAll(0x00);
000560  2000              MOVS     r0,#0
000562  f7fffffe          BL       VKL076_DisAll
;;;596    	while(1)
000566  e09e              B        |L1.1702|
                  |L1.1384|
;;;597    	{		
;;;598    		//LCDȫ
;;;599    		VKL076_DisAll(0xFF);			
000568  20ff              MOVS     r0,#0xff
00056a  f7fffffe          BL       VKL076_DisAll
;;;600    		Delay_nmS(3000);					//ʱ
00056e  f64030b8          MOV      r0,#0xbb8
000572  f7fffffe          BL       Delay_nmS
;;;601    		
;;;602    		//LCDȫ
;;;603    		VKL076_DisAll(0x00);			
000576  2000              MOVS     r0,#0
000578  f7fffffe          BL       VKL076_DisAll
;;;604    		Delay_nmS(3000);					//ʱ
00057c  f64030b8          MOV      r0,#0xbb8
000580  f7fffffe          BL       Delay_nmS
;;;605    	
;;;606    		//LCD
;;;607    		VKL076_DisAll(0x55);			
000584  2055              MOVS     r0,#0x55
000586  f7fffffe          BL       VKL076_DisAll
;;;608    		ReadnDataVKL076(0,VKL076_readbuf,16);	//RAM
00058a  2210              MOVS     r2,#0x10
00058c  4948              LDR      r1,|L1.1712|
00058e  2000              MOVS     r0,#0
000590  f7fffffe          BL       ReadnDataVKL076
;;;609    		Delay_nmS(1500);					//ʱ
000594  f24050dc          MOV      r0,#0x5dc
000598  f7fffffe          BL       Delay_nmS
;;;610    		VKL076_DisAll(0xAA);			
00059c  20aa              MOVS     r0,#0xaa
00059e  f7fffffe          BL       VKL076_DisAll
;;;611    		ReadnDataVKL076(0,VKL076_readbuf,16);	//RAM
0005a2  2210              MOVS     r2,#0x10
0005a4  4942              LDR      r1,|L1.1712|
0005a6  2000              MOVS     r0,#0
0005a8  f7fffffe          BL       ReadnDataVKL076
;;;612    		Delay_nmS(1500);					//ʱ
0005ac  f24050dc          MOV      r0,#0x5dc
0005b0  f7fffffe          BL       Delay_nmS
;;;613    		
;;;614    		//
;;;615    		VKL076_DisAll(0x00);			//LCDȫ		
0005b4  2000              MOVS     r0,#0
0005b6  f7fffffe          BL       VKL076_DisAll
;;;616    		VKL076_Enter_PowerOff();	//ģʽ
0005ba  f7fffffe          BL       VKL076_Enter_PowerOff
;;;617    		Delay_nmS(5000);					//ʱ5S		
0005be  f2413088          MOV      r0,#0x1388
0005c2  f7fffffe          BL       Delay_nmS
;;;618    		VKL076_Exit_PowerOff();	//˳ģʽ
0005c6  f7fffffe          BL       VKL076_Exit_PowerOff
;;;619    				
;;;620    		//LCD
;;;621    		VKL076_DisAll(0x00);			//LCDȫ
0005ca  2000              MOVS     r0,#0
0005cc  f7fffffe          BL       VKL076_DisAll
;;;622    		Delay_nmS(500);						//ʱ
0005d0  f44f70fa          MOV      r0,#0x1f4
0005d4  f7fffffe          BL       Delay_nmS
;;;623    		for(VKL076_segi=0;VKL076_segi<19;VKL076_segi++)//seg9-27
0005d8  2000              MOVS     r0,#0
0005da  4936              LDR      r1,|L1.1716|
0005dc  7008              STRB     r0,[r1,#0]
0005de  e025              B        |L1.1580|
                  |L1.1504|
;;;624    		{
;;;625    			for(VKL076_comi=0;VKL076_comi<4;VKL076_comi++)//com0-3
0005e0  2000              MOVS     r0,#0
0005e2  4935              LDR      r1,|L1.1720|
0005e4  7008              STRB     r0,[r1,#0]
0005e6  e018              B        |L1.1562|
                  |L1.1512|
;;;626    			{
;;;627    				VKL076_DisDotOn(VKL076_segtab[VKL076_segi],VKL076_comi);		//LCD
0005e8  4934              LDR      r1,|L1.1724|
0005ea  4a32              LDR      r2,|L1.1716|
0005ec  7812              LDRB     r2,[r2,#0]  ; VKL076_segi
0005ee  5c88              LDRB     r0,[r1,r2]
0005f0  4931              LDR      r1,|L1.1720|
0005f2  7809              LDRB     r1,[r1,#0]  ; VKL076_comi
0005f4  f7fffffe          BL       VKL076_DisDotOn
;;;628    				Delay_nmS(300);				//ʱ
0005f8  f44f7096          MOV      r0,#0x12c
0005fc  f7fffffe          BL       Delay_nmS
;;;629    				VKL076_DisDotOff(VKL076_segtab[VKL076_segi],VKL076_comi);		//ϵʵֵδ˳
000600  492e              LDR      r1,|L1.1724|
000602  4a2c              LDR      r2,|L1.1716|
000604  7812              LDRB     r2,[r2,#0]  ; VKL076_segi
000606  5c88              LDRB     r0,[r1,r2]
000608  492b              LDR      r1,|L1.1720|
00060a  7809              LDRB     r1,[r1,#0]  ; VKL076_comi
00060c  f7fffffe          BL       VKL076_DisDotOff
000610  4829              LDR      r0,|L1.1720|
000612  7800              LDRB     r0,[r0,#0]            ;625  ; VKL076_comi
000614  1c40              ADDS     r0,r0,#1              ;625
000616  4928              LDR      r1,|L1.1720|
000618  7008              STRB     r0,[r1,#0]            ;625
                  |L1.1562|
00061a  4827              LDR      r0,|L1.1720|
00061c  7800              LDRB     r0,[r0,#0]            ;625  ; VKL076_comi
00061e  2804              CMP      r0,#4                 ;625
000620  dbe2              BLT      |L1.1512|
000622  4824              LDR      r0,|L1.1716|
000624  7800              LDRB     r0,[r0,#0]            ;623  ; VKL076_segi
000626  1c40              ADDS     r0,r0,#1              ;623
000628  4922              LDR      r1,|L1.1716|
00062a  7008              STRB     r0,[r1,#0]            ;623
                  |L1.1580|
00062c  4821              LDR      r0,|L1.1716|
00062e  7800              LDRB     r0,[r0,#0]            ;623  ; VKL076_segi
000630  2813              CMP      r0,#0x13              ;623
000632  dbd5              BLT      |L1.1504|
;;;630    			}
;;;631    		}
;;;632    		
;;;633    		//LCDر
;;;634    		VKL076_DisAll(0xff);			//LCDȫ
000634  20ff              MOVS     r0,#0xff
000636  f7fffffe          BL       VKL076_DisAll
;;;635    		Delay_nmS(500);						//ʱ
00063a  f44f70fa          MOV      r0,#0x1f4
00063e  f7fffffe          BL       Delay_nmS
;;;636    		for(VKL076_segi=0;VKL076_segi<19;VKL076_segi++)//seg9-27
000642  2000              MOVS     r0,#0
000644  491b              LDR      r1,|L1.1716|
000646  7008              STRB     r0,[r1,#0]
000648  e025              B        |L1.1686|
                  |L1.1610|
;;;637    		{
;;;638    			for(VKL076_comi=0;VKL076_comi<4;VKL076_comi++)//com0-3
00064a  2000              MOVS     r0,#0
00064c  491a              LDR      r1,|L1.1720|
00064e  7008              STRB     r0,[r1,#0]
000650  e018              B        |L1.1668|
                  |L1.1618|
;;;639    			{
;;;640    				VKL076_DisDotOff(VKL076_segtab[VKL076_segi],VKL076_comi);		//LCDر
000652  491a              LDR      r1,|L1.1724|
000654  4a17              LDR      r2,|L1.1716|
000656  7812              LDRB     r2,[r2,#0]  ; VKL076_segi
000658  5c88              LDRB     r0,[r1,r2]
00065a  4917              LDR      r1,|L1.1720|
00065c  7809              LDRB     r1,[r1,#0]  ; VKL076_comi
00065e  f7fffffe          BL       VKL076_DisDotOff
;;;641    				Delay_nmS(300);				//ʱ
000662  f44f7096          MOV      r0,#0x12c
000666  f7fffffe          BL       Delay_nmS
;;;642    				VKL076_DisDotOn(VKL076_segtab[VKL076_segi],VKL076_comi);		//ϵرպʵֵرգδ˳ر
00066a  4914              LDR      r1,|L1.1724|
00066c  4a11              LDR      r2,|L1.1716|
00066e  7812              LDRB     r2,[r2,#0]  ; VKL076_segi
000670  5c88              LDRB     r0,[r1,r2]
000672  4911              LDR      r1,|L1.1720|
000674  7809              LDRB     r1,[r1,#0]  ; VKL076_comi
000676  f7fffffe          BL       VKL076_DisDotOn
00067a  480f              LDR      r0,|L1.1720|
00067c  7800              LDRB     r0,[r0,#0]            ;638  ; VKL076_comi
00067e  1c40              ADDS     r0,r0,#1              ;638
000680  490d              LDR      r1,|L1.1720|
000682  7008              STRB     r0,[r1,#0]            ;638
                  |L1.1668|
000684  480c              LDR      r0,|L1.1720|
000686  7800              LDRB     r0,[r0,#0]            ;638  ; VKL076_comi
000688  2804              CMP      r0,#4                 ;638
00068a  dbe2              BLT      |L1.1618|
00068c  4809              LDR      r0,|L1.1716|
00068e  7800              LDRB     r0,[r0,#0]            ;636  ; VKL076_segi
000690  1c40              ADDS     r0,r0,#1              ;636
000692  4908              LDR      r1,|L1.1716|
000694  7008              STRB     r0,[r1,#0]            ;636
                  |L1.1686|
000696  4807              LDR      r0,|L1.1716|
000698  7800              LDRB     r0,[r0,#0]            ;636  ; VKL076_segi
00069a  2813              CMP      r0,#0x13              ;636
00069c  dbd5              BLT      |L1.1610|
;;;643    			}
;;;644    		}		
;;;645    		Delay_nmS(1000);					//ʱ
00069e  f44f707a          MOV      r0,#0x3e8
0006a2  f7fffffe          BL       Delay_nmS
                  |L1.1702|
0006a6  e75f              B        |L1.1384|
;;;646    	}
;;;647    }
;;;648    /************************END OF FILE****/
                          ENDP

                  |L1.1704|
                          DCD      0x40004040
                  |L1.1708|
                          DCD      0x4000487c
                  |L1.1712|
                          DCD      VKL076_readbuf
                  |L1.1716|
                          DCD      VKL076_segi
                  |L1.1720|
                          DCD      VKL076_comi
                  |L1.1724|
                          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_DIR.c"
	AREA ||.rev16_text||, CODE
	THUMB
	EXPORT |__asm___19_VKL076_IO_I2C_DIR_c_79130889____REV16|
#line 114 "..\\..\\..\\Library\\CMSIS\\Include\\core_cmInstr.h"
|__asm___19_VKL076_IO_I2C_DIR_c_79130889____REV16| PROC
#line 115

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

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
