МИНОБРНАУКИ РОССИИ
______________________________________________________________
Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им. В.И. Ульянова (Ленина)
______________________________________________________________
МИКРОПРОЦЕССОРНЫЕ СИСТЕМЫ
Отчет по лабораторной работе №6 вариант №5
Выполнили:
Жариков В.В.
Шумилов Н.С.
Факультет: КТИ
Группа: 2307
Проверил:
Зуев И.С
Подпись:
________
Санкт -Петербург
СПбГЭТУ “ЛЭТИ”
2015 г.
Лабораторная работа №6
Изучение работы аналого-цифрового преобразователя в микроконтроллере
Форматы и назначение управляющих слов
Регистр ADСCON1 управляет преобразованием, временем переключения, режимами преобразования и потреблением устройства. На рис. 1 представлена структура, а в табл. 1 – распределение разрядов регистра ADCСON1.
MD1 |
MD0 |
CK1 |
CK0 |
AQ1 |
AQ0 |
T2C |
EXC |
Рисунок 1 – Управляющий регистр ADCСON1
Таблица 1 – Содержание регистра ADCСON1
Расположение бит |
Мнемоника |
Описание |
|||
ADCСON1.7 ADCСON1.6 |
MD1 MD0 |
Биты выбора режима работы АЦП
|
|||
ADCСON1.5 ADCСON1.4 |
CK1 CK0 |
Биты деления тактовой частоты, задают коэффициент деления основной частоты микропроцессора для получения тактовой частоты АЦП. *
|
|||
ADCСON1.3 ADCСON1.2 |
AQ1 AQ0 |
Биты задержки переключения. Выбирают время, не-обходимое для перезарядки УВХ при переключении мультиплексора. **
|
|||
ADCСON1.1 |
T2C |
Бит запуска преобразования от Таймера2. Если бит установлен, то сигнал переполнения Таймера2 используется для запуска АЦП. |
|||
ADCСON1.0 |
EXC |
Бит разрешения внешнего запуска. Если бит установлен, то контакт 23 (CONVST/) будет использоваться для приема сигнала запуска АЦП (активный низкий, длительность не менее 100 нс). |
Регистр ADCСON2 управляет выбором номера канала и режимами преобразования. На рис. 2 представлена структура, а в табл. 2 – распределение разрядов регистра ADCСON2.
ADCI |
DMA |
CCONV |
SCONV |
CS3 |
CS2 |
CS1 |
CS0 |
Рисунок 2 – Управляющий регистр ADCСON2
Таблица 2 – Содержание регистра ADCСON2
Расположение бит |
Мнемо-ника |
Описание |
|||||
ADCСON2.7 |
ADCI |
Бит прерывания АЦП, устанавливается аппаратно по окончанию однократного цикла преобразования АЦП или по окончанию передачи блока в режиме ПДП. ADCI очищается аппаратно при переходе по вектору на процедуру обслуживания прерывания. |
|||||
ADCСON2.6 |
DMA |
Бит разрешения режима ПДП. Устанавливается пользователем для начала операции ПДП со стороны АЦП. |
|||||
ADCСON2.5 |
CCONV |
Бит циклического преобразования. Устанавливается пользователем для задания режима непрерывного циклического преобразования АЦП. В этом режиме АЦП выполняет преобразование в соответствии с типом синхронизации и конфигурацией каналов, выбранными в других SFR. |
|||||
ADCСON2.4 |
SCONV |
Бит запуска однократного преобразования, устанавливается пользователем для однократного запуска АЦП. Бит сбрасывается автоматически по завершении преобразования. |
|||||
ADСCON2.3 ADСCON2.2 ADСCON2.1 ADСCON2.0
|
CS3 CS2 CS1 CS0
|
Биты выбора входных каналов (CS3 CS0), преобразование будет выполняться для канала, номер которого указан данными битами. В режиме ПДП выбор номера канала осуществляется из ID канала, записанного во внешней памяти.
|
Регистр ADCСON3 дает прикладным программам информацию о занятости АЦП. На рис. 3 представлена структура, а в табл. 3 – распределение разрядов регистра ADCСON3.
BUSY |
RSVD |
RSVD |
RSVD |
CTYP |
CAL1 |
CAL0 |
CALST |
Рисунок 3 – Управляющий регистр ADCСON3
Таблица 3 – Содержание регистра ADCСON3
Расположение бит |
Мнемо–ника |
Описание |
ADCСON3.7 |
BUSY |
Бит занятости АЦП (только для чтения). Устанавли-вается на время преобразования или калибровки АЦП. Автоматически очищается по завершению циклов преобразования или калибровки. |
ADCСON3.6 … ADCСON3.0 |
RSVD |
Биты ADCСON3.6 - ADCСON3.0 зарезервированы. Они считываются с нулевым значением и их следует записывать только нулями. |
После настройки и запуска АЦП выполняется преобразование и запись результата, представляющего собой 12-разрядный код, в регистры ADCDATA. Формат слова результата приведен на рис 4.
ADCDATAH
N3 |
N2 |
N1 |
N0 |
D11 |
D10 |
D9 |
D8 |
4 Разряда – номер канала Старшие 4 разряда результата
ADCDATAL
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
Младший байт результата
Рисунок 4 – Результат аналого-цифрового преобразования
Схемы и описания алгоритмов программ, листинги программ на ассемблере
Первая программа выполняет ввод аналоговой информации по одному из каналов. Запуск преобразования выполняется с помощью таймера. Выполняется обработка информации – вычисление среднего арифметического, вывод старшей его части в P0, младшей – в P1.
Схема алгоритма настройки АЦП приведена на рис.5.
Листинг 6.1
$MOD812
;Работа АЦП в режиме измерений по сигналу от таймера
org 000h
jmp MAIN
;Обработчик прерывания от ADC
org 033h
jmp ADCINT
endd: RETI
org 004Bh
MAIN:
;Включаем ADC, разрешаем работу таймера 2 и устанавливаем Fadc=Fг/4
mov ADCCON1,#01000010b
;Номер канала для преобразования - 0, DMA - запрещен
mov ADCCON2,#00000000b
;Частота измерений вх. данных f=fпереп.=fг/(12*(65536-65444))=10КГц
;Устанавливаем значения для перезагрузки таймера 2 при переполнении
mov RCAP2H,#0FFh
mov RCAP2L,#0A4h
;Устанавливаем начальные значения для таймера 2
mov TH2,#0FFh
mov TL2,#0A4h
mov A,#0h
mov R0,#0h;младшая часть суммы
mov R1,#0h;старшая часть суммы
mov R2,#0h;коллчество чисел
mov R5,#0h;младшая часть сред.
;Разрешаем прерывания от АЦП
mov IE,#11000000b
setb TR2 ;Запускаем таймер 2
AGAIN:jmp AGAIN;бесконечный цикл
ADCINT:
;запись значения ADC в память
mov DPL,#0h
movx A,@DPTR
;увеличение на 2 индекса,куда
;будет помещено следующ число
add A, #02h
movx @DPTR,A
;чтение старшей части числа
mov DPL,A
mov A,ADCDATAH
JZ disable
movx @DPTR,A
inc DPL
;накапливание старшего байта суммы
add A,R1
;R1 накапливаем старший байт суммы
mov R1,A
mov A,ADCDATAL
JZ disable
movx @DPTR,A
;накапливание младшего байта суммы
add A,R0
jnc continue
inc R1 ;увеличение старшей части
continue:
;R0 накапливаем младший байт суммы
mov R0,A
inc R2;количество чисел увеличиваю
clr A
mov DPL,#0h
jmp endd
disable:
mov ADCCON1,#01000000b
clr TR2
;вычисление среднего
mov A,R1
mov B,R2
div AB
mov R3,A;целое от деления пишу в R3 как старшую часть результата
mov R4,B;остаток от деления копируется в R4 для выполнения цикла
inc R4
mov A,R0
;деление числа R4*100h + Acc на R2
iteration_start:
subb A, R2
jnc iteration_end
djnz R4,iteration_end
; R4=0, перенос, следовательно, выход из цикла
jmp end_division
iteration_end:
inc R5 ;увеличение младшей части среднего
jmp iteration_start
end_division:
mov P0,R3;старшая часть среднего арифметического
mov P1,R5;младшая часть среднего арифметического
jmp endd
end
Содержимое файла adcdata.adc : где среднее арифметическое равно 0A53
1) 0abc
2) 0def
3) 01b0
4) 0ef4
5) 0abc
6) 0def
7) 01b0
8) 0ef4
Вторая программа выполняет ввод аналоговой информации по одному из каналов и запись результата преобразования во внешнюю память данных в режиме прямого доступа. Схема алгоритма настройки АЦП приведена на рис.6.