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

📄 adc.lis

📁 ATmega16-ad1602
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module adc.c
                        .area text(rom, con, rel)
 0000                   .dbfile cfile\adc.c
                        .area data(ram, con, rel)
 0000                   .dbfile cfile\adc.c
 0000           _adc_mux::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile cfile\adc.c
 0001                   .dbfile F:\file\数控电源3\ad_da\cfile\adc.c
 0001                   .dbsym e adc_mux _adc_mux c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\file\数控电源3\ad_da\cfile\adc.c
 0000                   .dbfunc e ad_result _ad_result fV
 0000           ;           Vref -> R22,R23
 0000           ;              j -> y+2
 0000           ;         value1 -> R20,R21
 0000           ;          count -> R10,R11
                        .even
 0000           _ad_result::
 0000 0E940000          xcall push_xgsetF00C
 0004 2697              sbiw R28,6
 0006                   .dbline -1
 0006                   .dbline 12
 0006           ; #define ADC_C
 0006           ; #include "includes.h"
 0006           ; #define MaxAdcBufSize 9
 0006           ; #define AdcBufStep 3 //为了算巴士均值
 0006           ; 
 0006           ; static volatile unsigned int ADCBuffer[MaxAdcBufSize];
 0006           ; static volatile unsigned int addata;
 0006           ; unsigned char  adc_mux = 0x00;//选择通道:ADC0
 0006           ; 
 0006           ; 
 0006           ; void ad_result(void)
 0006           ; {    
 0006                   .dbline 15
 0006           ;        float j;
 0006           ;        unsigned int count;
 0006           ;        unsigned int Vref=50000; 
 0006 60E5              ldi R22,50000
 0008 73EC              ldi R23,195
 000A                   .dbline 16
 000A           ;      unsigned char *value1 = "0.000 V";        
 000A 40E0              ldi R20,<L2
 000C 50E0              ldi R21,>L2
 000E                   .dbline 19
 000E           ;      //addata=ADCL;
 000E           ;        //addata=addata+ADCH*256;
 000E           ;        addata=ADCBuffer[0];
 000E 20900200          lds R2,_ADCBuffer
 0012 30900300          lds R3,_ADCBuffer+1
 0016 30920100          sts _addata+1,R3
 001A 20920000          sts _addata,R2
 001E                   .dbline 22
 001E           ;                
 001E           ;      
 001E           ;        j = (float)(((float)((Vref/1024)))*addata)/1000.00;
 001E 2AE0              ldi R18,10
 0020 30E0              ldi R19,0
 0022 8B01              movw R16,R22
 0024 0E940000          xcall lsr16
 0028 0E940000          xcall uint2fp
 002C 1801              movw R2,R16
 002E 2901              movw R4,R18
 0030 00910000          lds R16,_addata
 0034 10910100          lds R17,_addata+1
 0038 0E940000          xcall uint2fp
 003C 3A93              st -y,R19
 003E 2A93              st -y,R18
 0040 1A93              st -y,R17
 0042 0A93              st -y,R16
 0044 8101              movw R16,R2
 0046 9201              movw R18,R4
 0048 0E940000          xcall fpmule2
 004C 1801              movw R2,R16
 004E 2901              movw R4,R18
 0050 00E0              ldi R16,<L3
 0052 10E0              ldi R17,>L3
 0054 0E940000          xcall lpm32
 0058 3A93              st -y,R19
 005A 2A93              st -y,R18
 005C 1A93              st -y,R17
 005E 0A93              st -y,R16
 0060 8101              movw R16,R2
 0062 9201              movw R18,R4
 0064 0E940000          xcall fpdiv2
 0068 0A83              std y+2,R16
 006A 1B83              std y+3,R17
 006C 2C83              std y+4,R18
 006E 3D83              std y+5,R19
 0070                   .dbline 23
 0070           ;        count = j*100;         
 0070 00E0              ldi R16,<L4
 0072 10E0              ldi R17,>L4
 0074 0E940000          xcall lpm32
 0078 CE01              movw R24,R28
 007A 0296              adiw R24,2
 007C 9A93              st -y,R25
 007E 8A93              st -y,R24
 0080 0E940000          xcall fpmule1
 0084 0E940000          xcall fpint
 0088 5801              movw R10,R16
 008A                   .dbline 25
 008A           ;                               
 008A           ;      value1[0] = count /1000+0x30;
 008A 28EE              ldi R18,1000
 008C 33E0              ldi R19,3
 008E 0E940000          xcall div16u
 0092 C801              movw R24,R16
 0094 C096              adiw R24,48
 0096 FA01              movw R30,R20
 0098 8083              std z+0,R24
 009A                   .dbline 26
 009A           ;        count = count %1000;
 009A 28EE              ldi R18,1000
 009C 33E0              ldi R19,3
 009E 8501              movw R16,R10
 00A0 0E940000          xcall mod16u
 00A4 5801              movw R10,R16
 00A6                   .dbline 27
 00A6           ;      value1[2] = count /100+0x30;
 00A6 24E6              ldi R18,100
 00A8 30E0              ldi R19,0
 00AA 0E940000          xcall div16u
 00AE C801              movw R24,R16
 00B0 C096              adiw R24,48
 00B2 FA01              movw R30,R20
 00B4 8283              std z+2,R24
 00B6                   .dbline 28
 00B6           ;      count = count %100;
 00B6 24E6              ldi R18,100
 00B8 30E0              ldi R19,0
 00BA 8501              movw R16,R10
 00BC 0E940000          xcall mod16u
 00C0 5801              movw R10,R16
 00C2                   .dbline 29
 00C2           ;      value1[3] = count  /10 + 0x30;                    
 00C2 2AE0              ldi R18,10
 00C4 30E0              ldi R19,0
 00C6 0E940000          xcall div16u
 00CA C801              movw R24,R16
 00CC C096              adiw R24,48
 00CE FA01              movw R30,R20
 00D0 8383              std z+3,R24
 00D2                   .dbline 30
 00D2           ;      value1[4] = count  %10 + 0x30;                    
 00D2 2AE0              ldi R18,10
 00D4 30E0              ldi R19,0
 00D6 8501              movw R16,R10
 00D8 0E940000          xcall mod16u
 00DC C801              movw R24,R16
 00DE C096              adiw R24,48
 00E0 FA01              movw R30,R20
 00E2 8483              std z+4,R24
 00E4                   .dbline 34
 00E4           ;        
 00E4           ;      //LCD_Cursor(0,1);
 00E4           ;               
 00E4           ;      LCD_DisplayString(2,1,value1);  
 00E4 5983              std y+1,R21
 00E6 4883              std y+0,R20
 00E8 21E0              ldi R18,1
 00EA 02E0              ldi R16,2
 00EC 0E940000          xcall _LCD_DisplayString
 00F0                   .dbline -2
 00F0           L1:
 00F0                   .dbline 0 ; func end
 00F0 2696              adiw R28,6
 00F2 0C940000          xjmp pop_xgsetF00C
 00F6                   .dbsym r Vref 22 i
 00F6                   .dbsym l j 2 D
 00F6                   .dbsym r value1 20 pc
 00F6                   .dbsym r count 10 i
 00F6                   .dbend
 00F6                   .dbfunc e init_adc _init_adc fV
                        .even
 00F6           _init_adc::
 00F6                   .dbline -1
 00F6                   .dbline 40
 00F6           ;                
 00F6           ;     // return addata;
 00F6           ; }   
 00F6           ; 
 00F6           ; void init_adc(void)
 00F6           ; {     
 00F6                   .dbline 41
 00F6           ;       DDRA&=~BIT(PA0);
 00F6 D098              cbi 0x1a,0
 00F8                   .dbline 42
 00F8           ;       PORTA&=~BIT(PA0);
 00F8 D898              cbi 0x1b,0
 00FA                   .dbline 43
 00FA           ;     ADCSRA = 0x00; 
 00FA 2224              clr R2
 00FC 26B8              out 0x6,R2
 00FE                   .dbline 44
 00FE           ;     ADMUX =(1<<REFS0)|(adc_mux&0x1f);          //AVCC,AREF引脚加滤波电容,单端输入ADC0
 00FE 80910000          lds R24,_adc_mux
 0102 8F71              andi R24,31
 0104 8064              ori R24,64
 0106 87B9              out 0x7,R24
 0108                   .dbline 45
 0108           ;     ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1) ;//64分频
 0108 8EEC              ldi R24,206
 010A 86B9              out 0x6,R24
 010C                   .dbline -2
 010C           L5:

⌨️ 快捷键说明

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