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

📄 main.lis

📁 原创
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 00E4           ; void adc_isr(void)
 00E4           ; {
 00E4                   .dbline -2
 00E4           L10:
 00E4                   .dbline 0 ; func end
 00E4 1895              reti
 00E6                   .dbend
 00E6                   .dbfunc e adc_init _adc_init fV
                        .even
 00E6           _adc_init::
 00E6                   .dbline -1
 00E6                   .dbline 178
 00E6           ;  //conversion complete, read value (int) using...
 00E6           ;  // value=ADCL;            //Read 8 low bits first (important)
 00E6           ;  // value|=(int)ADCH << 8; //read 2 high bits and shift into top byte
 00E6           ; }
 00E6           ; 
 00E6           ; //ADC initialize
 00E6           ; // Conversion time: 150uS
 00E6           ; void adc_init(void)
 00E6           ; {
 00E6                   .dbline 179
 00E6           ;  ADCSR = 0x00; //disable adc
 00E6 2224              clr R2
 00E8 26B8              out 0x6,R2
 00EA                   .dbline 180
 00EA           ;  ADMUX = 0xc0; //select adc input 0
 00EA 80EC              ldi R24,192
 00EC 87B9              out 0x7,R24
 00EE                   .dbline 182
 00EE           ; // ACSR  = 0x80;
 00EE           ;  ADCSRA = 0x87;
 00EE 87E8              ldi R24,135
 00F0 86B9              out 0x6,R24
 00F2                   .dbline -2
 00F2           L11:
 00F2                   .dbline 0 ; func end
 00F2 0895              ret
 00F4                   .dbend
 00F4                   .dbfunc e init_devices _init_devices fV
                        .even
 00F4           _init_devices::
 00F4                   .dbline -1
 00F4                   .dbline 187
 00F4           ; }
 00F4           ; 
 00F4           ; //call this routine to initialize all peripherals
 00F4           ; void init_devices(void)
 00F4           ; {
 00F4                   .dbline 189
 00F4           ;  //stop errant interrupts until set up
 00F4           ;  CLI(); //disable all interrupts
 00F4 F894              cli
 00F6                   .dbline 190
 00F6           ;  port_init();
 00F6 84DF              xcall _port_init
 00F8                   .dbline 191
 00F8           ;  timer0_init();
 00F8 B8DF              xcall _timer0_init
 00FA                   .dbline 192
 00FA           ;  timer1_init();
 00FA A1DF              xcall _timer1_init
 00FC                   .dbline 193
 00FC           ;  InitUART( 71 ); 
 00FC 07E4              ldi R16,71
 00FE 0E940000          xcall _InitUART
 0102                   .dbline 194
 0102           ;  TempInit();
 0102 0E940000          xcall _TempInit
 0106                   .dbline 195
 0106           ;  adc_init();
 0106 EFDF              xcall _adc_init
 0108                   .dbline 197
 0108           ;  
 0108           ;  MCUCR = 0x02;
 0108 82E0              ldi R24,2
 010A 85BF              out 0x35,R24
 010C                   .dbline 198
 010C           ;  GICR  = 0x00;
 010C 2224              clr R2
 010E 2BBE              out 0x3b,R2
 0110                   .dbline 199
 0110           ;  TIMSK = 0x11; //timer interrupt sources
 0110 81E1              ldi R24,17
 0112 89BF              out 0x39,R24
 0114                   .dbline 200
 0114           ;  SEI(); //re-enable interrupts
 0114 7894              sei
 0116                   .dbline -2
 0116           L12:
 0116                   .dbline 0 ; func end
 0116 0895              ret
 0118                   .dbend
 0118                   .dbfunc e read_adc _read_adc fi
                        .even
 0118           _read_adc::
 0118                   .dbline -1
 0118                   .dbline 212
 0118           ;  //all peripherals are now initialized
 0118           ; 
 0118           ; 
 0118           ;    
 0118           ; 
 0118           ;  
 0118           ; 
 0118           ; }
 0118           ; 
 0118           ; 
 0118           ; unsigned int read_adc(void)//查询方式读取ADC单端通道
 0118           ;    {
 0118                   .dbline 213
 0118           ;       ADMUX=(0xc0|0x00); //adc_input:单端通道 0x00~0x07,0x1E,0x1F
 0118 80EC              ldi R24,192
 011A 87B9              out 0x7,R24
 011C                   .dbline 215
 011C           ;       //0xc0:选择内部2.56V参考电压
 011C           ;       ADCSRA|=(1<<ADSC); //启动AD转换
 011C 369A              sbi 0x6,6
 011E           L14:
 011E                   .dbline 216
 011E           L15:
 011E                   .dbline 216
 011E           ;       while ((ADCSRA&(1<<ADIF))==0); 
 011E 349B              sbis 0x6,4
 0120 FECF              rjmp L14
 0122                   .dbline 217
 0122           ;       ADCSRA|=(1<<ADIF); //写1清除标志位
 0122 349A              sbi 0x6,4
 0124                   .dbline 218
 0124           ;       return ADC; //ADC=ADCH:ADCL
 0124 04B1              in R16,0x4
 0126 15B1              in R17,0x5
 0128                   .dbline -2
 0128           L13:
 0128                   .dbline 0 ; func end
 0128 0895              ret
 012A                   .dbend
 012A                   .dbfunc e AdAverage _AdAverage fi
 012A           ;            sum -> y+68
 012A           ;          count -> y+72
 012A           ;           temp -> R10,R11
 012A           ;              j -> R12
 012A           ;      value_buf -> y+0
 012A           ;              i -> R14
                        .even
 012A           _AdAverage::
 012A 0E940000          xcall push_gset5x
 012E EF97              sbiw R28,63
 0130 2A97              sbiw R28,10  ; offset = 73
 0132                   .dbline -1
 0132                   .dbline 224
 0132           ;    }
 0132           ; 
 0132           ;    #define N (34)
 0132           ; 
 0132           ; unsigned int AdAverage(void)
 0132           ; {
 0132                   .dbline 228
 0132           ;       unsigned char count,i,j;
 0132           ;       unsigned int value_buf[N];
 0132           ;       unsigned int temp;
 0132           ;       unsigned long sum=0;
 0132 80E0              ldi R24,0
 0134 90E0              ldi R25,0
 0136 A0E0              ldi R26,0
 0138 B0E0              ldi R27,0
 013A FE01              movw R30,R28
 013C EC5B              subi R30,188  ; addi 68
 013E FF4F              sbci R31,255
 0140 8083              std z+0,R24
 0142 9183              std z+1,R25
 0144 A283              std z+2,R26
 0146 B383              std z+3,R27
 0148                   .dbline 229
 0148           ;       for (count=0;count<N;count++)
 0148 0024              clr R0
 014A FE01              movw R30,R28
 014C E85B              subi R30,184  ; addi 72
 014E FF4F              sbci R31,255
 0150 0082              std z+0,R0
 0152 17C0              xjmp L21
 0154           L18:
 0154                   .dbline 230
 0154                   .dbline 231
 0154 E1DF              xcall _read_adc
 0156 1801              movw R2,R16
 0158 82E0              ldi R24,2
 015A FE01              movw R30,R28
 015C E85B              subi R30,184  ; addi 72
 015E FF4F              sbci R31,255
 0160 0080              ldd R0,z+0
 0162 809D              mul R24,R0
 0164 F001              movw R30,R0
 0166 CE01              movw R24,R28
 0168 E80F              add R30,R24
 016A F91F              adc R31,R25
 016C 3182              std z+1,R3
 016E 2082              std z+0,R2
 0170                   .dbline 233
 0170           L19:
 0170                   .dbline 229
 0170 FE01              movw R30,R28
 0172 E85B              subi R30,184  ; addi 72
 0174 FF4F              sbci R31,255
 0176 0080              ldd R0,z+0
 0178 0394              inc R0
 017A FE01              movw R30,R28
 017C E85B              subi R30,184  ; addi 72
 017E FF4F              sbci R31,255
 0180 0082              std z+0,R0
 0182           L21:
 0182                   .dbline 229
 0182 FE01              movw R30,R28
 0184 E85B              subi R30,184  ; addi 72
 0186 FF4F              sbci R31,255
 0188 8081              ldd R24,z+0
 018A 8232              cpi R24,34
 018C 18F3              brlo L18
 018E                   .dbline 234
 018E           ;       {
 018E           ;               value_buf[count] = read_adc();
 018E           ; 
 018E           ;       }
 018E           ;       for (j=0;j<N-1;j++)
 018E CC24              clr R12
 0190 3BC0              xjmp L25
 0192           L22:
 0192                   .dbline 235
 0192           ;       {
 0192                   .dbline 236
 0192           ;               for (i=0;i<N-j;i++)
 0192 EE24              clr R14
 0194 33C0              xjmp L29
 0196           L26:
 0196                   .dbline 237
 0196           ;               {
 0196                   .dbline 238
 0196           ;                       if ( value_buf[i]>value_buf[i+1] )
 0196 82E0              ldi R24,2
 0198 8E9D              mul R24,R14
 019A CE01              movw R24,R28
 019C 0296              adiw R24,2
 019E F001              movw R30,R0
 01A0 E80F              add R30,R24
 01A2 F91F              adc R31,R25
 01A4 2080              ldd R2,z+0
 01A6 3180              ldd R3,z+1
 01A8 CE01              movw R24,R28
 01AA F001              movw R30,R0
 01AC E80F              add R30,R24
 01AE F91F              adc R31,R25
 01B0 4080              ldd R4,z+0
 01B2 5180              ldd R5,z+1
 01B4 2414              cp R2,R4
 01B6 3504              cpc R3,R5
 01B8 00F5              brsh L30
 01BA                   .dbline 239
 01BA           ;                       {
 01BA                   .dbline 240
 01BA           ;                               temp = value_buf[i];
 01BA 82E0              ldi R24,2
 01BC 8E9D              mul R24,R14
 01BE F001              movw R30,R0
 01C0 CE01              movw R24,R28
 01C2 E80F              add R30,R24
 01C4 F91F              adc R31,R25
 01C6 A080              ldd R10,z+0
 01C8 B180              ldd R11,z+1
 01CA                   .dbline 241
 01CA           ;                               value_buf[i] = value_buf[i+1]; 
 01CA 82E0              ldi R24,2
 01CC 8E9D              mul R24,R14
 01CE CE01              movw R24,R28
 01D0 0296              adiw R24,2
 01D2 F001              movw R30,R0
 01D4 E80F              add R30,R24
 01D6 F91F              adc R31,R25
 01D8 2080              ldd R2,z+0
 01DA 3180              ldd R3,z+1
 01DC CE01              movw R24,R28
 01DE F001              movw R30,R0
 01E0 E80F              add R30,R24
 01E2 F91F              adc R31,R25
 01E4 3182              std z+1,R3
 01E6 2082              std z+0,R2
 01E8                   .dbline 242
 01E8           ;                               value_buf[i+1] = temp;
 01E8 82E0              ldi R24,2
 01EA 8E9D              mul R24,R14
 01EC F001              movw R30,R0
 01EE CE01              movw R24,R28
 01F0 0296              adiw R24,2
 01F2 E80F              add R30,R24
 01F4 F91F              adc R31,R25
 01F6 B182              std z+1,R11
 01F8 A082              std z+0,R10
 01FA                   .dbline 243
 01FA           ;                       }
 01FA           L30:
 01FA                   .dbline 244
 01FA           L27:
 01FA                   .dbline 236
 01FA E394              inc R14
 01FC           L29:
 01FC                   .dbline 236
 01FC 82E2              ldi R24,34
 01FE 8C19              sub R24,R12
 0200 E816              cp R14,R24
 0202 08F4              brsh X0
 0204 C8CF              xjmp L26
 0206           X0:
 0206                   .dbline 245
 0206           L23:
 0206                   .dbline 234
 0206 C394              inc R12
 0208           L25:
 0208                   .dbline 234
 0208 8C2D              mov R24,R12
 020A 8132              cpi R24,33
 020C 08F4              brsh X1
 020E C1CF              xjmp L22
 0210           X1:
 0210                   .dbline 246
 0210           ;               }
 0210           ;       }
 0210           ;       for(count=1;count<N-1;count++)
 0210 0024              clr R0
 0212 0394              inc R0
 0214 FE01              movw R30,R28
 0216 E85B              subi R30,184  ; addi 72

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -