⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adc.lis

📁 ATmega16-ad1602
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -