КАТЕГОРИИ: Архитектура-(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; Нарушение авторских прав?; Мы поможем в написании вашей работы! |