⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcddrive.lis

📁 ssd1325控制器液晶的驱动程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 034A           ;    /* 参数过滤 */
 034A           ;    if(x>=GUI_LCM_XMAX) return(0);
 034A 6038              cpi R22,128
 034C E0E0              ldi R30,0
 034E 7E07              cpc R23,R30
 0350 18F0              brlo L66
 0352                   .dbline 411
 0352 0027              clr R16
 0354 1127              clr R17
 0356 31C0              xjmp L65
 0358           L66:
 0358                   .dbline 412
 0358           ;    if(y>=GUI_LCM_YMAX) return(0);
 0358 4034              cpi R20,64
 035A E0E0              ldi R30,0
 035C 5E07              cpc R21,R30
 035E 18F0              brlo L68
 0360                   .dbline 412
 0360 0027              clr R16
 0362 1127              clr R17
 0364 2AC0              xjmp L65
 0366           L68:
 0366                   .dbline 415
 0366           ;   
 0366           ;    /* 取得该点颜色(用户自行更改) */ 
 0366           ;    bak = gui_disp_buf[y][x>>3];
 0366 00E1              ldi R16,16
 0368 10E0              ldi R17,0
 036A 9A01              movw R18,R20
 036C 0E940000          xcall empy16s
 0370 1801              movw R2,R16
 0372 80E0              ldi R24,<_gui_disp_buf
 0374 90E0              ldi R25,>_gui_disp_buf
 0376 280E              add R2,R24
 0378 391E              adc R3,R25
 037A FB01              movw R30,R22
 037C F695              lsr R31
 037E E795              ror R30
 0380 F695              lsr R31
 0382 E795              ror R30
 0384 F695              lsr R31
 0386 E795              ror R30
 0388 E20D              add R30,R2
 038A F31D              adc R31,R3
 038C 4081              ldd R20,z+0
 038E                   .dbline 416
 038E           ;    if( (bak&DCB_HEX_TAB[x&0x07])!=0 ) *ret = 1;
 038E 80E0              ldi R24,<_DCB_HEX_TAB
 0390 90E0              ldi R25,>_DCB_HEX_TAB
 0392 FB01              movw R30,R22
 0394 E770              andi R30,7
 0396 F070              andi R31,0
 0398 E80F              add R30,R24
 039A F91F              adc R31,R25
 039C E491              lpm R30,Z
 039E 242E              mov R2,R20
 03A0 2E22              and R2,R30
 03A2 29F0              breq L70
 03A4                   .dbline 416
 03A4 81E0              ldi R24,1
 03A6 EC81              ldd R30,y+4
 03A8 FD81              ldd R31,y+5
 03AA 8083              std z+0,R24
 03AC 04C0              xjmp L71
 03AE           L70:
 03AE                   .dbline 417
 03AE           ;       else  *ret = 0;
 03AE 2224              clr R2
 03B0 EC81              ldd R30,y+4
 03B2 FD81              ldd R31,y+5
 03B4 2082              std z+0,R2
 03B6           L71:
 03B6                   .dbline 419
 03B6           ;    
 03B6           ;    return(1);
 03B6 01E0              ldi R16,1
 03B8 10E0              ldi R17,0
 03BA                   .dbline -2
 03BA           L65:
 03BA 0E940000          xcall pop_gset2
 03BE                   .dbline 0 ; func end
 03BE 0895              ret
 03C0                   .dbsym r bak 20 c
 03C0                   .dbsym l ret 4 pc
 03C0                   .dbsym r y 20 i
 03C0                   .dbsym r x 22 i
 03C0                   .dbend
 03C0                   .dbfunc e GUI_HLine _GUI_HLine fV
 03C0           ;            bak -> R14,R15
 03C0           ;          color -> R12
 03C0           ;             x1 -> R10,R11
 03C0           ;             y0 -> R22,R23
 03C0           ;             x0 -> R20,R21
                        .even
 03C0           _GUI_HLine::
 03C0 0E940000          xcall push_gset5
 03C4 B901              movw R22,R18
 03C6 A801              movw R20,R16
 03C8 2197              sbiw R28,1
 03CA AB84              ldd R10,y+11
 03CC BC84              ldd R11,y+12
 03CE CD84              ldd R12,y+13
 03D0                   .dbline -1
 03D0                   .dbline 434
 03D0           ; }
 03D0           ; 
 03D0           ; 
 03D0           ; /****************************************************************************
 03D0           ; * 名称:GUI_HLine()
 03D0           ; * 功能:画水平线。
 03D0           ; * 入口参数: x0               水平线起点所在列的位置
 03D0           ; *           y0                水平线起点所在行的位置
 03D0           ; *           x1      水平线终点所在列的位置
 03D0           ; *           color     显示颜色(对于黑白色LCM,为0时灭,为1时显示)
 03D0           ; * 出口参数:无
 03D0           ; * 说明:操作失败原因是指定地址超出缓冲区范围。
 03D0           ; ****************************************************************************/
 03D0           ; void  GUI_HLine(uint32 x0, uint32 y0, uint32 x1, uint8 color) 
 03D0           ; {  uint32  bak;
 03D0                   .dbline 436
 03D0           ; 
 03D0           ;    if(x0>x1)                                          // 对x0、x1大小进行排列,以便画图
 03D0 A416              cp R10,R20
 03D2 B506              cpc R11,R21
 03D4 18F4              brsh L73
 03D6                   .dbline 437
 03D6           ;    {  bak = x1;
 03D6                   .dbline 437
 03D6 7501              movw R14,R10
 03D8                   .dbline 438
 03D8           ;       x1 = x0;
 03D8 5A01              movw R10,R20
 03DA                   .dbline 439
 03DA           ;       x0 = bak;
 03DA A701              movw R20,R14
 03DC                   .dbline 440
 03DC           ;    }
 03DC           L73:
 03DC                   .dbline 441
 03DC           ;    if(x0==x1)
 03DC 4A15              cp R20,R10
 03DE 5B05              cpc R21,R11
 03E0 29F4              brne L75
 03E2                   .dbline 442
 03E2           ;    {  GUI_Point(x0, y0, color);
 03E2                   .dbline 442
 03E2 C882              std y+0,R12
 03E4 9B01              movw R18,R22
 03E6 8A01              movw R16,R20
 03E8 52DF              xcall _GUI_Point
 03EA                   .dbline 443
 03EA           ;       return;
 03EA 97C0              xjmp L72
 03EC           L75:
 03EC           L77:
 03EC                   .dbline 447
 03EC           ;    }
 03EC           ;    
 03EC           ;    do
 03EC           ;    {  /* 设置相应的点为1 */
 03EC                   .dbline 448
 03EC           ;       if(0!=color) gui_disp_buf[y0][x0>>3] |= DCB_HEX_TAB[x0&0x07];
 03EC CC20              tst R12
 03EE 01F1              breq L80
 03F0                   .dbline 448
 03F0 00E1              ldi R16,16
 03F2 10E0              ldi R17,0
 03F4 9B01              movw R18,R22
 03F6 0E940000          xcall empy16s
 03FA 1801              movw R2,R16
 03FC 80E0              ldi R24,<_gui_disp_buf
 03FE 90E0              ldi R25,>_gui_disp_buf
 0400 280E              add R2,R24
 0402 391E              adc R3,R25
 0404 2A01              movw R4,R20
 0406 5694              lsr R5
 0408 4794              ror R4
 040A 5694              lsr R5
 040C 4794              ror R4
 040E 5694              lsr R5
 0410 4794              ror R4
 0412 420C              add R4,R2
 0414 531C              adc R5,R3
 0416 80E0              ldi R24,<_DCB_HEX_TAB
 0418 90E0              ldi R25,>_DCB_HEX_TAB
 041A FA01              movw R30,R20
 041C E770              andi R30,7
 041E F070              andi R31,0
 0420 E80F              add R30,R24
 0422 F91F              adc R31,R25
 0424 E491              lpm R30,Z
 0426 D201              movw R26,R4
 0428 2C90              ld R2,x
 042A 2E2A              or R2,R30
 042C 2C92              st x,R2
 042E 20C0              xjmp L81
 0430           L80:
 0430                   .dbline 449
 0430           ;          else  gui_disp_buf[y0][x0>>3] &= (~DCB_HEX_TAB[x0&0x07]);
 0430 00E1              ldi R16,16
 0432 10E0              ldi R17,0
 0434 9B01              movw R18,R22
 0436 0E940000          xcall empy16s
 043A 1801              movw R2,R16
 043C 80E0              ldi R24,<_gui_disp_buf
 043E 90E0              ldi R25,>_gui_disp_buf
 0440 280E              add R2,R24
 0442 391E              adc R3,R25
 0444 2A01              movw R4,R20
 0446 5694              lsr R5
 0448 4794              ror R4
 044A 5694              lsr R5
 044C 4794              ror R4
 044E 5694              lsr R5
 0450 4794              ror R4
 0452 420C              add R4,R2
 0454 531C              adc R5,R3
 0456 80E0              ldi R24,<_DCB_HEX_TAB
 0458 90E0              ldi R25,>_DCB_HEX_TAB
 045A FA01              movw R30,R20
 045C E770              andi R30,7
 045E F070              andi R31,0
 0460 E80F              add R30,R24
 0462 F91F              adc R31,R25
 0464 E491              lpm R30,Z
 0466 E095              com R30
 0468 D201              movw R26,R4
 046A 2C90              ld R2,x
 046C 2E22              and R2,R30
 046E 2C92              st x,R2
 0470           L81:
 0470                   .dbline 451
 0470           ;       /* 刷新显示(一次刷新一字节) */
 0470           ;       if( (x0&0x07)==0x07 ) LCD_UpdatePoint(x0, y0);
 0470 CA01              movw R24,R20
 0472 8770              andi R24,7
 0474 9070              andi R25,0
 0476 8730              cpi R24,7
 0478 E0E0              ldi R30,0
 047A 9E07              cpc R25,R30
 047C 19F4              brne L82
 047E                   .dbline 451
 047E 9B01              movw R18,R22
 0480 8A01              movw R16,R20
 0482 9EDE              xcall _LCD_UpdatePoint
 0484           L82:
 0484                   .dbline 453
 0484           ;       
 0484           ;       x0++;
 0484 4F5F              subi R20,255  ; offset = 1
 0486 5F4F              sbci R21,255
 0488                   .dbline 454
 0488           L78:
 0488                   .dbline 454
 0488           ;    }while(x1>x0);
 0488 4A15              cp R20,R10
 048A 5B05              cpc R21,R11
 048C 08F4              brsh X0
 048E AECF              xjmp L77
 0490           X0:
 0490                   .dbline 457
 0490           ;    
 0490           ;    /* 对最后一点显示操作 */
 0490           ;    if(0!=color) gui_disp_buf[y0][x0>>3] |= DCB_HEX_TAB[x0&0x07];
 0490 CC20              tst R12
 0492 01F1              breq L84
 0494                   .dbline 457
 0494 00E1              ldi R16,16
 0496 10E0              ldi R17,0
 0498 9B01              movw R18,R22
 049A 0E940000          xcall empy16s
 049E 1801              movw R2,R16
 04A0 80E0              ldi R24,<_gui_disp_buf
 04A2 90E0              ldi R25,>_gui_disp_buf
 04A4 280E              add R2,R24
 04A6 391E              adc R3,R25
 04A8 2A01              movw R4,R20
 04AA 5694              lsr R5
 04AC 4794              ror R4
 04AE 5694              lsr R5
 04B0 4794              ror R4
 04B2 5694              lsr R5
 04B4 4794              ror R4
 04B6 420C              add R4,R2
 04B8 531C              adc R5,R3
 04BA 80E0              ldi R24,<_DCB_HEX_TAB
 04BC 90E0              ldi R25,>_DCB_HEX_TAB
 04BE FA01              movw R30,R20
 04C0 E770              andi R30,7
 04C2 F070              andi R31,0
 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -