📄 led.lis
字号:
00DC 80E0 ldi R24,<PL_light_1
00DE 90E0 ldi R25,>PL_light_1
00E0 90930700 sts _pcled+2+1,R25
00E4 80930600 sts _pcled+2,R24
00E8 .dbline 103
00E8 ; pcled[2] = light_2;
00E8 80E0 ldi R24,<PL_light_2
00EA 90E0 ldi R25,>PL_light_2
00EC 90930900 sts _pcled+4+1,R25
00F0 80930800 sts _pcled+4,R24
00F4 .dbline 104
00F4 ; pcled[3] = light_3;
00F4 80E0 ldi R24,<PL_light_3
00F6 90E0 ldi R25,>PL_light_3
00F8 90930B00 sts _pcled+6+1,R25
00FC 80930A00 sts _pcled+6,R24
0100 .dbline 105
0100 ; pcled[4] = light_4;
0100 80E0 ldi R24,<PL_light_4
0102 90E0 ldi R25,>PL_light_4
0104 90930D00 sts _pcled+8+1,R25
0108 80930C00 sts _pcled+8,R24
010C .dbline 106
010C ; pcled[5] = light_5;
010C 80E0 ldi R24,<PL_light_5
010E 90E0 ldi R25,>PL_light_5
0110 90930F00 sts _pcled+10+1,R25
0114 80930E00 sts _pcled+10,R24
0118 .dbline 107
0118 ; pcled[6] = light_6;
0118 80E0 ldi R24,<PL_light_6
011A 90E0 ldi R25,>PL_light_6
011C 90931100 sts _pcled+12+1,R25
0120 80931000 sts _pcled+12,R24
0124 .dbline 108
0124 ; pcled[7] = light_7;
0124 80E0 ldi R24,<PL_light_7
0126 90E0 ldi R25,>PL_light_7
0128 90931300 sts _pcled+14+1,R25
012C 80931200 sts _pcled+14,R24
0130 .dbline 109
0130 ; pcled[8] = light_8;
0130 80E0 ldi R24,<PL_light_8
0132 90E0 ldi R25,>PL_light_8
0134 90931500 sts _pcled+16+1,R25
0138 80931400 sts _pcled+16,R24
013C .dbline 110
013C ; pcled[9] = light_9;
013C 80E0 ldi R24,<PL_light_9
013E 90E0 ldi R25,>PL_light_9
0140 90931700 sts _pcled+18+1,R25
0144 80931600 sts _pcled+18,R24
0148 .dbline -2
0148 L15:
0148 .dbline 0 ; func end
0148 0895 ret
014A .dbend
014A .dbfunc e CalculateSub _CalculateSub fV
014A ; p_aloneD -> R20,R21
014A ; Digit -> R22,R23
.even
014A _CalculateSub::
014A 00D0 rcall push_gset2
014C A901 movw R20,R18
014E B801 movw R22,R16
0150 .dbline -1
0150 .dbline 115
0150 ; }
0150 ;
0150 ; //位计算.
0150 ; void CalculateSub(unsigned int Digit,char *p_aloneD)
0150 ; {
0150 .dbline 116
0150 ; *p_aloneD = (char)(Digit/1000);
0150 28EE ldi R18,1000
0152 33E0 ldi R19,3
0154 8B01 movw R16,R22
0156 00D0 rcall div16u
0158 FA01 movw R30,R20
015A 0083 std z+0,R16
015C .dbline 117
015C ; Digit -= *p_aloneD++ * 1000;
015C 2191 ld R18,Z+
015E AF01 movw R20,R30
0160 3327 clr R19
0162 08EE ldi R16,1000
0164 13E0 ldi R17,3
0166 00D0 rcall empy16s
0168 601B sub R22,R16
016A 710B sbc R23,R17
016C .dbline 119
016C ;
016C ; *p_aloneD = (char)(Digit/100);
016C 24E6 ldi R18,100
016E 30E0 ldi R19,0
0170 8B01 movw R16,R22
0172 00D0 rcall div16u
0174 FA01 movw R30,R20
0176 0083 std z+0,R16
0178 .dbline 120
0178 ; Digit -= *p_aloneD++ * 100;
0178 1191 ld R17,Z+
017A AF01 movw R20,R30
017C 04E6 ldi R16,100
017E 0102 muls R16,R17
0180 6019 sub R22,R0
0182 7109 sbc R23,R1
0184 .dbline 122
0184 ;
0184 ; *p_aloneD = (char)(Digit/10);
0184 2AE0 ldi R18,10
0186 30E0 ldi R19,0
0188 8B01 movw R16,R22
018A 00D0 rcall div16u
018C FA01 movw R30,R20
018E 0083 std z+0,R16
0190 .dbline 123
0190 ; Digit -= *p_aloneD++ * 10;
0190 1191 ld R17,Z+
0192 0AE0 ldi R16,10
0194 0102 muls R16,R17
0196 6019 sub R22,R0
0198 7109 sbc R23,R1
019A .dbline 125
019A ;
019A ; *p_aloneD = (char)Digit;
019A 6083 std z+0,R22
019C .dbline 126
019C ; p_aloneD = 0;
019C 4427 clr R20
019E 5527 clr R21
01A0 .dbline -2
01A0 L25:
01A0 00D0 rcall pop_gset2
01A2 .dbline 0 ; func end
01A2 0895 ret
01A4 .dbsym r p_aloneD 20 pc
01A4 .dbsym r Digit 22 i
01A4 .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\ICCTES~1\1128\led.c
0000 L27:
0000 .blkb 2
.area text(rom, con, rel)
01A4 .dbfile D:\ICCTES~1\1128\led.c
01A4 .dbfunc e sub2 _sub2 fV
01A4 .dbsym s ShowDigit L27 I
.even
01A4 _sub2::
01A4 .dbline -1
01A4 .dbline 130
01A4 ; }
01A4 ;
01A4 ; void sub2(void)
01A4 ; {
01A4 .dbline 132
01A4 ; static int ShowDigit;
01A4 ; NOP();
01A4 0000 nop
01A6 .dbline 133
01A6 ; ShowDigit = LedShowLink;// 0x4d2;//
01A6 20900200 lds R2,_LedShowLink
01AA 30900300 lds R3,_LedShowLink+1
01AE 30920100 sts L27+1,R3
01B2 20920000 sts L27,R2
01B6 .dbline 134
01B6 ; CalculateSub(ShowDigit, &aloneD[0]);
01B6 20E0 ldi R18,<_aloneD
01B8 30E0 ldi R19,>_aloneD
01BA 00910000 lds R16,L27
01BE 10910100 lds R17,L27+1
01C2 C3DF rcall _CalculateSub
01C4 .dbline 135
01C4 ; NOP();
01C4 0000 nop
01C6 .dbline -2
01C6 L26:
01C6 .dbline 0 ; func end
01C6 0895 ret
01C8 .dbend
.area data(ram, con, rel)
0000 .dbfile D:\ICCTES~1\1128\led.c
0000 L29:
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile D:\ICCTES~1\1128\led.c
.area text(rom, con, rel)
01C8 .dbfile D:\ICCTES~1\1128\led.c
01C8 .dbfunc e subled _subled fV
01C8 .dbsym s ledbitcou L29 c
01C8 ; bytebit -> R22
01C8 ; byteT -> R20
.even
01C8 _subled::
01C8 00D0 rcall push_gset2
01CA .dbline -1
01CA .dbline 139
01CA ; }
01CA ;
01CA ; void subled(void)
01CA ; {
01CA .dbline 142
01CA ; static char ledbitcou=0b00000000;
01CA ; // static char coui ; //用作数组aloneD[]下标.
01CA ; char bytebit=0,byteT=0;
01CA 6627 clr R22
01CC .dbline 142
01CC 4427 clr R20
01CE .dbline 146
01CE ;
01CE ; //为每位扫描. 1,置一,四位都不亮; 2,清零,点亮一个位.
01CE ;
01CE ; if(ledbitcou == 0)
01CE 20900000 lds R2,L29
01D2 2220 tst R2
01D4 11F4 brne L30
01D6 .dbline 147
01D6 ; {
01D6 .dbline 148
01D6 ; bytebit = 0b11111011;
01D6 6BEF ldi R22,251
01D8 .dbline 149
01D8 11C0 rjmp L31
01DA L30:
01DA .dbline 149
01DA ; }else if(ledbitcou == 1)
01DA 80910000 lds R24,L29
01DE 8130 cpi R24,1
01E0 11F4 brne L32
01E2 .dbline 150
01E2 ; {
01E2 .dbline 151
01E2 ; bytebit = 0b11110111;
01E2 67EF ldi R22,247
01E4 .dbline 152
01E4 0BC0 rjmp L33
01E6 L32:
01E6 .dbline 152
01E6 ; }else if(ledbitcou == 2)
01E6 80910000 lds R24,L29
01EA 8230 cpi R24,2
01EC 11F4 brne L34
01EE .dbline 153
01EE ; {
01EE .dbline 154
01EE ; bytebit = 0b11101111;
01EE 6FEE ldi R22,239
01F0 .dbline 155
01F0 05C0 rjmp L35
01F2 L34:
01F2 .dbline 155
01F2 ; }else if(ledbitcou == 3)
01F2 80910000 lds R24,L29
01F6 8330 cpi R24,3
01F8 09F4 brne L36
01FA .dbline 156
01FA ; {
01FA .dbline 157
01FA ; bytebit = 0b11011111;
01FA 6FED ldi R22,223
01FC .dbline 158
01FC ; }
01FC L36:
01FC L35:
01FC L33:
01FC L31:
01FC .dbline 163
01FC 8BB1 in R24,0xb
01FE 806C ori R24,192
0200 8BB9 out 0xb,R24
0202 .dbline 164
0202 85B1 in R24,0x5
0204 8C6F ori R24,252
0206 85B9 out 0x5,R24
0208 .dbline 166
0208 88B1 in R24,0x8
020A 8C63 ori R24,60
020C 88B9 out 0x8,R24
020E .dbline 167
020E 28B0 in R2,0x8
0210 2622 and R2,R22
0212 28B8 out 0x8,R2
0214 .dbline 169
0214 80E0 ldi R24,<_aloneD
0216 90E0 ldi R25,>_aloneD
0218 E0910000 lds R30,L29
021C FF27 clr R31
021E E80F add R30,R24
0220 F91F adc R31,R25
0222 4081 ldd R20,z+0
0224 .dbline 170
0224 82E0 ldi R24,2
0226 849F mul R24,R20
0228 F001 movw R30,R0
022A 80E0 ldi R24,<_pcled
022C 90E0 ldi R25,>_pcled
022E E80F add R30,R24
0230 F91F adc R31,R25
0232 A081 ldd R26,z+0
0234 B181 ldd R27,z+1
0236 FD01 movw R30,R26
0238 00D0 rcall xicall
023A .dbline 171
023A 80910000 lds R24,L29
023E 8F5F subi R24,255 ; addi 1
0240 282E mov R2,R24
0242 20920000 sts L29,R2
0246 8430 cpi R24,4
0248 19F4 brne L38
024A .dbline 172
024A 2224 clr R2
024C 20920000 sts L29,R2
0250 L38:
0250 .dbline -2
0250 L28:
0250 00D0 rcall pop_gset2
0252 .dbline 0 ; func end
0252 0895 ret
0254 .dbsym r bytebit 22 c
0254 .dbsym r byteT 20 c
0254 .dbend
.area bss(ram, con, rel)
0002 .dbfile D:\ICCTES~1\1128\led.c
0002 _LedShowLink::
0002 .blkb 2
0004 .dbsym e LedShowLink _LedShowLink i
0004 _pcled::
0004 .blkb 20
0018 .dbsym e pcled _pcled A[20:10]pfV
0018 _aloneD:
0018 .blkb 4
001C .dbsym s aloneD _aloneD A[4:4]c
.area func_lit
0000 4C00 PL_light_9: .word `_light_9
0002 4500 PL_light_8: .word `_light_8
0004 3D00 PL_light_7: .word `_light_7
0006 3500 PL_light_6: .word `_light_6
0008 2B00 PL_light_5: .word `_light_5
000A 2100 PL_light_4: .word `_light_4
000C 1700 PL_light_3: .word `_light_3
000E 0D00 PL_light_2: .word `_light_2
0010 0500 PL_light_1: .word `_light_1
0012 0000 PL_light_0: .word `_light_0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -