Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Чтение А/ D преобразования




1. Преобразование проверки

Это чтение можно резюмировать как:

(1)Установить порт АЦП через ADCF регистр. Пример:

(1) ADCF = 0x01; // Select AN0

(2) ADCF = 0x03; // Select AN0 and AN1

(3) ADCF = 0x84; // Select AN7 and AN2

(4) ADCF = 0xFF; // Select all analog input

(2)Установить ADEN для АЦП. ADEN является 5 битом для ADCON регистра.

Пример кода С:

ADCON = 0x20;

(3)Выберите вход через чтение SCH2 в SCH0 бит регистра ADCON.

Пример кода C:

ADCON &= 0xF8; // Clear all SCH2 to SCH0 bits

ADCON |= channel; // Select input with the value of

// channel. The value is 0 to 7.

Если выбрать читать вход AN3, код C будет:

ADCON &= 0xF8;

ADCON |= 3;

(4)Установите ADSST, чтобы начать преобразования. ADSST является 3 битом регистра ADCON.

После завершения преобразования, ADSST очистится автоматически. Пример кода C:

ADCON |= 0x08;

(5)После шага (4), модулю АЦП нужно время, чтобы преобразовать аналоговый сигнал в цифровые данные и хранить данные в ADDH и ADDL регистрах. После завершения преобразования, ADEOC (бит 4 ADCON регистре) устанавливается автоматически. Таким образом, программирование C должно сделать программу на выбор статуса этого бита. Когда бит ADEOC установлен, то это означает, что преобразование закончилось. Нужно очистить ADEOC бит перед чтением преобразования данных. Образец кода:

 

while((ADCON & 0x10)!= 0x10);

// Wait until ADEOC flag is set.

ADCON &= 0xEF; // Clear ADEOC flag before

// read the result.

(6)Чтение 10-разрядного преобразования данных из ADDH и ADDL

регистров

Данные в регистре ADDH 8-битный верхних или бит 9 к 2.

Данные в регистре ADDL 2 нижних бита или 1 и 0.

При чтении полных 10-битов, переменная должна заявить целое..Пример кода:

 

int data; // Declare the result variable as integer.

data = (ADDH<<2) + ADDL;

// Reda data to store in dat variable

 

2. Чтение с прерыванием

Это чтение можно резюмировать как:

(1) Установить порт входа АЦП (ADC) через ADCF регистр.

(2) Установить ADEN для АЦП.

(3) Подключение глобальных прерываний и прерывания АЦП с множеством EA и EADC.

Образец кода:

EA =1; // Enable global interrupt

EADC = 1; // Enable ADC interrupt.

 

(4) Выберите вход через чтение SCH2 в бит SCH0 в регистре ADCON.

(5) Установите ADSST, чтобы начать преобразования.

(6) После шага (4), модулю АЦП нужно время, чтобы преобразовать аналоговый сигнал в цифровые данные и хранить данные в ADDH и ADDL регистре. После завершения преобразования, прерывание произошло. Процессор будет перескакивать на выполнение прерывания. В этой стандартной программе должен очиститься первый бит ADEOC. После этого прочитается 10-битный результат преобразования. Образец процедуры прерывания показан ниже:

int adc_dat; // Declare the conversion variable

void ADC_service() interrupt 8 // Interrupt number is 8.

{

EADC = 0; // Disable interrupt

ADCON &= 0xEF; // Clear ADEOC bit.

adc_dat = (ADDH<<2)+(ADDL);

// Read data to store at adc_dat

ADCON |= 0x48; // Set ADEN and ADSST bit

// for next conversion

EADC = 1; // Enable interrupt

// for next conversion.

}

3. Чтение функции А/ D конвертера

Из всего шагов, которые описываются в предыдущем разделе, можно сделать подходящую функцию для чтения А / D преобразования и сохранения в файл adc_robo51.h библиотеки C: \ RIDE \ INC. Полный исходный код показан на рис. 6.3. Пример:

 

int dat; // Declare integer variable for getting data from

// analog function

data = analog(2); // Read the analog input 2 (P1.2) and store to dat

// variable.

 

Рисунок 6.3 – Исходный код для функции чтения А / D преобразования

 




Поделиться с друзьями:


Дата добавления: 2017-02-01; Просмотров: 59; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopediasu.com - Студопедия (2013 - 2026) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.