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

📄 loadbit.lis

📁 ssd1325控制器液晶的驱动程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module loadbit.c
                        .area text(rom, con, rel)
 0000                   .dbfile G:\IccPro\mega128_lcd\ZLG_GUI\loadbit.c
 0000                   .dbfunc e GUI_LoadLine _GUI_LoadLine fc
 0000           ;        bit_dat -> R20
 0000           ;           bakc -> y+1
 0000           ;              i -> R22
 0000           ;             no -> R10,R11
 0000           ;            dat -> R12,R13
 0000           ;              y -> R14,R15
 0000           ;              x -> R4,R5
                        .even
 0000           _GUI_LoadLine::
 0000 0E940000          xcall push_gset5
 0004 7901              movw R14,R18
 0006 2801              movw R4,R16
 0008 2297              sbiw R28,2
 000A CC84              ldd R12,y+12
 000C DD84              ldd R13,y+13
 000E AE84              ldd R10,y+14
 0010 BF84              ldd R11,y+15
 0012                   .dbline -1
 0012                   .dbline 22
 0012           ; /****************************************************************************************
 0012           ; * 文件名:LOADBIT.C
 0012           ; * 功能:显示单色图形及汉字显示。先将图形转换为对应的点阵数组,然后即可调用此文件的函数输出驱动。
 0012           ; * 作者:黄绍斌
 0012           ; * 日期:2004.02.26
 0012           ; * 备注:使用GUI_SetBackColor()函数设置显示颜色及背景色。
 0012           ; ****************************************************************************************/
 0012           ; #include  "config.h"
 0012           ; 
 0012           ; #if  (GUI_LoadPic_EN==1)|(GUI_MenuIco_EN==1)|(GUI_PutHZ_EN==1)
 0012           ; /****************************************************************************
 0012           ; * 名称:GUI_LoadLine()
 0012           ; * 功能:输出单色图形的一行数据。
 0012           ; * 入口参数: x                指定显示位置,x坐标
 0012           ; *           y         指定显示位置,y坐标
 0012           ; *           dat               要输出显示的数据。
 0012           ; *           no      要显示此行的点个数
 0012           ; * 出口参数:返回值为1时表示操作成功,为0时表示操作失败。
 0012           ; * 说明:操作失败原因是指定地址超出有效范围。
 0012           ; ****************************************************************************/
 0012           ; uint8  GUI_LoadLine(uint32 x, uint32 y, uint8 *dat, uint32 no)
 0012           ; {  uint8   bit_dat;
 0012                   .dbline 27
 0012           ;    uint8   i;
 0012           ;    TCOLOR  bakc;
 0012           ; 
 0012           ;    /* 参数过滤 */
 0012           ;    if(x>=GUI_LCM_XMAX) return(0);
 0012 C201              movw R24,R4
 0014 803F              cpi R24,240
 0016 E0E0              ldi R30,0
 0018 9E07              cpc R25,R30
 001A 10F0              brlo L8
 001C                   .dbline 27
 001C 0027              clr R16
 001E 40C0              xjmp L7
 0020           L8:
 0020                   .dbline 28
 0020           ;    if(y>=GUI_LCM_YMAX) return(0);
 0020 C701              movw R24,R14
 0022 8038              cpi R24,128
 0024 E0E0              ldi R30,0
 0026 9E07              cpc R25,R30
 0028 10F0              brlo L10
 002A                   .dbline 28
 002A 0027              clr R16
 002C 39C0              xjmp L7
 002E           L10:
 002E                   .dbline 30
 002E           ;    
 002E           ;    for(i=0; i<no; i++)
 002E 6627              clr R22
 0030 30C0              xjmp L15
 0032           L12:
 0032                   .dbline 31
 0032           ;    {  /* 判断是否要读取点阵数据 */
 0032                   .dbline 32
 0032           ;       if( (i%8)==0 ) bit_dat = *dat++;
 0032 18E0              ldi R17,8
 0034 062F              mov R16,R22
 0036 0E940000          xcall mod8u
 003A 0023              tst R16
 003C 19F4              brne L16
 003E                   .dbline 32
 003E F601              movw R30,R12
 0040 4191              ld R20,Z+
 0042 6F01              movw R12,R30
 0044           L16:
 0044                   .dbline 35
 0044           ;      
 0044           ;       /* 设置相应的点为color或为back_color */
 0044           ;       if( (bit_dat&DCB2HEX_TAB[i&0x07])==0 ) GUI_CopyColor(&bakc, back_color); 
 0044 80E0              ldi R24,<_DCB2HEX_TAB
 0046 90E0              ldi R25,>_DCB2HEX_TAB
 0048 E62F              mov R30,R22
 004A FF27              clr R31
 004C E770              andi R30,7
 004E F070              andi R31,0
 0050 E80F              add R30,R24
 0052 F91F              adc R31,R25
 0054 E491              lpm R30,Z
 0056 242E              mov R2,R20
 0058 2E22              and R2,R30
 005A 21F4              brne L18
 005C                   .dbline 35
 005C 20900000          lds R2,_back_color
 0060 2982              std y+1,R2
 0062 03C0              xjmp L19
 0064           L18:
 0064                   .dbline 36
 0064           ;          else  GUI_CopyColor(&bakc, disp_color);
 0064 20900000          lds R2,_disp_color
 0068 2982              std y+1,R2
 006A           L19:
 006A                   .dbline 37
 006A           ;       GUI_Point(x, y, bakc);       
 006A 2980              ldd R2,y+1
 006C 2882              std y+0,R2
 006E 9701              movw R18,R14
 0070 8201              movw R16,R4
 0072 0F93              push R16
 0074 1F93              push R17
 0076 0E940000          xcall _GUI_Point
 007A 5F90              pop R5
 007C 4F90              pop R4
 007E                   .dbline 39
 007E           ;      
 007E           ;       if( (++x)>=GUI_LCM_XMAX ) return(0);
 007E C201              movw R24,R4
 0080 0196              adiw R24,1
 0082 2C01              movw R4,R24
 0084 803F              cpi R24,240
 0086 E0E0              ldi R30,0
 0088 9E07              cpc R25,R30
 008A 10F0              brlo L20
 008C                   .dbline 39
 008C 0027              clr R16
 008E 08C0              xjmp L7
 0090           L20:
 0090                   .dbline 40
 0090           L13:
 0090                   .dbline 30
 0090 6395              inc R22
 0092           L15:
 0092                   .dbline 30
 0092 262E              mov R2,R22
 0094 3324              clr R3
 0096 2A14              cp R2,R10
 0098 3B04              cpc R3,R11
 009A 08F4              brsh X0
 009C CACF              xjmp L12
 009E           X0:
 009E                   .dbline 42
 009E           ;    }
 009E           ;    
 009E           ;    return(1);
 009E 01E0              ldi R16,1
 00A0                   .dbline -2
 00A0           L7:
 00A0 2296              adiw R28,2
 00A2 0E940000          xcall pop_gset5
 00A6                   .dbline 0 ; func end
 00A6 0895              ret
 00A8                   .dbsym r bit_dat 20 c
 00A8                   .dbsym l bakc 1 c
 00A8                   .dbsym r i 22 c
 00A8                   .dbsym r no 10 i
 00A8                   .dbsym r dat 12 pc
 00A8                   .dbsym r y 14 i
 00A8                   .dbsym r x 4 i
 00A8                   .dbend
 00A8                   .dbfunc e GUI_LoadPic _GUI_LoadPic fV
 00A8           ;              i -> R20,R21
 00A8           ;            lno -> R22,R23
 00A8           ;            hno -> R10,R11
 00A8           ;            dat -> R12,R13
 00A8           ;              y -> R14,R15
 00A8           ;              x -> y+14
                        .even
 00A8           _GUI_LoadPic::
 00A8 0E940000          xcall push_arg4
 00AC 0E940000          xcall push_gset5
 00B0 7901              movw R14,R18
 00B2 2497              sbiw R28,4
 00B4 CA88              ldd R12,y+18
 00B6 DB88              ldd R13,y+19
 00B8 AC88              ldd R10,y+20
 00BA BD88              ldd R11,y+21
 00BC 6E89              ldd R22,y+22
 00BE 7F89              ldd R23,y+23
 00C0                   .dbline -1
 00C0                   .dbline 60
 00C0           ; }
 00C0           ; #endif
 00C0           ; 
 00C0           ; 
 00C0           ; #if  (GUI_LoadPic_EN==1)|(GUI_MenuIco_EN==1)
 00C0           ; /****************************************************************************
 00C0           ; * 名称:GUI_LoadPic()
 00C0           ; * 功能:输出单色图形数据。
 00C0           ; * 入口参数: x                指定显示位置,x坐标
 00C0           ; *           y         指定显示位置,y坐标
 00C0           ; *           dat               要输出显示的数据
 00C0           ; *           hno     要显示此行的点个数
 00C0           ; *           lno     要显示此列的点个数
 00C0           ; * 出口参数:无
 00C0           ; * 说明:操作失败原因是指定地址超出有效范围。
 00C0           ; ****************************************************************************/
 00C0           ; void  GUI_LoadPic(uint32 x, uint32 y, uint8 *dat, uint32 hno, uint32 lno)
 00C0           ; {  uint32  i;
 00C0                   .dbline 62
 00C0           ; 
 00C0           ;    for(i=0; i<lno; i++)
 00C0 4427              clr R20
 00C2 5527              clr R21
 00C4 1FC0              xjmp L26
 00C6           L23:
 00C6                   .dbline 63
 00C6           ;    {  GUI_LoadLine(x, y, dat, hno);                           // 输出一行数据
 00C6                   .dbline 63
 00C6 BB82              std y+3,R11
 00C8 AA82              std y+2,R10
 00CA D982              std y+1,R13
 00CC C882              std y+0,R12
 00CE 9701              movw R18,R14
 00D0 0E85              ldd R16,y+14
 00D2 1F85              ldd R17,y+15
 00D4 95DF              xcall _GUI_LoadLine
 00D6                   .dbline 64
 00D6           ;       y++;                                                                            // 显示下一行
 00D6 C701              movw R24,R14
 00D8 0196              adiw R24,1
 00DA 7C01              movw R14,R24
 00DC                   .dbline 65
 00DC           ;       dat += (hno>>3);                                                        // 计算下一行的数据
 00DC 1501              movw R2,R10
 00DE 3694              lsr R3
 00E0 2794              ror R2
 00E2 3694              lsr R3
 00E4 2794              ror R2
 00E6 3694              lsr R3
 00E8 2794              ror R2
 00EA C20C              add R12,R2
 00EC D31C              adc R13,R3
 00EE                   .dbline 66
 00EE           ;       if( (hno&0x07)!=0 ) dat++;
 00EE C501              movw R24,R10
 00F0 8770              andi R24,7
 00F2 9070              andi R25,0
 00F4 8030              cpi R24,0
 00F6 8907              cpc R24,R25
 00F8 19F0              breq L27
 00FA           X1:

⌨️ 快捷键说明

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