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

📄 adc.lis

📁 我自己编写的atmega16的adc的范例
💻 LIS
字号:
                        .module ADC.C
                        .area text(rom, con, rel)
 0000                   .dbfile F:\自编程序\M16\ADC\ADC.C
 0000                   .dbfunc e MyItoa _MyItoa fV
 0000           ;              i -> R20
 0000           ;            Dat -> R22,R23
 0000           ;          Inter -> R10,R11
                        .even
 0000           _MyItoa::
 0000 0E940000          xcall push_gset3
 0004 B901              movw R22,R18
 0006 5801              movw R10,R16
 0008                   .dbline -1
 0008                   .dbline 23
 0008           ; #include<iom16v.h>
 0008           ; #include<macros.h>
 0008           ; #define AVCC                (1<<REFS0)
 0008           ; #define V_2.56              (1<<REFS0)|(1<<REFS1)
 0008           ; #define AD_PRESCAL_2        (1<<ADPS0)
 0008           ; #define AD_PRESCAL_4        (1<<ADPS1)
 0008           ; #define AD_PRESCAL_8        (1<<ADPS0)|(1<<ADPS1)
 0008           ; #define AD_PRESCAL_16       (1<<ADPS2)
 0008           ; #define AD_PRESCAL_32       (1<<ADPS0)|(1<<ADPS2)
 0008           ; #define AD_PRESCAL_64       (1<<ADPS1)|(1<<ADPS2)
 0008           ; #define AD_PRESCAL_128      (1<<ADPS0)|(1<<ADPS2)|(1<<ADPS1)
 0008           ; #define AD_SE_ADC0                   //ADC0
 0008           ; #define AD_SE_ADC1          (1<<MUX0) //ADC1
 0008           ; #define AD_SE_ADC2          (1<<MUX1) //ADC2
 0008           ; #define AD_SE_ADC3          (1<<MUX1)|(1<<MUX0) //ADC3
 0008           ; #define AD_SE_ADC4          (1<<MUX2)//ADC4
 0008           ; #define AD_SE_ADC5          (1<<MUX2)|(1<<MUX0)//ADC5
 0008           ; #define AD_SE_ADC6          (1<<MUX2)|(1<<MUX1) //ADC6
 0008           ; #define AD_SE_ADC7          (1<<MUX2)|(1<<MUX1)|(1<<MUX0) //ADC7
 0008           ; //========================================  
 0008           ; //数字转到字串,函数.--只有4个字节,而且向后对齐,前面补零. 
 0008           ; void MyItoa( unsigned int  Inter, unsigned char Dat[]) 
 0008           ; { 
 0008                   .dbline 25
 0008           ;     unsigned char i; 
 0008           ;     for ( i=0; i<4 ; i++ ) 
 0008 4427              clr R20
 000A 17C0              xjmp L5
 000C           L2:
 000C                   .dbline 26
 000C                   .dbline 27
 000C 242E              mov R2,R20
 000E 3324              clr R3
 0010 E3E0              ldi R30,3
 0012 F0E0              ldi R31,0
 0014 E219              sub R30,R2
 0016 F309              sbc R31,R3
 0018 E60F              add R30,R22
 001A F71F              adc R31,R23
 001C 2AE0              ldi R18,10
 001E 30E0              ldi R19,0
 0020 8501              movw R16,R10
 0022 0E940000          xcall mod16u
 0026 C801              movw R24,R16
 0028 C096              adiw R24,48
 002A 8083              std z+0,R24
 002C                   .dbline 28
 002C 2AE0              ldi R18,10
 002E 30E0              ldi R19,0
 0030 8501              movw R16,R10
 0032 0E940000          xcall div16u
 0036 5801              movw R10,R16
 0038                   .dbline 29
 0038           L3:
 0038                   .dbline 25
 0038 4395              inc R20
 003A           L5:
 003A                   .dbline 25
 003A 4430              cpi R20,4
 003C 38F3              brlo L2
 003E                   .dbline -2
 003E                   .dbline 30
 003E           ;     { 
 003E           ;         Dat[3-i]=Inter%10+'0'; 
 003E           ;         Inter/=10; 
 003E           ;     }  
 003E           ; } 
 003E           L1:
 003E 0E940000          xcall pop_gset3
 0042                   .dbline 0 ; func end
 0042 0895              ret
 0044                   .dbsym r i 20 c
 0044                   .dbsym r Dat 22 pc
 0044                   .dbsym r Inter 10 i
 0044                   .dbend
 0044                   .dbfunc e ADC_initial _ADC_initial fV
                        .even
 0044           _ADC_initial::
 0044                   .dbline -1
 0044                   .dbline 32
 0044           ; void ADC_initial(void)
 0044           ; {
 0044                   .dbline 33
 0044           ;  ADMUX=AVCC;
 0044 80E4              ldi R24,64
 0046 87B9              out 0x7,R24
 0048                   .dbline 34
 0048           ;  ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|AD_PRESCAL_4;
 0048 82EE              ldi R24,226
 004A 86B9              out 0x6,R24
 004C                   .dbline -2
 004C                   .dbline 35
 004C           ; }
 004C           L6:
 004C                   .dbline 0 ; func end
 004C 0895              ret
 004E                   .dbend
 004E                   .dbfunc e ADC_READ _ADC_READ fi
 004E           ;           temp -> R18
 004E           ;           data -> R16,R17
                        .even
 004E           _ADC_READ::
 004E                   .dbline -1
 004E                   .dbline 37
 004E           ; unsigned int ADC_READ()
 004E           ; {
 004E                   .dbline 40
 004E           ;  unsigned char temp;
 004E           ;  unsigned int data;
 004E           ;  temp=ADCL;
 004E 24B1              in R18,0x4
 0050                   .dbline 41
 0050           ;  data=ADCH;
 0050 05B1              in R16,0x5
 0052 1127              clr R17
 0054                   .dbline 42
 0054           ;  data<<=8;
 0054 102F              mov R17,R16
 0056 0027              clr R16
 0058                   .dbline 43
 0058           ;  data+=temp;
 0058 222E              mov R2,R18
 005A 3324              clr R3
 005C 020D              add R16,R2
 005E 131D              adc R17,R3
 0060                   .dbline 44
 0060           ;  return(data);
 0060                   .dbline -2
 0060           L7:
 0060                   .dbline 0 ; func end
 0060 0895              ret
 0062                   .dbsym r temp 18 c
 0062                   .dbsym r data 16 i
 0062                   .dbend

⌨️ 快捷键说明

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