📄 gui12864.s
字号:
xcall mod16u
movw R30,R16
add R30,R2
adc R31,R3
elpm R2,Z
clr R3
std y+1,R3
std y+0,R2
ldd R18,y+16
clr R19
add R18,R22
adc R19,R23
ldd R16,y+20
clr R17
xcall _LcdDisplaySeg
.dbline 366
; Delay10ms(10);
ldi R16,10
ldi R17,0
xcall _Delay10ms
.dbline 367
; }
L93:
.dbline 368
; temp2++;
subi R22,255 ; offset = 1
sbci R23,255
.dbline 369
; }
L89:
.dbline 357
movw R24,R12
adiw R24,1
movw R12,R24
L91:
.dbline 357
cp R12,R20
cpc R13,R21
brsh X39
xjmp L88
X39:
X33:
.dbline 370
; }
xjmp L87
L86:
.dbline 372
; else
; {
.dbline 373
; temp2 = 0;
clr R22
clr R23
.dbline 374
; for(temp1= step - dislength; temp1<step; temp1++)
movw R12,R20
ldd R0,y+4
ldd R1,y+5
sub R12,R0
sbc R13,R1
xjmp L98
L95:
.dbline 375
; {
.dbline 376
; LcdDisplaySeg(y,x0 + temp2,font6x8[*(p + temp1 / 6) - 32][temp1 % 6]);
ldi R18,6
ldi R19,0
movw R16,R12
xcall div16u
movw R30,R16
ldd R0,y+22
ldd R1,y+23
add R30,R0
adc R31,R1
ldd R2,z+0
ldi R24,6
mul R24,R2
movw R2,R0
ldi R24,<_font6x8-192
ldi R25,>_font6x8-192
add R2,R24
adc R3,R25
ldi R18,6
ldi R19,0
movw R16,R12
xcall mod16u
movw R30,R16
add R30,R2
adc R31,R3
elpm R2,Z
clr R3
std y+1,R3
std y+0,R2
ldd R18,y+16
clr R19
add R18,R22
adc R19,R23
ldd R16,y+20
clr R17
xcall _LcdDisplaySeg
.dbline 377
; Delay10ms(10);
ldi R16,10
ldi R17,0
xcall _Delay10ms
.dbline 378
; temp2++;
subi R22,255 ; offset = 1
sbci R23,255
.dbline 379
; }
L96:
.dbline 374
movw R24,R12
adiw R24,1
movw R12,R24
L98:
.dbline 374
cp R12,R20
cpc R13,R21
brsh X40
xjmp L95
X40:
X34:
.dbline 380
; }
L87:
L78:
.dbline 381
; }
L74:
.dbline 336
movw R24,R10
adiw R24,1
movw R10,R24
L76:
.dbline 336
cp R10,R14
cpc R11,R15
brsh X41
xjmp L73
X41:
X35:
.dbline -2
L69:
.dbline 0 ; func end
adiw R28,6
xcall pop_xgsetF0FC
adiw R28,4
ret
.dbsym l temp3 3 i
.dbsym l a 3 c
.dbsym l n 3 c
.dbsym r totallength 14 i
.dbsym l dislength 4 i
.dbsym r i 10 i
.dbsym l textlength 2 i
.dbsym r temp2 22 i
.dbsym r step 20 i
.dbsym r temp1 12 i
.dbsym l color 24 c
.dbsym l p 22 pc
.dbsym l y 20 c
.dbsym l x1 18 c
.dbsym l x0 16 c
.dbend
.dbfunc e GuiDisBattery _GuiDisBattery fV
; temp -> R20
; level -> y+8
; y -> R10
; x -> R12
.even
_GuiDisBattery::
xcall push_xgset303C
mov R10,R18
mov R12,R16
sbiw R28,2
.dbline -1
.dbline 392
; }
;
; /************************************************************
; * FUNCTION NAME: GuiDisBattery
; * DESCRIPTION: Display Battery Icon
; * level- 0 warn,1 low,2 20%,3 40%,4 60%,5 80%,6 full
; * x - 0-112
; * y - 0-7
; /************************************************************/
; void GuiDisBattery(unsigned char x,unsigned char y,unsigned char level)
; {
.dbline 394
; unsigned char temp;
; for(temp=0; temp<16; temp++)
clr R20
xjmp L104
L101:
.dbline 395
; {
.dbline 396
; LcdDisplaySeg(y,x+temp,battery[level][temp]);
ldi R24,16
ldd R0,y+8
mul R24,R0
movw R2,R0
ldi R24,<_battery
ldi R25,>_battery
add R2,R24
adc R3,R25
mov R30,R20
clr R31
add R30,R2
adc R31,R3
elpm R2,Z
clr R3
std y+1,R3
std y+0,R2
mov R2,R20
clr R3
mov R18,R12
clr R19
add R18,R2
adc R19,R3
mov R16,R10
clr R17
xcall _LcdDisplaySeg
.dbline 397
; }
L102:
.dbline 394
inc R20
L104:
.dbline 394
cpi R20,16
brlo L101
X42:
.dbline -2
L100:
.dbline 0 ; func end
adiw R28,2
xjmp pop_xgset303C
.dbsym r temp 20 c
.dbsym l level 8 c
.dbsym r y 10 c
.dbsym r x 12 c
.dbend
.dbfunc e GuiDisUsb _GuiDisUsb fV
; temp -> R20
; y -> R10
; x -> R12
.even
_GuiDisUsb::
xcall push_xgset303C
mov R10,R18
mov R12,R16
sbiw R28,2
.dbline -1
.dbline 405
; }
;
; /************************************************************
; * FUNCTION NAME: GuiDisUsb
; * DESCRIPTION: Display USB Icon
; /************************************************************/
; void GuiDisUsb(unsigned char x,unsigned char y)
; {
.dbline 407
; unsigned char temp;
; for(temp=0; temp<13; temp++)
clr R20
xjmp L109
L106:
.dbline 408
; {
.dbline 409
; LcdDisplaySeg(y,x+temp,~usb[temp]);
ldi R24,<_usb
ldi R25,>_usb
mov R30,R20
clr R31
add R30,R24
adc R31,R25
elpm R2,Z
clr R3
com R2
com R3
std y+1,R3
std y+0,R2
mov R2,R20
clr R3
mov R18,R12
clr R19
add R18,R2
adc R19,R3
mov R16,R10
clr R17
xcall _LcdDisplaySeg
.dbline 410
; }
L107:
.dbline 407
inc R20
L109:
.dbline 407
cpi R20,13
brlo L106
X43:
.dbline -2
L105:
.dbline 0 ; func end
adiw R28,2
xjmp pop_xgset303C
.dbsym r temp 20 c
.dbsym r y 10 c
.dbsym r x 12 c
.dbend
.dbfunc e GuiDisAcin _GuiDisAcin fV
; temp -> R20
; y -> R10
; x -> R12
.even
_GuiDisAcin::
xcall push_xgset303C
mov R10,R18
mov R12,R16
sbiw R28,2
.dbline -1
.dbline 418
; }
;
; /************************************************************
; * FUNCTION NAME: GuiDisAcin
; * DESCRIPTION: Display AC Input Icon
; /************************************************************/
; void GuiDisAcin(unsigned char x,unsigned char y)
; {
.dbline 420
; unsigned char temp;
; for(temp=0; temp<6; temp++)
clr R20
xjmp L114
L111:
.dbline 421
; {
.dbline 422
; LcdDisplaySeg(y,x+temp,acin[temp]);
ldi R24,<_acin
ldi R25,>_acin
mov R30,R20
clr R31
add R30,R24
adc R31,R25
elpm R2,Z
clr R3
std y+1,R3
std y+0,R2
mov R2,R20
clr R3
mov R18,R12
clr R19
add R18,R2
adc R19,R3
mov R16,R10
clr R17
xcall _LcdDisplaySeg
.dbline 423
; }
L112:
.dbline 420
inc R20
L114:
.dbline 420
cpi R20,6
brlo L111
X44:
.dbline -2
L110:
.dbline 0 ; func end
adiw R28,2
xjmp pop_xgset303C
.dbsym r temp 20 c
.dbsym r y 10 c
.dbsym r x 12 c
.dbend
.dbfunc e GuiDisMainMenu _GuiDisMainMenu fV
; temp1 -> R20
.even
_GuiDisMainMenu::
st -y,R20
sbiw R28,5
.dbline -1
.dbline 432
; }
;
;
; /************************************************************
; * FUNCTION NAME: GuiDisMainMenu
; * DESCRIPTION: Display MainMenu Square
; /************************************************************/
; void GuiDisMainMenu(void)
; {
.dbline 434
; unsigned char temp1;
; for(temp1=0; temp1<128; temp1++)
clr R20
xjmp L119
L116:
.dbline 435
; {
.dbline 436
; LcdDisplaySeg(0,temp1,0XFF);
ldi R24,255
ldi R25,0
std y+1,R25
std y+0,R24
mov R18,R20
clr R19
clr R16
clr R17
xcall _LcdDisplaySeg
.dbline 437
; LcdDisplaySeg(1,temp1,0X07);
ldi R24,7
ldi R25,0
std y+1,R25
std y+0,R24
mov R18,R20
clr R19
ldi R16,1
ldi R17,0
xcall _LcdDisplaySeg
.dbline 438
; }
L117:
.dbline 434
inc R20
L119:
.dbline 434
cpi R20,128
brlo L116
X45:
.dbline 439
; GuiDrawSquare(0,0,127,54,1);
ldi R24,1
std y+4,R24
ldi R24,54
std y+2,R24
ldi R24,127
std y+0,R24
clr R18
clr R16
xcall _GuiDrawSquare
.dbline -2
L115:
.dbline 0 ; func end
adiw R28,5
ld R20,y+
ret
.dbsym r temp1 20 c
.dbend
.dbfunc e GuiDisShortIcon _GuiDisShortIcon fV
; temp1 -> R20
; temp2 -> R22
; type -> <dead>
; y -> R12
; x -> R10
.even
_GuiDisShortIcon::
xcall push_xgsetF03C
mov R12,R18
mov R10,R16
sbiw R28,2
.dbline -1
.dbline 452
; }
;
; /************************************************************
; * FUNCTION NAME: GuiDisShortIcon
; * DESCRIPTION: Display Short-Cut Icon
; * 0:
; * 1:
; * 2:
; * 3:
; * 4:
; /************************************************************/
; void GuiDisShortIcon(unsigned char x,unsigned char y,unsigned char type)
; {
.dbline 454
; unsigned char temp1,temp2;
; for(temp1=0; temp1<2; temp1++)
clr R20
xjmp L124
L121:
.dbline 455
; {
.dbline 456
; for(temp2=0; temp2<16; temp2++)
clr R22
xjmp L128
L125:
.dbline 457
; {
.dbline 458
; LcdDisplaySeg(y+temp1,x+temp2,~shorticon1[temp1][temp2]);
ldi R24,16
mul R24,R20
movw R2,R0
ldi R24,<_shorticon1
ldi R25,>_shorticon1
add R2,R24
adc R3,R25
mov R30,R22
clr R31
add R30,R2
adc R31,R3
elpm R2,Z
clr R3
com R2
com R3
std y+1,R3
std y+0,R2
mov R2,R22
clr R3
mov R18,R10
clr R19
add R18,R2
adc R19,R3
mov R2,R20
clr R3
mov R16,R12
clr R17
add R16,R2
adc R17,R3
xcall _LcdDisplaySeg
.dbline 459
; }
L126:
.dbline 456
inc R22
L128:
.dbline 456
cpi R22,16
brlo L125
X46:
.dbline 460
; }
L122:
.dbline 454
inc R20
L124:
.dbline 454
cpi R20,2
brlo L121
X47:
.dbline -2
L120:
.dbline 0 ; func end
adiw R28,2
xjmp pop_xgsetF03C
.dbsym r temp1 20 c
.dbsym r temp2 22 c
.dbsym l type 10 c
.dbsym r y 12 c
.dbsym r x 10 c
.dbend
.dbfunc e GuiDisMenuIcon _GuiDisMenuIcon fV
; temp1 -> R20
; temp2 -> R22
; type -> <dead>
; y -> R12
; x -> R10
.even
_GuiDisMenuIcon::
xcall push_xgsetF03C
mov R12,R18
mov R10,R16
sbiw R28,2
.dbline -1
.dbline 468
; }
;
; /************************************************************
; * FUNCTION NAME: GuiDisMenuIcon
; * DESCRIPTION: Display MainMenu Name
; /************************************************************/
; void GuiDisMenuIcon(unsigned char x,unsigned char y,unsigned char type)
; {
.dbline 470
; unsigned char temp1,temp2;
; for(temp1=0; temp1<2; temp1++)
clr R20
xjmp L133
L130:
.dbline 471
; {
.dbline 472
; for(temp2=0; temp2<34; temp2++)
clr R22
xjmp L137
L134:
.dbline 473
; {
.dbline 474
; LcdDisplaySeg(y+temp1,x+temp2,~menuicon1[temp1][temp2]);
ldi R24,34
mul R24,R20
movw R2,R0
ldi R24,<_menuicon1
ldi R25,>_menuicon1
add R2,R24
adc R3,R25
mov R30,R22
clr R31
add R30,R2
adc R31,R3
elpm R2,Z
clr R3
com R2
com R3
std y+1,R3
std y+0,R2
mov R2,R22
clr R3
mov R18,R10
clr R19
add R18,R2
adc R19,R3
mov R2,R20
clr R3
mov R16,R12
clr R17
add R16,R2
adc R17,R3
xcall _LcdDisplaySeg
.dbline 475
; }
L135:
.dbline 472
inc R22
L137:
.dbline 472
cpi R22,34
brlo L134
X48:
.dbline 476
; }
L131:
.dbline 470
inc R20
L133:
.dbline 470
cpi R20,2
brlo L130
X49:
.dbline -2
L129:
.dbline 0 ; func end
adiw R28,2
xjmp pop_xgsetF03C
.dbsym r temp1 20 c
.dbsym r temp2 22 c
.dbsym l type 10 c
.dbsym r y 12 c
.dbsym r x 10 c
.dbend
.dbfunc e GuiDisTemp _GuiDisTemp fV
; sign -> R14
; temp -> R20
; value -> R22
; y -> R10
; x -> R12
.even
_GuiDisTemp::
xcall push_xgsetF0FC
mov R10,R18
mov R12,R16
sbiw R28,3
ldd R22,y+13
.dbline -1
.dbline 485
; }
;
; /************************************************************
; * FUNCTION NAME: GuiDisTemp
; * DESCRIPTION: Display temperature icon and value
; * temperature display range from -99 to +99
; /************************************************************/
; void GuiDisTemp(unsigned char x,unsigned char y,signed char value)
; {
.dbline 488
; unsigned char temp;
; signed char sign; /* 写SIGNED才表明书有符号数 */
; for(temp=0; temp<11; temp++)
clr R20
xjmp L142
L139:
.dbline 489
; {
.dbline 490
; LcdDisplaySeg(y,x+temp,~temperature[temp]);
ldi R24,<_temperature
ldi R25,>_temperature
mov R30,R20
clr R31
add R30,R24
adc R31,R25
elpm R2,Z
clr R3
com R2
com R3
std y+1,R3
std y+0,R2
mov R2,R20
clr R3
mov R18,R12
clr R19
add R18,R2
adc R19,R3
mov R16,R10
clr R17
xcall _LcdDisplaySeg
.dbline 491
; }
L140:
.dbline 488
inc R20
L142:
.dbline 488
cpi R20,11
brlo L139
X50:
.dbline 492
; if(value > 0)
clr R2
cp R2,R22
brge L143
X51:
.dbline 493
; {
.dbline 494
; GuiDisCharF3(x/6 + 2,y,'+',1);
ldi R24,1
std y+2,R24
ldi R24,43
std y+0,R24
mov R18,R10
ldi R17,6
mov R16,R12
xcall div8u
subi R16,254 ; addi 2
xcall _GuiDisCharF3
.dbline 495
; sign = 1;
clr R14
inc R14
.dbline 496
; }
xjmp L144
L143:
.dbline 497
; else if(value < 0)
cpi R22,0
brge L145
X52:
.dbline 498
; {
.dbline 499
; GuiDisCharF3(x/6 + 2,y,'-',1);
ldi R24,1
std y+2,R24
ldi R24,45
std y+0,R24
mov R18,R10
ldi R17,6
mov R16,R12
xcall div8u
subi R16,254 ; addi 2
xcall _GuiDisCharF3
.dbline 500
; sign = -1;
ldi R24,255
mov R14,R24
.dbline 501
; }
xjmp L146
L145:
.dbline 503
; else
; {
.dbline 504
; GuiDisCharF3(x/6 + 2,y,' ',1);
ldi R24,1
std y+2,R24
ldi R24,32
std y+0,R24
mov R18,R10
ldi R17,6
mov R16,R12
xcall div8u
subi R16,254 ; addi 2
xcall _GuiDisCharF3
.dbline 505
; sign = 0;
clr R14
.dbline 506
; }
L146:
L144:
.dbline 507
; value = sign * value;
mov R17,R22
mov R16,R14
muls R16,R17
mov R22,R0
.dbline 508
; GuiDisCharF3(x/6 + 3,y,(value/10 + 0X30),1);
ldi R24,1
std y+2,R24
ldi R17,10
mov R16,R22
xcall div8s
mov R24,R16
subi R24,208 ; addi 48
std y+0,R24
mov R18,R10
ldi R17,6
mov R16,R12
xcall div8u
subi R16,253 ; addi 3
xcall _GuiDisCharF3
.dbline 509
; GuiDisCharF3(x/6 + 4,y,(value%10 + 0X30),1);
ldi R24,1
std y+2,R24
ldi R17,10
mov R16,R22
xcall mod8s
mov R24,R16
subi R24,208 ; addi 48
std y+0,R24
mov R18,R10
ldi R17,6
mov R16,R12
xcall div8u
subi R16,252 ; addi 4
xcall _GuiDisCharF3
.dbline 510
; for(temp=12; temp<17; temp++)
ldi R20,12
xjmp L150
L147:
.dbline 511
; {
.dbline 512
; LcdDisplaySeg(y,x+21+temp,temperature[temp]);
ldi R24,<_temperature
ldi R25,>_temperature
mov R30,R20
clr R31
add R30,R24
adc R31,R25
elpm R2,Z
clr R3
std y+1,R3
std y+0,R2
mov R2,R20
clr R3
mov R18,R12
clr R19
subi R18,235 ; offset = 21
sbci R19,255
add R18,R2
adc R19,R3
mov R16,R10
clr R17
xcall _LcdDisplaySeg
.dbline 513
; }
L148:
.dbline 510
inc R20
L150:
.dbline 510
cpi R20,17
brlo L147
X53:
.dbline -2
L138:
.dbline 0 ; func end
adiw R28,3
xjmp pop_xgsetF0FC
.dbsym r sign 14 C
.dbsym r temp 20 c
.dbsym r value 22 C
.dbsym r y 10 c
.dbsym r x 12 c
.dbend
; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -