📄 adc.lis
字号:
.module adc.c
.area text(rom, con, rel)
0000 .dbfile E:\ICCAVR\project\AVRMEG~3\icc\009-AD-LED4\adc.c
0000 .dbfunc e get_ad _get_ad fi
0000 ; i -> R16,R17
.even
0000 _get_ad::
0000 .dbline -1
0000 .dbline 7
0000 ; /*
0000 ; AD采样函数,标准10位精度采样函数,可以项目里直接使用。
0000 ; */
0000 ; #include "iom128v.h"
0000 ;
0000 ; /*ADC采样函数,采样第0通道信号,采样分辨率1024*/
0000 ; unsigned int get_ad(void) {
0000 .dbline 11
0000 ;
0000 ; unsigned int i;
0000 ;
0000 ; ADMUX = (1 << REFS0); /*基准AVCC、通道0*/
0000 80E4 ldi R24,64
0002 87B9 out 0x7,R24
0004 .dbline 12
0004 ; ADCSRA = (1 << ADEN) | (1 << ADSC) /*使能、开启*/
0004 83EC ldi R24,195
0006 86B9 out 0x6,R24
0008 L2:
0008 .dbline 14
0008 L3:
0008 .dbline 14
0008 ; | (1 << ADPS1) | (1 << ADPS0); /*8分频*/
0008 ; while(!(ADCSRA & (1 << ADIF))); /*等待采样结束*/
0008 349B sbis 0x6,4
000A FECF rjmp L2
000C .dbline 15
000C ; i = ADC; /*读取AD结果*/
000C 04B1 in R16,0x4
000E 15B1 in R17,0x5
0010 .dbline 16
0010 ; ADCSRA &= ~(1 << ADIF); /*清标志*/
0010 3498 cbi 0x6,4
0012 .dbline 17
0012 ; ADCSRA &= ~(1 << ADEN); /*关闭转换*/
0012 3798 cbi 0x6,7
0014 .dbline 19
0014 ;
0014 ; return i; /*返回结果*/
0014 .dbline -2
0014 L1:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbsym r i 16 i
0016 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -