📄 3510i.s
字号:
brlo L69
L66:
.dbline 376
inc R10
L68:
.dbline 376
mov R24,R10
cpi R24,67
brlo L65
.dbline 379
; LCD_SendData(LCD_BGColor);
; LCD_DataOver();
sbi 0x18,4
.dbline -2
L64:
xcall pop_gset4x
.dbline 0 ; func end
ret
.dbsym r y 10 c
.dbsym r x 12 c
.dbend
.dbfunc e LCD_ReadPixel _LCD_ReadPixel fV
; y -> R10
; x -> R14
; b -> R12,R13
; y2 -> y+12
; x2 -> y+10
; y1 -> R14
; x1 -> y+6
.even
_LCD_ReadPixel::
xcall push_arg4
xcall push_gset5x
mov R14,R18
ldd R12,y+14
ldd R13,y+15
.dbline -1
.dbline 383
; }
;
; void LCD_ReadPixel(uchar x1, uchar y1, uchar x2, uchar y2, uchar *b)
; {
.dbline 385
; uchar x, y;
; LCD_SendCommand(0x2a); //column address set
ldi R16,42
xcall _LCD_SendCommand
.dbline 386
; LCD_SendData(x1);
ldd R16,y+6
xcall _LCD_SendData
.dbline 387
; LCD_SendData(x2);
ldd R16,y+10
xcall _LCD_SendData
.dbline 388
; LCD_DataOver();
sbi 0x18,4
.dbline 390
;
; LCD_SendCommand(0x2b); //page address set
ldi R16,43
xcall _LCD_SendCommand
.dbline 391
; LCD_SendData(y1);
mov R16,R14
xcall _LCD_SendData
.dbline 392
; LCD_SendData(y2);
ldd R16,y+12
xcall _LCD_SendData
.dbline 393
; LCD_DataOver();
sbi 0x18,4
.dbline 395
;
; LCD_SendCommand(0x2e); //RAM data read
ldi R16,46
xcall _LCD_SendCommand
.dbline 397
;
; for(y = y1; y <= y2; y ++)
mov R10,R14
xjmp L77
L74:
.dbline 398
; for(x = x1; x <= x2; x ++)
ldd R14,y+6
xjmp L81
L78:
.dbline 399
.dbline 400
xcall _LCD_ReadDummy
.dbline 401
xcall _LCD_ReadData
movw R30,R12
st Z+,R16
movw R12,R30
.dbline 402
L79:
.dbline 398
inc R14
L81:
.dbline 398
ldd R0,y+10
cp R0,R14
brsh L78
L75:
.dbline 397
inc R10
L77:
.dbline 397
ldd R0,y+12
cp R0,R10
brsh L74
.dbline 403
; {
; LCD_ReadDummy();
; *(b ++) = LCD_ReadData();
; }
; LCD_DataOver();
sbi 0x18,4
.dbline 405
;
; LCD_SendCommand(0x00); //NOP
clr R16
xcall _LCD_SendCommand
.dbline 406
; LCD_SendData(0x00);
clr R16
xcall _LCD_SendData
.dbline 407
; LCD_DataOver();
sbi 0x18,4
.dbline -2
L73:
xcall pop_gset5x
adiw R28,4
.dbline 0 ; func end
ret
.dbsym r y 10 c
.dbsym r x 14 c
.dbsym r b 12 pc
.dbsym l y2 12 c
.dbsym l x2 10 c
.dbsym r y1 14 c
.dbsym l x1 6 c
.dbend
.dbfunc e LCD_WritePixel _LCD_WritePixel fV
; y -> R10
; x -> R14
; y2 -> R12
; x2 -> y+12
; y1 -> y+10
; x1 -> y+8
; b -> y+6
.even
_LCD_WritePixel::
xcall push_arg4
xcall push_gset5x
ldd R12,y+14
.dbline -1
.dbline 411
; }
;
; void LCD_WritePixel(const unsigned char *b, uchar x1, uchar y1, uchar x2, uchar y2)
; {
.dbline 413
; uchar x, y;
; LCD_SendCommand(0x2a); //column address set
ldi R16,42
xcall _LCD_SendCommand
.dbline 414
; LCD_SendData(x1);
ldd R16,y+8
xcall _LCD_SendData
.dbline 415
; LCD_SendData(x2);
ldd R16,y+12
xcall _LCD_SendData
.dbline 416
; LCD_DataOver();
sbi 0x18,4
.dbline 418
;
; LCD_SendCommand(0x2b); //page address set
ldi R16,43
xcall _LCD_SendCommand
.dbline 419
; LCD_SendData(y1);
ldd R16,y+10
xcall _LCD_SendData
.dbline 420
; LCD_SendData(y2);
mov R16,R12
xcall _LCD_SendData
.dbline 421
; LCD_DataOver();
sbi 0x18,4
.dbline 423
;
; LCD_SendCommand(0x2c); //memory write
ldi R16,44
xcall _LCD_SendCommand
.dbline 424
; for(y = y1; y <= y2; y ++)
ldd R10,y+10
xjmp L86
L83:
.dbline 425
; for(x = x1; x <= x2; x ++)
ldd R14,y+8
xjmp L90
L87:
.dbline 426
.dbline 427
ldd R2,y+6
ldd R3,y+7
movw R24,R2
adiw R24,1
std y+7,R25
std y+6,R24
movw R30,R2
lpm R16,Z
xcall _LCD_SendData
.dbline 430
L88:
.dbline 425
inc R14
L90:
.dbline 425
ldd R0,y+12
cp R0,R14
brsh L87
L84:
.dbline 424
inc R10
L86:
.dbline 424
cp R12,R10
brsh L83
.dbline 431
; {
; LCD_SendData(*(b ++));
; ///LCD_SendData(*(b ++));
; ///LCD_SendData(*(b ++));
; }
; LCD_DataOver();
sbi 0x18,4
.dbline -2
L82:
xcall pop_gset5x
adiw R28,4
.dbline 0 ; func end
ret
.dbsym r y 10 c
.dbsym r x 14 c
.dbsym r y2 12 c
.dbsym l x2 12 c
.dbsym l y1 10 c
.dbsym l x1 8 c
.dbsym l b 6 pkc
.dbend
.dbfunc e LCD_WriteEnglishChar _LCD_WriteEnglishChar fV
; temp -> y+0
; row -> R10
; line -> R12
; y -> R14
; x -> y+56
; c -> y+54
.even
_LCD_WriteEnglishChar::
xcall push_arg4
xcall push_gset5x
sbiw R28,48
ldd R14,y+58
.dbline -1
.dbline 435
; }
;
; void LCD_WriteEnglishChar(uchar c, uchar x, uchar y)
; {
.dbline 438
; uchar row,line;
; uchar temp[6][8];
; c-=32;
ldd R24,y+54
subi R24,32
std y+54,R24
.dbline 439
; for(row=0;row<6;row++)
clr R10
xjmp L95
L92:
.dbline 440
; {
.dbline 441
; for(line=0;line<8;line++)
clr R12
xjmp L99
L96:
.dbline 442
; {
.dbline 443
; if(get_bit(font6x8[c][row],line))
ldi R24,6
ldd R0,y+54
mul R24,R0
movw R2,R0
ldi R24,<_font6x8
ldi R25,>_font6x8
add R2,R24
adc R3,R25
mov R30,R10
clr R31
add R30,R2
adc R31,R3
lpm R30,Z
ldi R16,1
mov R17,R12
xcall lsl8
and R30,R16
breq L100
.dbline 444
; temp[row][line]=LCD_PenColor;
ldi R24,8
mul R24,R10
movw R2,R0
movw R24,R28
add R2,R24
adc R3,R25
mov R30,R12
clr R31
add R30,R2
adc R31,R3
lds R2,_LCD_PenColor
std z+0,R2
xjmp L101
L100:
.dbline 446
; else
; temp[row][line]=LCD_BGColor;
ldi R24,8
mul R24,R10
movw R2,R0
movw R24,R28
add R2,R24
adc R3,R25
mov R30,R12
clr R31
add R30,R2
adc R31,R3
lds R2,_LCD_BGColor
std z+0,R2
L101:
.dbline 447
L97:
.dbline 441
inc R12
L99:
.dbline 441
mov R24,R12
cpi R24,8
brsh X0
xjmp L96
X0:
.dbline 448
L93:
.dbline 439
inc R10
L95:
.dbline 439
mov R24,R10
cpi R24,6
brsh X1
xjmp L92
X1:
.dbline 449
; }
; }
; LCD_SendCommand(0x2a); //column address set
ldi R16,42
xcall _LCD_SendCommand
.dbline 450
; LCD_SendData(x);
ldd R16,y+56
xcall _LCD_SendData
.dbline 451
; LCD_SendData(x+5);
ldd R16,y+56
subi R16,251 ; addi 5
xcall _LCD_SendData
.dbline 452
; LCD_DataOver();
sbi 0x18,4
.dbline 454
;
; LCD_SendCommand(0x2b); //page address set
ldi R16,43
xcall _LCD_SendCommand
.dbline 455
; LCD_SendData(y);
mov R16,R14
xcall _LCD_SendData
.dbline 456
; LCD_SendData(y+7);
mov R16,R14
subi R16,249 ; addi 7
xcall _LCD_SendData
.dbline 457
; LCD_DataOver();
sbi 0x18,4
.dbline 459
;
; LCD_SendCommand(0x2c);
ldi R16,44
xcall _LCD_SendCommand
.dbline 460
; for(row=0;row<8;row++)
clr R10
xjmp L105
L102:
.dbline 461
; for(line=0;line<6;line++)
clr R12
xjmp L109
L106:
.dbline 462
ldi R24,8
mul R24,R12
movw R2,R0
movw R24,R28
add R2,R24
adc R3,R25
mov R30,R10
clr R31
add R30,R2
adc R31,R3
ldd R16,z+0
xcall _LCD_SendData
L107:
.dbline 461
inc R12
L109:
.dbline 461
mov R24,R12
cpi R24,6
brlo L106
L103:
.dbline 460
inc R10
L105:
.dbline 460
mov R24,R10
cpi R24,8
brlo L102
.dbline 463
; LCD_SendData(temp[line][row]);
; LCD_DataOver();
sbi 0x18,4
.dbline -2
L91:
adiw R28,48
xcall pop_gset5x
adiw R28,4
.dbline 0 ; func end
ret
.dbsym l temp 0 A[48:6:8]c
.dbsym r row 10 c
.dbsym r line 12 c
.dbsym r y 14 c
.dbsym l x 56 c
.dbsym l c 54 c
.dbend
.dbfunc e LCD_WriteEnglishString _LCD_WriteEnglishString fV
; y -> R10
; x -> R12
; string -> R14,R15
.even
_LCD_WriteEnglishString::
xcall push_gset5x
mov R12,R18
movw R14,R16
sbiw R28,1
ldd R10,y+7
.dbline -1
.dbline 466
; }
; void LCD_WriteEnglishString(uchar *string, uchar x, uchar y)
; {
xjmp L112
L111:
.dbline 468
; while(*string)
; {
.dbline 469
; LCD_WriteEnglishChar(*string, x, y);
std y+0,R10
mov R18,R12
movw R30,R14
ldd R16,z+0
xcall _LCD_WriteEnglishChar
.dbline 470
; string++;
movw R24,R14
adiw R24,1
movw R14,R24
.dbline 471
; x+=6;
mov R24,R12
subi R24,250 ; addi 6
mov R12,R24
.dbline 472
; if(x>=92)
cpi R24,92
brlo L114
.dbline 473
; {
.dbline 474
; x=0;
clr R12
.dbline 475
; y+=8;
mov R24,R10
subi R24,248 ; addi 8
mov R10,R24
.dbline 476
; if((*string)==32)//32 is space char
movw R30,R14
ldd R24,z+0
cpi R24,32
brne L116
.dbline 477
; string++;
movw R24,R30
adiw R24,1
movw R14,R24
L116:
.dbline 478
; if(y>=67)
mov R24,R10
cpi R24,67
brlo L118
.dbline 479
; y=0;
clr R10
L118:
.dbline 480
; }
L114:
.dbline 481
L112:
.dbline 467
movw R30,R14
ldd R2,z+0
tst R2
brne L111
.dbline -2
L110:
adiw R28,1
xcall pop_gset5x
.dbline 0 ; func end
ret
.dbsym r y 10 c
.dbsym r x 12 c
.dbsym r string 14 pc
.dbend
.dbfunc e LCD_WriteChineseChar _LCD_WriteChineseChar fV
; temp -> y+0
; row -> R10
; line -> R12
; y -> R14
; x -> y+200
; c -> y+198
.even
_LCD_WriteChineseChar::
xcall push_arg4
xcall push_gset5x
sbiw R28,63
sbiw R28,63
sbiw R28,63
sbiw R28,3 ; offset = 192
movw R30,R28
subi R30,54 ; addi 202
sbci R31,255
ldd R14,z+0
.dbline -1
.dbline 543
; }
; }
; //16*16的字
; /*void LCD_WriteChineseChar(uchar (*c)[32], uchar x, uchar y)
; {
; uchar row,line;
; uchar temp[16][16];
; for(row=0;row<16;row++)
; {
; for(line=0;line<8;line++)
; {
; if(get_bit((*c)[row],line))
; temp[row][line]=LCD_PenColor;
; else
; temp[row][line]=LCD_BGColor;
; }
; }
; for(row=0;row<16;row++)
; {
; for(line=0;line<8;line++)
; {
; if(get_bit((*c)[row+16],line))
; temp[row][line+8]=LCD_PenColor;
; else
; temp[row][line+8]=LCD_BGColor;
; }
; }
; LCD_SendCommand(0x2a); //column address set
; LCD_SendData(x);
; LCD_SendData(x+15);
; LCD_DataOver();
;
; LCD_SendCommand(0x2b); //page address set
; LCD_SendData(y);
; LCD_SendData(y+15);
; LCD_DataOver();
;
; LCD_SendCommand(0x2c);
; for(row=0;row<16;row++)
; for(line=0;line<16;line++)
; LCD_SendData(temp[line][row]);
; LCD_DataOver();
; }
; void LCD_WriteChineseString(uchar (*c)[32], uchar num, uchar x, uchar y)
; {
; uchar i;
; for(i=0;i<num;i++)
; {
; LCD_WriteChineseChar(c, x, y);
; c++;
; x+=16;
; if(x>=96)
; {
; x=0;
; y+=16;
; if(y>=62)
; y=0;
; }
; }
; }*/
; //12x12
; void LCD_WriteChineseChar(const uchar (*c)[24], uchar x, uchar y)
; {
.dbline 546
; uchar row,line;
; uchar temp[12][16];
; for(row=0;row<12;row++)
clr R10
xjmp L124
L121:
.dbline 547
; {
.dbline 548
; for(line=0;line<8;line++)
clr R12
xjmp L128
L125:
.dbline 549
; {
.dbline 550
; if(get_bit((*c)[row],line))
ldi R16,1
mov R17,R12
xcall lsl8
mov R30,R10
clr R31
movw R26,R28
subi R26,58 ; addi 198
sbci R27,255
ld R0,x+
ld R1,x
add R30,R0
adc R31,R1
lpm R30,Z
and R30,R16
breq L129
.dbline 551
; temp[row][line]=LCD_PenColor;
ldi R24,16
mul R24,R10
movw R2,R0
movw R24,R28
add R2,R24
adc R3,R25
mov R30,R12
clr R31
add R30,R2
adc R31,R3
lds R2,_LCD_PenColor
std z+0,R2
xjmp L130
L129:
.dbline 553
; else
; temp[row][line]=LCD_BGColor;
ldi R24,16
mul R24,R10
movw R2,R0
movw R24,R28
add R2,R24
adc R3,R25
mov R30,R12
clr R31
add R30,R2
adc R31,R3
lds R2,_LCD_BGColor
std z+0,R2
L130:
.dbline 554
L126:
.dbline 548
inc R12
L128:
.dbline 548
mov R24,R12
cpi R24,8
brsh X2
xjmp L125
X2:
.dbline 555
L122:
.dbline 546
inc R10
L124:
.dbline 546
mov R24,R10
cpi R24,12
brsh X3
xjmp L121
X3:
.dbline 556
; }
; }
; for(row=0;row<12;row++)
clr R10
xjmp L134
L131:
.dbline 557
; {
.dbline 558
; for(line=0;line<8;line++)
clr R12
xjmp L138
L135:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -