📄 adc.lis
字号:
010C .dbline 0 ; func end
010C 0895 ret
010E .dbend
.area vector(rom, abs)
.org 56
0038 0C948700 jmp _adc_isr
.area text(rom, con, rel)
010E .dbfile F:\file\数控电源3\ad_da\cfile\adc.c
010E .dbfunc e adc_isr _adc_isr fV
010E ; temp -> R12,R13
010E ; sum -> R10,R11
010E ; i -> R20
.even
010E _adc_isr::
010E 0A92 st -y,R0
0110 1A92 st -y,R1
0112 2A92 st -y,R2
0114 3A92 st -y,R3
0116 4A92 st -y,R4
0118 5A92 st -y,R5
011A 6A92 st -y,R6
011C 7A92 st -y,R7
011E 8A92 st -y,R8
0120 9A92 st -y,R9
0122 0A93 st -y,R16
0124 1A93 st -y,R17
0126 2A93 st -y,R18
0128 3A93 st -y,R19
012A 8A93 st -y,R24
012C 9A93 st -y,R25
012E AA93 st -y,R26
0130 BA93 st -y,R27
0132 EA93 st -y,R30
0134 FA93 st -y,R31
0136 0FB6 IN R0,63
0138 0A92 st -y,R0
013A 0E940000 xcall push_xgset303C
013E .dbline -1
013E .dbline 57
013E ; }
013E ;
013E ; /******************************************************************************/
013E ;
013E ; /******************************************************************************/
013E ; //ADC完成中断
013E ; //#pragma vector = interrupt_handler adc_isr:iv_ADC
013E ; // define the interrupt handler
013E ;
013E ; #pragma interrupt_handler adc_isr:15
013E ; void adc_isr(void)
013E ; {
013E .dbline 59
013E ; unsigned char i;
013E ; unsigned int temp,sum=0;
013E AA24 clr R10
0140 BB24 clr R11
0142 .dbline 60
0142 ; temp=ADCL;
0142 C4B0 in R12,0x4
0144 DD24 clr R13
0146 .dbline 61
0146 ; temp=temp+ADCH*256;
0146 25B1 in R18,0x5
0148 3327 clr R19
014A 00E0 ldi R16,256
014C 11E0 ldi R17,1
014E 0E940000 xcall empy16s
0152 C00E add R12,R16
0154 D11E adc R13,R17
0156 .dbline 62
0156 ; for(i=1;i<MaxAdcBufSize-1;i++)
0156 41E0 ldi R20,1
0158 1EC0 xjmp L10
015A L7:
015A .dbline 63
015A ; {
015A .dbline 64
015A ; ADCBuffer[i]=ADCBuffer[i+1];
015A 80E0 ldi R24,<_ADCBuffer
015C 90E0 ldi R25,>_ADCBuffer
015E E42F mov R30,R20
0160 FF27 clr R31
0162 3196 adiw R30,1
0164 EE0F lsl R30
0166 FF1F rol R31
0168 E80F add R30,R24
016A F91F adc R31,R25
016C 2080 ldd R2,z+0
016E 3180 ldd R3,z+1
0170 E42F mov R30,R20
0172 FF27 clr R31
0174 EE0F lsl R30
0176 FF1F rol R31
0178 E80F add R30,R24
017A F91F adc R31,R25
017C 3182 std z+1,R3
017E 2082 std z+0,R2
0180 .dbline 65
0180 ; sum+=ADCBuffer[i];
0180 E42F mov R30,R20
0182 FF27 clr R31
0184 EE0F lsl R30
0186 FF1F rol R31
0188 E80F add R30,R24
018A F91F adc R31,R25
018C 2080 ldd R2,z+0
018E 3180 ldd R3,z+1
0190 A20C add R10,R2
0192 B31C adc R11,R3
0194 .dbline 66
0194 ; }
0194 L8:
0194 .dbline 62
0194 4395 inc R20
0196 L10:
0196 .dbline 62
0196 4830 cpi R20,8
0198 00F3 brlo L7
019A X0:
019A .dbline 67
019A ; ADCBuffer[MaxAdcBufSize-1]=temp;
019A D0921300 sts _ADCBuffer+16+1,R13
019E C0921200 sts _ADCBuffer+16,R12
01A2 .dbline 68
01A2 ; sum+=ADCBuffer[MaxAdcBufSize-1];
01A2 20901200 lds R2,_ADCBuffer+16
01A6 30901300 lds R3,_ADCBuffer+16+1
01AA A20C add R10,R2
01AC B31C adc R11,R3
01AE .dbline 69
01AE ; ADCBuffer[0]=(sum>>AdcBufStep);
01AE 1501 movw R2,R10
01B0 3694 lsr R3
01B2 2794 ror R2
01B4 3694 lsr R3
01B6 2794 ror R2
01B8 3694 lsr R3
01BA 2794 ror R2
01BC 30920300 sts _ADCBuffer+1,R3
01C0 20920200 sts _ADCBuffer,R2
01C4 .dbline 71
01C4 ;
01C4 ; ad_result();
01C4 1DDF xcall _ad_result
01C6 .dbline 73
01C6 ;
01C6 ; ADMUX|=(adc_mux&0x1f)|(1<<REFS0);
01C6 80910000 lds R24,_adc_mux
01CA 8F71 andi R24,31
01CC 8064 ori R24,64
01CE 27B0 in R2,0x7
01D0 282A or R2,R24
01D2 27B8 out 0x7,R2
01D4 .dbline 74
01D4 ; ADCSRA|=(1<<ADSC);//启动AD转换
01D4 369A sbi 0x6,6
01D6 .dbline -2
01D6 L6:
01D6 .dbline 0 ; func end
01D6 0E940000 xcall pop_xgset303C
01DA 0990 ld R0,y+
01DC 0FBE OUT 63,R0
01DE F991 ld R31,y+
01E0 E991 ld R30,y+
01E2 B991 ld R27,y+
01E4 A991 ld R26,y+
01E6 9991 ld R25,y+
01E8 8991 ld R24,y+
01EA 3991 ld R19,y+
01EC 2991 ld R18,y+
01EE 1991 ld R17,y+
01F0 0991 ld R16,y+
01F2 9990 ld R9,y+
01F4 8990 ld R8,y+
01F6 7990 ld R7,y+
01F8 6990 ld R6,y+
01FA 5990 ld R5,y+
01FC 4990 ld R4,y+
01FE 3990 ld R3,y+
0200 2990 ld R2,y+
0202 1990 ld R1,y+
0204 0990 ld R0,y+
0206 1895 reti
0208 .dbsym r temp 12 i
0208 .dbsym r sum 10 i
0208 .dbsym r i 20 c
0208 .dbend
.area bss(ram, con, rel)
0000 .dbfile F:\file\数控电源3\ad_da\cfile\adc.c
0000 _addata:
0000 .blkb 2
0002 .dbsym s addata _addata i
0002 _ADCBuffer:
0002 .blkb 18
0014 .dbsym s ADCBuffer _ADCBuffer A[18:9]i
.area lit(rom, con, rel)
0000 L4:
0000 0000C842 .word 0x0,0x42c8
0004 L3:
0004 00007A44 .word 0x0,0x447a
.area data(ram, con, rel)
0001 .dbfile F:\file\数控电源3\ad_da\cfile\adc.c
0001 L2:
0001 .blkb 8
.area idata
0001 302E303030205600 .byte 48,46,48,48,48,32,'V,0
.area data(ram, con, rel)
0009 .dbfile F:\file\数控电源3\ad_da\cfile\adc.c
0009 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -