📄 lcd.lst
字号:
247 00ec 1363 str r3, [r2, #48] 52:LCD/lcd.c **** E_Pulse(); //high->low to E port (pulse)
248 .loc 1 52 0 249 00ee FFF7FEFF bl E_Pulse 53:LCD/lcd.c ****
54:LCD/lcd.c **** //Delay_mS(100000); //delay ~10ms
55:LCD/lcd.c **** Delay_mS(50000); //delay ~5ms
250 .loc 1 55 0 251 00f2 194B ldr r3, .L19+8 252 00f4 181C mov r0, r3 253 00f6 FFF7FEFF bl Delay_mS 56:LCD/lcd.c ****
57:LCD/lcd.c **** l_pPio->PIO_SODR = BIT16|BIT17; //set D4 and D5 port to 1
254 .loc 1 57 0 255 00fa 154B ldr r3, .L19 256 00fc 1A68 ldr r2, [r3] 257 00fe C023 mov r3, #192 258 0100 9B02 lsl r3, r3, #10 259 0102 1363 str r3, [r2, #48] 58:LCD/lcd.c **** E_Pulse(); //high->low to E port (pulse)
260 .loc 1 58 0 261 0104 FFF7FEFF bl E_Pulse 59:LCD/lcd.c ****
60:LCD/lcd.c **** Delay_mS(100000); //delay ~10ms
262 .loc 1 60 0 263 0108 144B ldr r3, .L19+12 264 010a 181C mov r0, r3 265 010c FFF7FEFF bl Delay_mS 61:LCD/lcd.c ****
62:LCD/lcd.c **** l_pPio->PIO_CODR = BIT16; //set D4 port to 0
266 .loc 1 62 0 267 0110 0F4B ldr r3, .L19 268 0112 1A68 ldr r2, [r3] 269 0114 8023 mov r3, #128 270 0116 5B02 lsl r3, r3, #9 271 0118 5363 str r3, [r2, #52] 63:LCD/lcd.c **** l_pPio->PIO_SODR = BIT17; //set D5 port to 1
272 .loc 1 63 0 273 011a 0D4B ldr r3, .L19 274 011c 1A68 ldr r2, [r3] 275 011e 8023 mov r3, #128 276 0120 9B02 lsl r3, r3, #10 277 0122 1363 str r3, [r2, #48] 64:LCD/lcd.c **** E_Pulse(); //high->low to E port (pulse)
278 .loc 1 64 0 279 0124 FFF7FEFF bl E_Pulse 65:LCD/lcd.c ****
66:LCD/lcd.c **** //Delay_mS(100000); //delay ~10ms
67:LCD/lcd.c **** Delay_mS(50000); //delay ~5ms
280 .loc 1 67 0 281 0128 0B4B ldr r3, .L19+8 282 012a 181C mov r0, r3 283 012c FFF7FEFF bl Delay_mS 68:LCD/lcd.c ****
69:LCD/lcd.c **** LCDSendCommand(DISP_ON); //LCD on
284 .loc 1 69 0 285 0130 0C20 mov r0, #12 286 0132 FFF7FEFF bl LCDSendCommand 70:LCD/lcd.c **** LCDSendCommand(CLR_DISP); //LCD clear
287 .loc 1 70 0 288 0136 0120 mov r0, #1 289 0138 FFF7FEFF bl LCDSendCommand 71:LCD/lcd.c **** LCDSendCommand(DD_RAM_ADDR); //LCD set first row
290 .loc 1 71 0 291 013c 8020 mov r0, #128 292 013e FFF7FEFF bl LCDSendCommand 72:LCD/lcd.c **** LCDSendCommand(CUR_ON_UNDER);
293 .loc 1 72 0 294 0142 0E20 mov r0, #14 295 0144 FFF7FEFF bl LCDSendCommand 73:LCD/lcd.c **** }
296 .loc 1 73 0 297 0148 BD46 mov sp, r7 298 @ sp needed for prologue 299 014a 80BC pop {r7} 300 014c 01BC pop {r0} 301 014e 0047 bx r0 302 .L20: 303 .align 2 304 .L19: 305 0150 00000000 .word l_pPio 306 0154 E0C81000 .word 1100000 307 0158 50C30000 .word 50000 308 015c A0860100 .word 100000 309 .LFE294: 311 .align 2 312 .global LCDSendCommand 313 .code 16 314 .thumb_func 316 LCDSendCommand: 317 .LFB295: 74:LCD/lcd.c ****
75:LCD/lcd.c **** void LCDSendCommand(unsigned long a)
76:LCD/lcd.c **** {
318 .loc 1 76 0 319 0160 80B5 push {r7, lr} 320 .LCFI13: 321 0162 6F46 mov r7, sp 322 .LCFI14: 323 0164 81B0 sub sp, sp, #4 324 .LCFI15: 325 0166 3B1F sub r3, r7, #4 326 0168 1860 str r0, [r3] 77:LCD/lcd.c ****
78:LCD/lcd.c **** l_pPio->PIO_CODR = BIT22; //set RW port to 0
327 .loc 1 78 0 328 016a 2C4B ldr r3, .L23 329 016c 1A68 ldr r2, [r3] 330 016e 8023 mov r3, #128 331 0170 DB03 lsl r3, r3, #15 332 0172 5363 str r3, [r2, #52] 79:LCD/lcd.c ****
80:LCD/lcd.c **** Delay_mS(20000); //delay for LCD char ~2ms
333 .loc 1 80 0 334 0174 2A4B ldr r3, .L23+4 335 0176 181C mov r0, r3 336 0178 FFF7FEFF bl Delay_mS 81:LCD/lcd.c ****
82:LCD/lcd.c **** data = 0x0; //clear data
337 .loc 1 82 0 338 017c 294A ldr r2, .L23+8 339 017e 0023 mov r3, #0 340 0180 1360 str r3, [r2] 83:LCD/lcd.c ****
84:LCD/lcd.c **** data = 0xffffff0f | a; //get high 4 bits
341 .loc 1 84 0 342 0182 3B1F sub r3, r7, #4 343 0184 1A68 ldr r2, [r3] 344 0186 F123 mov r3, #241 345 0188 5B42 neg r3, r3 346 018a 1A43 orr r2, r2, r3 347 018c 254B ldr r3, .L23+8 348 018e 1A60 str r2, [r3] 85:LCD/lcd.c ****
86:LCD/lcd.c **** l_pPio->PIO_CODR = BIT16|BIT17|BIT18|BIT19; //clear D4-D7
349 .loc 1 86 0 350 0190 224B ldr r3, .L23 351 0192 1A68 ldr r2, [r3] 352 0194 F023 mov r3, #240 353 0196 1B03 lsl r3, r3, #12 354 0198 5363 str r3, [r2, #52] 87:LCD/lcd.c ****
88:LCD/lcd.c **** data = data << 12; //shift data
355 .loc 1 88 0 356 019a 224B ldr r3, .L23+8 357 019c 1B68 ldr r3, [r3] 358 019e 1A03 lsl r2, r3, #12 359 01a0 204B ldr r3, .L23+8 360 01a2 1A60 str r2, [r3] 89:LCD/lcd.c ****
90:LCD/lcd.c **** l_pPio->PIO_SODR = 0x000f0000 & data; //set data
361 .loc 1 90 0 362 01a4 1D4B ldr r3, .L23 363 01a6 1968 ldr r1, [r3] 364 01a8 1E4B ldr r3, .L23+8 365 01aa 1A68 ldr r2, [r3] 366 01ac F023 mov r3, #240 367 01ae 1B03 lsl r3, r3, #12 368 01b0 1340 and r3, r3, r2 369 01b2 0B63 str r3, [r1, #48] 91:LCD/lcd.c ****
92:LCD/lcd.c **** l_pPio->PIO_CODR = BIT20; //set RS port to 0 -> display set to comand mode
370 .loc 1 92 0 371 01b4 194B ldr r3, .L23 372 01b6 1A68 ldr r2, [r3] 373 01b8 8023 mov r3, #128 374 01ba 5B03 lsl r3, r3, #13 375 01bc 5363 str r3, [r2, #52] 93:LCD/lcd.c ****
94:LCD/lcd.c **** E_Pulse(); //pulse to set d4-d7 bits
376 .loc 1 94 0 377 01be FFF7FEFF bl E_Pulse 95:LCD/lcd.c ****
96:LCD/lcd.c **** data = 0x0; //clear data
378 .loc 1 96 0 379 01c2 184A ldr r2, .L23+8 380 01c4 0023 mov r3, #0 381 01c6 1360 str r3, [r2] 97:LCD/lcd.c ****
98:LCD/lcd.c **** a = a<<4; //shift to get low 4 bits
382 .loc 1 98 0 383 01c8 3A1F sub r2, r7, #4 384 01ca 3B1F sub r3, r7, #4 385 01cc 1B68 ldr r3, [r3] 386 01ce 1B01 lsl r3, r3, #4 387 01d0 1360 str r3, [r2] 99:LCD/lcd.c ****
100:LCD/lcd.c **** data = 0xffffff0f | a; //get low 4 bits
388 .loc 1 100 0 389 01d2 3B1F sub r3, r7, #4 390 01d4 1A68 ldr r2, [r3] 391 01d6 F123 mov r3, #241 392 01d8 5B42 neg r3, r3 393 01da 1A43 orr r2, r2, r3 394 01dc 114B ldr r3, .L23+8 395 01de 1A60 str r2, [r3] 101:LCD/lcd.c ****
102:LCD/lcd.c **** l_pPio->PIO_CODR = BIT16|BIT17|BIT18|BIT19; //clear D4-D7
396 .loc 1 102 0 397 01e0 0E4B ldr r3, .L23 398 01e2 1A68 ldr r2, [r3] 399 01e4 F023 mov r3, #240 400 01e6 1B03 lsl r3, r3, #12 401 01e8 5363 str r3, [r2, #52] 103:LCD/lcd.c ****
104:LCD/lcd.c **** data = data << 12; //shift data
402 .loc 1 104 0 403 01ea 0E4B ldr r3, .L23+8 404 01ec 1B68 ldr r3, [r3] 405 01ee 1A03 lsl r2, r3, #12 406 01f0 0C4B ldr r3, .L23+8 407 01f2 1A60 str r2, [r3] 105:LCD/lcd.c ****
106:LCD/lcd.c **** l_pPio->PIO_SODR = 0x000f0000 & data; //set D4-D7
408 .loc 1 106 0 409 01f4 094B ldr r3, .L23 410 01f6 1968 ldr r1, [r3] 411 01f8 0A4B ldr r3, .L23+8 412 01fa 1A68 ldr r2, [r3] 413 01fc F023 mov r3, #240 414 01fe 1B03 lsl r3, r3, #12 415 0200 1340 and r3, r3, r2 416 0202 0B63 str r3, [r1, #48] 107:LCD/lcd.c ****
108:LCD/lcd.c **** l_pPio->PIO_CODR = BIT20; //set RS port to 0 -> display set to comand mode
417 .loc 1 108 0 418 0204 054B ldr r3, .L23 419 0206 1A68 ldr r2, [r3] 420 0208 8023 mov r3, #128 421 020a 5B03 lsl r3, r3, #13 422 020c 5363 str r3, [r2, #52] 109:LCD/lcd.c ****
110:LCD/lcd.c **** E_Pulse(); //pulse to set d4-d7 bits
423 .loc 1 110 0 424 020e FFF7FEFF bl E_Pulse 111:LCD/lcd.c ****
112:LCD/lcd.c **** }
425 .loc 1 112 0 426 0212 BD46 mov sp, r7 427 @ sp needed for prologue 428 0214 80BC pop {r7} 429 0216 01BC pop {r0} 430 0218 0047 bx r0 431 .L24: 432 021a 0000 .align 2 433 .L23: 434 021c 00000000 .word l_pPio 435 0220 204E0000 .word 20000 436 0224 00000000 .word data 437 .LFE295: 439 .align 2 440 .global LCDSendChar 441 .code 16 442 .thumb_func 444 LCDSendChar: 445 .LFB296: 113:LCD/lcd.c ****
114:LCD/lcd.c **** void LCDSendChar(unsigned long a)
115:LCD/lcd.c **** {
446 .loc 1 115 0 447 0228 80B5 push {r7, lr} 448 .LCFI16: 449 022a 6F46 mov r7, sp 450 .LCFI17: 451 022c 81B0 sub sp, sp, #4 452 .LCFI18: 453 022e 3B1F sub r3, r7, #4 454 0230 1860 str r0, [r3] 116:LCD/lcd.c ****
117:LCD/lcd.c **** //腻豚弪 忸珈铈眍
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -