📄 lcd6610.s
字号:
; LCD_write(LCD_CMD_RAMWR,0);
clr R18
ldi R16,44
xcall _LCD_write
.dbline 272
; for (count=0;count<14;count++)
clr R20
clr R21
xjmp L34
L31:
.dbline 273
.dbline 274
ldi R18,1
clr R16
xcall _LCD_write
.dbline 275
L32:
.dbline 272
subi R20,255 ; offset = 1
sbci R21,255
L34:
.dbline 272
cpi R20,14
ldi R30,0
cpc R21,R30
brlo L31
.dbline 276
; {
; LCD_write(0,1);
; }
; for (count=0;count<val*14;count++)
clr R20
clr R21
xjmp L38
L35:
.dbline 277
.dbline 278
ldi R18,1
mov R16,R22
xcall _LCD_write
.dbline 279
L36:
.dbline 276
subi R20,255 ; offset = 1
sbci R21,255
L38:
.dbline 276
ldi R24,14
mul R24,R12
cp R20,R0
cpc R21,R1
brlo L35
.dbline 280
; {
; LCD_write(fillcol,1);
; }
; for (count=0;count<(len-val)*14;count++)
clr R20
clr R21
xjmp L42
L39:
.dbline 281
.dbline 282
ldi R18,1
mov R16,R10
xcall _LCD_write
.dbline 283
L40:
.dbline 280
subi R20,255 ; offset = 1
sbci R21,255
L42:
.dbline 280
mov R2,R14
sub R2,R12
ldi R24,14
mul R24,R2
cp R20,R0
cpc R21,R1
brlo L39
.dbline 284
; {
; LCD_write(bkgcol,1);
; }
; for (count=0;count<14;count++)
clr R20
clr R21
xjmp L46
L43:
.dbline 285
.dbline 286
ldi R18,1
clr R16
xcall _LCD_write
.dbline 287
L44:
.dbline 284
subi R20,255 ; offset = 1
sbci R21,255
L46:
.dbline 284
cpi R20,14
ldi R30,0
cpc R21,R30
brlo L43
.dbline 288
; {
; LCD_write(0,1);
; }
; LCD_write(LCD_CMD_MADCTL,0);
clr R18
ldi R16,54
xcall _LCD_write
.dbline 289
; LCD_write(MADCTL_HORIZ,1);
ldi R18,1
ldi R16,72
xcall _LCD_write
.dbline 290
; set_lcd_cs; //disable lcd
sbi 0x18,3
.dbline -2
.dbline 291
; }
L30:
adiw R28,3
xcall pop_gset5
.dbline 0 ; func end
ret
.dbsym r count 20 i
.dbsym r fillcol 22 c
.dbsym r bkgcol 10 c
.dbsym r val 12 c
.dbsym r len 14 c
.dbend
.dbfunc e lcd_ascii _lcd_ascii fV
; count -> R20,R21
; len -> R22
; s -> R10,R11
.even
_lcd_ascii::
xcall push_gset3
mov R22,R18
movw R10,R16
sbiw R28,3
.dbline -1
.dbline 294
; /**********显示一个8x8点ascii***********/
; void lcd_ascii(char *s,unsigned char len)
; {
.dbline 296
; unsigned int count;
; lcd_window(lcd_x,lcd_y,lcd_x+len*16-1,lcd_y+15);
lds R24,_lcd_y
subi R24,241 ; addi 15
std y+2,R24
ldi R24,16
mul R24,R22
lds R24,_lcd_x
add R24,R0
subi R24,1
std y+0,R24
lds R18,_lcd_y
lds R16,_lcd_x
xcall _lcd_window
.dbline 297
; LCD_write(LCD_CMD_RAMWR,0);
clr R18
ldi R16,44
xcall _LCD_write
.dbline 298
; for (count=0;count<len*32;count++)
clr R20
clr R21
xjmp L51
L48:
.dbline 299
; {
.dbline 300
; if (s[count]&0x1) LCD_write(lcd_text_color,1); //high 8 bit
movw R30,R20
add R30,R10
adc R31,R11
ldd R2,z+0
sbrs R2,0
rjmp L52
.dbline 300
ldi R18,1
lds R16,_lcd_text_color
xcall _LCD_write
xjmp L53
L52:
.dbline 301
; else LCD_write(lcd_bkg_color,1);
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
L53:
.dbline 302
; if (s[count]&0x2) LCD_write(lcd_text_color,1);
movw R30,R20
add R30,R10
adc R31,R11
ldd R2,z+0
sbrs R2,1
rjmp L54
.dbline 302
ldi R18,1
lds R16,_lcd_text_color
xcall _LCD_write
xjmp L55
L54:
.dbline 303
; else LCD_write(lcd_bkg_color,1);
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
L55:
.dbline 304
; if (s[count]&0x4) LCD_write(lcd_text_color,1);
movw R30,R20
add R30,R10
adc R31,R11
ldd R2,z+0
sbrs R2,2
rjmp L56
.dbline 304
ldi R18,1
lds R16,_lcd_text_color
xcall _LCD_write
xjmp L57
L56:
.dbline 305
; else LCD_write(lcd_bkg_color,1);
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
L57:
.dbline 306
; if (s[count]&0x8) LCD_write(lcd_text_color,1);
movw R30,R20
add R30,R10
adc R31,R11
ldd R2,z+0
sbrs R2,3
rjmp L58
.dbline 306
ldi R18,1
lds R16,_lcd_text_color
xcall _LCD_write
xjmp L59
L58:
.dbline 307
; else LCD_write(lcd_bkg_color,1);
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
L59:
.dbline 308
; if (s[count]&0x10) LCD_write(lcd_text_color,1);
movw R30,R20
add R30,R10
adc R31,R11
ldd R2,z+0
sbrs R2,4
rjmp L60
.dbline 308
ldi R18,1
lds R16,_lcd_text_color
xcall _LCD_write
xjmp L61
L60:
.dbline 309
; else LCD_write(lcd_bkg_color,1);
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
L61:
.dbline 310
; if (s[count]&0x20) LCD_write(lcd_text_color,1);
movw R30,R20
add R30,R10
adc R31,R11
ldd R2,z+0
sbrs R2,5
rjmp L62
.dbline 310
ldi R18,1
lds R16,_lcd_text_color
xcall _LCD_write
xjmp L63
L62:
.dbline 311
; else LCD_write(lcd_bkg_color,1);
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
L63:
.dbline 312
; if (s[count]&0x40) LCD_write(lcd_text_color,1);
movw R30,R20
add R30,R10
adc R31,R11
ldd R2,z+0
sbrs R2,6
rjmp L64
.dbline 312
ldi R18,1
lds R16,_lcd_text_color
xcall _LCD_write
xjmp L65
L64:
.dbline 313
; else LCD_write(lcd_bkg_color,1);
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
L65:
.dbline 314
; if (s[count]&0x80) LCD_write(lcd_text_color,1);
movw R30,R20
add R30,R10
adc R31,R11
ldd R2,z+0
sbrs R2,7
rjmp L66
.dbline 314
ldi R18,1
lds R16,_lcd_text_color
xcall _LCD_write
xjmp L67
L66:
.dbline 315
; else LCD_write(lcd_bkg_color,1);
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
L67:
.dbline 316
L49:
.dbline 298
subi R20,255 ; offset = 1
sbci R21,255
L51:
.dbline 298
ldi R24,32
mul R24,R22
cp R20,R0
cpc R21,R1
brsh X0
xjmp L48
X0:
.dbline -2
.dbline 317
; }
; }
L47:
adiw R28,3
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r count 20 i
.dbsym r len 22 c
.dbsym r s 10 pc
.dbend
.dbfunc e lcd_ascii_5_7 _lcd_ascii_5_7 fV
; count -> R20
; s -> R22,R23
; chr_ascii -> R20
.even
_lcd_ascii_5_7::
xcall push_gset2
mov R20,R16
sbiw R28,3
.dbline -1
.dbline 321
; /**********显示一个5x7点ascii***********/
; void lcd_ascii_5_7(unsigned char chr_ascii);
; void lcd_ascii_5_7(unsigned char chr_ascii)
; {
.dbline 324
; const unsigned char *s;
; unsigned char count;
; lcd_bkg_color=3;
ldi R24,3
sts _lcd_bkg_color,R24
.dbline 325
; lcd_text_color=247;
ldi R24,247
sts _lcd_text_color,R24
.dbline 326
; clr_lcd_cs; //enable lcd
cbi 0x18,3
.dbline 327
; s=Bmp_ascii+chr_ascii*5;
ldi R24,5
mul R24,R20
movw R22,R0
ldi R24,<_Bmp_ascii
ldi R25,>_Bmp_ascii
add R22,R24
adc R23,R25
.dbline 328
; lcd_window(lcd_x,lcd_y,lcd_x+6,lcd_y+7);
lds R24,_lcd_y
subi R24,249 ; addi 7
std y+2,R24
lds R24,_lcd_x
subi R24,250 ; addi 6
std y+0,R24
lds R18,_lcd_y
lds R16,_lcd_x
xcall _lcd_window
.dbline 329
; LCD_write(LCD_CMD_MADCTL,0);
clr R18
ldi R16,54
xcall _LCD_write
.dbline 330
; LCD_write(MADCTL_VERT,1);
ldi R18,1
ldi R16,104
xcall _LCD_write
.dbline 332
;
; LCD_write(LCD_CMD_RAMWR,0);
clr R18
ldi R16,44
xcall _LCD_write
.dbline 333
; for (count=0;count<5;count++)
clr R20
xjmp L72
L69:
.dbline 334
; {
.dbline 335
; if (*s&0x1) LCD_write(lcd_text_color,1); //high 8 bit
movw R30,R22
lpm R30,Z
sbrs R30,0
rjmp L73
.dbline 335
ldi R18,1
lds R16,_lcd_text_color
xcall _LCD_write
xjmp L74
L73:
.dbline 336
; else LCD_write(lcd_bkg_color,1);
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
L74:
.dbline 337
; if (*s&0x2) LCD_write(lcd_text_color,1);
movw R30,R22
lpm R30,Z
sbrs R30,1
rjmp L75
.dbline 337
ldi R18,1
lds R16,_lcd_text_color
xcall _LCD_write
xjmp L76
L75:
.dbline 338
; else LCD_write(lcd_bkg_color,1);
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
L76:
.dbline 339
; if (*s&0x4) LCD_write(lcd_text_color,1);
movw R30,R22
lpm R30,Z
sbrs R30,2
rjmp L77
.dbline 339
ldi R18,1
lds R16,_lcd_text_color
xcall _LCD_write
xjmp L78
L77:
.dbline 340
; else LCD_write(lcd_bkg_color,1);
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
L78:
.dbline 341
; if (*s&0x8) LCD_write(lcd_text_color,1);
movw R30,R22
lpm R30,Z
sbrs R30,3
rjmp L79
.dbline 341
ldi R18,1
lds R16,_lcd_text_color
xcall _LCD_write
xjmp L80
L79:
.dbline 342
; else LCD_write(lcd_bkg_color,1);
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
L80:
.dbline 343
; if (*s&0x10) LCD_write(lcd_text_color,1);
movw R30,R22
lpm R30,Z
sbrs R30,4
rjmp L81
.dbline 343
ldi R18,1
lds R16,_lcd_text_color
xcall _LCD_write
xjmp L82
L81:
.dbline 344
; else LCD_write(lcd_bkg_color,1);
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
L82:
.dbline 345
; if (*s&0x20) LCD_write(lcd_text_color,1);
movw R30,R22
lpm R30,Z
sbrs R30,5
rjmp L83
.dbline 345
ldi R18,1
lds R16,_lcd_text_color
xcall _LCD_write
xjmp L84
L83:
.dbline 346
; else LCD_write(lcd_bkg_color,1);
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
L84:
.dbline 347
; if (*s&0x40) LCD_write(lcd_text_color,1);
movw R30,R22
lpm R30,Z
sbrs R30,6
rjmp L85
.dbline 347
ldi R18,1
lds R16,_lcd_text_color
xcall _LCD_write
xjmp L86
L85:
.dbline 348
; else LCD_write(lcd_bkg_color,1);
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
L86:
.dbline 349
; if (*s&0x80) LCD_write(lcd_text_color,1);
movw R30,R22
lpm R30,Z
sbrs R30,7
rjmp L87
.dbline 349
ldi R18,1
lds R16,_lcd_text_color
xcall _LCD_write
xjmp L88
L87:
.dbline 350
; else LCD_write(lcd_bkg_color,1);
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
L88:
.dbline 352
subi R22,255 ; offset = 1
sbci R23,255
.dbline 353
L70:
.dbline 333
inc R20
L72:
.dbline 333
cpi R20,5
brsh X1
xjmp L69
X1:
.dbline 354
;
; s++;
; }
; LCD_write(lcd_bkg_color,1); //字体之间隔一竖行
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
.dbline 355
; LCD_write(lcd_bkg_color,1);
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
.dbline 356
; LCD_write(lcd_bkg_color,1);
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
.dbline 357
; LCD_write(lcd_bkg_color,1);
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
.dbline 358
; LCD_write(lcd_bkg_color,1);
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
.dbline 359
; LCD_write(lcd_bkg_color,1);
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
.dbline 360
; LCD_write(lcd_bkg_color,1);
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
.dbline 361
; LCD_write(lcd_bkg_color,1);
ldi R18,1
lds R16,_lcd_bkg_color
xcall _LCD_write
.dbline 363
;
; lcd_x=lcd_x+6; //自动换下一个位置
lds R24,_lcd_x
subi R24,250 ; addi 6
sts _lcd_x,R24
.dbline 364
; if (lcd_x>128)
ldi R24,128
lds R2,_lcd_x
cp R24,R2
brsh L89
.dbline 365
; {
.dbline 366
; lcd_x=0;
clr R2
sts _lcd_x,R2
.dbline 367
; lcd_y=lcd_y+8;
lds R24,_lcd_y
subi R24,248 ; addi 8
sts _lcd_y,R24
.dbline 368
; }
L89:
.dbline 369
; if (lcd_y>128) lcd_y=0;
ldi R24,128
lds R2,_lcd_y
cp R24,R2
brsh L91
.dbline 369
clr R2
sts _lcd_y,R2
L91:
.dbline 370
; set_lcd_cs; //disable lcd
sbi 0x18,3
.dbline -2
.dbline 371
; }
L68:
adiw R28,3
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r count 20 c
.dbsym r s 22 pkc
.dbsym r chr_ascii 20 c
.dbend
.area bss(ram, con, rel)
.dbfile G:\mega8\atmega16\mp3_7210\lcd6610.c
_lcd_y::
.blkb 1
.dbsym e lcd_y _lcd_y c
_lcd_x::
.blkb 1
.dbsym e lcd_x _lcd_x c
_lcd_text_color::
.blkb 1
.dbsym e lcd_text_color _lcd_text_color c
_lcd_bkg_color::
.blkb 1
.dbsym e lcd_bkg_color _lcd_bkg_color c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -