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

📄 lcddrive.lis

📁 ssd1325控制器液晶的驱动程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 023C 11C0              xjmp L55
 023E           L52:
 023E                   .dbline 336
 023E                   .dbline 336
 023E 00E1              ldi R16,16
 0240 10E0              ldi R17,0
 0242 9A01              movw R18,R20
 0244 0E940000          xcall empy16s
 0248 1801              movw R2,R16
 024A 80E0              ldi R24,<_gui_disp_buf
 024C 90E0              ldi R25,>_gui_disp_buf
 024E 280E              add R2,R24
 0250 391E              adc R3,R25
 0252 F501              movw R30,R10
 0254 E20D              add R30,R2
 0256 F31D              adc R31,R3
 0258 6083              std z+0,R22
 025A                   .dbline 337
 025A           L53:
 025A                   .dbline 335
 025A C501              movw R24,R10
 025C 0196              adiw R24,1
 025E 5C01              movw R10,R24
 0260           L55:
 0260                   .dbline 335
 0260 C501              movw R24,R10
 0262 8031              cpi R24,16
 0264 E0E0              ldi R30,0
 0266 9E07              cpc R25,R30
 0268 50F3              brlo L52
 026A                   .dbline 338
 026A           L49:
 026A                   .dbline 334
 026A 4F5F              subi R20,255  ; offset = 1
 026C 5F4F              sbci R21,255
 026E           L51:
 026E                   .dbline 334
 026E 4034              cpi R20,64
 0270 E0E0              ldi R30,0
 0272 5E07              cpc R21,R30
 0274 08F3              brlo L48
 0276                   .dbline 341
 0276           ;       {  gui_disp_buf[i][j] = dat;            // 填充数据
 0276           ;         }
 0276           ;    }
 0276           ;    
 0276           ;    /* 填充LCM */
 0276           ;    LCD_FillAll(dat);
 0276 062F              mov R16,R22
 0278 82DF              xcall _LCD_FillAll
 027A                   .dbline -2
 027A           L47:
 027A 0E940000          xcall pop_gset3
 027E                   .dbline 0 ; func end
 027E 0895              ret
 0280                   .dbsym r i 20 i
 0280                   .dbsym r j 10 i
 0280                   .dbsym r dat 22 c
 0280                   .dbend
 0280                   .dbfunc e GUI_Initialize _GUI_Initialize fV
                        .even
 0280           _GUI_Initialize::
 0280                   .dbline -1
 0280                   .dbline 352
 0280           ; }
 0280           ; 
 0280           ; 
 0280           ; /****************************************************************************
 0280           ; * 名称:GUI_Initialize()
 0280           ; * 功能:初始化GUI,包括初始化显示缓冲区,初始化LCM并清屏。
 0280           ; * 入口参数:无
 0280           ; * 出口参数:无
 0280           ; ****************************************************************************/
 0280           ; void  GUI_Initialize(void)
 0280           ; {  LCD_Initialize();                                  // 初始化LCM模块工作模式,纯图形模式
 0280                   .dbline 352
 0280 63DF              xcall _LCD_Initialize
 0282                   .dbline 353
 0282           ;    GUI_FillSCR(0x00);                                 // 初始化缓冲区为0x00,并输出屏幕(清屏)
 0282 0027              clr R16
 0284 D3DF              xcall _GUI_FillSCR
 0286                   .dbline -2
 0286           L56:
 0286                   .dbline 0 ; func end
 0286 0895              ret
 0288                   .dbend
 0288                   .dbfunc e GUI_ClearSCR _GUI_ClearSCR fV
                        .even
 0288           _GUI_ClearSCR::
 0288                   .dbline -1
 0288                   .dbline 365
 0288           ; } 
 0288           ; 
 0288           ; 
 0288           ; /****************************************************************************
 0288           ; * 名称:GUI_ClearSCR()
 0288           ; * 功能:清屏。
 0288           ; * 入口参数:无
 0288           ; * 出口参数:无
 0288           ; * 说明:用户根据LCM的实际情况编写此函数。
 0288           ; ****************************************************************************/
 0288           ; void  GUI_ClearSCR(void)
 0288           ; {  GUI_FillSCR(0x00);
 0288                   .dbline 365
 0288 0027              clr R16
 028A D0DF              xcall _GUI_FillSCR
 028C                   .dbline -2
 028C           L57:
 028C                   .dbline 0 ; func end
 028C 0895              ret
 028E                   .dbend
                        .area lit(rom, con, rel)
 0000           _DCB_HEX_TAB::
 0000 8040              .byte 128,64
 0002 2010              .byte 32,16
 0004 0804              .byte 8,4
 0006 0201              .byte 2,1
 0008                   .dbsym e DCB_HEX_TAB _DCB_HEX_TAB A[8:8]kc
                        .area text(rom, con, rel)
 028E                   .dbfile G:\IccPro\mega128_lcd\lcddrive.c
 028E                   .dbfunc e GUI_Point _GUI_Point fc
 028E           ;          color -> y+4
 028E           ;              y -> R22,R23
 028E           ;              x -> R20,R21
                        .even
 028E           _GUI_Point::
 028E 0E940000          xcall push_gset2
 0292 B901              movw R22,R18
 0294 A801              movw R20,R16
 0296                   .dbline -1
 0296                   .dbline 384
 0296           ; }
 0296           ; 
 0296           ; 
 0296           ; uint8 const  DCB_HEX_TAB[8] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01};
 0296           ; 
 0296           ; /****************************************************************************
 0296           ; * 名称:GUI_Point()
 0296           ; * 功能:在指定位置上画点。
 0296           ; * 入口参数: x                指定点所在列的位置
 0296           ; *           y         指定点所在行的位置
 0296           ; *           color     显示颜色(对于黑白色LCM,为0时灭,为1时显示)
 0296           ; * 出口参数:返回值为1时表示操作成功,为0时表示操作失败。(操作失败原因是指定地址超出有
 0296           ; *          效范围)
 0296           ; * 说明:用户根据LCM的实际情况编写此函数。对于单色,只有一个位有效,则要使用左移的方法
 0296           ; *      实现point_dat = (point_dat&MASK_TAB [i]) | (color<<n),其它位数的一样
 0296           ; *      处理。
 0296           ; ****************************************************************************/
 0296           ; uint8  GUI_Point(uint32 x, uint32 y, TCOLOR color)
 0296           ; {  /* 参数过滤 */
 0296                   .dbline 385
 0296           ;    if(x>=GUI_LCM_XMAX) return(0);
 0296 4038              cpi R20,128
 0298 E0E0              ldi R30,0
 029A 5E07              cpc R21,R30
 029C 10F0              brlo L59
 029E                   .dbline 385
 029E 0027              clr R16
 02A0 4DC0              xjmp L58
 02A2           L59:
 02A2                   .dbline 386
 02A2           ;    if(y>=GUI_LCM_YMAX) return(0);
 02A2 6034              cpi R22,64
 02A4 E0E0              ldi R30,0
 02A6 7E07              cpc R23,R30
 02A8 10F0              brlo L61
 02AA                   .dbline 386
 02AA 0027              clr R16
 02AC 47C0              xjmp L58
 02AE           L61:
 02AE                   .dbline 389
 02AE           ;    
 02AE           ;    /* 设置缓冲区相应的点 */
 02AE           ;    if( (color&0x01) != 0 ) gui_disp_buf[y][x>>3] |= DCB_HEX_TAB[x&0x07];
 02AE 0C80              ldd R0,y+4
 02B0 00FE              sbrs R0,0
 02B2 20C0              rjmp L63
 02B4                   .dbline 389
 02B4 00E1              ldi R16,16
 02B6 10E0              ldi R17,0
 02B8 9B01              movw R18,R22
 02BA 0E940000          xcall empy16s
 02BE 1801              movw R2,R16
 02C0 80E0              ldi R24,<_gui_disp_buf
 02C2 90E0              ldi R25,>_gui_disp_buf
 02C4 280E              add R2,R24
 02C6 391E              adc R3,R25
 02C8 2A01              movw R4,R20
 02CA 5694              lsr R5
 02CC 4794              ror R4
 02CE 5694              lsr R5
 02D0 4794              ror R4
 02D2 5694              lsr R5
 02D4 4794              ror R4
 02D6 420C              add R4,R2
 02D8 531C              adc R5,R3
 02DA 80E0              ldi R24,<_DCB_HEX_TAB
 02DC 90E0              ldi R25,>_DCB_HEX_TAB
 02DE FA01              movw R30,R20
 02E0 E770              andi R30,7
 02E2 F070              andi R31,0
 02E4 E80F              add R30,R24
 02E6 F91F              adc R31,R25
 02E8 E491              lpm R30,Z
 02EA D201              movw R26,R4
 02EC 2C90              ld R2,x
 02EE 2E2A              or R2,R30
 02F0 2C92              st x,R2
 02F2 20C0              xjmp L64
 02F4           L63:
 02F4                   .dbline 390
 02F4           ;       else  gui_disp_buf[y][x>>3] &= (~DCB_HEX_TAB[x&0x07]);
 02F4 00E1              ldi R16,16
 02F6 10E0              ldi R17,0
 02F8 9B01              movw R18,R22
 02FA 0E940000          xcall empy16s
 02FE 1801              movw R2,R16
 0300 80E0              ldi R24,<_gui_disp_buf
 0302 90E0              ldi R25,>_gui_disp_buf
 0304 280E              add R2,R24
 0306 391E              adc R3,R25
 0308 2A01              movw R4,R20
 030A 5694              lsr R5
 030C 4794              ror R4
 030E 5694              lsr R5
 0310 4794              ror R4
 0312 5694              lsr R5
 0314 4794              ror R4
 0316 420C              add R4,R2
 0318 531C              adc R5,R3
 031A 80E0              ldi R24,<_DCB_HEX_TAB
 031C 90E0              ldi R25,>_DCB_HEX_TAB
 031E FA01              movw R30,R20
 0320 E770              andi R30,7
 0322 F070              andi R31,0
 0324 E80F              add R30,R24
 0326 F91F              adc R31,R25
 0328 E491              lpm R30,Z
 032A E095              com R30
 032C D201              movw R26,R4
 032E 2C90              ld R2,x
 0330 2E22              and R2,R30
 0332 2C92              st x,R2
 0334           L64:
 0334                   .dbline 393
 0334           ; 
 0334           ;    /* 刷新显示 */
 0334           ;    LCD_UpdatePoint(x, y);
 0334 9B01              movw R18,R22
 0336 8A01              movw R16,R20
 0338 43DF              xcall _LCD_UpdatePoint
 033A                   .dbline 394
 033A           ;    return(1);
 033A 01E0              ldi R16,1
 033C                   .dbline -2
 033C           L58:
 033C 0E940000          xcall pop_gset2
 0340                   .dbline 0 ; func end
 0340 0895              ret
 0342                   .dbsym l color 4 c
 0342                   .dbsym r y 22 i
 0342                   .dbsym r x 20 i
 0342                   .dbend
 0342                   .dbfunc e GUI_ReadPoint _GUI_ReadPoint fI
 0342           ;            bak -> R20
 0342           ;            ret -> y+4
 0342           ;              y -> R20,R21
 0342           ;              x -> R22,R23
                        .even
 0342           _GUI_ReadPoint::
 0342 0E940000          xcall push_gset2
 0346 A901              movw R20,R18
 0348 B801              movw R22,R16
 034A                   .dbline -1
 034A                   .dbline 408
 034A           ; }
 034A           ; 
 034A           ; /****************************************************************************
 034A           ; * 名称:GUI_ReadPoint()
 034A           ; * 功能:读取指定点的颜色。
 034A           ; * 入口参数:x                 指定点所在列的位置
 034A           ; *          y          指定点所在行的位置
 034A           ; *          ret                保存颜色值的指针
 034A           ; * 出口参数:返回0时表示指定地址超出有效范围。
 034A           ; * 说明:对于单色,设置ret的d0位为1或0,4级灰度则为d0、d1有效,8位RGB则d0--d7有效,
 034A           ; *      RGB结构则R、G、B变量有效。
 034A           ; ****************************************************************************/
 034A           ; int  GUI_ReadPoint(uint32 x, uint32 y, TCOLOR *ret)
 034A           ; {  TCOLOR  bak;
 034A                   .dbline 411
 034A           ; 

⌨️ 快捷键说明

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