?? 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 + -