📄 lcd.txt
字号:
;;;652 SPI_SendData(SPI2, RGB_Code);
000428 4cf9 LDR r4,|L1.2064|
00042a 4631 MOV r1,r6
00042c 4620 MOV r0,r4
00042e f7fffffe BL SPI_SendData
|L1.1074|
;;;653 while(SPI_GetFlagStatus(SPI2, SPI_FLAG_TXE) == RESET)
000432 2102 MOVS r1,#2
000434 4620 MOV r0,r4
000436 f7fffffe BL SPI_GetFlagStatus
00043a 2800 CMP r0,#0
00043c d0f9 BEQ |L1.1074|
;;;654 {
;;;655 }
;;;656
;;;657 LCD_CtrlLinesWrite(GPIOB, CtrlPin_NCS, Bit_SET);
00043e 4628 MOV r0,r5
000440 e8bd4070 POP {r4-r6,lr}
000444 2201 MOVS r2,#1
000446 2104 MOVS r1,#4
000448 e7fe B LCD_CtrlLinesWrite
;;;658 }
;;;659
ENDP
LCD_DrawChar PROC
;;;253 void LCD_DrawChar(u8 Xpos, u16 Ypos, uc16 *c)
;;;254 {
00044a e92d47f0 PUSH {r4-r10,lr}
00044e 468a MOV r10,r1
000450 4617 MOV r7,r2
;;;255 u32 index = 0, i = 0;
000452 2500 MOVS r5,#0
;;;256 u8 Xaddress = 0;
;;;257
;;;258 Xaddress = Xpos;
000454 4606 MOV r6,r0
;;;259
;;;260 LCD_SetCursor(Xaddress, Ypos);
000456 4651 MOV r1,r10
000458 4630 MOV r0,r6
00045a f7fffffe BL LCD_SetCursor
;;;261
;;;262 for(index = 0; index < 24; index++)
00045e f8df83b4 LDR r8,|L1.2068|
000462 f04f0901 MOV r9,#1
|L1.1126|
;;;263 {
;;;264 for(i = 0; i < 16; i++)
000466 2400 MOVS r4,#0
|L1.1128|
;;;265 {
;;;266 if((c[index] & (1 << i)) == 0x00)
000468 f8370015 LDRH r0,[r7,r5,LSL #1]
00046c fa09f104 LSL r1,r9,r4
000470 4208 TST r0,r1
000472 d104 BNE |L1.1150|
;;;267 {
;;;268 LCD_WriteRAM(BackColor);
000474 f8b80002 LDRH r0,[r8,#2] ; BackColor
000478 f7fffffe BL LCD_WriteRAM
00047c e003 B |L1.1158|
|L1.1150|
;;;269 }
;;;270 else
;;;271 {
;;;272 LCD_WriteRAM(TextColor);
00047e f8b80000 LDRH r0,[r8,#0] ; TextColor
000482 f7fffffe BL LCD_WriteRAM
|L1.1158|
000486 1c64 ADDS r4,r4,#1 ;264
000488 2c10 CMP r4,#0x10 ;264
00048a d3ed BCC |L1.1128|
;;;273 }
;;;274 }
;;;275 Xaddress++;
00048c 1c70 ADDS r0,r6,#1
00048e b2c6 UXTB r6,r0
;;;276 LCD_SetCursor(Xaddress, Ypos);
000490 4651 MOV r1,r10
000492 4630 MOV r0,r6
000494 f7fffffe BL LCD_SetCursor
000498 1c6d ADDS r5,r5,#1 ;262
00049a 2d18 CMP r5,#0x18 ;262
00049c d3e3 BCC |L1.1126|
;;;277 }
;;;278 }
00049e e8bd87f0 POP {r4-r10,pc}
;;;279
ENDP
LCD_DisplayChar PROC
;;;292 {
;;;293 Ascii -= 32;
0004a2 3a20 SUBS r2,r2,#0x20
0004a4 b2d2 UXTB r2,r2
;;;294 LCD_DrawChar(Line, Column, &ASCII_Table[Ascii * 24]);
0004a6 4bdc LDR r3,|L1.2072|
0004a8 eb020242 ADD r2,r2,r2,LSL #1
0004ac eb031202 ADD r2,r3,r2,LSL #4
0004b0 e7fe B LCD_DrawChar
;;;295 }
;;;296
ENDP
LCD_DisplayStringLine PROC
;;;307 void LCD_DisplayStringLine(u8 Line, u8 *ptr)
;;;308 {
0004b2 e92d41f0 PUSH {r4-r8,lr}
0004b6 4607 MOV r7,r0
0004b8 460c MOV r4,r1
;;;309 u32 i = 0;
0004ba 2500 MOVS r5,#0
;;;310 u16 refcolumn = 319;
0004bc f240163f MOV r6,#0x13f
;;;311
;;;312 /* Send the string character by character on lCD */
;;;313 while ((*ptr != 0) & (i < 20))
0004c0 7820 LDRB r0,[r4,#0]
0004c2 b100 CBZ r0,|L1.1222|
0004c4 2001 MOVS r0,#1
|L1.1222|
0004c6 f0100f01 TST r0,#1
0004ca d013 BEQ |L1.1268|
|L1.1228|
;;;314 {
;;;315 /* Display one character on LCD */
;;;316 LCD_DisplayChar(Line, refcolumn, *ptr);
0004cc 7822 LDRB r2,[r4,#0]
0004ce 4631 MOV r1,r6
0004d0 4638 MOV r0,r7
0004d2 f7fffffe BL LCD_DisplayChar
;;;317 /* Decrement the column position by 16 */
;;;318 refcolumn -= 16;
0004d6 f1a60010 SUB r0,r6,#0x10
0004da b286 UXTH r6,r0
;;;319 /* Point on the next character */
;;;320 ptr++;
;;;321 /* Increment the character counter */
;;;322 i++;
0004dc 1c6d ADDS r5,r5,#1
0004de f8140f01 LDRB r0,[r4,#1]! ;313
0004e2 b100 CBZ r0,|L1.1254|
0004e4 2001 MOVS r0,#1 ;313
|L1.1254|
0004e6 2d14 CMP r5,#0x14 ;313
0004e8 d201 BCS |L1.1262|
0004ea 2101 MOVS r1,#1 ;313
0004ec e000 B |L1.1264|
|L1.1262|
0004ee 2100 MOVS r1,#0 ;313
|L1.1264|
0004f0 4208 TST r0,r1 ;313
0004f2 d1eb BNE |L1.1228|
|L1.1268|
;;;323 }
;;;324 }
0004f4 e8bd81f0 POP {r4-r8,pc}
;;;325
ENDP
LCD_ClearLine PROC
;;;204 {
;;;205 LCD_DisplayStringLine(Line, " ");
0004f8 a1c8 ADR r1,|L1.2076|
0004fa e7fe B LCD_DisplayStringLine
;;;206 }
;;;207
ENDP
LCD_Clear PROC
;;;215 void LCD_Clear(void)
;;;216 {
0004fc b510 PUSH {r4,lr}
;;;217 u32 index = 0;
0004fe 2400 MOVS r4,#0
;;;218
;;;219 LCD_SetCursor(0x00, 0x013F);
000500 f240113f MOV r1,#0x13f
000504 2000 MOVS r0,#0
000506 f7fffffe BL LCD_SetCursor
|L1.1290|
;;;220
;;;221 for(index = 0; index < 76800; index++)
;;;222 {
;;;223 LCD_WriteRAM(White);
00050a f64f70ff MOV r0,#0xffff
00050e f7fffffe BL LCD_WriteRAM
000512 1c64 ADDS r4,r4,#1 ;221
000514 f5b43f96 CMP r4,#0x12c00 ;221
000518 d3f7 BCC |L1.1290|
;;;224 }
;;;225 }
00051a bd10 POP {r4,pc}
;;;226
ENDP
StrLength PROC
;;;812 {
;;;813 u32 Index = 0;
00051c 2100 MOVS r1,#0
|L1.1310|
;;;814
;;;815 /* Increment the Index unless the end of string */
;;;816 for(Index = 0; *Str != '\0'; Str++, Index++)
00051e 7802 LDRB r2,[r0,#0]
000520 b112 CBZ r2,|L1.1320|
000522 1c40 ADDS r0,r0,#1
000524 1c49 ADDS r1,r1,#1
000526 e7fa B |L1.1310|
|L1.1320|
;;;817 {
;;;818 }
;;;819
;;;820 return Index;
000528 4608 MOV r0,r1
;;;821 }
00052a 4770 BX lr
;;;822
ENDP
LCD_DisplayString PROC
;;;336 void LCD_DisplayString(u8 Line, u8 *ptr)
;;;337 {
00052c e92d47f0 PUSH {r4-r10,lr}
000530 4682 MOV r10,r0
000532 460c MOV r4,r1
;;;338 u32 i = 0, column = 0, index = 0, spaceindex = 0;
000534 2600 MOVS r6,#0
000536 2700 MOVS r7,#0
000538 2500 MOVS r5,#0
;;;339 u16 refcolumn = 319;
00053a f240193f MOV r9,#0x13f
;;;340 u32 length = 0;
;;;341
;;;342 /* Get the string length */
;;;343 length = StrLength(ptr);
00053e 4620 MOV r0,r4
000540 f7fffffe BL StrLength
000544 4680 MOV r8,r0
;;;344 if(length > 200)
000546 f1b80fc8 CMP r8,#0xc8
00054a d90c BLS |L1.1382|
;;;345 {
;;;346 /* Set the Cursor position */
;;;347 LCD_SetCursor(Line, 0x013F);
00054c f240113f MOV r1,#0x13f
000550 4650 MOV r0,r10
000552 f7fffffe BL LCD_SetCursor
;;;348 /* Clear the Selected Line */
;;;349 LCD_ClearLine(Line);
000556 4650 MOV r0,r10
000558 f7fffffe BL LCD_ClearLine
;;;350 LCD_DisplayStringLine(Line, " String too long ");
00055c 4650 MOV r0,r10
00055e e8bd47f0 POP {r4-r10,lr}
000562 a1b4 ADR r1,|L1.2100|
000564 e7fe B LCD_DisplayStringLine
|L1.1382|
;;;351 }
;;;352 else
;;;353 {
;;;354 /* Set the Cursor position */
;;;355 LCD_SetCursor(Line, 0x013F);
000566 f240113f MOV r1,#0x13f
00056a 4650 MOV r0,r10
00056c f7fffffe BL LCD_SetCursor
;;;356 /* Clear the Selected Line */
;;;357 // LCD_ClearLine(Line);
;;;358
;;;359 while(length--)
000570 f1b80801 SUBS r8,r8,#1
000574 d334 BCC |L1.1504|
|L1.1398|
;;;360 {
;;;361 if(index == 20)
000576 2f14 CMP r7,#0x14
000578 d11d BNE |L1.1462|
;;;362 {
;;;363 if(*ptr == 0x20)
00057a 7820 LDRB r0,[r4,#0]
00057c 2820 CMP r0,#0x20
00057e d101 BNE |L1.1412|
;;;364 {
;;;365 ptr++;
000580 1c64 ADDS r4,r4,#1
000582 e011 B |L1.1448|
|L1.1412|
;;;366 }
;;;367 else
;;;368 {
;;;369 for(i = 0; i < spaceindex; i++)
000584 2700 MOVS r7,#0
000586 2d00 CMP r5,#0
000588 d908 BLS |L1.1436|
|L1.1418|
;;;370 {
;;;371 LCD_DisplayChar(Line, column, ' ');
00058a 2220 MOVS r2,#0x20
00058c b2b1 UXTH r1,r6
00058e 4650 MOV r0,r10
000590 f7fffffe BL LCD_DisplayChar
;;;372 column -= 16;
000594 3e10 SUBS r6,r6,#0x10
000596 1c7f ADDS r7,r7,#1 ;369
000598 42af CMP r7,r5 ;369
00059a d3f6 BCC |L1.1418|
|L1.1436|
;;;373 }
;;;374 ptr -= (spaceindex - 1);
00059c 1b60 SUBS r0,r4,r5
00059e 1c44 ADDS r4,r0,#1
;;;375 length += (spaceindex - 1);
0005a0 eb080005 ADD r0,r8,r5
0005a4 f1a00801 SUB r8,r0,#1
|L1.1448|
;;;376 }
;;;377 Line += 24;
0005a8 f10a0018 ADD r0,r10,#0x18
0005ac f0000aff AND r10,r0,#0xff
;;;378 /* Clear the Selected Line */
;;;379 // LCD_ClearLine(Line);
;;;380 refcolumn = 319;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -