📄 adc-led.lis
字号:
00C0 .dbline -1
00C0 .dbline 92
00C0 ;
00C0 ;
00C0 ;
00C0 ;
00C0 ; //自定义函数
00C0 ; void delay(void)
00C0 ; {
00C0 .dbline 94
00C0 2227 clr R18
00C2 3327 clr R19
00C4 02C0 rjmp L18
00C6 L15:
00C6 .dbline 94
00C6 L16:
00C6 .dbline 94
00C6 2F5F subi R18,255 ; offset = 1
00C8 3F4F sbci R19,255
00CA L18:
00CA .dbline 94
00CA ; unsigned int i,j,z;
00CA ; for(i=0;i<10000;i++);
00CA 2031 cpi R18,16
00CC E7E2 ldi R30,39
00CE 3E07 cpc R19,R30
00D0 D0F3 brlo L15
00D2 .dbline 95
00D2 ; { for(j=0;j<10000;j++)
00D2 .dbline 95
00D2 0027 clr R16
00D4 1127 clr R17
00D6 0BC0 rjmp L22
00D8 L19:
00D8 .dbline 96
00D8 .dbline 96
00D8 4427 clr R20
00DA 5527 clr R21
00DC 02C0 rjmp L26
00DE L23:
00DE .dbline 96
00DE L24:
00DE .dbline 96
00DE 4F5F subi R20,255 ; offset = 1
00E0 5F4F sbci R21,255
00E2 L26:
00E2 .dbline 96
00E2 4436 cpi R20,100
00E4 E0E0 ldi R30,0
00E6 5E07 cpc R21,R30
00E8 D0F3 brlo L23
00EA .dbline 96
00EA L20:
00EA .dbline 95
00EA 0F5F subi R16,255 ; offset = 1
00EC 1F4F sbci R17,255
00EE L22:
00EE .dbline 95
00EE 0031 cpi R16,16
00F0 E7E2 ldi R30,39
00F2 1E07 cpc R17,R30
00F4 88F3 brlo L19
00F6 .dbline 97
00F6 ; { for(z=0;z<100;z++);}
00F6 ; }
00F6 .dbline -2
00F6 .dbline 98
00F6 ; }
00F6 L14:
00F6 00D0 rcall pop_gset1
00F8 .dbline 0 ; func end
00F8 0895 ret
00FA .dbsym r j 16 i
00FA .dbsym r i 18 i
00FA .dbsym r z 20 i
00FA .dbend
00FA .dbfunc e main _main fV
00FA ; temp -> R14,R15
00FA ; num4 -> R22
00FA ; num3 -> R10
00FA ; num2 -> R20
00FA ; num1 -> y+2
00FA ; i -> R12
00FA ; data -> y+0
.even
00FA _main::
00FA 2397 sbiw R28,3
00FC .dbline -1
00FC .dbline 101
00FC ;
00FC ; void main(void)
00FC ; {
00FC .dbline 103
00FC ; char i;
00FC ; unsigned int data=0,temp;
00FC 0024 clr R0
00FE 1124 clr R1
0100 1982 std y+1,R1
0102 0882 std y+0,R0
0104 .dbline 104
0104 ; char num1=0,num2=0,num3=0,num4=0;
0104 0A82 std y+2,R0
0106 .dbline 104
0106 4427 clr R20
0108 .dbline 104
0108 AA24 clr R10
010A .dbline 104
010A 6627 clr R22
010C .dbline 105
010C ; init_devices();
010C CEDF rcall _init_devices
010E .dbline 107
010E ;
010E ; for(i=0;i<=9;i++)
010E CC24 clr R12
0110 0BC0 rjmp L31
0112 L28:
0112 .dbline 108
0112 .dbline 108
0112 80E0 ldi R24,<_num
0114 90E0 ldi R25,>_num
0116 EC2D mov R30,R12
0118 FF27 clr R31
011A E80F add R30,R24
011C F91F adc R31,R25
011E 2080 ldd R2,z+0
0120 20920100 sts _lednum1,R2
0124 .dbline 109
0124 CCDF rcall _delay
0126 .dbline 110
0126 L29:
0126 .dbline 107
0126 C394 inc R12
0128 L31:
0128 .dbline 107
0128 89E0 ldi R24,9
012A 8C15 cp R24,R12
012C 90F7 brsh L28
012E .dbline 112
012E ; { lednum1 = num[i];
012E ; delay();
012E ; }
012E ;
012E ; lednum1 = num[0];
012E 20900500 lds R2,_num
0132 20920100 sts _lednum1,R2
0136 .dbline 113
0136 ; lednum2 = num[0];
0136 20920200 sts _lednum2,R2
013A .dbline 114
013A ; lednum3 = num[0];
013A 20920300 sts _lednum3,R2
013E .dbline 115
013E ; lednum4 = num[0];
013E 20920400 sts _lednum4,R2
0142 .dbline 117
0142 ;
0142 ; delay();
0142 BDDF rcall _delay
0144 .dbline 118
0144 ; delay();
0144 BCDF rcall _delay
0146 6CC0 rjmp L33
0148 L32:
0148 .dbline 120
0148 ; while(1)
0148 ; { ADMUX = 0x40; //选择通道零
0148 .dbline 120
0148 80E4 ldi R24,64
014A 87B9 out 0x7,R24
014C .dbline 121
014C ; ADCSRA = 0xC7;
014C 87EC ldi R24,199
014E 86B9 out 0x6,R24
0150 L35:
0150 .dbline 123
0150 L36:
0150 .dbline 123
0150 86B1 in R24,0x6
0152 8061 ori R24,16
0154 E9F3 breq L35
0156 .dbline 124
0156 3498 cbi 0x6,4
0158 .dbline 126
0158 24B0 in R2,0x4
015A 3324 clr R3
015C 3982 std y+1,R3
015E 2882 std y+0,R2
0160 .dbline 127
0160 E5B0 in R14,0x5
0162 FF24 clr R15
0164 FE2C mov R15,R14
0166 EE24 clr R14
0168 .dbline 128
0168 0101 movw R0,R2
016A 0E0C add R0,R14
016C 1F1C adc R1,R15
016E 1982 std y+1,R1
0170 0882 std y+0,R0
0172 .dbline 130
0172 28EE ldi R18,1000
0174 33E0 ldi R19,3
0176 8001 movw R16,R0
0178 00D0 rcall div16u
017A 602F mov R22,R16
017C .dbline 131
017C 28EE ldi R18,1000
017E 33E0 ldi R19,3
0180 0881 ldd R16,y+0
0182 1981 ldd R17,y+1
0184 00D0 rcall div16u
0186 9801 movw R18,R16
0188 08EE ldi R16,1000
018A 13E0 ldi R17,3
018C 00D0 rcall empy16s
018E 1801 movw R2,R16
0190 0881 ldd R16,y+0
0192 1981 ldd R17,y+1
0194 0219 sub R16,R2
0196 1309 sbc R17,R3
0198 24E6 ldi R18,100
019A 30E0 ldi R19,0
019C 00D0 rcall div16u
019E A02E mov R10,R16
01A0 .dbline 132
01A0 24E6 ldi R18,100
01A2 30E0 ldi R19,0
01A4 0881 ldd R16,y+0
01A6 1981 ldd R17,y+1
01A8 00D0 rcall div16u
01AA 9801 movw R18,R16
01AC 04E6 ldi R16,100
01AE 10E0 ldi R17,0
01B0 00D0 rcall empy16s
01B2 1801 movw R2,R16
01B4 0881 ldd R16,y+0
01B6 1981 ldd R17,y+1
01B8 0219 sub R16,R2
01BA 1309 sbc R17,R3
01BC 2AE0 ldi R18,10
01BE 30E0 ldi R19,0
01C0 00D0 rcall div16u
01C2 402F mov R20,R16
01C4 .dbline 133
01C4 2AE0 ldi R18,10
01C6 30E0 ldi R19,0
01C8 0881 ldd R16,y+0
01CA 1981 ldd R17,y+1
01CC 00D0 rcall div16u
01CE 9801 movw R18,R16
01D0 0AE0 ldi R16,10
01D2 10E0 ldi R17,0
01D4 00D0 rcall empy16s
01D6 4880 ldd R4,y+0
01D8 5980 ldd R5,y+1
01DA 401A sub R4,R16
01DC 510A sbc R5,R17
01DE 4A82 std y+2,R4
01E0 .dbline 136
01E0 80E0 ldi R24,<_num
01E2 90E0 ldi R25,>_num
01E4 E62F mov R30,R22
01E6 FF27 clr R31
01E8 E80F add R30,R24
01EA F91F adc R31,R25
01EC 2080 ldd R2,z+0
01EE 20920400 sts _lednum4,R2
01F2 .dbline 137
01F2 EA2D mov R30,R10
01F4 FF27 clr R31
01F6 E80F add R30,R24
01F8 F91F adc R31,R25
01FA 2080 ldd R2,z+0
01FC 20920300 sts _lednum3,R2
0200 .dbline 138
0200 E42F mov R30,R20
0202 FF27 clr R31
0204 E80F add R30,R24
0206 F91F adc R31,R25
0208 2080 ldd R2,z+0
020A 20920200 sts _lednum2,R2
020E .dbline 139
020E E42D mov R30,R4
0210 FF27 clr R31
0212 E80F add R30,R24
0214 F91F adc R31,R25
0216 2080 ldd R2,z+0
0218 20920100 sts _lednum1,R2
021C .dbline 141
021C 369A sbi 0x6,6
021E .dbline 142
021E 4FDF rcall _delay
0220 .dbline 144
0220 L33:
0220 .dbline 119
0220 93CF rjmp L32
0222 X0:
0222 .dbline -2
0222 .dbline 145
0222 ;
0222 ; while((ADCSRA | 0x10)==0);
0222 ; ADCSRA &=~0x10;
0222 ;
0222 ; data = ADCL;
0222 ; temp =ADCH<<8;
0222 ; data = data +temp;
0222 ;
0222 ; num4 = data/1000;
0222 ; num3 = (data- data/1000*1000)/100;
0222 ; num2 = (data-data/100*100)/10;
0222 ; num1= data-data/10*10;
0222 ;
0222 ;
0222 ; lednum4 = num[num4];
0222 ; lednum3 = num[num3];
0222 ; lednum2 = num[num2];
0222 ; lednum1 = num[num1];
0222 ;
0222 ; ADCSRA |= 0x40;
0222 ; delay();
0222 ;
0222 ; }
0222 ; }
0222 L27:
0222 2396 adiw R28,3
0224 .dbline 0 ; func end
0224 0895 ret
0226 .dbsym r temp 14 i
0226 .dbsym r num4 22 c
0226 .dbsym r num3 10 c
0226 .dbsym r num2 20 c
0226 .dbsym l num1 2 c
0226 .dbsym r i 12 c
0226 .dbsym l data 0 i
0226 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -