📄 ylf240128a.s
字号:
clr R10
clr R11
xjmp L43
L40:
.dbline 347
; for(i=0;i<10;i++) { //8*8
.dbline 348
; for(j=0;j<8;j++)
clr R22
clr R23
xjmp L47
L44:
.dbline 349
ldi R16,8
ldi R17,0
movw R18,R10
xcall empy16s
movw R30,R16
add R30,R22
adc R31,R23
ldi R24,<_GrCode
ldi R25,>_GrCode
add R30,R24
adc R31,R25
lpm R16,Z
xcall _WriteData
L45:
.dbline 348
subi R22,255 ; offset = 1
sbci R23,255
L47:
.dbline 348
cpi R22,8
ldi R30,0
cpc R23,R30
brlo L44
.dbline 350
L41:
.dbline 347
movw R24,R10
adiw R24,1
movw R10,R24
L43:
.dbline 347
movw R24,R10
cpi R24,10
ldi R30,0
cpc R25,R30
brlo L40
.dbline 351
; WriteData(GrCode[i*8+j]);
; }
; len=(uchar)sizeof(ChCode); //16*16
ldi R20,160
clr R21
.dbline 352
clr R22
clr R23
xjmp L51
L48:
.dbline 352
; for (j=0;j<len;j++) {
.dbline 353
; for(i=0;i<16;i+=2)
clr R10
clr R11
xjmp L55
L52:
.dbline 354
ldi R16,32
ldi R17,0
movw R18,R22
xcall empy16s
movw R2,R16
ldi R24,<_ChCode
ldi R25,>_ChCode
add R2,R24
adc R3,R25
movw R30,R10
add R30,R2
adc R31,R3
lpm R16,Z
xcall _WriteData
L53:
.dbline 353
movw R24,R10
adiw R24,2
movw R10,R24
L55:
.dbline 353
movw R24,R10
cpi R24,16
ldi R30,0
cpc R25,R30
brlo L52
.dbline 355
; WriteData(ChCode[j][i]);
; for(i=1;i<16;i+=2)
ldi R24,1
ldi R25,0
movw R10,R24
xjmp L59
L56:
.dbline 356
ldi R16,32
ldi R17,0
movw R18,R22
xcall empy16s
movw R2,R16
ldi R24,<_ChCode
ldi R25,>_ChCode
add R2,R24
adc R3,R25
movw R30,R10
add R30,R2
adc R31,R3
lpm R16,Z
xcall _WriteData
L57:
.dbline 355
movw R24,R10
adiw R24,2
movw R10,R24
L59:
.dbline 355
movw R24,R10
cpi R24,16
ldi R30,0
cpc R25,R30
brlo L56
.dbline 357
; WriteData(ChCode[j][i]);
; for(i=16;i<32;i+=2)
ldi R24,16
ldi R25,0
movw R10,R24
xjmp L63
L60:
.dbline 358
ldi R16,32
ldi R17,0
movw R18,R22
xcall empy16s
movw R2,R16
ldi R24,<_ChCode
ldi R25,>_ChCode
add R2,R24
adc R3,R25
movw R30,R10
add R30,R2
adc R31,R3
lpm R16,Z
xcall _WriteData
L61:
.dbline 357
movw R24,R10
adiw R24,2
movw R10,R24
L63:
.dbline 357
movw R24,R10
cpi R24,32
ldi R30,0
cpc R25,R30
brlo L60
.dbline 359
; WriteData(ChCode[j][i]);
; for(i=17;i<32;i+=2)
ldi R24,17
ldi R25,0
movw R10,R24
xjmp L67
L64:
.dbline 360
ldi R16,32
ldi R17,0
movw R18,R22
xcall empy16s
movw R2,R16
ldi R24,<_ChCode
ldi R25,>_ChCode
add R2,R24
adc R3,R25
movw R30,R10
add R30,R2
adc R31,R3
lpm R16,Z
xcall _WriteData
L65:
.dbline 359
movw R24,R10
adiw R24,2
movw R10,R24
L67:
.dbline 359
movw R24,R10
cpi R24,32
ldi R30,0
cpc R25,R30
brlo L64
.dbline 362
L49:
.dbline 352
subi R22,255 ; offset = 1
sbci R23,255
L51:
.dbline 352
cp R22,R20
cpc R23,R21
brsh X0
xjmp L48
X0:
.dbline 363
; WriteData(ChCode[j][i]);
;
; }
; WriteCmd(AWROFF);
ldi R16,178
xcall _WriteCmd
.dbline -2
L36:
adiw R28,1
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r len 20 i
.dbsym r j 22 i
.dbsym r i 10 i
.dbend
.dbfunc e LcdInit _LcdInit fV
.even
_LcdInit::
sbiw R28,1
.dbline -1
.dbline 368
;
; }
;
; void LcdInit(void)
; {
.dbline 370
;
; CE_CLR;
cbi 0x1b,1
.dbline 371
; FS_CLR;
cbi 0x12,7
.dbline 372
; WR_SET;RD_SET;CD_SET;
sbi 0x1b,3
.dbline 372
sbi 0x1b,2
.dbline 372
sbi 0x15,0
.dbline 373
; RST_CLR;
cbi 0x12,5
.dbline 374
; delay(1000);
ldi R16,1000
ldi R17,3
xcall _delay
.dbline 375
; RST_SET;
sbi 0x12,5
.dbline 377
;
; ClrRam(0x00);
clr R16
clr R17
xcall _ClrRam
.dbline 379
;
; WrTwoParCmd(0x00,0x00,TXHOME);
ldi R24,64
std y+0,R24
clr R18
clr R16
xcall _WrTwoParCmd
.dbline 380
; WrTwoParCmd(0x1E,0x00,TXAREA);
ldi R24,65
std y+0,R24
clr R18
ldi R16,30
xcall _WrTwoParCmd
.dbline 381
; WrTwoParCmd(0x00,0x08,GRHOME);
ldi R24,66
std y+0,R24
ldi R18,8
clr R16
xcall _WrTwoParCmd
.dbline 382
; WrTwoParCmd(0x1E,0x00,GRAREA);
ldi R24,67
std y+0,R24
clr R18
ldi R16,30
xcall _WrTwoParCmd
.dbline 383
; WrTwoParCmd(0x00,0x00,CUPSET);
ldi R24,33
std y+0,R24
clr R18
clr R16
xcall _WrTwoParCmd
.dbline 384
; WriteCmd(0xA0);
ldi R16,160
xcall _WriteCmd
.dbline 385
; WriteCmd(0x80);
ldi R16,128
xcall _WriteCmd
.dbline 386
; WriteCmd(0x97);
ldi R16,151
xcall _WriteCmd
.dbline 390
;
; // ClrRam(0x00);
;
; WrCGRAM();
xcall _WrCGRAM
.dbline 392
;
; WrTwoParCmd(0x00,0x00,ADPSET);
ldi R24,36
std y+0,R24
clr R18
clr R16
xcall _WrTwoParCmd
.dbline 393
; WrTwoParCmd(0x00,0x00,CUPSET);
ldi R24,33
std y+0,R24
clr R18
clr R16
xcall _WrTwoParCmd
.dbline -2
L68:
adiw R28,1
.dbline 0 ; func end
ret
.dbend
.dbfunc e WrCharCode _WrCharCode fV
; address -> R20,R21
; charcode -> y+5
; y -> R22
; x -> R20
.even
_WrCharCode::
xcall push_gset2
mov R22,R18
mov R20,R16
sbiw R28,1
.dbline -1
.dbline 399
; }
;
; //Character Code Display--8*8
; //x:0~29; y:0~15
; void WrCharCode(uchar x,uchar y,uchar charcode)
; {
.dbline 401
; uint address;
; address=y*LCDCOLUMN+x;
ldi R24,30
mul R24,R22
movw R2,R0
mov R4,R20
clr R5
add R2,R4
adc R3,R5
movw R20,R2
.dbline 402
; WrTwoParCmd((uchar)(address),(uchar)(address>>8),ADPSET); //Set Display Ram Address
ldi R24,36
std y+0,R24
movw R18,R2
mov R18,R19
clr R19
mov R16,R2
xcall _WrTwoParCmd
.dbline 403
; WrOneParCmd(charcode,0xC4); //Load Character Code,Address Non Variable
ldi R18,196
ldd R16,y+5
xcall _WrOneParCmd
.dbline 404
; address+=0x800; //Text Attribute mode:blink
subi R20,0 ; offset = 2048
sbci R21,248
.dbline 405
; WrTwoParCmd((uchar)(address),(uchar)(address>>8),ADPSET);
ldi R24,36
std y+0,R24
movw R18,R20
mov R18,R19
clr R19
mov R16,R20
xcall _WrTwoParCmd
.dbline 406
; WrOneParCmd(0x08,0xC4);
ldi R18,196
ldi R16,8
xcall _WrOneParCmd
.dbline -2
L69:
adiw R28,1
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r address 20 i
.dbsym l charcode 5 c
.dbsym r y 22 c
.dbsym r x 20 c
.dbend
.dbfunc e AsctoCharCode _AsctoCharCode fc
; charcode -> R20
; asc -> R16
.even
_AsctoCharCode::
xcall push_gset1
.dbline -1
.dbline 410
; }
;
; uchar AsctoCharCode(uchar asc)
; {
.dbline 412
; uchar charcode;
; charcode=(asc<20)? 0:(asc-0x20);
cpi R16,20
brsh L71
clr R20
clr R21
xjmp L72
L71:
mov R20,R16
clr R21
subi R20,32
sbci R21,0
L72:
.dbline 413
; return charcode;
mov R16,R20
.dbline -2
L70:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r charcode 20 c
.dbsym r asc 16 c
.dbend
.dbfunc e WrCharStr _WrCharStr fV
; len -> R20
; i -> R22
; charstr -> R10,R11
; y -> R12
; x -> R14
.even
_WrCharStr::
xcall push_gset5
mov R12,R18
mov R14,R16
sbiw R28,1
ldd R10,y+11
ldd R11,y+12
.dbline -1
.dbline 417
; }
;
; void WrCharStr(uchar x,uchar y,char charstr[])
; {
.dbline 420
; uchar i,len;
;
; len=strlen(charstr);
movw R16,R10
xcall _strlen
mov R20,R16
.dbline 421
clr R22
xjmp L77
L74:
.dbline 421
; for(i=0;i<len;i++) {
.dbline 422
; WrCharCode(x,y,AsctoCharCode(charstr[i]) );
mov R30,R22
clr R31
add R30,R10
adc R31,R11
ldd R16,z+0
xcall _AsctoCharCode
std y+0,R16
mov R18,R12
mov R16,R14
xcall _WrCharCode
.dbline 423
; if (x<LCDCOLUMN)x++;
mov R24,R14
cpi R24,30
brsh L78
.dbline 423
inc R14
xjmp L79
L78:
.dbline 425
; else
; {
.dbline 426
; y++;
inc R12
.dbline 427
; x=0;
clr R14
.dbline 428
; }
L79:
.dbline 429
L75:
.dbline 421
inc R22
L77:
.dbline 421
cp R22,R20
brlo L74
.dbline -2
L73:
adiw R28,1
xcall pop_gset5
.dbline 0 ; func end
ret
.dbsym r len 20 c
.dbsym r i 22 c
.dbsym r charstr 10 pc
.dbsym r y 12 c
.dbsym r x 14 c
.dbend
.dbfunc e WrNumeral _WrNumeral fV
; str -> y+6
; g -> y+1
; i -> R20
; numeral -> R14,R15
; grade -> R12
; y -> R10
; x -> y+21
.even
_WrNumeral::
xcall push_arg4
xcall push_gset5
mov R10,R18
sbiw R28,11
ldd R12,y+25
ldd R14,y+27
ldd R15,y+28
.dbline -1
.dbline 432
; }
; }
; void WrNumeral(uchar x,uchar y,uchar grade,uint numeral)
; {
.dbline 436
clr R20
xjmp L84
L81:
.dbline 436
; uchar i,g[5];
; uchar str[5];
;
; for(i=0;i<5;i++) {
.dbline 437
; g[i]=numeral%grade;
mov R18,R12
clr R19
movw R16,R14
xcall mod16u
movw R24,R28
adiw R24,1
mov R30,R20
clr R31
add R30,R24
adc R31,R25
std z+0,R16
.dbline 438
; numeral/=grade;
mov R18,R12
clr R19
movw R16,R14
xcall div16u
movw R14,R16
.dbline 439
; str[4-i]=(g[i]>9)?(g[i]+0x37):(g[i]+0x30);
movw R24,R28
adiw R24,1
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,9
cp R24,R2
brsh L85
movw R24,R28
adiw R24,1
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R22,z+0
clr R23
subi R22,201 ; offset = 55
sbci R23,255
xjmp L86
L85:
movw R24,R28
adiw R24,1
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R22,z+0
clr R23
subi R22,208 ; offset = 48
sbci R23,255
L86:
mov R2,R20
clr R3
ldi R30,4
ldi R31,0
sub R30,R2
sbc R31,R3
movw R24,R28
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -