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

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

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

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

                  WriteClockVk1621 PROC
;;;108    *******************************************************************************/
;;;109    void WriteClockVk1621(void)
000034  b500              PUSH     {lr}
;;;110    {
;;;111    	VK1621_WR_L(); 
000036  2000              MOVS     r0,#0
000038  49eb              LDR      r1,|L1.1000|
00003a  6008              STR      r0,[r1,#0]
;;;112    	delay_nus(VK1621_CLK);
00003c  200a              MOVS     r0,#0xa
00003e  f7fffffe          BL       delay_nus
;;;113    	VK1621_WR_H();	
000042  2001              MOVS     r0,#1
000044  49e8              LDR      r1,|L1.1000|
000046  6008              STR      r0,[r1,#0]
;;;114    	delay_nus(VK1621_CLK);	
000048  200a              MOVS     r0,#0xa
00004a  f7fffffe          BL       delay_nus
;;;115    }
00004e  bd00              POP      {pc}
;;;116    /*******************************************************************************
                          ENDP

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

                  WritenDataVk1621 PROC
;;;161    *******************************************************************************/
;;;162    void WritenDataVk1621(unsigned char Addr,unsigned char *Databuf,unsigned char Cnt)
0000d6  e92d47f0          PUSH     {r4-r10,lr}
;;;163    {
0000da  4682              MOV      r10,r0
0000dc  460e              MOV      r6,r1
0000de  4690              MOV      r8,r2
;;;164    	unsigned char i,j; 
;;;165    	unsigned char Shift;
;;;166    	unsigned char dataval; 
;;;167    	
;;;168    	VK1621_CS_L();   //CS Ƭѡ 
0000e0  2000              MOVS     r0,#0
0000e2  49c1              LDR      r1,|L1.1000|
0000e4  3908              SUBS     r1,r1,#8
0000e6  6008              STR      r0,[r1,#0]
;;;169    	delay_nus(VK1621_CLK/2);
0000e8  2005              MOVS     r0,#5
0000ea  f7fffffe          BL       delay_nus
;;;170    
;;;171    	VK1621_DATA_H();  
0000ee  2001              MOVS     r0,#1
0000f0  49bd              LDR      r1,|L1.1000|
0000f2  3928              SUBS     r1,r1,#0x28
0000f4  6008              STR      r0,[r1,#0]
;;;172    	WriteClockVk1621();  //101
0000f6  f7fffffe          BL       WriteClockVk1621
;;;173    	VK1621_DATA_L();  
0000fa  2000              MOVS     r0,#0
0000fc  49ba              LDR      r1,|L1.1000|
0000fe  3928              SUBS     r1,r1,#0x28
000100  6008              STR      r0,[r1,#0]
;;;174    	WriteClockVk1621();
000102  f7fffffe          BL       WriteClockVk1621
;;;175    	VK1621_DATA_H();  
000106  2001              MOVS     r0,#1
000108  49b7              LDR      r1,|L1.1000|
00010a  3928              SUBS     r1,r1,#0x28
00010c  6008              STR      r0,[r1,#0]
;;;176    	WriteClockVk1621();
00010e  f7fffffe          BL       WriteClockVk1621
;;;177    
;;;178    	Shift = 0x20;
000112  2520              MOVS     r5,#0x20
;;;179    	for( i = 0; i < vk1621_addrbit; i++) 
000114  2400              MOVS     r4,#0
000116  e010              B        |L1.314|
                  |L1.280|
;;;180    	{   		 
;;;181    		if (Addr & Shift) 
000118  ea0a0005          AND      r0,r10,r5
00011c  b120              CBZ      r0,|L1.296|
;;;182    			VK1621_DATA_H(); 		
00011e  2001              MOVS     r0,#1
000120  49b1              LDR      r1,|L1.1000|
000122  3928              SUBS     r1,r1,#0x28
000124  6008              STR      r0,[r1,#0]
000126  e003              B        |L1.304|
                  |L1.296|
;;;183    		else  
;;;184    			VK1621_DATA_L();
000128  2000              MOVS     r0,#0
00012a  49af              LDR      r1,|L1.1000|
00012c  3928              SUBS     r1,r1,#0x28
00012e  6008              STR      r0,[r1,#0]
                  |L1.304|
;;;185    		WriteClockVk1621();		
000130  f7fffffe          BL       WriteClockVk1621
;;;186    		Shift = Shift >> 1; 
000134  106d              ASRS     r5,r5,#1
000136  1c60              ADDS     r0,r4,#1              ;179
000138  b2c4              UXTB     r4,r0                 ;179
                  |L1.314|
00013a  48ac              LDR      r0,|L1.1004|
00013c  7800              LDRB     r0,[r0,#0]            ;179  ; vk1621_addrbit
00013e  4284              CMP      r4,r0                 ;179
000140  dbea              BLT      |L1.280|
;;;187    	}
;;;188    	for (j = 0; j < Cnt; j++) 
000142  2700              MOVS     r7,#0
000144  e01a              B        |L1.380|
                  |L1.326|
;;;189    	{
;;;190    		Shift = 0x01;
000146  2501              MOVS     r5,#1
;;;191    		dataval=*Databuf++;
000148  f8169b01          LDRB     r9,[r6],#1
;;;192    		for (i = 0; i < 4; i++) 
00014c  2400              MOVS     r4,#0
00014e  e011              B        |L1.372|
                  |L1.336|
;;;193    		{
;;;194    			if( dataval & Shift) 
000150  ea090005          AND      r0,r9,r5
000154  b120              CBZ      r0,|L1.352|
;;;195    				VK1621_DATA_H();		 
000156  2001              MOVS     r0,#1
000158  49a3              LDR      r1,|L1.1000|
00015a  3928              SUBS     r1,r1,#0x28
00015c  6008              STR      r0,[r1,#0]
00015e  e003              B        |L1.360|
                  |L1.352|
;;;196    			else  
;;;197    				VK1621_DATA_L();
000160  2000              MOVS     r0,#0
000162  49a1              LDR      r1,|L1.1000|
000164  3928              SUBS     r1,r1,#0x28
000166  6008              STR      r0,[r1,#0]
                  |L1.360|
;;;198    			WriteClockVk1621();
000168  f7fffffe          BL       WriteClockVk1621
;;;199    			Shift = Shift << 1;
00016c  0668              LSLS     r0,r5,#25
00016e  0e05              LSRS     r5,r0,#24
000170  1c60              ADDS     r0,r4,#1              ;192
000172  b2c4              UXTB     r4,r0                 ;192
                  |L1.372|
000174  2c04              CMP      r4,#4                 ;192
000176  dbeb              BLT      |L1.336|
000178  1c78              ADDS     r0,r7,#1              ;188
00017a  b2c7              UXTB     r7,r0                 ;188
                  |L1.380|
00017c  4547              CMP      r7,r8                 ;188
00017e  dbe2              BLT      |L1.326|
;;;200    		}   
;;;201    	}
;;;202      VK1621_CS_H();   //CS Ƭѡ
000180  2001              MOVS     r0,#1
000182  4999              LDR      r1,|L1.1000|
000184  3908              SUBS     r1,r1,#8
000186  6008              STR      r0,[r1,#0]
;;;203    	delay_nus(VK1621_CLK/2);	 
000188  2005              MOVS     r0,#5
00018a  f7fffffe          BL       delay_nus
;;;204      VK1621_DATA_H(); 
00018e  2001              MOVS     r0,#1
000190  4995              LDR      r1,|L1.1000|
000192  3928              SUBS     r1,r1,#0x28
000194  6008              STR      r0,[r1,#0]
;;;205    }
000196  e8bd87f0          POP      {r4-r10,pc}
;;;206    /*******************************************************************************
                          ENDP

                  Vk1621_DisAll PROC
;;;213    *******************************************************************************/
;;;214    void Vk1621_DisAll(unsigned char dat)
00019a  b530              PUSH     {r4,r5,lr}
;;;215    {
00019c  b088              SUB      sp,sp,#0x20
00019e  4605              MOV      r5,r0
;;;216    	unsigned char segi;
;;;217    	unsigned char dispram[32];
;;;218    	
;;;219    	for(segi=0;segi<32;segi++)
0001a0  2400              MOVS     r4,#0
0001a2  e003              B        |L1.428|
                  |L1.420|
;;;220    	{
;;;221    		dispram[segi]=dat;
0001a4  f80d5004          STRB     r5,[sp,r4]
0001a8  1c60              ADDS     r0,r4,#1              ;219
0001aa  b2c4              UXTB     r4,r0                 ;219
                  |L1.428|
0001ac  2c20              CMP      r4,#0x20              ;219
0001ae  dbf9              BLT      |L1.420|
;;;222    	}
;;;223    	WritenDataVk1621(0,dispram,32);//4bitַԶ1
0001b0  2220              MOVS     r2,#0x20
0001b2  4669              MOV      r1,sp
0001b4  2000              MOVS     r0,#0
0001b6  f7fffffe          BL       WritenDataVk1621
;;;224    }
0001ba  b008              ADD      sp,sp,#0x20
0001bc  bd30              POP      {r4,r5,pc}
;;;225    /*******************************************************************************
                          ENDP

                  Vk1621_DisDotOn PROC
;;;232    *******************************************************************************/
;;;233    void Vk1621_DisDotOn(unsigned char seg,unsigned char com)
0001be  b5f8              PUSH     {r3-r7,lr}
;;;234    {
0001c0  4604              MOV      r4,r0
0001c2  460e              MOV      r6,r1
;;;235    	unsigned char addrbyte,addrbit,tempdat;
;;;236    	
;;;237    	addrbyte=seg;
0001c4  4625              MOV      r5,r4
;;;238    	addrbit=(1<<com);
0001c6  2001              MOVS     r0,#1
0001c8  40b0              LSLS     r0,r0,r6
0001ca  b2c7              UXTB     r7,r0
;;;239    	tempdat=vk1621_dispram[seg]|addrbit;
0001cc  4888              LDR      r0,|L1.1008|
0001ce  5d00              LDRB     r0,[r0,r4]
0001d0  4338              ORRS     r0,r0,r7
0001d2  9000              STR      r0,[sp,#0]
;;;240    	vk1621_dispram[seg]=tempdat;
0001d4  f89d0000          LDRB     r0,[sp,#0]
0001d8  4985              LDR      r1,|L1.1008|
0001da  5508              STRB     r0,[r1,r4]
;;;241    	WritenDataVk1621(addrbyte,&tempdat,1);
0001dc  2201              MOVS     r2,#1
0001de  4669              MOV      r1,sp
0001e0  4628              MOV      r0,r5
0001e2  f7fffffe          BL       WritenDataVk1621
;;;242    }
0001e6  bdf8              POP      {r3-r7,pc}
;;;243    /*******************************************************************************
                          ENDP

                  Vk1621_DisDotOff PROC
;;;250    *******************************************************************************/
;;;251    void Vk1621_DisDotOff(unsigned char seg,unsigned char com)
0001e8  b5f8              PUSH     {r3-r7,lr}
;;;252    {
0001ea  4604              MOV      r4,r0
0001ec  460e              MOV      r6,r1
;;;253    	unsigned char addrbyte,addrbit,tempdat;
;;;254    	
;;;255    	addrbyte=seg;
0001ee  4625              MOV      r5,r4
;;;256    	addrbit=(1<<com);
0001f0  2001              MOVS     r0,#1
0001f2  40b0              LSLS     r0,r0,r6
0001f4  b2c7              UXTB     r7,r0
;;;257    	tempdat=vk1621_dispram[seg]&(~addrbit);
0001f6  487e              LDR      r0,|L1.1008|
0001f8  5d00              LDRB     r0,[r0,r4]
0001fa  43b8              BICS     r0,r0,r7
0001fc  9000              STR      r0,[sp,#0]
;;;258    	vk1621_dispram[seg]=tempdat;
0001fe  f89d0000          LDRB     r0,[sp,#0]
000202  497b              LDR      r1,|L1.1008|
000204  5508              STRB     r0,[r1,r4]
;;;259    	WritenDataVk1621(addrbyte,&tempdat,1);	
000206  2201              MOVS     r2,#1
000208  4669              MOV      r1,sp
00020a  4628              MOV      r0,r5
00020c  f7fffffe          BL       WritenDataVk1621
;;;260    }
000210  bdf8              POP      {r3-r7,pc}
;;;261    /*******************************************************************************
                          ENDP

                  Vk1621_Enter_PowerOff PROC
;;;267    *******************************************************************************/
;;;268    void Vk1621_Enter_PowerOff(void)
000212  b500              PUSH     {lr}
;;;269    {	
;;;270    	//ʹLCDOFFSYSDIS,ϵͳڵ͹״̬
;;;271    	//ֻʹƬRCʱԴʱ,ʹϵͳ͹״̬
;;;272    	WriteCommandVk1621(OSC_OFF);
000214  2000              MOVS     r0,#0
000216  f7fffffe          BL       WriteCommandVk1621
;;;273    	WriteCommandVk1621(DISP_OFF);
00021a  2002              MOVS     r0,#2
00021c  f7fffffe          BL       WriteCommandVk1621
;;;274    }
000220  bd00              POP      {pc}
;;;275    /*******************************************************************************
                          ENDP

                  Vk1621_Exit_PowerOff PROC
;;;281    *******************************************************************************/
;;;282    void Vk1621_Exit_PowerOff(void)
000222  b500              PUSH     {lr}
;;;283    {	
;;;284    	//˳͹״̬vk1621
;;;285    	WriteCommandVk1621(OSC_ON);
000224  2001              MOVS     r0,#1
000226  f7fffffe          BL       WriteCommandVk1621
;;;286    	WriteCommandVk1621(DISP_ON);
00022a  2003              MOVS     r0,#3
00022c  f7fffffe          BL       WriteCommandVk1621
;;;287    	WriteCommandVk1621(COM_1_3__4);vk1621_maxcom=4;	//1/3bias 4com
000230  2029              MOVS     r0,#0x29
000232  f7fffffe          BL       WriteCommandVk1621
000236  2004              MOVS     r0,#4
000238  496e              LDR      r1,|L1.1012|
00023a  7008              STRB     r0,[r1,#0]
;;;288    //	WriteCommandVk1621(COM_1_3__3);vk1621_maxcom=3;	//1/3bias 3com
;;;289    //	WriteCommandVk1621(COM_1_3__2);vk1621_maxcom=2;	//1/3bias 2com
;;;290    //	WriteCommandVk1621(COM_1_2__4);vk1621_maxcom=4;	//1/2bias 4com
;;;291    //	WriteCommandVk1621(COM_1_2__3);vk1621_maxcom=3;	//1/2bias 3com
;;;292    //	WriteCommandVk1621(COM_1_2__2);vk1621_maxcom=2;	//1/2bias 2com
;;;293    }
00023c  bd00              POP      {pc}
;;;294    /*******************************************************************************
                          ENDP

                  Vk1621_Lowlevel_Init PROC
;;;300    *******************************************************************************/
;;;301    void Vk1621_Lowlevel_Init(void)
00023e  b510              PUSH     {r4,lr}
;;;302    {
;;;303    	//ͨߵƽͬӵƽת·
;;;304    	//˺ݿͻƬӦ޸	
;;;305    	GPIO_SetMode(VK1621_CS_PORT, VK1621_CS_PIN, GPIO_MODE_OUTPUT);
000240  2201              MOVS     r2,#1
000242  0351              LSLS     r1,r2,#13
000244  486c              LDR      r0,|L1.1016|
000246  f7fffffe          BL       GPIO_SetMode
;;;306    	GPIO_SetMode(VK1621_RD_PORT, VK1621_RD_PIN, GPIO_MODE_OUTPUT);
00024a  2201              MOVS     r2,#1
00024c  0391              LSLS     r1,r2,#14
00024e  486a              LDR      r0,|L1.1016|
000250  f7fffffe          BL       GPIO_SetMode
;;;307    	GPIO_SetMode(VK1621_WR_PORT, VK1621_WR_PIN, GPIO_MODE_OUTPUT);
000254  2201              MOVS     r2,#1
000256  03d1              LSLS     r1,r2,#15
000258  4867              LDR      r0,|L1.1016|
00025a  f7fffffe          BL       GPIO_SetMode
;;;308    	GPIO_SetMode(VK1621_DAT_PORT, VK1621_DAT_PIN, GPIO_MODE_OUTPUT);	//ֻʾݿΪIO
00025e  2201              MOVS     r2,#1
000260  2120              MOVS     r1,#0x20
000262  4865              LDR      r0,|L1.1016|
000264  f7fffffe          BL       GPIO_SetMode
;;;309    //	GPIO_SetMode(VK1621_DAT_PORT, VK1621_DAT_PIN, GPIO_MODE_QUASI); //ҪΪ˫IOڶʱΪIO
;;;310    		
;;;311    	VK1621_CS_H();      
000268  2001              MOVS     r0,#1
00026a  495f              LDR      r1,|L1.1000|
00026c  3908              SUBS     r1,r1,#8
00026e  6008              STR      r0,[r1,#0]
;;;312    	VK1621_RD_H();  //RDŲߵƽ                  
000270  1d09              ADDS     r1,r1,#4
000272  6008              STR      r0,[r1,#0]
;;;313    	VK1621_WR_H();  
000274  1d09              ADDS     r1,r1,#4
000276  6008              STR      r0,[r1,#0]
;;;314    	VK1621_DATA_H(); 	
000278  495b              LDR      r1,|L1.1000|
00027a  3928              SUBS     r1,r1,#0x28
00027c  6008              STR      r0,[r1,#0]
;;;315    }
00027e  bd10              POP      {r4,pc}
;;;316    /*******************************************************************************
                          ENDP

                  Vk1621_Init PROC
;;;322    *******************************************************************************/
;;;323    void Vk1621_Init(void)
000280  b510              PUSH     {r4,lr}
;;;324    {	
;;;325    	//ܽøݿͻƬӦ޸
;;;326    	Vk1621_Lowlevel_Init();
000282  f7fffffe          BL       Vk1621_Lowlevel_Init
;;;327    	//
;;;328    	WriteCommandVk1621(OSC_ON);
000286  2001              MOVS     r0,#1
000288  f7fffffe          BL       WriteCommandVk1621
;;;329    	WriteCommandVk1621(DISP_ON);
00028c  2003              MOVS     r0,#3
00028e  f7fffffe          BL       WriteCommandVk1621
;;;330    	WriteCommandVk1621(RC32K); //ƬRC
000292  2018              MOVS     r0,#0x18
000294  f7fffffe          BL       WriteCommandVk1621
;;;331    //	WriteCommandVk1621(XTAL32K); //Ӿ
;;;332    //	WriteCommandVk1621(EXT256K); //ʱ
;;;333    	WriteCommandVk1621(COM_1_3__4);vk1621_maxcom=4;	//1/3bias 4com
000298  2029              MOVS     r0,#0x29
00029a  f7fffffe          BL       WriteCommandVk1621
00029e  2004              MOVS     r0,#4
0002a0  4954              LDR      r1,|L1.1012|
0002a2  7008              STRB     r0,[r1,#0]
;;;334    //	WriteCommandVk1621(COM_1_3__3);vk1621_maxcom=3;	//1/3bias 3com com2/com1/com0
;;;335    //	WriteCommandVk1621(COM_1_3__2);vk1621_maxcom=2;	//1/3bias 2com com1/com0
;;;336    //	WriteCommandVk1621(COM_1_2__4);vk1621_maxcom=4;	//1/2bias 4com
;;;337    //	WriteCommandVk1621(COM_1_2__3);vk1621_maxcom=3;	//1/2bias 3com com2/com1/com0
;;;338    //	WriteCommandVk1621(COM_1_2__2);vk1621_maxcom=2;	//1/2bias 2com com1/com0
;;;339    	//ϵĬ(δùܹرս͹)
;;;340    //	WriteCommandVk1621(BUZZ_2KHZ);
;;;341    //	WriteCommandVk1621(BUZZ_4KHZ);
;;;342    //	WriteCommandVk1621(BUZZ_ON);
;;;343    	WriteCommandVk1621(BUZZ_OFF);
0002a4  2008              MOVS     r0,#8
0002a6  f7fffffe          BL       WriteCommandVk1621
;;;344    	WriteCommandVk1621(IRQ_DIS);
0002aa  2080              MOVS     r0,#0x80
0002ac  f7fffffe          BL       WriteCommandVk1621
;;;345    	WriteCommandVk1621(TIMER_DIS);
0002b0  2004              MOVS     r0,#4
0002b2  f7fffffe          BL       WriteCommandVk1621
;;;346    	WriteCommandVk1621(WDT_DIS);
0002b6  2005              MOVS     r0,#5
0002b8  f7fffffe          BL       WriteCommandVk1621
;;;347    }
0002bc  bd10              POP      {r4,pc}
;;;348    /*******************************************************************************
                          ENDP

                  Vk1621_Main PROC
;;;354    *******************************************************************************/
;;;355    void Vk1621_Main(void)
0002be  f7fffffe          BL       Vk1621_Init
;;;356    {	
;;;357    	Vk1621_Init();
;;;358    	Vk1621_DisAll(0x00);
0002c2  2000              MOVS     r0,#0
0002c4  f7fffffe          BL       Vk1621_DisAll
;;;359    	while(1)
0002c8  e08c              B        |L1.996|
                  |L1.714|
;;;360    	{
;;;361    		Vk1621_DisAll(0x0f);			//LCDȫ
0002ca  200f              MOVS     r0,#0xf
0002cc  f7fffffe          BL       Vk1621_DisAll
;;;362    		delay_nms(3000);					//ʱ3S
0002d0  f64030b8          MOV      r0,#0xbb8
0002d4  f7fffffe          BL       delay_nms
;;;363    		
;;;364    		Vk1621_DisAll(0x00);			//LCDȫ
0002d8  2000              MOVS     r0,#0
0002da  f7fffffe          BL       Vk1621_DisAll
;;;365    		delay_nms(3000);					//ʱ3S
0002de  f64030b8          MOV      r0,#0xbb8
0002e2  f7fffffe          BL       delay_nms
;;;366    		
;;;367    		//LCD
;;;368    		Vk1621_DisAll(0x05);
0002e6  2005              MOVS     r0,#5
0002e8  f7fffffe          BL       Vk1621_DisAll
;;;369    		delay_nms(1500);
0002ec  f24050dc          MOV      r0,#0x5dc
0002f0  f7fffffe          BL       delay_nms
;;;370    		Vk1621_DisAll(0x0A);
0002f4  200a              MOVS     r0,#0xa
0002f6  f7fffffe          BL       Vk1621_DisAll
;;;371    		delay_nms(1500);
0002fa  f24050dc          MOV      r0,#0x5dc
0002fe  f7fffffe          BL       delay_nms
;;;372    		
;;;373    		//
;;;374    		Vk1621_DisAll(0x00);      //LCDȫ
000302  2000              MOVS     r0,#0
000304  f7fffffe          BL       Vk1621_DisAll
;;;375    		Vk1621_Enter_PowerOff();  //ģʽ
000308  f7fffffe          BL       Vk1621_Enter_PowerOff
;;;376    		delay_nms(5000);          //ʱ5
00030c  f2413088          MOV      r0,#0x1388
000310  f7fffffe          BL       delay_nms
;;;377    		Vk1621_Exit_PowerOff();   //˳ģʽ
000314  f7fffffe          BL       Vk1621_Exit_PowerOff
;;;378    		
;;;379    		Vk1621_DisAll(0x00);			//LCDȫ
000318  2000              MOVS     r0,#0
00031a  f7fffffe          BL       Vk1621_DisAll
;;;380    		for(vk1621_segi=0;vk1621_segi<VK1621_SEGNUM;vk1621_segi++)//seg
00031e  2000              MOVS     r0,#0
000320  4936              LDR      r1,|L1.1020|
000322  7008              STRB     r0,[r1,#0]
000324  e023              B        |L1.878|
                  |L1.806|
;;;381    		{
;;;382    			for(vk1621_comi=0;vk1621_comi<vk1621_maxcom;vk1621_comi++)//com
000326  2000              MOVS     r0,#0
000328  4935              LDR      r1,|L1.1024|
00032a  7008              STRB     r0,[r1,#0]
00032c  e014              B        |L1.856|
                  |L1.814|
;;;383    			{
;;;384    				Vk1621_DisDotOn(vk1621_segi,vk1621_comi);	//LCD
00032e  4834              LDR      r0,|L1.1024|
000330  7801              LDRB     r1,[r0,#0]  ; vk1621_comi
000332  4832              LDR      r0,|L1.1020|
000334  7800              LDRB     r0,[r0,#0]  ; vk1621_segi
000336  f7fffffe          BL       Vk1621_DisDotOn
;;;385    				delay_nms(300);				//ʱ300mS
00033a  f44f7096          MOV      r0,#0x12c
00033e  f7fffffe          BL       delay_nms
;;;386    				Vk1621_DisDotOff(vk1621_segi,vk1621_comi);//LCDر
000342  482f              LDR      r0,|L1.1024|
000344  7801              LDRB     r1,[r0,#0]  ; vk1621_comi
000346  482d              LDR      r0,|L1.1020|
000348  7800              LDRB     r0,[r0,#0]  ; vk1621_segi
00034a  f7fffffe          BL       Vk1621_DisDotOff
00034e  482c              LDR      r0,|L1.1024|
000350  7800              LDRB     r0,[r0,#0]            ;382  ; vk1621_comi
000352  1c40              ADDS     r0,r0,#1              ;382
000354  492a              LDR      r1,|L1.1024|
000356  7008              STRB     r0,[r1,#0]            ;382
                  |L1.856|
000358  4829              LDR      r0,|L1.1024|
00035a  7800              LDRB     r0,[r0,#0]            ;382  ; vk1621_comi
00035c  4925              LDR      r1,|L1.1012|
00035e  7809              LDRB     r1,[r1,#0]            ;382  ; vk1621_maxcom
000360  4288              CMP      r0,r1                 ;382
000362  dbe4              BLT      |L1.814|
000364  4825              LDR      r0,|L1.1020|
000366  7800              LDRB     r0,[r0,#0]            ;380  ; vk1621_segi
000368  1c40              ADDS     r0,r0,#1              ;380
00036a  4924              LDR      r1,|L1.1020|
00036c  7008              STRB     r0,[r1,#0]            ;380
                  |L1.878|
00036e  4823              LDR      r0,|L1.1020|
000370  7800              LDRB     r0,[r0,#0]            ;380  ; vk1621_segi
000372  2820              CMP      r0,#0x20              ;380
000374  dbd7              BLT      |L1.806|
;;;387    			}
;;;388    		}
;;;389    		
;;;390    		Vk1621_DisAll(0x0f);			//LCDȫ
000376  200f              MOVS     r0,#0xf
000378  f7fffffe          BL       Vk1621_DisAll
;;;391    		delay_nms(1000);					//ʱ1S
00037c  f44f707a          MOV      r0,#0x3e8
000380  f7fffffe          BL       delay_nms
;;;392    		for(vk1621_segi=0;vk1621_segi<VK1621_SEGNUM;vk1621_segi++)//seg
000384  2000              MOVS     r0,#0
000386  491d              LDR      r1,|L1.1020|
000388  7008              STRB     r0,[r1,#0]
00038a  e023              B        |L1.980|
                  |L1.908|
;;;393    		{
;;;394    			for(vk1621_comi=0;vk1621_comi<vk1621_maxcom;vk1621_comi++)//com
00038c  2000              MOVS     r0,#0
00038e  491c              LDR      r1,|L1.1024|
000390  7008              STRB     r0,[r1,#0]
000392  e014              B        |L1.958|
                  |L1.916|
;;;395    			{
;;;396    				Vk1621_DisDotOff(vk1621_segi,vk1621_comi); //LCDر
000394  481a              LDR      r0,|L1.1024|
000396  7801              LDRB     r1,[r0,#0]  ; vk1621_comi
000398  4818              LDR      r0,|L1.1020|
00039a  7800              LDRB     r0,[r0,#0]  ; vk1621_segi
00039c  f7fffffe          BL       Vk1621_DisDotOff
;;;397    				delay_nms(300);				//ʱ300mS
0003a0  f44f7096          MOV      r0,#0x12c
0003a4  f7fffffe          BL       delay_nms
;;;398    				Vk1621_DisDotOn(vk1621_segi,vk1621_comi);	 //LCD
0003a8  4815              LDR      r0,|L1.1024|
0003aa  7801              LDRB     r1,[r0,#0]  ; vk1621_comi
0003ac  4813              LDR      r0,|L1.1020|
0003ae  7800              LDRB     r0,[r0,#0]  ; vk1621_segi
0003b0  f7fffffe          BL       Vk1621_DisDotOn
0003b4  4812              LDR      r0,|L1.1024|
0003b6  7800              LDRB     r0,[r0,#0]            ;394  ; vk1621_comi
0003b8  1c40              ADDS     r0,r0,#1              ;394
0003ba  4911              LDR      r1,|L1.1024|
0003bc  7008              STRB     r0,[r1,#0]            ;394
                  |L1.958|
0003be  4810              LDR      r0,|L1.1024|
0003c0  7800              LDRB     r0,[r0,#0]            ;394  ; vk1621_comi
0003c2  490c              LDR      r1,|L1.1012|
0003c4  7809              LDRB     r1,[r1,#0]            ;394  ; vk1621_maxcom
0003c6  4288              CMP      r0,r1                 ;394
0003c8  dbe4              BLT      |L1.916|
0003ca  480c              LDR      r0,|L1.1020|
0003cc  7800              LDRB     r0,[r0,#0]            ;392  ; vk1621_segi
0003ce  1c40              ADDS     r0,r0,#1              ;392
0003d0  490a              LDR      r1,|L1.1020|
0003d2  7008              STRB     r0,[r1,#0]            ;392
                  |L1.980|
0003d4  4809              LDR      r0,|L1.1020|
0003d6  7800              LDRB     r0,[r0,#0]            ;392  ; vk1621_segi
0003d8  2820              CMP      r0,#0x20              ;392
0003da  dbd7              BLT      |L1.908|
;;;399    			}
;;;400    		}
;;;401    		delay_nms(1000);					//ʱ1S
0003dc  f44f707a          MOV      r0,#0x3e8
0003e0  f7fffffe          BL       delay_nms
                  |L1.996|
0003e4  e771              B        |L1.714|
;;;402    
;;;403    	}
;;;404    }
;;;405    /************************END OF FILE****/
                          ENDP

0003e6  0000              DCW      0x0000
                  |L1.1000|
                          DCD      0x4000487c
                  |L1.1004|
                          DCD      vk1621_addrbit
                  |L1.1008|
                          DCD      vk1621_dispram
                  |L1.1012|
                          DCD      vk1621_maxcom
                  |L1.1016|
                          DCD      0x40004040
                  |L1.1020|
                          DCD      vk1621_segi
                  |L1.1024|
                          DCD      vk1621_comi

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

                  vk1621_dispram
                          %        32

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

                  vk1621_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
                  vk1621_addrbit
00002f  06                DCB      0x06
                  vk1621_segi
000030  00                DCB      0x00
                  vk1621_comi
000031  00                DCB      0x00
                  vk1621_maxcom
000032  00                DCB      0x00

;*** Start embedded assembler ***

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

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

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
