📄 adconv.lis
字号:
0132 02E0 ldi R16,2
0134 72DF xcall _CLRS
0136 .dbline 81
0136 ; }
0136 02C0 xjmp L32
0138 L31:
0138 .dbline 83
0138 ; else
0138 ; {
0138 .dbline 84
0138 ; SETB(DIO);
0138 02E0 ldi R16,2
013A 62DF xcall _SETB
013C .dbline 85
013C ; }
013C L32:
013C .dbline 86
013C ; SETB(CLK);
013C 01E0 ldi R16,1
013E 60DF xcall _SETB
0140 .dbline 87
0140 ; wait=4;
0140 84E0 ldi R24,4
0142 C82E mov R12,R24
0144 L33:
0144 .dbline 88
0144 L34:
0144 .dbline 88
0144 ; while(wait--);
0144 2C2C mov R2,R12
0146 3324 clr R3
0148 822D mov R24,R2
014A 8150 subi R24,1
014C C82E mov R12,R24
014E 2220 tst R2
0150 C9F7 brne L33
0152 .dbline 89
0152 ; CLRS(CLK);
0152 01E0 ldi R16,1
0154 62DF xcall _CLRS
0156 .dbline 90
0156 ; wait=4;
0156 84E0 ldi R24,4
0158 C82E mov R12,R24
015A L36:
015A .dbline 91
015A L37:
015A .dbline 91
015A 2C2C mov R2,R12
015C 3324 clr R3
015E 822D mov R24,R2
0160 8150 subi R24,1
0162 C82E mov R12,R24
0164 2220 tst R2
0166 C9F7 brne L36
0168 .dbline 92
0168 L28:
0168 .dbline 74
0168 0880 ldd R0,y+0
016A 0394 inc R0
016C 0882 std y+0,R0
016E L30:
016E .dbline 74
016E 8881 ldd R24,y+0
0170 8830 cpi R24,8
0172 C0F2 brlo L27
0174 .dbline 93
0174 ; while(wait--);
0174 ; }
0174 ; }
0174 L5:
0174 .dbline 94
0174 ; SETB(CS);
0174 0027 clr R16
0176 44DF xcall _SETB
0178 .dbline -2
0178 L3:
0178 2296 adiw R28,2
017A 0E940000 xcall pop_gset5
017E 2496 adiw R28,4
0180 .dbline 0 ; func end
0180 0895 ret
0182 .dbsym l DataPos 1 c
0182 .dbsym r datanum 14 c
0182 .dbsym r cToDIO 20 c
0182 .dbsym r iToDIO 10 i
0182 .dbsym l num 0 c
0182 .dbsym r transdata 22 i
0182 .dbsym r wait 12 c
0182 .dbsym l position 14 c
0182 .dbsym l Data 12 c
0182 .dbend
0182 .dbfunc e ADC_Conv _ADC_Conv fi
0182 ; temp1 -> R18,R19
0182 ; temp2 -> R16,R17
.even
0182 _ADC_Conv::
0182 .dbline -1
0182 .dbline 98
0182 ; }
0182 ;
0182 ; unsigned int ADC_Conv(void)
0182 ; {
0182 .dbline 100
0182 ; unsigned int temp1,temp2;
0182 ; temp1=(unsigned int)ADCL;
0182 24B1 in R18,0x4
0184 3327 clr R19
0186 .dbline 101
0186 ; temp2=(unsigned int)ADCH;
0186 05B1 in R16,0x5
0188 1127 clr R17
018A .dbline 102
018A ; temp2=(temp2<<8)+temp1;
018A 1801 movw R2,R16
018C 322C mov R3,R2
018E 2224 clr R2
0190 220E add R2,R18
0192 331E adc R3,R19
0194 8101 movw R16,R2
0196 .dbline 103
0196 ; return temp2;
0196 .dbline -2
0196 L39:
0196 .dbline 0 ; func end
0196 0895 ret
0198 .dbsym r temp1 18 i
0198 .dbsym r temp2 16 i
0198 .dbend
0198 .dbfunc e main _main fV
0198 ; total -> y+0
0198 ; num -> y+4
0198 ; count -> R12,R13
0198 ; j -> R14,R15
0198 ; i -> R10,R11
.even
0198 _main::
0198 2597 sbiw R28,5
019A .dbline -1
019A .dbline 108
019A ; }
019A ;
019A ;
019A ; void main()
019A ; {
019A .dbline 111
019A ; unsigned int count,i;
019A ; unsigned int j;
019A ; unsigned long total=0;
019A 40E0 ldi R20,0
019C 50E0 ldi R21,0
019E 60E0 ldi R22,0
01A0 70E0 ldi R23,0
01A2 FE01 movw R30,R28
01A4 4083 std z+0,R20
01A6 5183 std z+1,R21
01A8 6283 std z+2,R22
01AA 7383 std z+3,R23
01AC .dbline 112
01AC ; unsigned char num=0;
01AC 0024 clr R0
01AE 0C82 std y+4,R0
01B0 .dbline 113
01B0 ; ADMUX=0x00;
01B0 2224 clr R2
01B2 27B8 out 0x7,R2
01B4 .dbline 114
01B4 ; ADCSRA=0xE6;
01B4 86EE ldi R24,230
01B6 86B9 out 0x6,R24
01B8 .dbline 117
01B8 ;
01B8 ;
01B8 ; Display(0xA4,0xff);
01B8 2FEF ldi R18,255
01BA 04EA ldi R16,164
01BC 3DDF xcall _Display
01BE 66C0 xjmp L42
01C0 L41:
01C0 .dbline 119
01C0 ; while(1)
01C0 ; {
01C0 .dbline 121
01C0 ;
01C0 ; count=20000;
01C0 80E2 ldi R24,20000
01C2 9EE4 ldi R25,78
01C4 6C01 movw R12,R24
01C6 L44:
01C6 .dbline 122
01C6 L45:
01C6 .dbline 122
01C6 ; while(count--);
01C6 1601 movw R2,R12
01C8 C101 movw R24,R2
01CA 0197 sbiw R24,1
01CC 6C01 movw R12,R24
01CE 2220 tst R2
01D0 D1F7 brne L44
01D2 3320 tst R3
01D4 C1F7 brne L44
01D6 X3:
01D6 .dbline 123
01D6 ; i=ADC_Conv();
01D6 D5DF xcall _ADC_Conv
01D8 5801 movw R10,R16
01DA .dbline 124
01DA ; total+=i;
01DA 1501 movw R2,R10
01DC 4424 clr R4
01DE 5524 clr R5
01E0 FE01 movw R30,R28
01E2 6080 ldd R6,z+0
01E4 7180 ldd R7,z+1
01E6 8280 ldd R8,z+2
01E8 9380 ldd R9,z+3
01EA 620C add R6,R2
01EC 731C adc R7,R3
01EE 841C adc R8,R4
01F0 951C adc R9,R5
01F2 FE01 movw R30,R28
01F4 6082 std z+0,R6
01F6 7182 std z+1,R7
01F8 8282 std z+2,R8
01FA 9382 std z+3,R9
01FC .dbline 125
01FC ; num++;
01FC 0C80 ldd R0,y+4
01FE 0394 inc R0
0200 0C82 std y+4,R0
0202 .dbline 126
0202 ; if(num>=10)
0202 802D mov R24,R0
0204 8A30 cpi R24,10
0206 08F4 brsh X6
0208 41C0 xjmp L47
020A X6:
020A .dbline 127
020A ; {
020A .dbline 128
020A ; i=total/10;
020A 4AE0 ldi R20,10
020C 50E0 ldi R21,0
020E 60E0 ldi R22,0
0210 70E0 ldi R23,0
0212 FE01 movw R30,R28
0214 2080 ldd R2,z+0
0216 3180 ldd R3,z+1
0218 4280 ldd R4,z+2
021A 5380 ldd R5,z+3
021C 7A93 st -y,R23
021E 6A93 st -y,R22
0220 5A93 st -y,R21
0222 4A93 st -y,R20
0224 8101 movw R16,R2
0226 9201 movw R18,R4
0228 0E940000 xcall div32u
022C 5801 movw R10,R16
022E .dbline 129
022E ; num=1;
022E 0024 clr R0
0230 0394 inc R0
0232 0C82 std y+4,R0
0234 .dbline 130
0234 ; total=0;
0234 40E0 ldi R20,0
0236 50E0 ldi R21,0
0238 60E0 ldi R22,0
023A 70E0 ldi R23,0
023C FE01 movw R30,R28
023E 4083 std z+0,R20
0240 5183 std z+1,R21
0242 6283 std z+2,R22
0244 7383 std z+3,R23
0246 .dbline 131
0246 ; for(j=0;j<4;j++)
0246 EE24 clr R14
0248 FF24 clr R15
024A 1BC0 xjmp L52
024C L49:
024C .dbline 132
024C ; {
024C .dbline 133
024C ; Display(i%10,j+1);
024C 2E2D mov R18,R14
024E 2F5F subi R18,255 ; offset = 1
0250 3F4F sbci R19,255
0252 8AE0 ldi R24,10
0254 90E0 ldi R25,0
0256 2F93 push R18
0258 3F93 push R19
025A 9C01 movw R18,R24
025C 8501 movw R16,R10
025E 0E940000 xcall mod16u
0262 3F91 pop R19
0264 2F91 pop R18
0266 E8DE xcall _Display
0268 .dbline 134
0268 ; if(i!=0)
0268 AA20 tst R10
026A 11F4 brne X4
026C BB20 tst R11
026E 31F0 breq L53
0270 X4:
0270 .dbline 135
0270 ; {
0270 .dbline 136
0270 ; i=i/10;
0270 2AE0 ldi R18,10
0272 30E0 ldi R19,0
0274 8501 movw R16,R10
0276 0E940000 xcall div16u
027A 5801 movw R10,R16
027C .dbline 137
027C ; }
027C L53:
027C .dbline 138
027C L50:
027C .dbline 131
027C C701 movw R24,R14
027E 0196 adiw R24,1
0280 7C01 movw R14,R24
0282 L52:
0282 .dbline 131
0282 C701 movw R24,R14
0284 8430 cpi R24,4
0286 E0E0 ldi R30,0
0288 9E07 cpc R25,R30
028A 00F3 brlo L49
028C .dbline 139
028C ; }
028C ; }
028C L47:
028C .dbline 140
028C L42:
028C .dbline 118
028C 99CF xjmp L41
028E X5:
028E .dbline -2
028E L40:
028E 2596 adiw R28,5
0290 .dbline 0 ; func end
0290 0895 ret
0292 .dbsym l total 0 l
0292 .dbsym l num 4 c
0292 .dbsym r count 12 i
0292 .dbsym r j 14 i
0292 .dbsym r i 10 i
0292 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -