📄 lcd.ls1
字号:
0027 00 393 NOP
394 ; _nop_();
395 ; SOURCE LINE # 145
0028 00 396 NOP
397 ; _nop_();
398 ; SOURCE LINE # 146
0029 00 399 NOP
400 ; _nop_();
401 ; SOURCE LINE # 147
002A 00 402 NOP
403 ; _nop_();
404 ; SOURCE LINE # 148
002B 00 405 NOP
406 ; }
407 ; SOURCE LINE # 149
002C 0E 408 INC R6
002D EE 409 MOV A,R6
002E B440EB 410 CJNE A,#040H,?C0008
411 ; }
412 ; SOURCE LINE # 150
0031 413 ?C0007:
0031 0F 414 INC R7
0032 EF 415 MOV A,R7
0033 B408CC 416 CJNE A,#08H,?C0005
417 ; }
418 ; SOURCE LINE # 151
0036 419 ?C0011:
0036 22 420 RET
421 ; END OF lcd_clear
422
423 ;
424 ;
425 ; /****************************************************************************************
**
426 ; *函数名: lcd_display_graphic
427 ; *参数: XStart X轴起始位置,为像素点位置
428 ; YStart Y轴起始位置,为像素点位置
429 ; Width 图像宽度像素值
430 ; Height 图像高度像素值
431 ; bReverseDisplay 标识是否反显
432 ; GraphicIndex 图像显示索引
433 ; *返回值: 无
434 ; *描述: 显示一幅图像的程序
435 ; *编写: 王绍伟
436 ; *版本信息: V1.0 2003年8月15日
437 ; *****************************************************************************************
*/
438 ; extern void lcd_display_graphic( /*为整个PAGE显示,不能任意位
置*/
439
---- 440 RSEG ?PR?_lcd_display_graphic?LCD
A51 MACRO ASSEMBLER LCD 10/31/2003 02:22:22 PAGE 8
0000 441 _lcd_display_graphic:
442 USING 0
443 ; SOURCE LINE # 167
0000 900000 F 444 MOV DPTR,#XStart?544
0003 EF 445 MOV A,R7
0004 F0 446 MOVX @DPTR,A
447 ;---- Variable 'YStart?545' assigned to Register 'R5' ----
448 ;---- Variable 'Width?546' assigned to Register 'R1' ----
0005 A903 449 MOV R1,AR3
450 ; byte XStart,
451 ; byte YStart,
452 ; byte Width,
453 ; byte Height,
454 ; bool bReverseDisplay,
455 ; byte GraphicIndex)
456 ; {
457 ; SOURCE LINE # 174
458 ; byte PageCounter; /*页计数值*/
459 ; byte ColumnCounter; /*X位置计数值*/
460 ; byte PageStart; /*起始页码*/
461 ; byte PageEnd; /*终止页码*/
462 ; byte code *pGraphic; /*指向发送显示数据的指针*/
463 ;
464 ; pGraphic = g_Graphic[GraphicIndex]; /*r取出要显示的图像区头地址给指针pGraphic*/
465 ; SOURCE LINE # 181
0007 900000 F 466 MOV DPTR,#GraphicIndex?549
000A E0 467 MOVX A,@DPTR
000B 25E0 468 ADD A,ACC
000D 2400 F 469 ADD A,#LOW (g_Graphic)
000F F582 470 MOV DPL,A
0011 E4 471 CLR A
0012 3400 F 472 ADDC A,#HIGH (g_Graphic)
0014 F583 473 MOV DPH,A
0016 E0 474 MOVX A,@DPTR
0017 FE 475 MOV R6,A
0018 A3 476 INC DPTR
0019 E0 477 MOVX A,@DPTR
478 ;---- Variable 'pGraphic?554' assigned to Register 'R2/R3' ----
001A FB 479 MOV R3,A
001B AA06 480 MOV R2,AR6
481 ; PageStart = YStart >> 3; /*r由于是整页显示,不能随意位置,所以指定除8*
/
482 ; SOURCE LINE # 182
001D ED 483 MOV A,R5
001E 13 484 RRC A
001F 13 485 RRC A
0020 13 486 RRC A
0021 541F 487 ANL A,#01FH
0023 900000 F 488 MOV DPTR,#PageStart?552
0026 F0 489 MOVX @DPTR,A
490 ; PageEnd = (YStart + Height) >> 3;
491 ; SOURCE LINE # 183
0027 900000 F 492 MOV DPTR,#Height?547
002A E0 493 MOVX A,@DPTR
002B 2D 494 ADD A,R5
002C FF 495 MOV R7,A
002D E4 496 CLR A
002E 33 497 RLC A
002F FE 498 MOV R6,A
0030 EF 499 MOV A,R7
0031 7803 500 MOV R0,#03H
0033 501 ?C0040:
0033 CE 502 XCH A,R6
0034 A2E7 503 MOV C,ACC.7
0036 13 504 RRC A
A51 MACRO ASSEMBLER LCD 10/31/2003 02:22:22 PAGE 9
0037 CE 505 XCH A,R6
0038 13 506 RRC A
0039 D8F8 507 DJNZ R0,?C0040
003B 900000 F 508 MOV DPTR,#PageEnd?553
003E F0 509 MOVX @DPTR,A
510 ;
511 ;
512 ; for(PageCounter = PageStart; PageCounter < PageEnd; PageCounter++)
513 ; SOURCE LINE # 186
003F 900000 F 514 MOV DPTR,#PageStart?552
0042 E0 515 MOVX A,@DPTR
516 ;---- Variable 'PageCounter?550' assigned to Register 'R6' ----
0043 FE 517 MOV R6,A
0044 518 ?C0012:
0044 900000 F 519 MOV DPTR,#PageEnd?553
0047 E0 520 MOVX A,@DPTR
0048 FF 521 MOV R7,A
0049 EE 522 MOV A,R6
004A C3 523 CLR C
004B 9F 524 SUBB A,R7
004C 5046 525 JNC ?C0020
526 ; {
527 ; SOURCE LINE # 187
528 ; SetColumn(XStart);
529 ; SOURCE LINE # 188
004E 900000 F 530 MOV DPTR,#XStart?544
0051 E0 531 MOVX A,@DPTR
0052 FF 532 MOV R7,A
0053 120000 F 533 LCALL _SetColumn
534 ; SetPage(PageCounter);
535 ; SOURCE LINE # 189
0056 AF06 536 MOV R7,AR6
0058 120000 F 537 LCALL _SetPage
538 ; RS = 1;
539 ; SOURCE LINE # 190
005B 90F802 540 MOV DPTR,#0F802H
005E 7401 541 MOV A,#01H
0060 F0 542 MOVX @DPTR,A
543 ; for(ColumnCounter = 0; ColumnCounter < Width; ColumnCounter++)
544 ; SOURCE LINE # 191
545 ;---- Variable 'ColumnCounter?551' assigned to Register 'R7' ----
0061 E4 546 CLR A
0062 FF 547 MOV R7,A
0063 548 ?C0015:
0063 EF 549 MOV A,R7
0064 C3 550 CLR C
0065 99 551 SUBB A,R1
0066 5029 552 JNC ?C0014
553 ; {
554 ; SOURCE LINE # 192
555 ; if(!bReverseDisplay)
556 ; SOURCE LINE # 193
0068 200010 F 557 JB bReverseDisplay?548,?C0018
558 ; {
559 ; SOURCE LINE # 194
560 ; WLCD = *pGraphic++; /*r正常显示,白屏黑字*/
561 ; SOURCE LINE # 195
006B 0B 562 INC R3
006C EB 563 MOV A,R3
006D AC02 564 MOV R4,AR2
006F 7001 565 JNZ ?C0041
0071 0A 566 INC R2
0072 567 ?C0041:
0072 14 568 DEC A
0073 F582 569 MOV DPL,A
0075 8C83 570 MOV DPH,R4
A51 MACRO ASSEMBLER LCD 10/31/2003 02:22:22 PAGE 10
0077 E4 571 CLR A
0078 93 572 MOVC A,@A+DPTR
573 ; }
574 ; SOURCE LINE # 196
0079 800F 575 SJMP ?C0045
007B 576 ?C0018:
577 ; else
578 ; {
579 ; SOURCE LINE # 198
580 ; WLCD = ~(*pGraphic++); /*r反转显示,黑屏白字*/
581 ; SOURCE LINE # 199
007B 0B 582 INC R3
007C EB 583 MOV A,R3
007D AC02 584 MOV R4,AR2
007F 7001 585 JNZ ?C0042
0081 0A 586 INC R2
0082 587 ?C0042:
0082 14 588 DEC A
0083 F582 589 MOV DPL,A
0085 8C83 590 MOV DPH,R4
0087 E4 591 CLR A
0088 93 592 MOVC A,@A+DPTR
0089 F4 593 CPL A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -