Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Формати і способи адресації команд



5. Зміст звіту

5.1. Тема.

5.2. Мета.

5.3. Індивідуальне завдання.

5.4. Функціональні схеми.

5.5. Пояснення до схем.

5.6. Лістинги програм із докладним коментуванням виконання програм.

5.7. Короткий опис програм.

5.8. Результати виконання програм.

5.9. Висновки.

Лабораторна робота 7

Ввід і вивід аналогових сигналів
у мікроконтролерах сімейства PIC16Cxx

1. МЕТА

Вивчити принцип роботи аналого-цифрового перетворювача на прикладі мікроконтролера PIC16C71. Навчитися вводити аналогові сигнали. Розглянути способи виводу аналогових сигналів. Навчитися формувати широтно-модульовані сигнали.

2. Короткі теоретичні відомості

2.1. Ввід аналогових сигналів виконується за допомогою аналого-цифрових перетворювачів (АЦП). На рис. 1 наведена залежність одержуваного цифрового коду від вхідного аналогового сигналу для
8-розрядного АЦП.

 
 


Рис. 1. Функція перетворення ЦАП

Для управління АЦП у мікроконтролері PIC16C71 необхідно використовувати наступні регістри:

- регістр результату (ADRES);

- регістр управління 0 (ADCON0);

- регістр управління 1 (ADCON1);

- регістр управління перериваннями (INTCON).

У регістрі ADRES зберігається результат аналого-цифрового перетворення. Коли перетворення завершене, результат перетворення записується в регістр ADRES, після цього скидається прапорець GO/DONE (ADCON0<2>) і встановлюється прапорець переривання ADIF (ADCON0<1>). Потім необхідно витримати паузу 20 – 30 мкс для розряду ємності схеми вибірки-збереження АЦП (причому, це необхідно повторювати після кожного наступного циклу перетворення). І тільки після цього потрібно установити біт GO/DONE (ADCON0<2>) для початку перетворення.

Алгоритм дій для виконання аналого-цифрового перетворення слідуючий:

1. Здійснити конфігурацію (ініціалізацію) модуля АЦП:

- вибрати аналогові входи та джерело опорної напруги (біти PCFG2 – PCFG0 у регістрі ADCON1);

- вибрати вхідний канал АЦП (біти CHS2 – CHS0 у регістрі ADCON0);

- вибрати джерело та частоту імпульсів перетворення (біти ADCS1, ADCS0 у регістрі ADCON0);

- включити модуль АЦП (біт ADON у регістрі ADCON0).

2. Настроїти переривання від модуля АЦП (при необхідності):

- скинути прапорець закінчення переривання (біт ADIF у регістрі ADCON0);

- дозволити переривання від АЦП (біт ADIE у регістрі INTCON);

- дозволити всі переривання (біт GIE у регістрі INTCON).

3. Витримати паузу 20 – 30 мкс.

4. Почати аналого-цифрове перетворення:

- установити біт запуску АЦП (біт GO/DONE у регістрі ADCON0).

5. Очікувати закінчення перетворення, наприкінці якого автоматично виконується:

- скидання біта закінчення перетворення (біт GO/DONE у регістрі ADCON0);

- формування сигналу (установка біта ADIF у регістрі ADCON0).

6. Отримати результати перетворення:

- прочитати результат перетворення (регістр ADRES);

- скинути, якщо необхідно, прапорець закінчення переривання (біт ADIF у регістрі ADCON0).

7. Виконати дії, починаючи з пункту 1 або пункту 2, для виконання наступного перетворення.

2.2. Вивід аналогових сигналів виконується за допомогою цифро-аналогових перетворювачів. Сигнал з амплітудою, пропорційною цифровому коду, можна також одержати, використовуючи широтно-імпульсну модуляцію (ШІМ), що представляє собою сигнали змінної тривалості при постійному періоді. Амплітуда такого сигналу, що пройшов через інтегруючий ланцюжок або через фільтр низької частоти (ФНЧ), пропорційна тривалості ШІМ сигналу.

На рис. 2 наведений приклад формування ШІМ сигналу з різною тривалістю tі1, tі2, tі3 і постійним періодом T.

tі3
tі2
tі1
t, с
Uвих, В

Рис. 2. Форма ШІМ сигналу

На рис. 3 наведений приклад схеми формування аналогового сигналу з ШІМ сигналу із використанням RC ланцюжка у якості ФНЧ першого порядку і повторювача на операційному підсилювачі.

Рис. 3. Формування аналогового сигналу

Для розрахунку значень R і C звернемося до амплітудно-частотної характеристики (АЧХ) ФНЧ, що представлена на рис. 4.

Ширина спектра вихідного сигналу без використання ФНЧ дорівнює ¦PWM = 1/T, а при використанні ФНЧ – ¦ГР. Частота ¦ГР повинна бути значно менше (у 5 і більш разів) частоти ¦PWM. Тоді, задавши одне зі значень R або C, за формулою RC = 1/(2 p ¦), де ¦ = ¦ГР –­ частота зрізу фільтра, можна знайти інше значення.

¦
¦ГР
0,707
К

Рис. 4. Амплітудно-частотна характеристика ФНЧ

3. ЗАВДАННЯ ПО ЛАБОРАТОРНІЙ РОБОТІ

3.1. Ввід аналогових сигналів.

3.1.1. Виконати конфігурацію мікроконтролера на вводі аналогових сигналів.

3.1.2. Ввести сигнали з двох аналогових датчиків U1 і U2.

3.1.3. Зробити порівняння введених сигналів.

3.1.4. За результатами порівняння виконати підпрограму згідно варіанта.

3.1.5. Визначити час виконання перетворення АЦП.

3.2. Вивід аналогових сигналів.

3.2.1. На заданому виводі мікроконтролера сформувати сигнал із заданим періодом повторення T і числом рівнів квантування N.

4. ВАРІАНТИ ЗАВДАНЬ

4.1. Варіанти завдання 3.1.

                                         
U1 < U2 A B C D E F G H I J A B C D E F D C I J
U1 = U2 I J G H E F D C B J A I C G F E G H I A
U1 > U2 A J C H B D G C I E J B H D E E D H B J

Дії підпрограм:

A – інкремент комірки пам'яті даних;

B – декремент 16-розрядного лічильника в пам'яті даних;

C – читання 8-розрядного числа з порту B і запис його в комірку пам'яті даних;

D – запис поточного значення таймера (регістр TMR0) в комірку пам'яті даних;

E – формування позитивного імпульсу тривалістю ti = 5 · tц на виводі RB0, де tц – тривалість командного циклу;

F – інкремент 16-розрядного лічильника в пам'яті даних;

G – одночасне інвертування сигналів на виводах RB0 і RB1;

H – декремент комірки пам'яті даних;

I – обмін рівнів сигналів на виводах RB1 і RB2;

J – прийом дискретного сигналу з виводу RB3 і видача його на вивід RB0.

4.2. Варіанти завдання 3.2.

                                         
Вивід RB                                        
T, мс                                        
N                                        

Тактування мікроконтролера виконати від тактового генератора з частотою ¦OSC = 4 МГц.

Приклад програми. Фрагмент програми, що виконує настроювання АЦП і аналого-цифрове перетворення вхідного сигналу з виводу RA2/AN2.

; підключення файлу з описом стандартних констант і значень

#include p16c71.inc

; Настроювання АЦП

initAD

bsf STATUS, RP0; вибір банку 1

movlw b’00000000’; вив.RA3-RA0 – аналогові входи

movwf ADCON1

bcf STATUS, RP0; вибір банку 0

movlw b'11010001'; RC-генератор для АЦП,

movwf ADCON0; канал 2, дозвіл АЦП

; Перетворення

Convert

call Delay30us; затримка 30 мкс

bsf ADCON0, GO_DONE; запуск АЦП

loop

btfsc ADCON0, GO_DONE; перетворення закінчене?

goto loop; продовжити чекання

movf ADRES, W; результат перетворення в W

…; продовження програми

5. Моделювання роботи АЦП у пакеті MPLAB

5.1. Створити текстовий файл із передбачуваними значеннями результатів перетворення АЦП, наприклад adcres.reg (див. рис. 5).

Рис. 5. Створення текстового файлу з результатами перетворення АЦП

5.2. Відкрити вікно Register Stimulus через меню: Debug->Simulator Stimulus->Register Stimulus->Enable... (див. рис. 6).

 
 


Рис. 6. Вікно Register Stimulus

5.3. У полі Program Memory Address вказати адресу команди в пам'яті програм (дозволяється і рекомендується вказувати мітку), наприклад, ares.

5.4. У полі Register Address вкажіть адресу або символьне ім'я регістра, наприклад, ADRES.

5.5. Натисніть кнопку Browse... для вказівки файлу стимулу, наприклад, adcres.reg.

5.6. Після скидання мікроконтролера, щораз, коли значення лічильника команд PC співпаде з указаною адресою ares, у регістр ADRES буде занесене значення з файлу adcres.reg. При досягненні кінця файлу adcres.reg підстановка почнеться з початку файлу, тобто буде виконуватися циклічно.

6. Зміст звіту

6.1. Тема.

6.2. Мета.

6.3. Індивідуальне завдання.

6.4. Лістинг програми із докладним коментуванням виконання програми.

6.5. Короткий опис програм.

6.6. Результати виконання програм.

6.7. Висновки.

____________

Формати і способи адресації команд

Команди можуть займати від одного до трьох байтів. Розмір команди визначається кодом операції, записаним у першому байті. Додаткові байти можуть містити адреси і/або дані. У символічному записі команд як правило указуються всі операнди. У машинних командах частина інформації, необхідної для адресації, може міститися в коді операції. За допомогою байта коду операції можна закодувати 256 команд, але для мікроконтролера 8051 використовується тільки 255. Код 0A5h зарезервований для подальшого розвитку сімейства.

Адресація команд (тобто їхнє виконання) одна за одною її розташування в ПЗП називається природною. При завершенні читання чергової команди вміст програмного лічильника містить адресу коду операції наступної команди. Команди, у результаті виконання яких може бути змінений природний порядок виконання команд, називаються керуючими. Передача керування може відбуватися в залежності від виконання деяких умов. Тоді це називається умовною передачею керування (conditional jump). Якщо команда завжди передає керування в іншу частину програми, то це називається безумовною передачею керування (unconditional jump). Деякі з умовних керуючих команд використовують інформацію, що міститься в слові стану програми, а інші самі роблять порівняння байтів чи перевірку вмісту бітів ОЗП. В операнді керуючої команди в загальному випадку повинна міститися інформація для зміни коду в програмному лічильнику. Способи адресації керуючих команд у мікроконтролері типу 8051 розрізняються за дальністю переходу на короткі (short), абсолютні (absolute) і довгі (long). Для передачі керування програмісту досить указати символічну адресу переходу у відповідному операнді асемблерної команди.

При використанні короткого способу адресації в останньому байті команди міститься різниця між адресою тієї команди, якій передається керування, і адресою команди, що випливає за керуючою командою. Ця різниця може складати від - 128 до + 127. Для обчислення нового вмісту програмного лічильника із вмісту останнього байта команди спочатку формується двобайтовий код за допомогою запису старшого (знакового) біта в усі розряди старшого байта. Потім двобайтовий код додається до вмісту програмного лічильника. Такий спосіб часто називають відносним (relative).

Назва абсолютного переходу успадкована від попередньої моделі мікроконтролера, у якого обсяг ПЗП був обмежений двома кілобайтами. При переході до 64 кбайт старий адресний простір стали називати сторінкою (page). Тому 3 старших біти адреси переходу містяться в коді операції, а 8 молодших — у другому байті команди. Цей спосіб забезпечує адресацію в межах однієї з 32-х сторінок ПЗП, номер якої визначається 5 старшими розрядами коду операції. При абсолютному способі адресації 11 молодших розрядів умісту програмного лічильника заміняються на вміст адресної частини команди. Для довгого переходу адресна частина команди складається з двох байтів, уміст яких заноситься в програмний лічильник. Короткий, абсолютний і довгий безумовні переходи позначаються в мнемокодах команди початковими літерами S (Short), A (Absolute) і L (Long) відповідно.

Команди безумовного переходу можна розділити на команди без запам'ятовування адреси повернення, команди із запам'ятовуванням адреси повернення і команди повернення. В останньому різновиді команд безумовного переходу адресна частина відсутня. Є також команда безумовного переходу, що використовує індексну адресацію.

Список команд поділено функціонально на наступні 4 групи: команди передачі даних, команди порозрядної обробки інформації (логічні операції та операції з бітами), арифметичні команди і команди передачі управління. Існує одна команда, яку не можна віднести ні до однієї з груп, тому що вона не робить нічого протягом одного такту: NOP.

Однак ця команда (No OPeration — немає операції) потрібна для роботи в реальному масштабі часу, щоб забезпечити короткочасну затримку перед виконанням наступної команди.





Дата публикования: 2014-12-08; Прочитано: 676 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.014 с)...