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

📄 lcd.lis

📁 ICCAVR编写128*64液晶程序测试已经通过
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 01DE           ; //------------液晶初始化函数-----------------------
 01DE           ; void LCD_Init(void) 
 01DE           ; {
 01DE                   .dbline 143
 01DE           ;    LCD_DIR_PORT = 0xff;
 01DE 8FEF              ldi R24,255
 01E0 8ABB              out 0x1a,R24
 01E2                   .dbline 144
 01E2           ;    LCD_OP_PORT = 0xff;
 01E2 8BBB              out 0x1b,R24
 01E4                   .dbline 145
 01E4           ;    LCD_EN_DDR    |=  LCD_EN_BIT;
 01E4 BA9A              sbi 0x17,2
 01E6                   .dbline 146
 01E6           ;    LCD_DI_DDR    |=  LCD_DI_BIT;
 01E6 B89A              sbi 0x17,0
 01E8                   .dbline 147
 01E8           ;    LCD_CS1_DDR   |=  LCD_CS1_BIT;
 01E8 BB9A              sbi 0x17,3
 01EA                   .dbline 148
 01EA           ;    LCD_CS2_DDR   |=  LCD_CS2_BIT;
 01EA BC9A              sbi 0x17,4
 01EC                   .dbline 149
 01EC           ;    LCD_RW_DDR    |=  LCD_RW_BIT;
 01EC B99A              sbi 0x17,1
 01EE                   .dbline 150
 01EE           ;    LCD_RW_PORT   &= ~LCD_RW_BIT;
 01EE C198              cbi 0x18,1
 01F0                   .dbline 151
 01F0           ;    LCD_reset();
 01F0 26DF              xcall _LCD_reset
 01F2                   .dbline 152
 01F2           ;    set_start_line_L(0);             /*显示起始行为0*/
 01F2 0027              clr R16
 01F4 9FDF              xcall _set_start_line_L
 01F6                   .dbline 153
 01F6           ;    set_start_line_R(0);             /*显示起始行为0*/
 01F6 0027              clr R16
 01F8 ABDF              xcall _set_start_line_R
 01FA                   .dbline 154
 01FA           ;    write_LCD(LEFT,CMD,DISPLAY_ON);  /*  开显示  */
 01FA 8FE3              ldi R24,63
 01FC 8883              std y+0,R24
 01FE 2227              clr R18
 0200 0027              clr R16
 0202 4FDF              xcall _write_LCD
 0204                   .dbline 155
 0204           ;    write_LCD(RIGHT,CMD,DISPLAY_ON); /*  开显示  */
 0204 8FE3              ldi R24,63
 0206 8883              std y+0,R24
 0208 2227              clr R18
 020A 01E0              ldi R16,1
 020C 4ADF              xcall _write_LCD
 020E                   .dbline -2
 020E           L29:
 020E 2196              adiw R28,1
 0210                   .dbline 0 ; func end
 0210 0895              ret
 0212                   .dbend
 0212                   .dbfunc e LCD_clr _LCD_clr fV
 0212           ;          pages -> R20
 0212           ;              i -> R22
                        .even
 0212           _LCD_clr::
 0212 0E940000          xcall push_gset2
 0216 2197              sbiw R28,1
 0218                   .dbline -1
 0218                   .dbline 161
 0218           ; }
 0218           ; 
 0218           ; 
 0218           ; //-----------清屏函数---------------------------
 0218           ; void LCD_clr(void)                 
 0218           ; {
 0218                   .dbline 163
 0218           ;    unsigned char pages,i;
 0218           ;    for(pages=0;pages<8;pages++)
 0218 4427              clr R20
 021A 18C0              xjmp L34
 021C           L31:
 021C                   .dbline 164
 021C           ;    {
 021C                   .dbline 165
 021C           ;       set_page_L(pages);            /* X 页地址 */
 021C 042F              mov R16,R20
 021E A6DF              xcall _set_page_L
 0220                   .dbline 166
 0220           ;       set_page_R(pages);            /* X 页地址 */
 0220 042F              mov R16,R20
 0222 B2DF              xcall _set_page_R
 0224                   .dbline 167
 0224           ;       for(i=0;i<64;i++)
 0224 6627              clr R22
 0226 0FC0              xjmp L38
 0228           L35:
 0228                   .dbline 168
 0228                   .dbline 169
 0228 062F              mov R16,R22
 022A BCDF              xcall _set_col_addr_L
 022C                   .dbline 170
 022C 062F              mov R16,R22
 022E C8DF              xcall _set_col_addr_R
 0230                   .dbline 171
 0230 2224              clr R2
 0232 2882              std y+0,R2
 0234 21E0              ldi R18,1
 0236 0027              clr R16
 0238 34DF              xcall _write_LCD
 023A                   .dbline 172
 023A 2224              clr R2
 023C 2882              std y+0,R2
 023E 21E0              ldi R18,1
 0240 01E0              ldi R16,1
 0242 2FDF              xcall _write_LCD
 0244                   .dbline 173
 0244           L36:
 0244                   .dbline 167
 0244 6395              inc R22
 0246           L38:
 0246                   .dbline 167
 0246 6034              cpi R22,64
 0248 78F3              brlo L35
 024A                   .dbline 174
 024A           L32:
 024A                   .dbline 163
 024A 4395              inc R20
 024C           L34:
 024C                   .dbline 163
 024C 4830              cpi R20,8
 024E 30F3              brlo L31
 0250                   .dbline -2
 0250           L30:
 0250 2196              adiw R28,1
 0252 0E940000          xcall pop_gset2
 0256                   .dbline 0 ; func end
 0256 0895              ret
 0258                   .dbsym r pages 20 c
 0258                   .dbsym r i 22 c
 0258                   .dbend
 0258                   .dbfunc e GetPage _GetPage fc
                        .even
 0258           _GetPage::
 0258                   .dbline -1
 0258                   .dbline 180
 0258           ;       {
 0258           ;          set_col_addr_L(i);//Y
 0258           ;          set_col_addr_R(i);//Y
 0258           ;          write_LCD(LEFT,DATA,0x0);
 0258           ;          write_LCD(RIGHT,DATA,0x0);
 0258           ;       }
 0258           ;    }
 0258           ; }
 0258           ; 
 0258           ; 
 0258           ; //---------当前行列获得函数-----------------------
 0258           ; unsigned char GetPage(void) /*得到当前页*/
 0258           ; {
 0258                   .dbline 181
 0258           ;    return CurPage;
 0258 00910100          lds R16,_CurPage
 025C                   .dbline -2
 025C           L39:
 025C                   .dbline 0 ; func end
 025C 0895              ret
 025E                   .dbend
 025E                   .dbfunc e GetCol _GetCol fc
                        .even
 025E           _GetCol::
 025E                   .dbline -1
 025E                   .dbline 185
 025E           ; }
 025E           ; 
 025E           ; unsigned char GetCol(void) /*得到当前列*/
 025E           ; {
 025E                   .dbline 186
 025E           ;    return CurCol;
 025E 00910000          lds R16,_CurCol
 0262                   .dbline -2
 0262           L40:
 0262                   .dbline 0 ; func end
 0262 0895              ret
 0264                   .dbend
 0264                   .dbfunc e SetPageCol _SetPageCol fV
 0264           ;           ucol -> R20
 0264           ;          upage -> R22
                        .even
 0264           _SetPageCol::
 0264 0E940000          xcall push_gset2
 0268 422F              mov R20,R18
 026A 602F              mov R22,R16
 026C                   .dbline -1
 026C                   .dbline 191
 026C           ; }
 026C           ; 
 026C           ; //-----------------页置函数-----------------
 026C           ; void SetPageCol(unsigned char upage, unsigned char ucol) 
 026C           ; {
 026C                   .dbline 192
 026C           ;    CurPage = upage;
 026C 60930100          sts _CurPage,R22
 0270                   .dbline 193
 0270           ;    CurCol = ucol;
 0270 40930000          sts _CurCol,R20
 0274                   .dbline 194
 0274           ;    if(ucol<64)
 0274 4034              cpi R20,64
 0276 28F4              brsh L42
 0278                   .dbline 195
 0278           ;    {
 0278                   .dbline 196
 0278           ;       set_page_L(upage);
 0278 062F              mov R16,R22
 027A 78DF              xcall _set_page_L
 027C                   .dbline 197
 027C           ;       set_col_addr_L(ucol);
 027C 042F              mov R16,R20
 027E 92DF              xcall _set_col_addr_L
 0280                   .dbline 198
 0280           ;    }
 0280 05C0              xjmp L43
 0282           L42:
 0282                   .dbline 200
 0282                   .dbline 201
 0282 062F              mov R16,R22
 0284 81DF              xcall _set_page_R
 0286                   .dbline 202
 0286 042F              mov R16,R20
 0288 0054              subi R16,64
 028A 9ADF              xcall _set_col_addr_R
 028C                   .dbline 203
 028C           L43:
 028C                   .dbline -2
 028C           L41:
 028C 0E940000          xcall pop_gset2
 0290                   .dbline 0 ; func end
 0290 0895              ret
 0292                   .dbsym r ucol 20 c
 0292                   .dbsym r upage 22 c
 0292                   .dbend
 0292                   .dbfunc e SetRowCol _SetRowCol fV
 0292           ;           page -> R20
 0292           ;           ucol -> R22
 0292           ;           urow -> R20
                        .even
 0292           _SetRowCol::
 0292 0E940000          xcall push_gset2
 0296 622F              mov R22,R18
 0298 402F              mov R20,R16
 029A                   .dbline -1
 029A                   .dbline 208
 029A           ;    else
 029A           ;    {
 029A           ;       set_page_R(upage);
 029A           ;       set_col_addr_R(ucol-64);
 029A           ;    }
 029A           ; }
 029A           ; 
 029A           ; //---------------行列设置函数---------------------------
 029A           ; void SetRowCol(unsigned char urow, unsigned char ucol) 
 029A           ; {
 029A                   .dbline 210
 029A           ;    unsigned char page;
 029A           ;    CurRow = urow;
 029A 40930200          sts _CurRow,R20
 029E                   .dbline 211
 029E           ;    CurCol = ucol;
 029E 60930000          sts _CurCol,R22
 02A2                   .dbline 213
 02A2           ;       
 02A2           ;    switch(urow)
 02A2 5527              clr R21
 02A4 4130              cpi R20,1
 02A6 E0E0              ldi R30,0
 02A8 5E07              cpc R21,R30
 02AA 89F0              breq L48
 02AC 4230              cpi R20,2
 02AE E0E0              ldi R30,0
 02B0 5E07              cpc R21,R30
 02B2 91F0              breq L49
 02B4 4330              cpi R20,3
 02B6 E0E0              ldi R30,0
 02B8 5E07              cpc R21,R30
 02BA 99F0              breq L50
 02BC 4430              cpi R20,4
 02BE E0E0              ldi R30,0
 02C0 5E07              cpc R21,R30
 02C2 A1F0              breq L51
 02C4 4530              cpi R20,5
 02C6 E0E0              ldi R30,0
 02C8 5E07              cpc R21,R30
 02CA A9F0              breq L52
 02CC 18C0              xjmp L45
 02CE           X0:
 02CE                   .dbline 214
 02CE           ;    {
 02CE           L48:
 02CE                   .dbline 216
 02CE           ;       case 1:
 02CE           ;              page=0;
 02CE 4427              clr R20
 02D0                   .dbline 217
 02D0           ;              CurOffset=1;
 02D0 81E0              ldi R24,1
 02D2 80930300          sts _CurOffset,R24
 02D6                   .dbline 218
 02D6           ;              break;
 02D6 13C0              xjmp L46
 02D8           L49:
 02D8                   .dbline 220
 02D8           ;       case 2:
 02D8           ;              page=1;
 02D8 41E0              ldi R20,1
 02DA                   .dbline 221
 02DA           ;              CurOffset=2;
 02DA 82E0              ldi R24,2
 02DC 80930300          sts _CurOffset,R24
 02E0                   .dbline 222
 02E0           ;              break;
 02E0 0EC0              xjmp L46
 02E2           L50:
 02E2                   .dbline 224
 02E2           ;       case 3:
 02E2           ;              page=3;
 02E2 43E0              ldi R20,3
 02E4                   .dbline 225
 02E4           ;              CurOffset=1;
 02E4 81E0              ldi R24,1
 02E6 80930300          sts _CurOffset,R24
 02EA                   .dbline 226
 02EA           ;              break;
 02EA 09C0              xjmp L46
 02EC           L51:
 02EC                   .dbline 228
 02EC           ;       case 4:
 02EC           ;              page=4;
 02EC 44E0              ldi R20,4
 02EE                   .dbline 229
 02EE           ;              CurOffset=2;
 02EE 82E0              ldi R24,2
 02F0 80930300          sts _CurOffset,R24
 02F4                   .dbline 230
 02F4           ;              break;
 02F4 04C0              xjmp L46
 02F6           L52:
 02F6                   .dbline 232
 02F6           ;       case 5:
 02F6           ;              page=6;
 02F6 46E0              ldi R20,6
 02F8                   .dbline 233
 02F8           ;              CurOffset=1;
 02F8 81E0              ldi R24,1
 02FA 80930300          sts _CurOffset,R24
 02FE                   .dbline 234
 02FE           ;              break;

⌨️ 快捷键说明

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