Листинг 6.2
$MOD812
;Работа
АЦП с использованием DMA
org 0000h
jmp MAIN
;Обработчик
прерывания от ADC (завершение преобразования)
org 0033h
clr CCONV
clr
C
reti
org 004Bh
MAIN:
; Начальные установки для определения
памяти для DMA
mov 1h,
#60h;сохраняем адрес конца зоны DMA
mov 0h,
#00h;начало зоны DMA
mov DPTR,#00h;устанавливаю
адрес начала памяти для DMA
SETUP:
clr A ;первый
байт очищается
movx
@DPTR,A;Записываем по адресу в память,где
будут значения
inc DPTR
clr A ;второй
байт очищается
movx
@DPTR,A;записываем его в память (очищаем
внешнюю память)
inc DPTR
;Устанавливаем
бит переноса для определения конца
памяти для DMA
setb C
mov A,DPH
;сравниваем
старший байт текущего адреса со
;старшим
байтом адреса последнего измерения
cjne
A,0h,JCSETUP;C cleared if DPH>=DMASTOPH
mov A,DPL
;сравниваем
младший байт текущего адреса со
;младшим
байтом адреса последнего измерения
cjne
A,1h,JCSETUP;C cleared if DPL>=DMASTOPL
JCSETUP:
jc SETUP
mov A,#0F0h
movx
@DPTR,A;Записываем в память команду для
остановки режима DMA
;
устанавливаем начальный адрес для
записи результатов преобразований
mov DMAL,#0
mov DMAH,#0
mov DMAP,#0
mov ADCCON1,#01100000b
mov ADCCON2,#01100000b;режим
DMA и
непрерывные
измерения
mov IE,#11000000b;Разрешаем
прерывания от ADC
jump:jmp
jump
END
Конец зоны dma?
Нет
Да
Разрешение прерываний от ацп
Ожидание пдп и прерываний от ацп
Выводы
Была
изучена работа аналого-цифрового
преобразователя в
микроконтроллере MCS
8051.
Установка значений
для перезагрузки таймера 2 при переполнении
обеспечивает частоту 10 кГц работы
АЦП.Настройка АЦП производится
заполнением регистров ADDCON1,
ADDCON2,
ADDCON3.Позавершении
преобразования происходит прерывание
от АЦП, по которому обрабатываются
данные из регистров ADCDATAH,
ADCDATAL.
В
режиме ПДП происходит разметка ВПД,
настройка регистров ПДП, АЦП и ожидание
режима ПДП и прерываний от АЦП.
1