; generated by Component: ARM Compiler 5.05 update 2 (build 169) Tool: ArmCC [4d0f38]
; commandline ArmCC [--list --debug -c --asm --interleave -o.\obj\vk3816_quasi.o --asm_dir=.\lst\ --list_dir=.\lst\ --depend=.\obj\vk3816_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..\touch_driver -I.\RTE\_project -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\4.3.0\CMSIS\Include -IDevice\M451\Include -D__UVISION_VERSION=527 -D_RTE_ --omf_browse=.\obj\vk3816_quasi.crf ..\touch_driver\VK3816_QUASI.c]
                          THUMB

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

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

                  Delay_nmS PROC
;;;52     *******************************************************************************/
;;;53     void Delay_nmS(unsigned long int n)
00001c  e01a              B        |L1.84|
                  |L1.30|
;;;54     {
;;;55     	unsigned int i;
;;;56     	while(n--)
;;;57     	{
;;;58     		i=4000;
00001e  f44f617a          MOV      r1,#0xfa0
;;;59     		 while(i--)
000022  e013              B        |L1.76|
                  |L1.36|
;;;60     		{//nopָݵƬӦ޸
;;;61     			__nop();__nop();__nop();__nop();__nop();
000024  bf00              NOP      
000026  bf00              NOP      
000028  bf00              NOP      
00002a  bf00              NOP      
00002c  bf00              NOP      
;;;62     			__nop();__nop();__nop();__nop();__nop();
00002e  bf00              NOP      
000030  bf00              NOP      
000032  bf00              NOP      
000034  bf00              NOP      
000036  bf00              NOP      
;;;63     			__nop();__nop();__nop();__nop();__nop();
000038  bf00              NOP      
00003a  bf00              NOP      
00003c  bf00              NOP      
00003e  bf00              NOP      
000040  bf00              NOP      
;;;64     			__nop();__nop();__nop();__nop();__nop();
000042  bf00              NOP      
000044  bf00              NOP      
000046  bf00              NOP      
000048  bf00              NOP      
00004a  bf00              NOP      
                  |L1.76|
00004c  000a              MOVS     r2,r1                 ;59
00004e  f1a10101          SUB      r1,r1,#1              ;59
000052  d1e7              BNE      |L1.36|
                  |L1.84|
000054  0002              MOVS     r2,r0                 ;56
000056  f1a00001          SUB      r0,r0,#1              ;56
00005a  d1e0              BNE      |L1.30|
;;;65     		}
;;;66     	}
;;;67     }
00005c  4770              BX       lr
;;;68     /*******************************************************************************
                          ENDP

                  VK3816_I2CStart PROC
;;;74     *******************************************************************************/
;;;75     void VK3816_I2CStart( void )
00005e  b500              PUSH     {lr}
;;;76     {
;;;77       VK3816_SCL_H();
000060  2001              MOVS     r0,#1
000062  49b1              LDR      r1,|L1.808|
000064  6008              STR      r0,[r1,#0]
;;;78       VK3816_SDA_H();
000066  49b0              LDR      r1,|L1.808|
000068  3928              SUBS     r1,r1,#0x28
00006a  6008              STR      r0,[r1,#0]
;;;79       Delay_nuS(VK3816_CLK);
00006c  200f              MOVS     r0,#0xf
00006e  f7fffffe          BL       Delay_nuS
;;;80       VK3816_SDA_L();
000072  2000              MOVS     r0,#0
000074  49ac              LDR      r1,|L1.808|
000076  3928              SUBS     r1,r1,#0x28
000078  6008              STR      r0,[r1,#0]
;;;81       Delay_nuS(VK3816_CLK);
00007a  200f              MOVS     r0,#0xf
00007c  f7fffffe          BL       Delay_nuS
;;;82     }
000080  bd00              POP      {pc}
;;;83     /*******************************************************************************
                          ENDP

                  VK3816_I2CStop PROC
;;;89     *******************************************************************************/
;;;90     void VK3816_I2CStop( void )
000082  b500              PUSH     {lr}
;;;91     {
;;;92       VK3816_SCL_H();
000084  2001              MOVS     r0,#1
000086  49a8              LDR      r1,|L1.808|
000088  6008              STR      r0,[r1,#0]
;;;93       VK3816_SDA_L();
00008a  2000              MOVS     r0,#0
00008c  49a6              LDR      r1,|L1.808|
00008e  3928              SUBS     r1,r1,#0x28
000090  6008              STR      r0,[r1,#0]
;;;94       Delay_nuS(VK3816_CLK);
000092  200f              MOVS     r0,#0xf
000094  f7fffffe          BL       Delay_nuS
;;;95       VK3816_SDA_H();
000098  2001              MOVS     r0,#1
00009a  49a3              LDR      r1,|L1.808|
00009c  3928              SUBS     r1,r1,#0x28
00009e  6008              STR      r0,[r1,#0]
;;;96       Delay_nuS(VK3816_CLK);
0000a0  200f              MOVS     r0,#0xf
0000a2  f7fffffe          BL       Delay_nuS
;;;97     }
0000a6  bd00              POP      {pc}
;;;98     /*******************************************************************************
                          ENDP

                  VK3816_I2CSlaveAck PROC
;;;104    *******************************************************************************/
;;;105    unsigned char VK3816_I2CSlaveAck( void )
0000a8  b530              PUSH     {r4,r5,lr}
;;;106    {
;;;107      unsigned int TimeOut;
;;;108      unsigned char RetValue;
;;;109    	
;;;110      VK3816_SCL_L();
0000aa  2000              MOVS     r0,#0
0000ac  499e              LDR      r1,|L1.808|
0000ae  6008              STR      r0,[r1,#0]
;;;111      Delay_nuS(VK3816_CLK);
0000b0  200f              MOVS     r0,#0xf
0000b2  f7fffffe          BL       Delay_nuS
;;;112      VK3816_SCL_H();//9SCLʱ
0000b6  2001              MOVS     r0,#1
0000b8  499b              LDR      r1,|L1.808|
0000ba  6008              STR      r0,[r1,#0]
;;;113      TimeOut = 10000;
0000bc  f2427510          MOV      r5,#0x2710
;;;114      while( TimeOut-- > 0 )
0000c0  e007              B        |L1.210|
                  |L1.194|
;;;115      {
;;;116        if( VK3816_GET_SDA()!=0 )//ȡack
0000c2  4899              LDR      r0,|L1.808|
0000c4  3828              SUBS     r0,r0,#0x28
0000c6  6800              LDR      r0,[r0,#0]
0000c8  b108              CBZ      r0,|L1.206|
;;;117        {
;;;118          RetValue = 1;
0000ca  2401              MOVS     r4,#1
0000cc  e001              B        |L1.210|
                  |L1.206|
;;;119        }
;;;120        else
;;;121        {
;;;122          RetValue = 0;
0000ce  2400              MOVS     r4,#0
;;;123          break;
0000d0  e003              B        |L1.218|
                  |L1.210|
0000d2  0028              MOVS     r0,r5                 ;114
0000d4  f1a50501          SUB      r5,r5,#1              ;114
0000d8  d1f3              BNE      |L1.194|
                  |L1.218|
0000da  bf00              NOP      
;;;124        }
;;;125      } 
;;;126    	VK3816_SCL_L(); //һʱΪ,ݻSTOPźš
0000dc  2000              MOVS     r0,#0
0000de  4992              LDR      r1,|L1.808|
0000e0  6008              STR      r0,[r1,#0]
;;;127      Delay_nuS(200);
0000e2  20c8              MOVS     r0,#0xc8
0000e4  f7fffffe          BL       Delay_nuS
;;;128      return RetValue;
0000e8  4620              MOV      r0,r4
;;;129    }
0000ea  bd30              POP      {r4,r5,pc}
;;;130    /*******************************************************************************
                          ENDP

                  VK3816_I2CSendAck PROC
;;;136    *******************************************************************************/
;;;137    void VK3816_I2CSendAck( void )
0000ec  b500              PUSH     {lr}
;;;138    {
;;;139      VK3816_SCL_L();
0000ee  2000              MOVS     r0,#0
0000f0  498d              LDR      r1,|L1.808|
0000f2  6008              STR      r0,[r1,#0]
;;;140      VK3816_SDA_L();
0000f4  498c              LDR      r1,|L1.808|
0000f6  3928              SUBS     r1,r1,#0x28
0000f8  6008              STR      r0,[r1,#0]
;;;141      Delay_nuS(VK3816_CLK*2);
0000fa  201e              MOVS     r0,#0x1e
0000fc  f7fffffe          BL       Delay_nuS
;;;142      VK3816_SCL_H();
000100  2001              MOVS     r0,#1
000102  4989              LDR      r1,|L1.808|
000104  6008              STR      r0,[r1,#0]
;;;143      Delay_nuS(VK3816_CLK*2);
000106  201e              MOVS     r0,#0x1e
000108  f7fffffe          BL       Delay_nuS
;;;144      VK3816_SCL_L();
00010c  2000              MOVS     r0,#0
00010e  4986              LDR      r1,|L1.808|
000110  6008              STR      r0,[r1,#0]
;;;145      VK3816_SDA_H();
000112  2001              MOVS     r0,#1
000114  4984              LDR      r1,|L1.808|
000116  3928              SUBS     r1,r1,#0x28
000118  6008              STR      r0,[r1,#0]
;;;146    }
00011a  bd00              POP      {pc}
;;;147    /*******************************************************************************
                          ENDP

                  VK3816_I2CSendNAck PROC
;;;153    *******************************************************************************/
;;;154    void VK3816_I2CSendNAck( void )
00011c  b500              PUSH     {lr}
;;;155    {
;;;156      VK3816_SCL_L();
00011e  2000              MOVS     r0,#0
000120  4981              LDR      r1,|L1.808|
000122  6008              STR      r0,[r1,#0]
;;;157      VK3816_SDA_H();
000124  2001              MOVS     r0,#1
000126  4980              LDR      r1,|L1.808|
000128  3928              SUBS     r1,r1,#0x28
00012a  6008              STR      r0,[r1,#0]
;;;158      Delay_nuS(VK3816_CLK);
00012c  200f              MOVS     r0,#0xf
00012e  f7fffffe          BL       Delay_nuS
;;;159      VK3816_SCL_H();
000132  2001              MOVS     r0,#1
000134  497c              LDR      r1,|L1.808|
000136  6008              STR      r0,[r1,#0]
;;;160      Delay_nuS(VK3816_CLK);
000138  200f              MOVS     r0,#0xf
00013a  f7fffffe          BL       Delay_nuS
;;;161    }
00013e  bd00              POP      {pc}
;;;162    /*******************************************************************************
                          ENDP

                  vk3816_I2CWriteByte PROC
;;;168    *******************************************************************************/
;;;169    void vk3816_I2CWriteByte( unsigned char byte )
000140  b530              PUSH     {r4,r5,lr}
;;;170    {
000142  4604              MOV      r4,r0
;;;171    	unsigned char i=8;
000144  2508              MOVS     r5,#8
;;;172    	
;;;173    	while (i--)
000146  e019              B        |L1.380|
                  |L1.328|
;;;174    	{ 
;;;175    		VK3816_SCL_L();
000148  2000              MOVS     r0,#0
00014a  4977              LDR      r1,|L1.808|
00014c  6008              STR      r0,[r1,#0]
;;;176    		if(byte&0x80)
00014e  f0040080          AND      r0,r4,#0x80
000152  b120              CBZ      r0,|L1.350|
;;;177    			VK3816_SDA_H();
000154  2001              MOVS     r0,#1
000156  4974              LDR      r1,|L1.808|
000158  3928              SUBS     r1,r1,#0x28
00015a  6008              STR      r0,[r1,#0]
00015c  e003              B        |L1.358|
                  |L1.350|
;;;178    		else
;;;179    			VK3816_SDA_L();
00015e  2000              MOVS     r0,#0
000160  4971              LDR      r1,|L1.808|
000162  3928              SUBS     r1,r1,#0x28
000164  6008              STR      r0,[r1,#0]
                  |L1.358|
;;;180    		byte<<=1; 
000166  0660              LSLS     r0,r4,#25
000168  0e04              LSRS     r4,r0,#24
;;;181    		Delay_nuS(VK3816_CLK);
00016a  200f              MOVS     r0,#0xf
00016c  f7fffffe          BL       Delay_nuS
;;;182    		VK3816_SCL_H();     
000170  2001              MOVS     r0,#1
000172  496d              LDR      r1,|L1.808|
000174  6008              STR      r0,[r1,#0]
;;;183    		Delay_nuS(VK3816_CLK);
000176  200f              MOVS     r0,#0xf
000178  f7fffffe          BL       Delay_nuS
                  |L1.380|
00017c  0028              MOVS     r0,r5                 ;173
00017e  f1a50101          SUB      r1,r5,#1              ;173
000182  b2cd              UXTB     r5,r1                 ;173
000184  d1e0              BNE      |L1.328|
;;;184    	}
;;;185    }
000186  bd30              POP      {r4,r5,pc}
;;;186    /*******************************************************************************
                          ENDP

                  vk3816_I2CReadByte PROC
;;;192    *******************************************************************************/
;;;193    unsigned char vk3816_I2CReadByte( void )
000188  b530              PUSH     {r4,r5,lr}
;;;194    {
;;;195    	unsigned char i,RetValue;
;;;196    	
;;;197    	RetValue=0;	
00018a  2400              MOVS     r4,#0
;;;198      for( i=0; i<8; i++ )
00018c  2500              MOVS     r5,#0
00018e  e015              B        |L1.444|
                  |L1.400|
;;;199      {
;;;200    		RetValue<<=1; 
000190  0660              LSLS     r0,r4,#25
000192  0e04              LSRS     r4,r0,#24
;;;201    		VK3816_SCL_L();     
000194  2000              MOVS     r0,#0
000196  4964              LDR      r1,|L1.808|
000198  6008              STR      r0,[r1,#0]
;;;202    		Delay_nuS(VK3816_CLK);
00019a  200f              MOVS     r0,#0xf
00019c  f7fffffe          BL       Delay_nuS
;;;203    		VK3816_SCL_H();
0001a0  2001              MOVS     r0,#1
0001a2  4961              LDR      r1,|L1.808|
0001a4  6008              STR      r0,[r1,#0]
;;;204    		Delay_nuS(VK3816_CLK);
0001a6  200f              MOVS     r0,#0xf
0001a8  f7fffffe          BL       Delay_nuS
;;;205    		if( VK3816_GET_SDA()!=0 )
0001ac  485e              LDR      r0,|L1.808|
0001ae  3828              SUBS     r0,r0,#0x28
0001b0  6800              LDR      r0,[r0,#0]
0001b2  b108              CBZ      r0,|L1.440|
;;;206    			RetValue|=0x01;
0001b4  f0440401          ORR      r4,r4,#1
                  |L1.440|
0001b8  1c68              ADDS     r0,r5,#1              ;198
0001ba  b2c5              UXTB     r5,r0                 ;198
                  |L1.444|
0001bc  2d08              CMP      r5,#8                 ;198
0001be  dbe7              BLT      |L1.400|
;;;207    	}
;;;208      
;;;209      return RetValue;
0001c0  4620              MOV      r0,r4
;;;210    }
0001c2  bd30              POP      {r4,r5,pc}
;;;211    
                          ENDP

                  VK3816SetCmd PROC
;;;217      */
;;;218    unsigned char VK3816SetCmd(unsigned char *pointdata,unsigned char cnt)
0001c4  e92d41f0          PUSH     {r4-r8,lr}
;;;219    {
0001c8  4604              MOV      r4,r0
0001ca  460e              MOV      r6,r1
;;;220    	unsigned char i,n;
;;;221      unsigned char errorflag = 1;	//־λ1Ϊ0Ϊȷ
0001cc  f04f0801          MOV      r8,#1
;;;222    	
;;;223    	i=1;
0001d0  2701              MOVS     r7,#1
;;;224    	while(i--)
0001d2  e024              B        |L1.542|
                  |L1.468|
;;;225    	{ 
;;;226    		VK3816_I2CStart(); 
0001d4  f7fffffe          BL       VK3816_I2CStart
;;;227    		vk3816_I2CWriteByte(VK3816_ADDRWR); 
0001d8  20a6              MOVS     r0,#0xa6
0001da  f7fffffe          BL       vk3816_I2CWriteByte
;;;228    		if( 1 == VK3816_I2CSlaveAck() )
0001de  f7fffffe          BL       VK3816_I2CSlaveAck
0001e2  2801              CMP      r0,#1
0001e4  d104              BNE      |L1.496|
;;;229    		{
;;;230    			VK3816_I2CStop();
0001e6  f7fffffe          BL       VK3816_I2CStop
;;;231    			errorflag=1;	
0001ea  f04f0801          MOV      r8,#1
;;;232    			continue;
0001ee  e016              B        |L1.542|
                  |L1.496|
;;;233    		}     
;;;234    		errorflag=0;	     //־λΪ0
0001f0  f04f0800          MOV      r8,#0
;;;235    		for(n=0;n<cnt;n++)
0001f4  2500              MOVS     r5,#0
0001f6  e00f              B        |L1.536|
                  |L1.504|
;;;236    		{ 
;;;237    			vk3816_I2CWriteByte(*pointdata++);
0001f8  f8140b01          LDRB     r0,[r4],#1
0001fc  f7fffffe          BL       vk3816_I2CWriteByte
;;;238    			if( 1 == VK3816_I2CSlaveAck() )
000200  f7fffffe          BL       VK3816_I2CSlaveAck
000204  2801              CMP      r0,#1
000206  d104              BNE      |L1.530|
;;;239    			{
;;;240    				VK3816_I2CStop();
000208  f7fffffe          BL       VK3816_I2CStop
;;;241    				errorflag=1;	
00020c  f04f0801          MOV      r8,#1
;;;242    				continue;
000210  e000              B        |L1.532|
                  |L1.530|
000212  bf00              NOP      
                  |L1.532|
000214  1c68              ADDS     r0,r5,#1              ;235
000216  b2c5              UXTB     r5,r0                 ;235
                  |L1.536|
000218  42b5              CMP      r5,r6                 ;235
00021a  dbed              BLT      |L1.504|
;;;243    			}
;;;244    		}
;;;245    		break;
00021c  e004              B        |L1.552|
                  |L1.542|
00021e  0038              MOVS     r0,r7                 ;224
000220  f1a70101          SUB      r1,r7,#1              ;224
000224  b2cf              UXTB     r7,r1                 ;224
000226  d1d5              BNE      |L1.468|
                  |L1.552|
000228  bf00              NOP      
;;;246     }
;;;247     VK3816_I2CStop();
00022a  f7fffffe          BL       VK3816_I2CStop
;;;248     return(errorflag);    //زɰܱ־
00022e  4640              MOV      r0,r8
;;;249    }
000230  e8bd81f0          POP      {r4-r8,pc}
;;;250    /**
                          ENDP

                  VK3816ReaData PROC
;;;255      */
;;;256    unsigned char VK3816ReaData(unsigned char *pointdata,unsigned char cnt)
000234  e92d41f0          PUSH     {r4-r8,lr}
;;;257    {
000238  4604              MOV      r4,r0
00023a  460e              MOV      r6,r1
;;;258    	unsigned char i,n;
;;;259      unsigned char errorflag = 1;	//־λ1Ϊ0Ϊȷ
00023c  2701              MOVS     r7,#1
;;;260    	
;;;261    	i=1;
00023e  46b8              MOV      r8,r7
;;;262    	while(i--)
000240  e021              B        |L1.646|
                  |L1.578|
;;;263    	{ 
;;;264    		VK3816_I2CStart(); 
000242  f7fffffe          BL       VK3816_I2CStart
;;;265    		vk3816_I2CWriteByte(VK3816_ADDRRD); 
000246  20a7              MOVS     r0,#0xa7
000248  f7fffffe          BL       vk3816_I2CWriteByte
;;;266    		if( 1 == VK3816_I2CSlaveAck() )
00024c  f7fffffe          BL       VK3816_I2CSlaveAck
000250  2801              CMP      r0,#1
000252  d103              BNE      |L1.604|
;;;267    		{
;;;268    			VK3816_I2CStop();
000254  f7fffffe          BL       VK3816_I2CStop
;;;269    			errorflag=1;	
000258  2701              MOVS     r7,#1
;;;270    			continue;
00025a  e014              B        |L1.646|
                  |L1.604|
;;;271    		}     
;;;272    		errorflag=0;//־λΪ0
00025c  2700              MOVS     r7,#0
;;;273    		for(n=0;n<(cnt-1);n++)
00025e  2500              MOVS     r5,#0
000260  e007              B        |L1.626|
                  |L1.610|
;;;274    		{ 
;;;275    			*pointdata++=vk3816_I2CReadByte();
000262  f7fffffe          BL       vk3816_I2CReadByte
000266  f8040b01          STRB     r0,[r4],#1
;;;276    			VK3816_I2CSendAck();
00026a  f7fffffe          BL       VK3816_I2CSendAck
00026e  1c68              ADDS     r0,r5,#1              ;273
000270  b2c5              UXTB     r5,r0                 ;273
                  |L1.626|
000272  1e70              SUBS     r0,r6,#1              ;273
000274  42a8              CMP      r0,r5                 ;273
000276  dcf4              BGT      |L1.610|
;;;277    		}
;;;278    		*pointdata++=vk3816_I2CReadByte();
000278  f7fffffe          BL       vk3816_I2CReadByte
00027c  f8040b01          STRB     r0,[r4],#1
;;;279    		VK3816_I2CSendNAck();
000280  f7fffffe          BL       VK3816_I2CSendNAck
;;;280    		break;
000284  e006              B        |L1.660|
                  |L1.646|
000286  ea5f0008          MOVS     r0,r8                 ;262
00028a  f1a80101          SUB      r1,r8,#1              ;262
00028e  f00108ff          AND      r8,r1,#0xff           ;262
000292  d1d6              BNE      |L1.578|
                  |L1.660|
000294  bf00              NOP      
;;;281     }
;;;282     VK3816_I2CStop();
000296  f7fffffe          BL       VK3816_I2CStop
;;;283     return errorflag;    //زɰܱ־
00029a  4638              MOV      r0,r7
;;;284    }
00029c  e8bd81f0          POP      {r4-r8,pc}
;;;285    
                          ENDP

                  VK3816_Lowlevel_Init PROC
;;;293    *******************************************************************************/
;;;294    void VK3816_Lowlevel_Init(void)
0002a0  b510              PUSH     {r4,lr}
;;;295    {
;;;296    	//ͨߵƽͬӵƽת·
;;;297    	//˺ݿͻƬӦ޸	
;;;298    	GPIO_SetMode(VK3816_SCL_PORT, VK3816_SCL_PIN, GPIO_MODE_OUTPUT);
0002a2  2201              MOVS     r2,#1
0002a4  03d1              LSLS     r1,r2,#15
0002a6  4821              LDR      r0,|L1.812|
0002a8  f7fffffe          BL       GPIO_SetMode
;;;299    	GPIO_SetMode(VK3816_SDA_PORT, VK3816_SDA_PIN, GPIO_MODE_QUASI);
0002ac  2203              MOVS     r2,#3
0002ae  2120              MOVS     r1,#0x20
0002b0  481e              LDR      r0,|L1.812|
0002b2  f7fffffe          BL       GPIO_SetMode
;;;300    	
;;;301      //I2C߿Ϊߵƽ	
;;;302    	VK3816_SCL_H();  
0002b6  2001              MOVS     r0,#1
0002b8  491b              LDR      r1,|L1.808|
0002ba  6008              STR      r0,[r1,#0]
;;;303    	VK3816_SDA_H(); 
0002bc  491a              LDR      r1,|L1.808|
0002be  3928              SUBS     r1,r1,#0x28
0002c0  6008              STR      r0,[r1,#0]
;;;304    }
0002c2  bd10              POP      {r4,pc}
;;;305    /*******************************************************************************
                          ENDP

                  VK3816_Init PROC
;;;311    *******************************************************************************/
;;;312    void VK3816_Init(void)
0002c4  b510              PUSH     {r4,lr}
;;;313    {	
;;;314    //	unsigned char i;
;;;315    	unsigned char result;	
;;;316    	
;;;317    	//ܽøݿͻƬӦ޸
;;;318    	VK3816_Lowlevel_Init();
0002c6  f7fffffe          BL       VK3816_Lowlevel_Init
;;;319    
;;;320    	//Ĭ16keyֲ
;;;321    //	vk3816_cmdsetbuf[0]=0xA1; //10000000 
;;;322    //	vk3816_cmdsetbuf[1]=0x83; //10000011  16KEY
;;;323    //	vk3816_cmdsetbuf[2]=0x00; //00000000
;;;324    //	vk3816_cmdsetbuf[3]=0x00; //00000000
;;;325    		
;;;326    	//1TP0~TP2->1 SLIDE TP3~TP16->13 KEY
;;;327    	vk3816_cmdsetbuf[0]=0x84; //10000100 
0002ca  2084              MOVS     r0,#0x84
0002cc  4918              LDR      r1,|L1.816|
0002ce  7008              STRB     r0,[r1,#0]
;;;328    	vk3816_cmdsetbuf[1]=0x40; //00000000 0KEY
0002d0  2040              MOVS     r0,#0x40
0002d2  7048              STRB     r0,[r1,#1]
;;;329    	vk3816_cmdsetbuf[2]=0x33; //00110011 4KEY/SLIDE2 4KEY/SLIDE1 
0002d4  2033              MOVS     r0,#0x33
0002d6  7088              STRB     r0,[r1,#2]
;;;330    	vk3816_cmdsetbuf[3]=0x00; //00000011 4KEY/SLIDE3
0002d8  2000              MOVS     r0,#0
0002da  70c8              STRB     r0,[r1,#3]
;;;331    	
;;;332    	result=FAIL;
0002dc  2401              MOVS     r4,#1
;;;333    	while(result==FAIL)
0002de  e007              B        |L1.752|
                  |L1.736|
;;;334    	{
;;;335    		result=VK3816SetCmd(vk3816_cmdsetbuf,4);
0002e0  2104              MOVS     r1,#4
0002e2  4813              LDR      r0,|L1.816|
0002e4  f7fffffe          BL       VK3816SetCmd
0002e8  4604              MOV      r4,r0
;;;336    		Delay_nmS(200);					//ʱ1S	
0002ea  20c8              MOVS     r0,#0xc8
0002ec  f7fffffe          BL       Delay_nmS
                  |L1.752|
0002f0  2c01              CMP      r4,#1                 ;333
0002f2  d0f5              BEQ      |L1.736|
;;;337    	}
;;;338    //	for(i=0;i<16;i++)
;;;339    //	{	
;;;340    //		//ôֵSLIDE2/SLIDE1-0x020 Ĭ0x010 С0x008
;;;341    //		vk3816_cmdsetbuf[0]=0xc0|i; //1100xxxx ѡͨ
;;;342    //		vk3816_cmdsetbuf[1]=0x10; 	//00010000 ֵML
;;;343    //		vk3816_cmdsetbuf[2]=0x00; 	//00000000 ֵH 
;;;344    //		
;;;345    //		result=FAIL;
;;;346    //		while(result==FAIL)
;;;347    //		{
;;;348    //			result=VK3816SetCmd(vk3816_cmdsetbuf,3);
;;;349    //			VK3816_Delay(10*vk3816_BASE100MS);	//ʱ1S
;;;350    //		}
;;;351    //	}
;;;352    //	//ôsleepֵ->0x005 Ĭ0x002
;;;353    //	vk3816_cmdsetbuf[0]=0xd0; 	//11010000 
;;;354    //	vk3816_cmdsetbuf[1]=0x10; 	//00000011 ֵML
;;;355    //	vk3816_cmdsetbuf[2]=0x00; 	//00000000 ֵH 
;;;356    //	
;;;357    //	result=FAIL;
;;;358    //	while(result==FAIL)
;;;359    //	{
;;;360    //		result=VK3816SetCmd(vk3816_cmdsetbuf,3);
;;;361    //		VK3816_Delay(10*vk3816_BASE100MS);	//ʱ1S
;;;362    //	}
;;;363    }
0002f4  bd10              POP      {r4,pc}
;;;364    
                          ENDP

                  VK3816_Main PROC
;;;365    void VK3816_Main(void)
0002f6  f7fffffe          BL       VK3816_Init
;;;366    {	
;;;367    	VK3816_Init();
;;;368    
;;;369    	while(1)
0002fa  e014              B        |L1.806|
                  |L1.764|
;;;370    	{	
;;;371    		Delay_nmS(100);					//ʱ
0002fc  2064              MOVS     r0,#0x64
0002fe  f7fffffe          BL       Delay_nmS
;;;372    //    if( 0 == VK3816_GET_INT() )
;;;373    		{
;;;374    			VK3816ReaData(vk3816_readbuf,6);
000302  2106              MOVS     r1,#6
000304  480b              LDR      r0,|L1.820|
000306  f7fffffe          BL       VK3816ReaData
;;;375    			if(vk3816_readbuf[0]&0x07) //SLIDE
00030a  480a              LDR      r0,|L1.820|
00030c  7800              LDRB     r0,[r0,#0]  ; vk3816_readbuf
00030e  f0000007          AND      r0,r0,#7
000312  b108              CBZ      r0,|L1.792|
;;;376    			{
;;;377    				 __nop();	
000314  bf00              NOP      
000316  e006              B        |L1.806|
                  |L1.792|
;;;378    			}
;;;379    			else if((vk3816_readbuf[1]!=0x00)||(vk3816_readbuf[2]!=0x00)) //KEY
000318  4806              LDR      r0,|L1.820|
00031a  7840              LDRB     r0,[r0,#1]  ; vk3816_readbuf
00031c  b910              CBNZ     r0,|L1.804|
00031e  4805              LDR      r0,|L1.820|
000320  7880              LDRB     r0,[r0,#2]  ; vk3816_readbuf
000322  b100              CBZ      r0,|L1.806|
                  |L1.804|
;;;380    			{
;;;381    				 __nop();
000324  bf00              NOP      
                  |L1.806|
000326  e7e9              B        |L1.764|
;;;382    			}
;;;383    		}
;;;384    	}
;;;385    }
;;;386    /************************END OF FILE****/
                          ENDP

                  |L1.808|
                          DCD      0x4000487c
                  |L1.812|
                          DCD      0x40004040
                  |L1.816|
                          DCD      vk3816_cmdsetbuf
                  |L1.820|
                          DCD      vk3816_readbuf

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

                  vk3816_cmdsetbuf
                          DCDU     0x00000000
                  vk3816_readbuf
                          DCDU     0x00000000
000008  0000              DCB      0x00,0x00

;*** Start embedded assembler ***

#line 1 "..\\touch_driver\\VK3816_QUASI.c"
	AREA ||.rev16_text||, CODE
	THUMB
	EXPORT |__asm___14_VK3816_QUASI_c_f70de489____REV16|
#line 114 "..\\..\\..\\Library\\CMSIS\\Include\\core_cmInstr.h"
|__asm___14_VK3816_QUASI_c_f70de489____REV16| PROC
#line 115

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

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
