📄 lcd.lis
字号:
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 + -