; generated by Component: ARM Compiler 5.05 update 2 (build 169) Tool: ArmCC [4d0f38]
; commandline ArmCC [--list --debug -c --asm --interleave -o.\obj\vk0256.o --asm_dir=.\lst\ --list_dir=.\lst\ --depend=.\obj\vk0256.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 -ID:\\A\LCD\͹ϵ_VKL\VKL\VKL144A_TESTCODE\project\VKL144_FUNC\Keil\RTE -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\4.3.0\CMSIS\Include -D__UVISION_VERSION=515 -D_RTE_ --omf_browse=.\obj\vk0256.crf ..\lcd_driver\vk0256.c]
                          THUMB

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

                  delay_nus PROC
;;;72     *******************************************************************************/
;;;73     void delay_nus(unsigned int n)	   
000000  e007              B        |L1.18|
                  |L1.2|
;;;74     {
;;;75     	unsigned char i;
;;;76     	while(n--)
;;;77     	{
;;;78     		i=10;
000002  210a              MOVS     r1,#0xa
;;;79     		while(i--)
000004  e000              B        |L1.8|
                  |L1.6|
;;;80     		{//nopָݵƬӦ޸
;;;81     			__nop();
000006  bf00              NOP      
                  |L1.8|
000008  000a              MOVS     r2,r1                 ;79
00000a  f1a10301          SUB      r3,r1,#1              ;79
00000e  b2d9              UXTB     r1,r3                 ;79
000010  d1f9              BNE      |L1.6|
                  |L1.18|
000012  0002              MOVS     r2,r0                 ;76
000014  f1a00001          SUB      r0,r0,#1              ;76
000018  d1f3              BNE      |L1.2|
;;;82     		}
;;;83     	}
;;;84     }
00001a  4770              BX       lr
;;;85     /*******************************************************************************
                          ENDP

                  delay_nms PROC
;;;91     *******************************************************************************/
;;;92     void delay_nms(unsigned long int n)
00001c  b510              PUSH     {r4,lr}
;;;93     {
00001e  4604              MOV      r4,r0
;;;94     	while(n--)
000020  e003              B        |L1.42|
                  |L1.34|
;;;95     	{
;;;96     		delay_nus(1000);
000022  f44f707a          MOV      r0,#0x3e8
000026  f7fffffe          BL       delay_nus
                  |L1.42|
00002a  0020              MOVS     r0,r4                 ;94
00002c  f1a40401          SUB      r4,r4,#1              ;94
000030  d1f7              BNE      |L1.34|
;;;97     	}
;;;98     }
000032  bd10              POP      {r4,pc}
;;;99     /*******************************************************************************
                          ENDP

                  WriteClockVk0256 PROC
;;;105    *******************************************************************************/
;;;106    void WriteClockVk0256(void)
000034  b500              PUSH     {lr}
;;;107    {
;;;108    	VK0256_WR_L(); 
000036  2000              MOVS     r0,#0
000038  49f4              LDR      r1,|L1.1036|
00003a  6008              STR      r0,[r1,#0]
;;;109    	delay_nus(VK0256_CLK);
00003c  200a              MOVS     r0,#0xa
00003e  f7fffffe          BL       delay_nus
;;;110    	VK0256_WR_H();	
000042  2001              MOVS     r0,#1
000044  49f1              LDR      r1,|L1.1036|
000046  6008              STR      r0,[r1,#0]
;;;111    	delay_nus(VK0256_CLK);	
000048  200a              MOVS     r0,#0xa
00004a  f7fffffe          BL       delay_nus
;;;112    }
00004e  bd00              POP      {pc}
;;;113    /*******************************************************************************
                          ENDP

                  WriteCommandVk0256 PROC
;;;119    *******************************************************************************/
;;;120    void WriteCommandVk0256(unsigned char FunctonCode)
000050  b570              PUSH     {r4-r6,lr}
;;;121    {
000052  4604              MOV      r4,r0
;;;122    	unsigned char Shift = 0x80; 
000054  2680              MOVS     r6,#0x80
;;;123    	unsigned char i;
;;;124    	
;;;125    	VK0256_CS_L();   //CS Ƭѡ   
000056  2000              MOVS     r0,#0
000058  49ec              LDR      r1,|L1.1036|
00005a  3908              SUBS     r1,r1,#8
00005c  6008              STR      r0,[r1,#0]
;;;126    	delay_nus(VK0256_CLK/2);
00005e  2005              MOVS     r0,#5
000060  f7fffffe          BL       delay_nus
;;;127    	VK0256_DATA_H();  
000064  2001              MOVS     r0,#1
000066  49e9              LDR      r1,|L1.1036|
000068  3928              SUBS     r1,r1,#0x28
00006a  6008              STR      r0,[r1,#0]
;;;128    	WriteClockVk0256();
00006c  f7fffffe          BL       WriteClockVk0256
;;;129    	VK0256_DATA_L();  
000070  2000              MOVS     r0,#0
000072  49e6              LDR      r1,|L1.1036|
000074  3928              SUBS     r1,r1,#0x28
000076  6008              STR      r0,[r1,#0]
;;;130    	WriteClockVk0256();
000078  f7fffffe          BL       WriteClockVk0256
;;;131    	VK0256_DATA_L();  
00007c  2000              MOVS     r0,#0
00007e  49e3              LDR      r1,|L1.1036|
000080  3928              SUBS     r1,r1,#0x28
000082  6008              STR      r0,[r1,#0]
;;;132    	WriteClockVk0256();
000084  f7fffffe          BL       WriteClockVk0256
;;;133    
;;;134    	for(i = 0; i < 8; i++) 
000088  2500              MOVS     r5,#0
00008a  e010              B        |L1.174|
                  |L1.140|
;;;135    	{
;;;136    	 if(Shift & FunctonCode) 	
00008c  ea060004          AND      r0,r6,r4
000090  b120              CBZ      r0,|L1.156|
;;;137    		 VK0256_DATA_H(); 
000092  2001              MOVS     r0,#1
000094  49dd              LDR      r1,|L1.1036|
000096  3928              SUBS     r1,r1,#0x28
000098  6008              STR      r0,[r1,#0]
00009a  e003              B        |L1.164|
                  |L1.156|
;;;138    	 else 
;;;139    		 VK0256_DATA_L();	  
00009c  2000              MOVS     r0,#0
00009e  49db              LDR      r1,|L1.1036|
0000a0  3928              SUBS     r1,r1,#0x28
0000a2  6008              STR      r0,[r1,#0]
                  |L1.164|
;;;140    
;;;141    	 WriteClockVk0256();
0000a4  f7fffffe          BL       WriteClockVk0256
;;;142    	 Shift = Shift >> 1;
0000a8  1076              ASRS     r6,r6,#1
0000aa  1c68              ADDS     r0,r5,#1              ;134
0000ac  b2c5              UXTB     r5,r0                 ;134
                  |L1.174|
0000ae  2d08              CMP      r5,#8                 ;134
0000b0  dbec              BLT      |L1.140|
;;;143    	}
;;;144      VK0256_DATA_L(); 
0000b2  2000              MOVS     r0,#0
0000b4  49d5              LDR      r1,|L1.1036|
0000b6  3928              SUBS     r1,r1,#0x28
0000b8  6008              STR      r0,[r1,#0]
;;;145    	WriteClockVk0256();	//һ0һλ X
0000ba  f7fffffe          BL       WriteClockVk0256
;;;146      VK0256_CS_H(); 			//CS Ƭѡ  
0000be  2001              MOVS     r0,#1
0000c0  49d2              LDR      r1,|L1.1036|
0000c2  3908              SUBS     r1,r1,#8
0000c4  6008              STR      r0,[r1,#0]
;;;147    	delay_nus(VK0256_CLK/2);
0000c6  2005              MOVS     r0,#5
0000c8  f7fffffe          BL       delay_nus
;;;148      VK0256_DATA_H(); 
0000cc  2001              MOVS     r0,#1
0000ce  49cf              LDR      r1,|L1.1036|
0000d0  3928              SUBS     r1,r1,#0x28
0000d2  6008              STR      r0,[r1,#0]
;;;149    }
0000d4  bd70              POP      {r4-r6,pc}
;;;150    
                          ENDP

                  Write1DataVk0256 PROC
;;;158    *******************************************************************************/
;;;159    void Write1DataVk0256(unsigned char Addr,unsigned char Dat)
0000d6  b5f0              PUSH     {r4-r7,lr}
;;;160    {
0000d8  4607              MOV      r7,r0
0000da  460e              MOV      r6,r1
;;;161    	unsigned char i; 
;;;162    	unsigned char Shift;
;;;163    	
;;;164    	Shift = 0x20; //θ3λ ֻ5λ
0000dc  2520              MOVS     r5,#0x20
;;;165    	
;;;166    	VK0256_CS_L();  //CS Ƭѡ
0000de  2000              MOVS     r0,#0
0000e0  49ca              LDR      r1,|L1.1036|
0000e2  3908              SUBS     r1,r1,#8
0000e4  6008              STR      r0,[r1,#0]
;;;167    	delay_nus(VK0256_CLK/2);
0000e6  2005              MOVS     r0,#5
0000e8  f7fffffe          BL       delay_nus
;;;168    
;;;169    	VK0256_DATA_H();  
0000ec  2001              MOVS     r0,#1
0000ee  49c7              LDR      r1,|L1.1036|
0000f0  3928              SUBS     r1,r1,#0x28
0000f2  6008              STR      r0,[r1,#0]
;;;170    	WriteClockVk0256();  //101
0000f4  f7fffffe          BL       WriteClockVk0256
;;;171    	VK0256_DATA_L();  
0000f8  2000              MOVS     r0,#0
0000fa  49c4              LDR      r1,|L1.1036|
0000fc  3928              SUBS     r1,r1,#0x28
0000fe  6008              STR      r0,[r1,#0]
;;;172    	WriteClockVk0256();
000100  f7fffffe          BL       WriteClockVk0256
;;;173    	VK0256_DATA_H();  
000104  2001              MOVS     r0,#1
000106  49c1              LDR      r1,|L1.1036|
000108  3928              SUBS     r1,r1,#0x28
00010a  6008              STR      r0,[r1,#0]
;;;174    	WriteClockVk0256();
00010c  f7fffffe          BL       WriteClockVk0256
;;;175    
;;;176    	for( i = 0; i < vk0256_addrbit; i++) 
000110  2400              MOVS     r4,#0
000112  e010              B        |L1.310|
                  |L1.276|
;;;177    	{   		 
;;;178    		if (Addr & Shift) 
000114  ea070005          AND      r0,r7,r5
000118  b120              CBZ      r0,|L1.292|
;;;179    			VK0256_DATA_H(); 		
00011a  2001              MOVS     r0,#1
00011c  49bb              LDR      r1,|L1.1036|
00011e  3928              SUBS     r1,r1,#0x28
000120  6008              STR      r0,[r1,#0]
000122  e003              B        |L1.300|
                  |L1.292|
;;;180    		else  
;;;181    			VK0256_DATA_L();
000124  2000              MOVS     r0,#0
000126  49b9              LDR      r1,|L1.1036|
000128  3928              SUBS     r1,r1,#0x28
00012a  6008              STR      r0,[r1,#0]
                  |L1.300|
;;;182    		WriteClockVk0256();		
00012c  f7fffffe          BL       WriteClockVk0256
;;;183    		Shift = Shift >> 1; 
000130  106d              ASRS     r5,r5,#1
000132  1c60              ADDS     r0,r4,#1              ;176
000134  b2c4              UXTB     r4,r0                 ;176
                  |L1.310|
000136  48b6              LDR      r0,|L1.1040|
000138  7800              LDRB     r0,[r0,#0]            ;176  ; vk0256_addrbit
00013a  4284              CMP      r4,r0                 ;176
00013c  dbea              BLT      |L1.276|
;;;184    	}
;;;185      Shift = 0x01;
00013e  2501              MOVS     r5,#1
;;;186      for (i = 0; i < 8; i++) 
000140  2400              MOVS     r4,#0
000142  e011              B        |L1.360|
                  |L1.324|
;;;187    	{
;;;188    
;;;189    		if( Dat & Shift) 
000144  ea060005          AND      r0,r6,r5
000148  b120              CBZ      r0,|L1.340|
;;;190    			VK0256_DATA_H();		 
00014a  2001              MOVS     r0,#1
00014c  49af              LDR      r1,|L1.1036|
00014e  3928              SUBS     r1,r1,#0x28
000150  6008              STR      r0,[r1,#0]
000152  e003              B        |L1.348|
                  |L1.340|
;;;191       	else  
;;;192    			VK0256_DATA_L();
000154  2000              MOVS     r0,#0
000156  49ad              LDR      r1,|L1.1036|
000158  3928              SUBS     r1,r1,#0x28
00015a  6008              STR      r0,[r1,#0]
                  |L1.348|
;;;193    		WriteClockVk0256();
00015c  f7fffffe          BL       WriteClockVk0256
;;;194    		Shift = Shift << 1;
000160  0668              LSLS     r0,r5,#25
000162  0e05              LSRS     r5,r0,#24
000164  1c60              ADDS     r0,r4,#1              ;186
000166  b2c4              UXTB     r4,r0                 ;186
                  |L1.360|
000168  2c08              CMP      r4,#8                 ;186
00016a  dbeb              BLT      |L1.324|
;;;195    	}   
;;;196      VK0256_CS_H(); //CS Ƭѡ
00016c  2001              MOVS     r0,#1
00016e  49a7              LDR      r1,|L1.1036|
000170  3908              SUBS     r1,r1,#8
000172  6008              STR      r0,[r1,#0]
;;;197    	delay_nus(VK0256_CLK/2);	
000174  2005              MOVS     r0,#5
000176  f7fffffe          BL       delay_nus
;;;198      VK0256_DATA_H(); 
00017a  2001              MOVS     r0,#1
00017c  49a3              LDR      r1,|L1.1036|
00017e  3928              SUBS     r1,r1,#0x28
000180  6008              STR      r0,[r1,#0]
;;;199    }
000182  bdf0              POP      {r4-r7,pc}
;;;200    /*******************************************************************************
                          ENDP

                  WritenDataVk0256 PROC
;;;208    *******************************************************************************/
;;;209    void WritenDataVk0256(unsigned char Addr,unsigned char *Databuf,unsigned char Cnt)
000184  e92d47f0          PUSH     {r4-r10,lr}
;;;210    {
000188  4682              MOV      r10,r0
00018a  460e              MOV      r6,r1
00018c  4690              MOV      r8,r2
;;;211    	unsigned char i,j; 
;;;212    	unsigned char Shift;
;;;213    	unsigned char dataval; 
;;;214    	
;;;215    	VK0256_CS_L();   //CS Ƭѡ 
00018e  2000              MOVS     r0,#0
000190  499e              LDR      r1,|L1.1036|
000192  3908              SUBS     r1,r1,#8
000194  6008              STR      r0,[r1,#0]
;;;216    	delay_nus(VK0256_CLK/2);
000196  2005              MOVS     r0,#5
000198  f7fffffe          BL       delay_nus
;;;217    
;;;218    	VK0256_DATA_H();  
00019c  2001              MOVS     r0,#1
00019e  499b              LDR      r1,|L1.1036|
0001a0  3928              SUBS     r1,r1,#0x28
0001a2  6008              STR      r0,[r1,#0]
;;;219    	WriteClockVk0256();  //101
0001a4  f7fffffe          BL       WriteClockVk0256
;;;220    	VK0256_DATA_L();  
0001a8  2000              MOVS     r0,#0
0001aa  4998              LDR      r1,|L1.1036|
0001ac  3928              SUBS     r1,r1,#0x28
0001ae  6008              STR      r0,[r1,#0]
;;;221    	WriteClockVk0256();
0001b0  f7fffffe          BL       WriteClockVk0256
;;;222    	VK0256_DATA_H();  
0001b4  2001              MOVS     r0,#1
0001b6  4995              LDR      r1,|L1.1036|
0001b8  3928              SUBS     r1,r1,#0x28
0001ba  6008              STR      r0,[r1,#0]
;;;223    	WriteClockVk0256();
0001bc  f7fffffe          BL       WriteClockVk0256
;;;224    
;;;225    	Shift = 0x20;
0001c0  2520              MOVS     r5,#0x20
;;;226    	for( i = 0; i < vk0256_addrbit; i++) 
0001c2  2400              MOVS     r4,#0
0001c4  e010              B        |L1.488|
                  |L1.454|
;;;227    	{   		 
;;;228    		if (Addr & Shift) 
0001c6  ea0a0005          AND      r0,r10,r5
0001ca  b120              CBZ      r0,|L1.470|
;;;229    			VK0256_DATA_H(); 		
0001cc  2001              MOVS     r0,#1
0001ce  498f              LDR      r1,|L1.1036|
0001d0  3928              SUBS     r1,r1,#0x28
0001d2  6008              STR      r0,[r1,#0]
0001d4  e003              B        |L1.478|
                  |L1.470|
;;;230    		else  
;;;231    			VK0256_DATA_L();
0001d6  2000              MOVS     r0,#0
0001d8  498c              LDR      r1,|L1.1036|
0001da  3928              SUBS     r1,r1,#0x28
0001dc  6008              STR      r0,[r1,#0]
                  |L1.478|
;;;232    		WriteClockVk0256();		
0001de  f7fffffe          BL       WriteClockVk0256
;;;233    		Shift = Shift >> 1; 
0001e2  106d              ASRS     r5,r5,#1
0001e4  1c60              ADDS     r0,r4,#1              ;226
0001e6  b2c4              UXTB     r4,r0                 ;226
                  |L1.488|
0001e8  4889              LDR      r0,|L1.1040|
0001ea  7800              LDRB     r0,[r0,#0]            ;226  ; vk0256_addrbit
0001ec  4284              CMP      r4,r0                 ;226
0001ee  dbea              BLT      |L1.454|
;;;234    	}
;;;235    	for (j = 0; j < Cnt; j++) 
0001f0  2700              MOVS     r7,#0
0001f2  e01a              B        |L1.554|
                  |L1.500|
;;;236    	{
;;;237    		Shift = 0x01;
0001f4  2501              MOVS     r5,#1
;;;238    		dataval=*Databuf++;
0001f6  f8169b01          LDRB     r9,[r6],#1
;;;239    		for (i = 0; i < 8; i++) 
0001fa  2400              MOVS     r4,#0
0001fc  e011              B        |L1.546|
                  |L1.510|
;;;240    		{
;;;241    			if( dataval & Shift) 
0001fe  ea090005          AND      r0,r9,r5
000202  b120              CBZ      r0,|L1.526|
;;;242    				VK0256_DATA_H();		 
000204  2001              MOVS     r0,#1
000206  4981              LDR      r1,|L1.1036|
000208  3928              SUBS     r1,r1,#0x28
00020a  6008              STR      r0,[r1,#0]
00020c  e003              B        |L1.534|
                  |L1.526|
;;;243    			else  
;;;244    				VK0256_DATA_L();
00020e  2000              MOVS     r0,#0
000210  497e              LDR      r1,|L1.1036|
000212  3928              SUBS     r1,r1,#0x28
000214  6008              STR      r0,[r1,#0]
                  |L1.534|
;;;245    			WriteClockVk0256();
000216  f7fffffe          BL       WriteClockVk0256
;;;246    			Shift = Shift << 1;
00021a  0668              LSLS     r0,r5,#25
00021c  0e05              LSRS     r5,r0,#24
00021e  1c60              ADDS     r0,r4,#1              ;239
000220  b2c4              UXTB     r4,r0                 ;239
                  |L1.546|
000222  2c08              CMP      r4,#8                 ;239
000224  dbeb              BLT      |L1.510|
000226  1c78              ADDS     r0,r7,#1              ;235
000228  b2c7              UXTB     r7,r0                 ;235
                  |L1.554|
00022a  4547              CMP      r7,r8                 ;235
00022c  dbe2              BLT      |L1.500|
;;;247    		}   
;;;248    	}
;;;249      VK0256_CS_H();   //CS Ƭѡ
00022e  2001              MOVS     r0,#1
000230  4976              LDR      r1,|L1.1036|
000232  3908              SUBS     r1,r1,#8
000234  6008              STR      r0,[r1,#0]
;;;250    	delay_nus(VK0256_CLK/2);	 
000236  2005              MOVS     r0,#5
000238  f7fffffe          BL       delay_nus
;;;251      VK0256_DATA_H(); 
00023c  2001              MOVS     r0,#1
00023e  4973              LDR      r1,|L1.1036|
000240  3928              SUBS     r1,r1,#0x28
000242  6008              STR      r0,[r1,#0]
;;;252    }
000244  e8bd87f0          POP      {r4-r10,pc}
;;;253    /*******************************************************************************
                          ENDP

                  Vk0256_DisAll PROC
;;;260    *******************************************************************************/
;;;261    void Vk0256_DisAll(unsigned char dat)
000248  b530              PUSH     {r4,r5,lr}
;;;262    {
00024a  b088              SUB      sp,sp,#0x20
00024c  4605              MOV      r5,r0
;;;263    	unsigned char segi;
;;;264    	unsigned char dispram[32];
;;;265    	
;;;266    	for(segi=0;segi<32;segi++)
00024e  2400              MOVS     r4,#0
000250  e003              B        |L1.602|
                  |L1.594|
;;;267    	{
;;;268    		dispram[segi]=dat;
000252  f80d5004          STRB     r5,[sp,r4]
000256  1c60              ADDS     r0,r4,#1              ;266
000258  b2c4              UXTB     r4,r0                 ;266
                  |L1.602|
00025a  2c20              CMP      r4,#0x20              ;266
00025c  dbf9              BLT      |L1.594|
;;;269    	}
;;;270    	WritenDataVk0256(0,dispram,32);//8bitַԶ2(ÿ4bitݵַԶ1)
00025e  2220              MOVS     r2,#0x20
000260  4669              MOV      r1,sp
000262  2000              MOVS     r0,#0
000264  f7fffffe          BL       WritenDataVk0256
;;;271    }
000268  b008              ADD      sp,sp,#0x20
00026a  bd30              POP      {r4,r5,pc}
;;;272    /*******************************************************************************
                          ENDP

                  Vk0256_DisSegComOn PROC
;;;279    *******************************************************************************/
;;;280    void Vk0256_DisSegComOn(unsigned char seg,unsigned char com)
00026c  b530              PUSH     {r4,r5,lr}
;;;281    {
00026e  4604              MOV      r4,r0
000270  460d              MOV      r5,r1
;;;282    		Write1DataVk0256(seg*2,(1<<com));//8bitݣÿ4bitݵַ18bitݵַҪ2
000272  2201              MOVS     r2,#1
000274  40aa              LSLS     r2,r2,r5
000276  b2d1              UXTB     r1,r2
000278  0662              LSLS     r2,r4,#25
00027a  0e10              LSRS     r0,r2,#24
00027c  f7fffffe          BL       Write1DataVk0256
;;;283    }
000280  bd30              POP      {r4,r5,pc}
;;;284    /*******************************************************************************
                          ENDP

                  Vk0256_DisSegComOff PROC
;;;291    *******************************************************************************/
;;;292    void Vk0256_DisSegComOff(unsigned char seg,unsigned char com)
000282  b530              PUSH     {r4,r5,lr}
;;;293    {
000284  4604              MOV      r4,r0
000286  460d              MOV      r5,r1
;;;294    		Write1DataVk0256(seg*2,~(1<<com));//8bitݣÿ4bitݵַ18bitݵַҪ2
000288  2201              MOVS     r2,#1
00028a  40aa              LSLS     r2,r2,r5
00028c  43d2              MVNS     r2,r2
00028e  b2d1              UXTB     r1,r2
000290  0662              LSLS     r2,r4,#25
000292  0e10              LSRS     r0,r2,#24
000294  f7fffffe          BL       Write1DataVk0256
;;;295    }
000298  bd30              POP      {r4,r5,pc}
;;;296    /*******************************************************************************
                          ENDP

                  Vk0256_Enter_Standby PROC
;;;302    *******************************************************************************/
;;;303    void Vk0256_Enter_Standby(void)
00029a  b500              PUSH     {lr}
;;;304    {	
;;;305    	//ʹLCDOFFSYSDIS,ϵͳڵ͹״̬
;;;306    	//ֻʹƬRCʱԴʱ,ʹϵͳ͹״̬
;;;307    	WriteCommandVk0256(OSC_OFF);
00029c  2000              MOVS     r0,#0
00029e  f7fffffe          BL       WriteCommandVk0256
;;;308    	WriteCommandVk0256(DISP_OFF);
0002a2  2002              MOVS     r0,#2
0002a4  f7fffffe          BL       WriteCommandVk0256
;;;309    }
0002a8  bd00              POP      {pc}
;;;310    /*******************************************************************************
                          ENDP

                  Vk0256_Exit_Standby PROC
;;;316    *******************************************************************************/
;;;317    void Vk0256_Exit_Standby(void)
0002aa  b500              PUSH     {lr}
;;;318    {	
;;;319    	//˳͹״̬vk0256
;;;320    	WriteCommandVk0256(OSC_ON);
0002ac  2001              MOVS     r0,#1
0002ae  f7fffffe          BL       WriteCommandVk0256
;;;321    	WriteCommandVk0256(DISP_ON);
0002b2  2003              MOVS     r0,#3
0002b4  f7fffffe          BL       WriteCommandVk0256
;;;322    	vk0256_maxcom=8;	//1/4bias 8com
0002b8  2008              MOVS     r0,#8
0002ba  4956              LDR      r1,|L1.1044|
0002bc  7008              STRB     r0,[r1,#0]
;;;323    }
0002be  bd00              POP      {pc}
;;;324    /*******************************************************************************
                          ENDP

                  Vk0256_Lowlevel_Init PROC
;;;330    *******************************************************************************/
;;;331    void Vk0256_Lowlevel_Init(void)
0002c0  b510              PUSH     {r4,lr}
;;;332    {
;;;333    	//ͨߵƽͬӵƽת·
;;;334    	//˺ݿͻƬӦ޸	
;;;335    	GPIO_SetMode(VK0256_CS_PORT, VK0256_CS_PIN, GPIO_MODE_OUTPUT);
0002c2  2201              MOVS     r2,#1
0002c4  0351              LSLS     r1,r2,#13
0002c6  4854              LDR      r0,|L1.1048|
0002c8  f7fffffe          BL       GPIO_SetMode
;;;336    	GPIO_SetMode(VK0256_RD_PORT, VK0256_RD_PIN, GPIO_MODE_OUTPUT);
0002cc  2201              MOVS     r2,#1
0002ce  0391              LSLS     r1,r2,#14
0002d0  4851              LDR      r0,|L1.1048|
0002d2  f7fffffe          BL       GPIO_SetMode
;;;337    	GPIO_SetMode(VK0256_WR_PORT, VK0256_WR_PIN, GPIO_MODE_OUTPUT);
0002d6  2201              MOVS     r2,#1
0002d8  03d1              LSLS     r1,r2,#15
0002da  484f              LDR      r0,|L1.1048|
0002dc  f7fffffe          BL       GPIO_SetMode
;;;338    	GPIO_SetMode(VK0256_DAT_PORT, VK0256_DAT_PIN, GPIO_MODE_OUTPUT);	//ֻʾݿΪIO
0002e0  2201              MOVS     r2,#1
0002e2  2120              MOVS     r1,#0x20
0002e4  484c              LDR      r0,|L1.1048|
0002e6  f7fffffe          BL       GPIO_SetMode
;;;339    //	GPIO_SetMode(VK0256_DAT_PORT, VK0256_DAT_PIN, GPIO_MODE_QUASI); //ҪΪ˫IOڶʱΪIO
;;;340    		
;;;341    	VK0256_CS_H();      
0002ea  2001              MOVS     r0,#1
0002ec  4947              LDR      r1,|L1.1036|
0002ee  3908              SUBS     r1,r1,#8
0002f0  6008              STR      r0,[r1,#0]
;;;342    	VK0256_RD_H();  //RDŲߵƽ                  
0002f2  4946              LDR      r1,|L1.1036|
0002f4  3944              SUBS     r1,r1,#0x44
0002f6  6008              STR      r0,[r1,#0]
;;;343    	VK0256_WR_H();  
0002f8  4944              LDR      r1,|L1.1036|
0002fa  6008              STR      r0,[r1,#0]
;;;344    	VK0256_DATA_H(); 	
0002fc  4943              LDR      r1,|L1.1036|
0002fe  3928              SUBS     r1,r1,#0x28
000300  6008              STR      r0,[r1,#0]
;;;345    }
000302  bd10              POP      {r4,pc}
;;;346    /*******************************************************************************
                          ENDP

                  Vk0256_Init PROC
;;;352    *******************************************************************************/
;;;353    void Vk0256_Init(void)
000304  b510              PUSH     {r4,lr}
;;;354    {	
;;;355    	//ܽøݿͻƬӦ޸
;;;356    	Vk0256_Lowlevel_Init();
000306  f7fffffe          BL       Vk0256_Lowlevel_Init
;;;357    	//
;;;358    	WriteCommandVk0256(0X1C);
00030a  201c              MOVS     r0,#0x1c
00030c  f7fffffe          BL       WriteCommandVk0256
;;;359    	WriteCommandVk0256(OSC_ON);
000310  2001              MOVS     r0,#1
000312  f7fffffe          BL       WriteCommandVk0256
;;;360    	WriteCommandVk0256(DISP_ON);
000316  2003              MOVS     r0,#3
000318  f7fffffe          BL       WriteCommandVk0256
;;;361    	vk0256_maxcom=8;	//1/4bias 8com
00031c  2008              MOVS     r0,#8
00031e  493d              LDR      r1,|L1.1044|
000320  7008              STRB     r0,[r1,#0]
;;;362    	//ϵĬ(δùܹرս͹)
;;;363    //	WriteCommandVk0256(BUZZ_2KHZ);
;;;364    //	WriteCommandVk0256(BUZZ_4KHZ);
;;;365    //	WriteCommandVk0256(BUZZ_ON);
;;;366    	WriteCommandVk0256(BUZZ_OFF);
000322  f7fffffe          BL       WriteCommandVk0256
;;;367    	WriteCommandVk0256(IRQ_DIS);
000326  2080              MOVS     r0,#0x80
000328  f7fffffe          BL       WriteCommandVk0256
;;;368    	WriteCommandVk0256(TIMER_DIS);
00032c  2004              MOVS     r0,#4
00032e  f7fffffe          BL       WriteCommandVk0256
;;;369    	WriteCommandVk0256(WDT_DIS);
000332  2005              MOVS     r0,#5
000334  f7fffffe          BL       WriteCommandVk0256
;;;370    }
000338  bd10              POP      {r4,pc}
;;;371    /*******************************************************************************
                          ENDP

                  disp_3num PROC
;;;377    *******************************************************************************/
;;;378    void disp_3num(unsigned int dat)
00033a  b530              PUSH     {r4,r5,lr}
;;;379    {		
00033c  4604              MOV      r4,r0
;;;380    	unsigned dat8;
;;;381    	
;;;382    	dat8=dat/100%10;	//ʾλ
00033e  2064              MOVS     r0,#0x64
000340  fbb4f0f0          UDIV     r0,r4,r0
000344  210a              MOVS     r1,#0xa
000346  fbb0f2f1          UDIV     r2,r0,r1
00034a  fb010512          MLS      r5,r1,r2,r0
;;;383    	vk0256_dispram[0]&=0x08;
00034e  4833              LDR      r0,|L1.1052|
000350  7800              LDRB     r0,[r0,#0]  ; vk0256_dispram
000352  f0000008          AND      r0,r0,#8
000356  4931              LDR      r1,|L1.1052|
000358  7008              STRB     r0,[r1,#0]
;;;384    	vk0256_dispram[0]|=shuzi_zimo[dat8];
00035a  4608              MOV      r0,r1
00035c  7800              LDRB     r0,[r0,#0]  ; vk0256_dispram
00035e  4930              LDR      r1,|L1.1056|
000360  5d49              LDRB     r1,[r1,r5]
000362  4308              ORRS     r0,r0,r1
000364  492d              LDR      r1,|L1.1052|
000366  7008              STRB     r0,[r1,#0]
;;;385    	
;;;386    	dat8=dat/10%10; 	//ʾʮλ
000368  200a              MOVS     r0,#0xa
00036a  fbb4f0f0          UDIV     r0,r4,r0
00036e  210a              MOVS     r1,#0xa
000370  fbb0f2f1          UDIV     r2,r0,r1
000374  fb010512          MLS      r5,r1,r2,r0
;;;387    	vk0256_dispram[1]&=0x08;
000378  4828              LDR      r0,|L1.1052|
00037a  7840              LDRB     r0,[r0,#1]  ; vk0256_dispram
00037c  f0000008          AND      r0,r0,#8
000380  4926              LDR      r1,|L1.1052|
000382  7048              STRB     r0,[r1,#1]
;;;388    	vk0256_dispram[1]|=shuzi_zimo[dat8];
000384  4608              MOV      r0,r1
000386  7840              LDRB     r0,[r0,#1]  ; vk0256_dispram
000388  4925              LDR      r1,|L1.1056|
00038a  5d49              LDRB     r1,[r1,r5]
00038c  4308              ORRS     r0,r0,r1
00038e  4923              LDR      r1,|L1.1052|
000390  7048              STRB     r0,[r1,#1]
;;;389    	
;;;390    	dat8=dat%10;			//ʾλ
000392  200a              MOVS     r0,#0xa
000394  fbb4f1f0          UDIV     r1,r4,r0
000398  fb004511          MLS      r5,r0,r1,r4
;;;391    	vk0256_dispram[2]&=0x08;
00039c  481f              LDR      r0,|L1.1052|
00039e  7880              LDRB     r0,[r0,#2]  ; vk0256_dispram
0003a0  f0000008          AND      r0,r0,#8
0003a4  491d              LDR      r1,|L1.1052|
0003a6  7088              STRB     r0,[r1,#2]
;;;392    	vk0256_dispram[2]|=shuzi_zimo[dat8];
0003a8  4608              MOV      r0,r1
0003aa  7880              LDRB     r0,[r0,#2]  ; vk0256_dispram
0003ac  491c              LDR      r1,|L1.1056|
0003ae  5d49              LDRB     r1,[r1,r5]
0003b0  4308              ORRS     r0,r0,r1
0003b2  491a              LDR      r1,|L1.1052|
0003b4  7088              STRB     r0,[r1,#2]
;;;393    		
;;;394    	if(dat<100)				//С100λʾ
0003b6  2c64              CMP      r4,#0x64
0003b8  d204              BCS      |L1.964|
;;;395    	{
;;;396    		vk0256_dispram[0]&=0x08;
0003ba  4608              MOV      r0,r1
0003bc  7800              LDRB     r0,[r0,#0]  ; vk0256_dispram
0003be  f0000008          AND      r0,r0,#8
0003c2  7008              STRB     r0,[r1,#0]
                  |L1.964|
;;;397    	}
;;;398    	if(dat<10) 	//С10ʮλʾ
0003c4  2c0a              CMP      r4,#0xa
0003c6  d205              BCS      |L1.980|
;;;399    	{
;;;400    		vk0256_dispram[1]&=0x08;
0003c8  4814              LDR      r0,|L1.1052|
0003ca  7840              LDRB     r0,[r0,#1]  ; vk0256_dispram
0003cc  f0000008          AND      r0,r0,#8
0003d0  4912              LDR      r1,|L1.1052|
0003d2  7048              STRB     r0,[r1,#1]
                  |L1.980|
;;;401    	}
;;;402    	//SEG11
;;;403    //	Write1DataVk0256(0*2,vk0256_dispram[0]);
;;;404    //	Write1DataVk0256(1*2,vk0256_dispram[1]);
;;;405    //	Write1DataVk0256(2*2,vk0256_dispram[2]);
;;;406    	//SEGͶ
;;;407    	WritenDataVk0256(0,&vk0256_dispram[0],3);
0003d4  2203              MOVS     r2,#3
0003d6  4911              LDR      r1,|L1.1052|
0003d8  2000              MOVS     r0,#0
0003da  f7fffffe          BL       WritenDataVk0256
;;;408    }	
0003de  bd30              POP      {r4,r5,pc}
;;;409    /*******************************************************************************
                          ENDP

                  Vk0256_Main PROC
;;;415    *******************************************************************************/
;;;416    void Vk0256_Main(void)
0003e0  f7fffffe          BL       Vk0256_Init
;;;417    {	
;;;418    	unsigned char segi;
;;;419    	unsigned char dispram[32];
;;;420    	Vk0256_Init();
;;;421    	Vk0256_DisAll(0xff);
0003e4  20ff              MOVS     r0,#0xff
0003e6  f7fffffe          BL       Vk0256_DisAll
;;;422    	while(1)
0003ea  e00d              B        |L1.1032|
                  |L1.1004|
;;;423    	{
;;;424    //		Write1DataVk0256(40,0xff);
;;;425    	PB12=1; 
0003ec  2001              MOVS     r0,#1
0003ee  4907              LDR      r1,|L1.1036|
0003f0  390c              SUBS     r1,r1,#0xc
0003f2  6008              STR      r0,[r1,#0]
;;;426    	delay_nus(15);
0003f4  200f              MOVS     r0,#0xf
0003f6  f7fffffe          BL       delay_nus
;;;427    	PB12=0;	
0003fa  2000              MOVS     r0,#0
0003fc  4903              LDR      r1,|L1.1036|
0003fe  390c              SUBS     r1,r1,#0xc
000400  6008              STR      r0,[r1,#0]
;;;428    	delay_nus(16);	
000402  2010              MOVS     r0,#0x10
000404  f7fffffe          BL       delay_nus
                  |L1.1032|
000408  e7f0              B        |L1.1004|
;;;429    //		Vk0256_DisAll(0xff);			//LCDȫ
;;;430    //		delay_nms(2000);					//ʱ1S
;;;431    		
;;;432    //		Vk0256_DisAll(0xaa);
;;;433    //		delay_nms(1000);
;;;434    //		Vk0256_DisAll(0x00);
;;;435    //		delay_nms(2000);
;;;436    //		for(segi=0;segi<32;segi+=2)
;;;437    //			{
;;;438    //				dispram[segi]=0XAA;
;;;439    //			}
;;;440    //	  WritenDataVk0256(0,dispram,32);
;;;441    //		 for(segi=1;segi<32;segi+=2)
;;;442    //			{
;;;443    //				dispram[segi]=0X55;
;;;444    //			}
;;;445    //	  WritenDataVk0256(0,dispram,32);	
;;;446    //		delay_nms(3000);
;;;447    //			
;;;448    //		for(segi=0;segi<32;segi+=2)
;;;449    //			{
;;;450    //				dispram[segi]=0X55;
;;;451    //			}
;;;452    //	  WritenDataVk0256(0,dispram,32);
;;;453    //		 for(segi=1;segi<32;segi+=2)
;;;454    //			{
;;;455    //				dispram[segi]=0XAA;
;;;456    //			}
;;;457    //	  WritenDataVk0256(0,dispram,32);	
;;;458    //		delay_nms(3000);
;;;459    		
;;;460    //		Vk0256_DisAll(0x00);			//LCDȫ
;;;461    //		delay_nms(1000);					//ʱ1S
;;;462    		
;;;463    //		disp_3num(123);           //ʾ123
;;;464    //		delay_nms(1000);					//ʱ3S
;;;465    //		
;;;466    //		Vk0256_DisAll(0x00);			//LCDȫ
;;;467    //		for(vk0256_segi=0;vk0256_segi<VK0256_SEGNUM;vk0256_segi++)//seg
;;;468    //		{
;;;469    //			for(vk0256_comi=0;vk0256_comi<vk0256_maxcom;vk0256_comi++)//com
;;;470    //			{
;;;471    //				Vk0256_DisSegComOn(vk0256_segtab[vk0256_segi],vk0256_comi);	//LCD
;;;472    //				delay_nms(200);				//ʱ300mS
;;;473    //				Vk0256_DisAll(0x00);	//LCDȫ
;;;474    //			}
;;;475    //		}
;;;476    //		delay_nms(500);
;;;477    //		Vk0256_DisAll(0xff);			//LCDȫ
;;;478    //		delay_nms(1000);					//ʱ1S
;;;479    //		for(vk0256_segi=0;vk0256_segi<VK0256_SEGNUM;vk0256_segi++)//seg
;;;480    //		{
;;;481    //			for(vk0256_comi=0;vk0256_comi<vk0256_maxcom;vk0256_comi++)//com
;;;482    //			{
;;;483    //				Vk0256_DisSegComOff(vk0256_segtab[vk0256_segi],vk0256_comi);	//LCDر
;;;484    //				delay_nms(200);				//ʱ300mS
;;;485    //				Vk0256_DisAll(0xff);	//LCDȫ
;;;486    //			}
;;;487    //		}
;;;488    //		delay_nms(500);					//ʱ1S
;;;489    //		
;;;490    //		Vk0256_DisAll(0x00);			//LCDȫ
;;;491    //		delay_nms(1000);					//ʱ1S
;;;492    		
;;;493    //		Vk0256_Enter_Standby();		//͹ģʽ
;;;494    //		delay_nms(3000);					//ʱ5S
;;;495    //		
;;;496    //		Vk0256_Exit_Standby();		//˳͹ģʽ
;;;497    	}
;;;498    }
;;;499    /************************END OF FILE****/
                          ENDP

00040a  0000              DCW      0x0000
                  |L1.1036|
                          DCD      0x4000487c
                  |L1.1040|
                          DCD      vk0256_addrbit
                  |L1.1044|
                          DCD      vk0256_maxcom
                  |L1.1048|
                          DCD      0x40004040
                  |L1.1052|
                          DCD      vk0256_dispram
                  |L1.1056|
                          DCD      shuzi_zimo

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

                  vk0256_dispram
                          %        32

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

                  vk0256_segtab
000000  00010203          DCB      0x00,0x01,0x02,0x03
000004  04050607          DCB      0x04,0x05,0x06,0x07
000008  08090a0b          DCB      0x08,0x09,0x0a,0x0b
00000c  0c0d0e0f          DCB      0x0c,0x0d,0x0e,0x0f
000010  10111213          DCB      0x10,0x11,0x12,0x13
000014  14151617          DCB      0x14,0x15,0x16,0x17
000018  18191a1b          DCB      0x18,0x19,0x1a,0x1b
00001c  1c1d1e1f          DCB      0x1c,0x1d,0x1e,0x1f
                  shuzi_zimo
000020  f505d397          DCB      0xf5,0x05,0xd3,0x97
000024  27b6f615          DCB      0x27,0xb6,0xf6,0x15
000028  f7b702e0          DCB      0xf7,0xb7,0x02,0xe0
00002c  c66705            DCB      0xc6,0x67,0x05
                  vk0256_addrbit
00002f  06                DCB      0x06
                  vk0256_segi
000030  00                DCB      0x00
                  vk0256_comi
000031  00                DCB      0x00
                  vk0256_maxcom
000032  00                DCB      0x00

;*** Start embedded assembler ***

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

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

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
