📄 lcd12864.s
字号:
; /******************************************************************************/
; void lcd_clear_range(uchar range)
; {
.dbline 191
ldi R20,8
xjmp L46
L43:
.dbline 191
.dbline 192
mov R16,R22
subi R16,72 ; addi 184
xcall _wcodeL
mov R16,R20
subi R16,192 ; addi 64
xcall _wcodeL
.dbline 193
clr R16
xcall _wdataL
.dbline 194
L44:
.dbline 191
inc R20
L46:
.dbline 191
; uchar x;
; for(x=8;x<64;x++){
cpi R20,64
brlo L43
.dbline -2
L42:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r x 20 c
.dbsym r range 22 c
.dbend
.dbfunc e lcd_clear_left _lcd_clear_left fV
; x -> R20
; y -> R22
.even
_lcd_clear_left::
xcall push_gset2
.dbline -1
.dbline 198
; addressL(range,x);
; wdataL(0);
; }
; }
; /******************************************************************************/
; void lcd_clear_left(void)
; {
.dbline 200
clr R20
xjmp L51
L48:
.dbline 200
; uchar x,y;
; for(x=0;x<8;x++){
.dbline 201
clr R22
xjmp L55
L52:
.dbline 201
.dbline 202
mov R16,R20
subi R16,72 ; addi 184
xcall _wcodeL
mov R16,R22
subi R16,192 ; addi 64
xcall _wcodeL
.dbline 203
clr R16
xcall _wdataL
.dbline 204
L53:
.dbline 201
inc R22
L55:
.dbline 201
cpi R22,64
brlo L52
.dbline 205
L49:
.dbline 200
inc R20
L51:
.dbline 200
cpi R20,8
brlo L48
.dbline -2
L47:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r x 20 c
.dbsym r y 22 c
.dbend
.dbfunc e lcd_print _lcd_print fV
; lcd_data -> y+4
; y -> R20
; x -> R22
.even
_lcd_print::
xcall push_gset2
mov R20,R18
mov R22,R16
.dbline -1
.dbline 209
; for(y=0;y<64;y++){
; addressL(x,y);
; wdataL(0);
; }
; }
; }
; /******************************************************************************/
; void lcd_print(uchar x,uchar y,uchar lcd_data)
; {
.dbline 210
; if(x > 7){
ldi R24,7
cp R24,R22
brsh L57
.dbline 210
.dbline 211
; x -= 7;
subi R22,7
.dbline 212
; }
L57:
.dbline 213
; if(y > 63){
ldi R24,63
cp R24,R20
brsh L59
.dbline 213
.dbline 214
; y -= 64;
subi R20,64
.dbline 215
; addressL(x,y);
mov R16,R22
subi R16,72 ; addi 184
xcall _wcodeL
mov R16,R20
subi R16,192 ; addi 64
xcall _wcodeL
.dbline 216
; wdataL(lcd_data);
ldd R16,y+4
xcall _wdataL
.dbline 217
xjmp L60
L59:
.dbline 217
.dbline 218
mov R16,R22
subi R16,72 ; addi 184
xcall _wcodeR
mov R16,R20
subi R16,192 ; addi 64
xcall _wcodeR
.dbline 219
ldd R16,y+4
xcall _wdataR
.dbline 220
L60:
.dbline -2
L56:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l lcd_data 4 c
.dbsym r y 20 c
.dbsym r x 22 c
.dbend
.dbfunc e lcd_print88 _lcd_print88 fV
; i -> R20
; lcd_char -> R22,R23
; y -> R10
; x -> R12
.even
_lcd_print88::
xcall push_gset4
mov R10,R18
mov R12,R16
sbiw R28,1
ldd R22,y+9
ldd R23,y+10
.dbline -1
.dbline 224
; }else {
; addressR(x,y);
; wdataR(lcd_data);
; }
; }
; /******************************************************************************/
; void lcd_print88(uchar x,uchar y,const uchar *lcd_char)//显示8*8字符
; {
.dbline 226
clr R20
xjmp L65
L62:
.dbline 226
.dbline 227
movw R2,R22
subi R22,255 ; offset = 1
sbci R23,255
movw R30,R2
lpm R30,Z
std y+0,R30
mov R2,R10
mov R24,R2
subi R24,255 ; addi 1
mov R10,R24
mov R18,R2
mov R16,R12
xcall _lcd_print
.dbline 228
L63:
.dbline 226
inc R20
L65:
.dbline 226
; uchar i;
; for(i=0;i<8;i++){
cpi R20,8
brlo L62
.dbline -2
L61:
adiw R28,1
xcall pop_gset4
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r lcd_char 22 pkc
.dbsym r y 10 c
.dbsym r x 12 c
.dbend
.dbfunc e lcd_print1616 _lcd_print1616 fV
; i -> R20
; j -> R14
; lcd_char -> R10,R11
; y -> R12
; x -> R22
.even
_lcd_print1616::
xcall push_gset5
mov R12,R18
mov R22,R16
sbiw R28,1
ldd R10,y+11
ldd R11,y+12
.dbline -1
.dbline 232
; lcd_print(x,y++,*lcd_char++);
; }
; }
; /******************************************************************************/
; void lcd_print1616(uchar x,uchar y,const uchar *lcd_char)//显示16*16的汉字
; {
.dbline 234
clr R20
xjmp L70
L67:
.dbline 234
; uchar i,j;
; for(i=0;i<2;i++){
.dbline 235
clr R14
xjmp L74
L71:
.dbline 235
.dbline 236
movw R2,R10
movw R24,R2
adiw R24,1
movw R10,R24
movw R30,R2
lpm R30,Z
std y+0,R30
mov R18,R12
add R18,R14
mov R16,R22
xcall _lcd_print
.dbline 237
L72:
.dbline 235
inc R14
L74:
.dbline 235
mov R24,R14
cpi R24,16
brlo L71
.dbline 238
inc R22
.dbline 239
L68:
.dbline 234
inc R20
L70:
.dbline 234
cpi R20,2
brlo L67
.dbline -2
L66:
adiw R28,1
xcall pop_gset5
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r j 14 c
.dbsym r lcd_char 10 pkc
.dbsym r y 12 c
.dbsym r x 22 c
.dbend
.dbfunc e lcd_print816 _lcd_print816 fV
; i -> R20
; j -> R14
; lcd_char -> R10,R11
; y -> R12
; x -> R22
.even
_lcd_print816::
xcall push_gset5
mov R12,R18
mov R22,R16
sbiw R28,1
ldd R10,y+11
ldd R11,y+12
.dbline -1
.dbline 243
; for(j=0;j<16;j++){
; lcd_print(x,y+j,*lcd_char++);
; }
; x++;
; }
; }
; /******************************************************************************/
; void lcd_print816(uchar x,uchar y,const uchar *lcd_char)
; {
.dbline 245
clr R20
xjmp L79
L76:
.dbline 245
; uchar i,j;
; for(i=0;i<2;i++){
.dbline 246
clr R14
xjmp L83
L80:
.dbline 246
.dbline 247
movw R2,R10
movw R24,R2
adiw R24,1
movw R10,R24
movw R30,R2
lpm R30,Z
std y+0,R30
mov R18,R12
add R18,R14
mov R16,R22
xcall _lcd_print
.dbline 248
L81:
.dbline 246
inc R14
L83:
.dbline 246
mov R24,R14
cpi R24,8
brlo L80
.dbline 249
inc R22
.dbline 250
L77:
.dbline 245
inc R20
L79:
.dbline 245
cpi R20,2
brlo L76
.dbline -2
L75:
adiw R28,1
xcall pop_gset5
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r j 14 c
.dbsym r lcd_char 10 pkc
.dbsym r y 12 c
.dbsym r x 22 c
.dbend
.dbfunc e lcd_reverse816 _lcd_reverse816 fV
; i -> R20
; j -> R14
; lcd_char -> R10,R11
; y -> R12
; x -> R22
.even
_lcd_reverse816::
xcall push_gset5
mov R12,R18
mov R22,R16
sbiw R28,1
ldd R10,y+11
ldd R11,y+12
.dbline -1
.dbline 254
; for(j=0;j<8;j++){
; lcd_print(x,y+j,*lcd_char++);
; }
; x++;
; }
; }
; /******************************************************************************/
; void lcd_reverse816(uchar x,uchar y,const uchar *lcd_char)//显示8*16字符
; {
.dbline 256
clr R20
xjmp L88
L85:
.dbline 256
; uchar i,j;
; for(i=0;i<2;i++){
.dbline 257
clr R14
xjmp L92
L89:
.dbline 257
.dbline 258
movw R2,R10
movw R24,R2
adiw R24,1
movw R10,R24
movw R30,R2
lpm R30,Z
com R30
std y+0,R30
mov R18,R12
add R18,R14
mov R16,R22
xcall _lcd_print
.dbline 259
L90:
.dbline 257
inc R14
L92:
.dbline 257
mov R24,R14
cpi R24,8
brlo L89
.dbline 260
inc R22
.dbline 261
L86:
.dbline 256
inc R20
L88:
.dbline 256
cpi R20,2
brlo L85
.dbline -2
L84:
adiw R28,1
xcall pop_gset5
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r j 14 c
.dbsym r lcd_char 10 pkc
.dbsym r y 12 c
.dbsym r x 22 c
.dbend
.dbfunc e lcd_delay _lcd_delay fV
; i -> R16
.even
_lcd_delay::
.dbline -1
.dbline 265
; for(j=0;j<8;j++){
; lcd_print(x,y+j,~*lcd_char++);
; }
; x++;
; }
; }
; /******************************************************************************/
; void lcd_delay(void)
; {
.dbline 266
; uchar i = DELAY_COUNT;
ldi R16,50
L94:
.dbline 267
L95:
.dbline 267
; while(i--);
mov R2,R16
clr R3
subi R16,1
tst R2
brne L94
.dbline -2
L93:
.dbline 0 ; func end
ret
.dbsym r i 16 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -