📄 lcdlib.txt
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]
; commandline [-errors .\err\lcdlib.err -O0 -asm -g+ -cpu ARM920T -fs "-IC:\Program Files\ARM\ADSv1_2\INCLUDE"]
CODE32
AREA ||.text||, CODE, READONLY
Lcd_Init PROC
;;;45 void Lcd_Init(int type)
;;;46 {
|L1.0|
000000 e250cc40 SUBS r12,r0,#0x4000
;;;47 switch(type)
000004 a25ccf41 SUBGES r12,r12,#0x104
000008 0a000198 BEQ |L1.1648|
00000c ca00001a BGT |L1.124|
000010 e250cd80 SUBS r12,r0,#0x2000
000014 a25cc002 SUBGES r12,r12,#2
000018 0a0000e2 BEQ |L1.936|
00001c ca00000c BGT |L1.84|
000020 e240cd40 SUB r12,r0,#0x1000
000024 e25cc001 SUBS r12,r12,#1
000028 0a00002e BEQ |L1.232|
00002c e240cd40 SUB r12,r0,#0x1000
000030 e25cc002 SUBS r12,r12,#2
000034 0a000052 BEQ |L1.388|
000038 e240cd40 SUB r12,r0,#0x1000
00003c e25cc004 SUBS r12,r12,#4
000040 0a00007c BEQ |L1.568|
000044 e240cd80 SUB r12,r0,#0x2000
000048 e25cc001 SUBS r12,r12,#1
00004c 1a00035e BNE |L1.3532|
000050 ea0000a2 B |L1.736|
|L1.84|
000054 e240cd80 SUB r12,r0,#0x2000
000058 e25cc004 SUBS r12,r12,#4
00005c 0a0000fb BEQ |L1.1104|
000060 e240cd80 SUB r12,r0,#0x2000
000064 e25cc008 SUBS r12,r12,#8
000068 0a000122 BEQ |L1.1272|
00006c e240cc41 SUB r12,r0,#0x4100
000070 e25cc002 SUBS r12,r12,#2
000074 1a000354 BNE |L1.3532|
000078 ea000148 B |L1.1440|
|L1.124|
00007c e250cc40 SUBS r12,r0,#0x4000
000080 a25ccf82 SUBGES r12,r12,#0x208
000084 0a00027d BEQ |L1.2688|
000088 ca00000c BGT |L1.192|
00008c e240cc40 SUB r12,r0,#0x4000
000090 e25ccf42 SUBS r12,r12,#0x108
000094 0a0001a9 BEQ |L1.1856|
000098 e240cc42 SUB r12,r0,#0x4200
00009c e25cc001 SUBS r12,r12,#1
0000a0 0a0001da BEQ |L1.2064|
0000a4 e240cc42 SUB r12,r0,#0x4200
0000a8 e25cc002 SUBS r12,r12,#2
0000ac 0a00020b BEQ |L1.2272|
0000b0 e240cc40 SUB r12,r0,#0x4000
0000b4 e25ccf81 SUBS r12,r12,#0x204
0000b8 1a000343 BNE |L1.3532|
0000bc ea00023b B |L1.2480|
|L1.192|
0000c0 e240cc44 SUB r12,r0,#0x4400
0000c4 e25cc001 SUBS r12,r12,#1
0000c8 0a0002a0 BEQ |L1.2896|
0000cc e240cc44 SUB r12,r0,#0x4400
0000d0 e25cc002 SUBS r12,r12,#2
0000d4 0a0002d2 BEQ |L1.3108|
0000d8 e240cc44 SUB r12,r0,#0x4400
0000dc e25cc004 SUBS r12,r12,#4
0000e0 1a000339 BNE |L1.3532|
0000e4 ea000303 B |L1.3320|
;;;48 {
;;;49 case MODE_STN_1BIT:
;;;50 frameBuffer1Bit=(U32 (*)[SCR_XSIZE_STN/32])LCDFRAMEBUFFER;
|L1.232|
0000e8 e3a015c6 MOV r1,#0x31800000
0000ec e59f2ce0 LDR r2,|L1.3540|
0000f0 e5821000 STR r1,[r2,#0] ; frameBuffer1Bit
;;;51 rLCDCON1=(CLKVAL_STN_MONO<<8)|(MVAL_USED<<7)|(1<<5)|(0<<1)|0;
0000f4 e59f1cdc LDR r1,|L1.3544|
0000f8 e3a0244d MOV r2,#0x4d000000
0000fc e5821000 STR r1,[r2,#0]
;;;52 // 4-bit single scan,1bpp STN,ENVID=off
;;;53 rLCDCON2=(0<<24)|(LINEVAL_STN<<14)|(0<<6)|(0<<0); // It is not TFT LCD. So,.....
000100 e3a019ef MOV r1,#0x3bc000
000104 e3a0244d MOV r2,#0x4d000000
000108 e5821004 STR r1,[r2,#4]
;;;54 rLCDCON3=(WDLY_STN<<19)|(HOZVAL_STN<<8)|(LINEBLANK_MONO<<0);
00010c e59f1cc8 LDR r1,|L1.3548|
000110 e3a0244d MOV r2,#0x4d000000
000114 e5821008 STR r1,[r2,#8]
;;;55 rLCDCON4=(MVAL<<8)|(WLH_STN<<0);
000118 e3a01ed0 MOV r1,#0xd00
00011c e3a0244d MOV r2,#0x4d000000
000120 e582100c STR r1,[r2,#0xc]
;;;56 rLCDCON5=0;
000124 e3a01000 MOV r1,#0
000128 e3a0244d MOV r2,#0x4d000000
00012c e5821010 STR r1,[r2,#0x10]
;;;57 //BPP24BL:x,FRM565:x,INVVCLK:x,INVVLINE:x,INVVFRAME:x,INVVD:x,
;;;58 //INVVDEN:x,INVPWREN:x,INVLEND:x,PWREN:x,ENLEND:x,BSWP:x,HWSWP:x
;;;59 rLCDSADDR1=(((U32)frameBuffer1Bit>>22)<<21)|M5D((U32)frameBuffer1Bit>>1);
000130 e59f1c9c LDR r1,|L1.3540|
000134 e5911000 LDR r1,[r1,#0] ; frameBuffer1Bit
000138 e1a01b21 MOV r1,r1,LSR #22
00013c e1a01a81 MOV r1,r1,LSL #21
000140 e59f2c8c LDR r2,|L1.3540|
000144 e5922000 LDR r2,[r2,#0] ; frameBuffer1Bit
000148 e1a02502 MOV r2,r2,LSL #10
00014c e18115a2 ORR r1,r1,r2,LSR #11
000150 e3a0244d MOV r2,#0x4d000000
000154 e5821014 STR r1,[r2,#0x14]
;;;60 rLCDSADDR2=M5D( ((U32)frameBuffer1Bit+(SCR_XSIZE_STN*LCD_YSIZE_STN/8))>>1 );
000158 e59f1c74 LDR r1,|L1.3540|
00015c e5911000 LDR r1,[r1,#0] ; frameBuffer1Bit
000160 e2811c4b ADD r1,r1,#0x4b00
000164 e1a01501 MOV r1,r1,LSL #10
000168 e1a015a1 MOV r1,r1,LSR #11
00016c e3a0244d MOV r2,#0x4d000000
000170 e5821018 STR r1,[r2,#0x18]
;;;61 rLCDSADDR3=(((SCR_XSIZE_STN-LCD_XSIZE_STN)/16)<<11)|(LCD_XSIZE_STN/16);
000174 e59f1c64 LDR r1,|L1.3552|
000178 e3a0244d MOV r2,#0x4d000000
00017c e582101c STR r1,[r2,#0x1c]
;;;62 break;
000180 ea000312 B |L1.3536|
;;;63
;;;64 case MODE_STN_2BIT:
;;;65 frameBuffer2Bit=(U32 (*)[SCR_XSIZE_STN/16])LCDFRAMEBUFFER;
|L1.388|
000184 e3a015c6 MOV r1,#0x31800000
000188 e59f2c54 LDR r2,|L1.3556|
00018c e5821000 STR r1,[r2,#0] ; frameBuffer2Bit
;;;66 rLCDCON1=(CLKVAL_STN_GRAY<<8)|(MVAL_USED<<7)|(1<<5)|(1<<1)|0;
000190 e59f1c50 LDR r1,|L1.3560|
000194 e3a0244d MOV r2,#0x4d000000
000198 e5821000 STR r1,[r2,#0]
;;;67 // 4-bit single scan,2bpp STN,ENVID=off
;;;68 rLCDCON2=(0<<24)|(LINEVAL_STN<<14)|(0<<6)|(0<<0);
00019c e3a019ef MOV r1,#0x3bc000
0001a0 e3a0244d MOV r2,#0x4d000000
0001a4 e5821004 STR r1,[r2,#4]
;;;69 rLCDCON3=(WDLY_STN<<19)|(HOZVAL_STN<<8)|(LINEBLANK_GRAY<<0);
0001a8 e59f1c3c LDR r1,|L1.3564|
0001ac e3a0244d MOV r2,#0x4d000000
0001b0 e5821008 STR r1,[r2,#8]
;;;70 rLCDCON4=(MVAL<<8)|(WLH_STN<<0);
0001b4 e3a01ed0 MOV r1,#0xd00
0001b8 e3a0244d MOV r2,#0x4d000000
0001bc e582100c STR r1,[r2,#0xc]
;;;71 rLCDCON5=0;
0001c0 e3a01000 MOV r1,#0
0001c4 e3a0244d MOV r2,#0x4d000000
0001c8 e5821010 STR r1,[r2,#0x10]
;;;72 //BPP24BL:x,FRM565:x,INVVCLK:x,INVVLINE:x,INVVFRAME:x,INVVD:x,
;;;73 //INVVDEN:x,INVPWREN:x,INVLEND:x,PWREN:x,ENLEND:x,BSWP:x,HWSWP:x
;;;74 rLCDSADDR1=(((U32)frameBuffer2Bit>>22)<<21)|M5D((U32)frameBuffer2Bit>>1);
0001cc e59f1c10 LDR r1,|L1.3556|
0001d0 e5911000 LDR r1,[r1,#0] ; frameBuffer2Bit
0001d4 e1a01b21 MOV r1,r1,LSR #22
0001d8 e1a01a81 MOV r1,r1,LSL #21
0001dc e59f2c00 LDR r2,|L1.3556|
0001e0 e5922000 LDR r2,[r2,#0] ; frameBuffer2Bit
0001e4 e1a02502 MOV r2,r2,LSL #10
0001e8 e18115a2 ORR r1,r1,r2,LSR #11
0001ec e3a0244d MOV r2,#0x4d000000
0001f0 e5821014 STR r1,[r2,#0x14]
;;;75 rLCDSADDR2=M5D( ((U32)frameBuffer2Bit+(SCR_XSIZE_STN*LCD_YSIZE_STN/4))>>1);
0001f4 e59f1be8 LDR r1,|L1.3556|
0001f8 e5911000 LDR r1,[r1,#0] ; frameBuffer2Bit
0001fc e2811c96 ADD r1,r1,#0x9600
000200 e1a01501 MOV r1,r1,LSL #10
000204 e1a015a1 MOV r1,r1,LSR #11
000208 e3a0244d MOV r2,#0x4d000000
00020c e5821018 STR r1,[r2,#0x18]
;;;76 rLCDSADDR3=(((SCR_XSIZE_STN-LCD_XSIZE_STN)/8)<<11)|(LCD_XSIZE_STN/8);
000210 e59f1bd8 LDR r1,|L1.3568|
000214 e3a0244d MOV r2,#0x4d000000
000218 e582101c STR r1,[r2,#0x1c]
;;;77 rDITHMODE=0x0;
00021c e3a01000 MOV r1,#0
000220 e3a0244d MOV r2,#0x4d000000
000224 e582104c STR r1,[r2,#0x4c]
;;;78 rBLUELUT =0xf950; // 4-Gray only
000228 e59f1bc4 LDR r1,|L1.3572|
00022c e3a0244d MOV r2,#0x4d000000
000230 e5821028 STR r1,[r2,#0x28]
;;;79 break;
000234 ea0002e5 B |L1.3536|
;;;80
;;;81 case MODE_STN_4BIT:
;;;82 frameBuffer4Bit=(U32 (*)[SCR_XSIZE_STN/8])LCDFRAMEBUFFER;
|L1.568|
000238 e3a015c6 MOV r1,#0x31800000
00023c e59f2bb4 LDR r2,|L1.3576|
000240 e5821000 STR r1,[r2,#0] ; frameBuffer4Bit
;;;83 rLCDCON1=(CLKVAL_STN_GRAY<<8)|(MVAL_USED<<7)|(1<<5)|(2<<1)|0;
000244 e59f1bb0 LDR r1,|L1.3580|
000248 e3a0244d MOV r2,#0x4d000000
00024c e5821000 STR r1,[r2,#0]
;;;84 // 4-bit single scan,4bpp STN,ENVID=off
;;;85 rLCDCON2=(0<<24)|(LINEVAL_STN<<14)|(0<<6)|(0<<0);
000250 e3a019ef MOV r1,#0x3bc000
000254 e3a0244d MOV r2,#0x4d000000
000258 e5821004 STR r1,[r2,#4]
;;;86 rLCDCON3=(WDLY_STN<<19)|(HOZVAL_STN<<8)|(LINEBLANK_GRAY<<0);
00025c e59f1b88 LDR r1,|L1.3564|
000260 e3a0244d MOV r2,#0x4d000000
000264 e5821008 STR r1,[r2,#8]
;;;87 rLCDCON4=(MVAL<<8)|(WLH_STN<<0);
000268 e3a01ed0 MOV r1,#0xd00
00026c e3a0244d MOV r2,#0x4d000000
000270 e582100c STR r1,[r2,#0xc]
;;;88 rLCDCON5=0;
000274 e3a01000 MOV r1,#0
000278 e3a0244d MOV r2,#0x4d000000
00027c e5821010 STR r1,[r2,#0x10]
;;;89 //BPP24BL:x,FRM565:x,INVVCLK:x,INVVLINE:x,INVVFRAME:x,INVVD:x,
;;;90 //INVVDEN:x,INVPWREN:x,INVLEND:x,PWREN:x,ENLEND:x,BSWP:x,HWSWP:x
;;;91 rLCDSADDR1=(((U32)frameBuffer4Bit>>22)<<21)|M5D((U32)frameBuffer4Bit>>1);
000280 e59f1b70 LDR r1,|L1.3576|
000284 e5911000 LDR r1,[r1,#0] ; frameBuffer4Bit
000288 e1a01b21 MOV r1,r1,LSR #22
00028c e1a01a81 MOV r1,r1,LSL #21
000290 e59f2b60 LDR r2,|L1.3576|
000294 e5922000 LDR r2,[r2,#0] ; frameBuffer4Bit
000298 e1a02502 MOV r2,r2,LSL #10
00029c e18115a2 ORR r1,r1,r2,LSR #11
0002a0 e3a0244d MOV r2,#0x4d000000
0002a4 e5821014 STR r1,[r2,#0x14]
;;;92 rLCDSADDR2=M5D( ((U32)frameBuffer4Bit+(SCR_XSIZE_STN*LCD_YSIZE_STN/2))>>1 );
0002a8 e59f1b48 LDR r1,|L1.3576|
0002ac e5911000 LDR r1,[r1,#0] ; frameBuffer4Bit
0002b0 e2811b4b ADD r1,r1,#0x12c00
0002b4 e1a01501 MOV r1,r1,LSL #10
0002b8 e1a015a1 MOV r1,r1,LSR #11
0002bc e3a0244d MOV r2,#0x4d000000
0002c0 e5821018 STR r1,[r2,#0x18]
;;;93 rLCDSADDR3=(((SCR_XSIZE_STN-LCD_XSIZE_STN)/4)<<11)|(LCD_XSIZE_STN/4);
0002c4 e59f1b34 LDR r1,|L1.3584|
0002c8 e3a0244d MOV r2,#0x4d000000
0002cc e582101c STR r1,[r2,#0x1c]
;;;94 rDITHMODE=0x0;
0002d0 e3a01000 MOV r1,#0
0002d4 e3a0244d MOV r2,#0x4d000000
0002d8 e582104c STR r1,[r2,#0x4c]
;;;95 break;
0002dc ea0002bb B |L1.3536|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -