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