📄 nokia_5110.txt
字号:
0002d0 e0862009 ADD r2,r6,r9
0002d4 e022429a MLA r2,r10,r2,r4
0002d8 e20200ff AND r0,r2,#0xff
0002dc ebfffffe BL LCD_set_XY
;;;157 }
;;;158 LCD_write_byte(write_chinese[line+i][n],1);
|L1.736|
0002e0 e088100a ADD r1,r8,r10
0002e4 e0811081 ADD r1,r1,r1,LSL #1
0002e8 e59f25e0 LDR r2,|L1.2256|
0002ec e0821181 ADD r1,r2,r1,LSL #3
0002f0 e7d1000b LDRB r0,[r1,r11]
0002f4 e3a01001 MOV r1,#1
0002f8 ebfffffe BL LCD_write_byte
0002fc e28b0001 ADD r0,r11,#1 ;150
000300 e200b0ff AND r11,r0,#0xff ;150
|L1.772|
000304 e15b0086 CMP r11,r6,LSL #1 ;150
000308 baffffe5 BLT |L1.676| ;150
;;;159 }
;;;160 i++;
00030c e28a0001 ADD r0,r10,#1
000310 e200a0ff AND r10,r0,#0xff
;;;161 LCD_set_XY((X+(ch_with+row)*i),Y);
000314 e0861009 ADD r1,r6,r9
000318 e021419a MLA r1,r10,r1,r4
00031c e20100ff AND r0,r1,#0xff
000320 e1a01005 MOV r1,r5
000324 ebfffffe BL LCD_set_XY
|L1.808|
000328 e15a0007 CMP r10,r7 ;148
00032c baffffda BLT |L1.668| ;148
;;;162 }
;;;163 }
000330 e8bd4ff0 POP {r4-r11,lr}
000334 e12fff1e BX lr
ENDP
chinese_string PROC
;;;174 void chinese_string (unsigned char X, unsigned char Y, unsigned char T)
;;;175 {
000338 e92d43f0 PUSH {r4-r9,lr}
00033c e24dd0ac SUB sp,sp,#0xac
000340 e1a04000 MOV r4,r0
000344 e1a05001 MOV r5,r1
000348 e1a06002 MOV r6,r2
;;;176 unsigned char i,n,j=0;
00034c e3a09000 MOV r9,#0
;;;177 unsigned char buffer_h[84]={0};
000350 e3a01054 MOV r1,#0x54
000354 e28d0058 ADD r0,sp,#0x58
000358 ebfffffe BL __aeabi_memclr4
;;;178 unsigned char buffer_l[84]={0};
00035c e3a01054 MOV r1,#0x54
000360 e28d0004 ADD r0,sp,#4
000364 ebfffffe BL __aeabi_memclr4
;;;179
;;;180 for (i=0; i<156; i++)
000368 e3a07000 MOV r7,#0
00036c ea000044 B |L1.1156|
;;;181 {
;;;182 buffer_h[83] = move_chinese_string[i/12][j];
|L1.880|
000370 e3a0100c MOV r1,#0xc
000374 e1a00007 MOV r0,r7
000378 ebfffffe BL __aeabi_idivmod
00037c e0800080 ADD r0,r0,r0,LSL #1
000380 e59f154c LDR r1,|L1.2260|
000384 e0810180 ADD r0,r1,r0,LSL #3
000388 e7d00009 LDRB r0,[r0,r9]
00038c e5cd00ab STRB r0,[sp,#0xab]
;;;183 buffer_l[83] = move_chinese_string[i/12][j+12];
000390 e3a0100c MOV r1,#0xc
000394 e1a00007 MOV r0,r7
000398 ebfffffe BL __aeabi_idivmod
00039c e0800080 ADD r0,r0,r0,LSL #1
0003a0 e59f152c LDR r1,|L1.2260|
0003a4 e0810180 ADD r0,r1,r0,LSL #3
0003a8 e289100c ADD r1,r9,#0xc
0003ac e7d00001 LDRB r0,[r0,r1]
0003b0 e5cd0057 STRB r0,[sp,#0x57]
;;;184 j++;
0003b4 e2890001 ADD r0,r9,#1
0003b8 e20090ff AND r9,r0,#0xff
;;;185 if (j==12) j=0;
0003bc e359000c CMP r9,#0xc
0003c0 1a000000 BNE |L1.968|
0003c4 e3a09000 MOV r9,#0
;;;186
;;;187 for (n=0; n<83; n++)
|L1.968|
0003c8 e3a08000 MOV r8,#0
0003cc ea00000b B |L1.1024|
;;;188 {
;;;189 buffer_h[n]=buffer_h[n+1];
|L1.976|
0003d0 e28d0058 ADD r0,sp,#0x58
0003d4 e2881001 ADD r1,r8,#1
0003d8 e7d00001 LDRB r0,[r0,r1]
0003dc e28d1058 ADD r1,sp,#0x58
0003e0 e7c10008 STRB r0,[r1,r8]
;;;190 buffer_l[n]=buffer_l[n+1];
0003e4 e28d0004 ADD r0,sp,#4
0003e8 e2881001 ADD r1,r8,#1
0003ec e7d00001 LDRB r0,[r0,r1]
0003f0 e28d1004 ADD r1,sp,#4
0003f4 e7c10008 STRB r0,[r1,r8]
0003f8 e2880001 ADD r0,r8,#1 ;187
0003fc e20080ff AND r8,r0,#0xff ;187
|L1.1024|
000400 e3580053 CMP r8,#0x53 ;187
000404 bafffff1 BLT |L1.976| ;187
;;;191 }
;;;192
;;;193 LCD_set_XY(X,Y);
000408 e1a01005 MOV r1,r5
00040c e1a00004 MOV r0,r4
000410 ebfffffe BL LCD_set_XY
;;;194 for (n=0; n<83; n++)
000414 e3a08000 MOV r8,#0
000418 ea000005 B |L1.1076|
;;;195 {
;;;196 LCD_write_byte(buffer_h[n],1);
|L1.1052|
00041c e28d1058 ADD r1,sp,#0x58
000420 e7d10008 LDRB r0,[r1,r8]
000424 e3a01001 MOV r1,#1
000428 ebfffffe BL LCD_write_byte
00042c e2880001 ADD r0,r8,#1 ;194
000430 e20080ff AND r8,r0,#0xff ;194
|L1.1076|
000434 e3580053 CMP r8,#0x53 ;194
000438 bafffff7 BLT |L1.1052| ;194
;;;197 }
;;;198
;;;199 LCD_set_XY(X,Y+1);
00043c e2850001 ADD r0,r5,#1
000440 e20010ff AND r1,r0,#0xff
000444 e1a00004 MOV r0,r4
000448 ebfffffe BL LCD_set_XY
;;;200 for (n=0; n<83; n++)
00044c e3a08000 MOV r8,#0
000450 ea000005 B |L1.1132|
;;;201 {
;;;202 LCD_write_byte(buffer_l[n],1);
|L1.1108|
000454 e28d1004 ADD r1,sp,#4
000458 e7d10008 LDRB r0,[r1,r8]
00045c e3a01001 MOV r1,#1
000460 ebfffffe BL LCD_write_byte
000464 e2880001 ADD r0,r8,#1 ;200
000468 e20080ff AND r8,r0,#0xff ;200
|L1.1132|
00046c e3580053 CMP r8,#0x53 ;200
000470 bafffff7 BLT |L1.1108| ;200
;;;203 }
;;;204
;;;205 //delay_nms(T);
;;;206 DelayXms(T);
000474 e1a00006 MOV r0,r6
000478 ebfffffe BL DelayXms
00047c e2870001 ADD r0,r7,#1 ;180
000480 e20070ff AND r7,r0,#0xff ;180
|L1.1156|
000484 e357009c CMP r7,#0x9c ;180
000488 baffffb8 BLT |L1.880| ;180
;;;207 }
;;;208 }
00048c e28dd0ac ADD sp,sp,#0xac
000490 e8bd43f0 POP {r4-r9,lr}
000494 e12fff1e BX lr
ENDP
LCD_draw_bmp_pixel PROC
;;;222 unsigned char Pix_x,unsigned char Pix_y)
;;;223 {
000498 e92d4ff0 PUSH {r4-r11,lr}
00049c e1a04000 MOV r4,r0
0004a0 e1a05001 MOV r5,r1
0004a4 e1a06002 MOV r6,r2
0004a8 e1a07003 MOV r7,r3
0004ac e59d8024 LDR r8,[sp,#0x24]
;;;224 unsigned int i,n;
;;;225 unsigned char row;
;;;226
;;;227 if (Pix_y%8==0) row=Pix_y/8; //计算位图所占行数
0004b0 e1a01fc8 ASR r1,r8,#31
0004b4 e0881ea1 ADD r1,r8,r1,LSR #29
0004b8 e1a011c1 ASR r1,r1,#3
0004bc e0581181 SUBS r1,r8,r1,LSL #3
0004c0 1a000004 BNE |L1.1240|
0004c4 e1a00008 MOV r0,r8
0004c8 e1a01fc8 ASR r1,r8,#31
0004cc e0881ea1 ADD r1,r8,r1,LSR #29
0004d0 e1a0b1c1 ASR r11,r1,#3
0004d4 ea000004 B |L1.1260|
;;;228 else
;;;229 row=Pix_y/8+1;
|L1.1240|
0004d8 e1a00008 MOV r0,r8
0004dc e1a01fc8 ASR r1,r8,#31
0004e0 e0881ea1 ADD r1,r8,r1,LSR #29
0004e4 e1a011c1 ASR r1,r1,#3
0004e8 e281b001 ADD r11,r1,#1
;;;230
;;;231 for (n=0;n<row;n++)
|L1.1260|
0004ec e3a0a000 MOV r10,#0
0004f0 ea00000e B |L1.1328|
;;;232 {
;;;233 LCD_set_XY(X,Y);
|L1.1268|
0004f4 e1a01005 MOV r1,r5
0004f8 e1a00004 MOV r0,r4
0004fc ebfffffe BL LCD_set_XY
;;;234 for(i=0; i<Pix_x; i++)
000500 e3a09000 MOV r9,#0
000504 ea000004 B |L1.1308|
;;;235 {
;;;236 LCD_write_byte(map[i+n*Pix_x], 1);
|L1.1288|
000508 e021979a MLA r1,r10,r7,r9
00050c e7d60001 LDRB r0,[r6,r1]
000510 e3a01001 MOV r1,#1
000514 ebfffffe BL LCD_write_byte
000518 e2899001 ADD r9,r9,#1 ;234
|L1.1308|
00051c e1590007 CMP r9,r7 ;234
000520 3afffff8 BCC |L1.1288| ;234
;;;237 }
;;;238 Y++; //换行
000524 e2850001 ADD r0,r5,#1
000528 e20050ff AND r5,r0,#0xff
00052c e28aa001 ADD r10,r10,#1 ;231
|L1.1328|
000530 e15a000b CMP r10,r11 ;231
000534 3affffee BCC |L1.1268| ;231
;;;239 }
;;;240 }
000538 e8bd4ff0 POP {r4-r11,lr}
00053c e12fff1e BX lr
ENDP
LCM_WriteByte PROC
;;;288 void LCM_WriteByte(uint8 x, uint8 y, uint8 wrdata)
;;;289 {
000540 e92d4070 PUSH {r4-r6,lr}
000544 e1a04000 MOV r4,r0
000548 e1a05001 MOV r5,r1
00054c e1a06002 MOV r6,r2
;;;290 x = x&0x7f; // 参数过滤
000550 e204407f AND r4,r4,#0x7f
;;;291 y = y&0x3f;
000554 e205503f AND r5,r5,#0x3f
;;;292 y = y>>3;
000558 e1a051c5 ASR r5,r5,#3
;;;293 LCD_set_XY(x,y);
00055c e1a01005 MOV r1,r5
000560 e1a00004 MOV r0,r4
000564 ebfffffe BL LCD_set_XY
;;;294 gui_disp_buf[y][x] = wrdata;
000568 e3a00015 MOV r0,#0x15
00056c e0000095 MUL r0,r5,r0
000570 e59f1360 LDR r1,|L1.2264|
000574 e0810100 ADD r0,r1,r0,LSL #2
000578 e7c06004 STRB r6,[r0,r4]
;;;295 LCD_write_byte(wrdata,1);
00057c e3a01001 MOV r1,#1
000580 e1a00006 MOV r0,r6
000584 ebfffffe BL LCD_write_byte
;;;296
;;;297 }
000588 e8bd4070 POP {r4-r6,lr}
00058c e12fff1e BX lr
ENDP
LCM_ReadByte PROC
;;;305 uint8 LCM_ReadByte(uint8 x, uint8 y)
;;;306 {
000590 e1a02000 MOV r2,r0
;;;307 x = x&0x7f; // 参数过滤
000594 e202207f AND r2,r2,#0x7f
;;;308 y = y&0x3f;
000598 e201103f AND r1,r1,#0x3f
;;;309
;;;310 y = y>>3;
00059c e1a011c1 ASR r1,r1,#3
;;;311 return(gui_disp_buf[y][x]);
0005a0 e3a00015 MOV r0,#0x15
0005a4 e0000091 MUL r0,r1,r0
0005a8 e59f3328 LDR r3,|L1.2264|
0005ac e0830100 ADD r0,r3,r0,LSL #2
0005b0 e7d00002 LDRB r0,[r0,r2]
;;;312 }
0005b4 e12fff1e BX lr
ENDP
LCM_DispFill PROC
;;;319 void LCM_DispFill(uint8 filldata)
;;;320 {
0005b8 e92d4070 PUSH {r4-r6,lr}
0005bc e1a04000 MOV r4,r0
;;;321 uint8 x,y;
;;;322
;;;323 LCD_set_XY(0,0);
0005c0 e3a01000 MOV r1,#0
0005c4 e1a00001 MOV r0,r1
0005c8 ebfffffe BL LCD_set_XY
;;;324
;;;325 for(x=0; x<8; x++)
0005cc e3a06000 MOV r6,#0
0005d0 ea00000d B |L1.1548|
;;;326 {
;;;327 LCD_set_XY(x,0);
|L1.1492|
0005d4 e3a01000 MOV r1,#0
0005d8 e1a00006 MOV r0,r6
0005dc ebfffffe BL LCD_set_XY
;;;328 for(y=0; y<84; y++)
0005e0 e3a05000 MOV r5,#0
0005e4 ea000004 B |L1.1532|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -