Микроконтроллеры семейства AVR. Воробьева Г.С. - 52 стр.

UptoLike

Составители: 

ADTS2 ADTS1 ADTS0 Источник стартового сигнала
0 1 1 Прерывание по событию «Совпадение»
таймера/счетчика Т0
1 0 0 Прерывание по переполнению таймера/счетчика Т0
1 0 1 Прерывание по событию «Совпадение В»
таймера/счетчика Т1
1 1 0 Прерывание по переполнению таймера/счетчика Т1
1 1 1 Прерывание по событию «Захват» таймера/счетчика Т1
Текст файла ADC_conv_int.inc
; ПРОГРАММА РАБОТЫ С АЦП
; Для корректной работы подпрограммы требуется:
; 1 Указать вектор прерывания по завершению преобразования АЦП
; ".org $000E" "ADC_Complete"
; 2 Запуск АЦП "sbi adcsra,6"
; 3 Прочитать один байт "rcall LoadX_ADC_value"
;-----------------------------------------------------------------------
--
; Настройка АЦП
.DSEG ; Начало сегмента данных
ADC_Value: .byte 1 ; Полученные и сохраненные данные с АЦП
.CSEG ; Начало сегмента кода
sbi adcsra,7 ;1 Включение
cbi adcsra,5 ;0 Преобразование одиночное
sbi adcsra,3 ;1 Разрешение
прерываний
sbi adcsra,2 ;1 Предделитель 128
sbi adcsra,1 ;1 Предделитель 128
sbi adcsra,0 ;1 Предделитель 128
cbi admux,7 ;0 ИОН
sbi admux,6 ;1 ИОН Vcc
sbi admux,5 ;1 Левое выравнивание
cbi admux,3 ;0 Выбор канала
cbi admux,2 ;0 Выбор канала
cbi admux,1 ;0 Выбор канала
cbi admux,0 ;0 Выбор канала (0-ой канал)
ldi tmp,0b00000000
out sfior,tmp
sei ; Глобальное разрешение прерываний
rjmp end_ADC
LoadX_ADC_value: ;Загрузка адреса данных с АЦП
ldi Xl,low(ADC_value)
ldi Xh,high(ADC_value)
ret
;-----------------------------------------------------------------------
--
ADC_Complete: ; подпрограмма обслуживания
; прерывания от АЦП
push tmp
rcall LoadX_ADC_value
in tmp,ADCL
st X,tmp
in tmp,ADCH
52