metod2-ukr
.pdfРис. 3. ЦПП розширеної серії
11
Рис. 4. Пам'ять даних розширеної серії
пересилання регістр-регістр і команди пересилання з непрямою адресацією), з'явився віртуальний банк швидкого доступу. Віртуальний банк швидкого доступу складається з першої половини нульового банку й останньої половини останнього банку, що містить всі регістри спеціальних функцій. У першій половині банку швидкого доступу зручно розміщати найчастіше використовувані змінні, регістри для обміну параметрами між програмними модулями. Залежно від значення суфікса а будь-яка команда може звернутися або до банку швидкого доступу, або до банку, заданому
12
регістром BSR. Якщо в програмі суфікс а не буде зазначений, асемблер підставить його значення самостійно залежно від адреси регістра.
Набір команд сильно розширений. Розроблювачі відмовилися від ідеї мати всі команди довжиною в одне машинне слово, з'явилися команди довжиною у два машинних слова. Це команди GOTO, CALL, які містять повну фізичну адресу й не вимагають якої-небудь сегментації пам'яті команд і команда пересилання регістр-регістр MOVFF, що також містить повні адреси й не вимагає перемикання банків пам'яті даних. Список команд наведений у таблиці 2.
Таблиця 2. Система команд розширеної серії
Мнемоніка |
|
Операція, яка виконується |
Ознаки |
команди |
|
||
|
|
|
|
|
|
Байт орієнтовані команди з регістрами |
|
|
|
|
|
ADDWF f, d, a |
|
Додавання WREG і f |
C, DC, Z, OV, N |
|
|
|
|
ADDWFC f, d, a |
Додавання WREG, f і біта C |
C, DC, Z, OV, N |
|
|
|
|
|
ANDWF f, d, a |
|
Логічне «ТАК» WREG і f |
Z, N |
|
|
|
|
CLRF f, a |
|
Очищення f |
Z |
|
|
|
|
COMF f, d, a |
|
Інверсія f |
Z, N |
|
|
|
|
CPFSEQ f, a |
|
Зрівняти WREG і f, проп. якщо = 1 |
- |
|
|
|
|
CPFSGT f, a |
|
Зрівняти WREG і f, проп. якщо > |
- |
|
|
|
|
CPFSLT f, a |
|
Зрівняти WREG і f, проп. якщо < |
- |
|
|
|
|
DECF f, d, a |
|
Декремент f |
C, DC, Z, OV, N |
|
|
|
|
DECFSZ f, d, a |
|
Декремент f, пропустити якщо 0 |
- |
|
|
|
|
DCFSNZ f, d, a |
|
Декремент f, пропустити якщо не 0 |
- |
|
|
|
|
INCF f, d, a |
|
Інкремент f |
C, DC, Z, OV, N |
|
|
|
|
INCFSZ f, d, a |
|
Інкремент f, пропустити якщо 0 |
- |
|
|
|
|
INFSNZ f, d, a |
|
Інкремент f, пропустити якщо не 0 |
- |
|
|
|
|
IORWF f, d, a |
|
Логічне «АБО» WREG і f |
Z, N |
|
|
|
|
MOVF f, d, a |
|
Перемістити f |
Z, N |
|
|
|
|
MOVFF fs, fd |
|
Перемістити fs в fd |
- |
|
|
|
|
MOVWF f, a |
|
Перемістити WREG в f |
F |
|
|
|
|
MULWF f, a |
|
Множення WREG і f |
f |
|
|
|
|
13
Мнемоніка |
Операція, яка виконується |
Ознаки |
|
команди |
|||
|
|
||
NEGF f, a |
Негативне значення f |
C, DC, Z, OV, N |
|
|
|
|
|
RLCF f, d, a |
Зсув вліво через перенос |
C, Z, N |
|
|
|
|
|
RLNCF f, d, a |
Зсув вліво без переносу |
Z, N |
|
|
|
|
|
RRCF f, d, a |
Зсув вправо через перенос |
C, Z, N |
|
|
|
|
|
RRNCF f, d, a |
Зсув вправо без переносу |
Z, N |
|
|
|
|
|
SETF f |
Установити всі біти f |
F |
|
|
|
|
|
SUBFWB f, d, a |
Вирахування f з WREG із позикою |
C, DC, Z, OV, N |
|
|
|
|
|
SUBWF f, d, a |
Вирахування WREG з f |
C, DC, Z, OV, N |
|
|
|
|
|
SUBWFB f, d, a |
Вирахування WREG з f із позикою |
C, DC, Z, OV, N |
|
|
|
|
|
SWAPF f, d, a |
Поміняти місцями напівбайти в f |
- |
|
|
|
|
|
TSTFSZ f, a |
Тест f, пропустити якщо 0 |
- |
|
|
|
|
|
XORWF f, d, a |
Логічне «АБО», що виключає WREG |
Z, N |
|
|
|
|
|
|
Біт орієнтовані операції з регістрами |
|
|
|
|
|
|
BCF f, b, a |
Скидання біта в f |
- |
|
|
|
|
|
BSF f, b, a |
Установка біта в f |
- |
|
|
|
|
|
BTFSC f, b, a |
Тест біта, пропустити якщо ‘0’ |
- |
|
|
|
|
|
BTFSS f, b, a |
Тест біта, пропустити якщо ‘1’ |
- |
|
|
|
|
|
BTG f, b, a |
Інверсія біта в f |
- |
|
|
|
|
|
|
Команди керування |
|
|
|
|
|
|
BC n |
Перехід, якщо перенос (C = 1) |
- |
|
|
|
|
|
BN n |
Перехід, якщо нег. результ. (N = 1) |
- |
|
|
|
|
|
BNC n |
Перехід, якщо немає переносу (C = 0) |
- |
|
|
|
|
|
BNN n |
Перехід, якщо поз. результ. (N = 0) |
- |
|
|
|
|
|
BNOV n |
Перехід, якщо немає переповн. (OV = |
- |
|
|
|
|
|
BNZ n |
Перехід, якщо не нуль (Z = 0) |
- |
|
|
|
|
|
BOV n |
Перехід, якщо переповнення (OV = 1) |
- |
|
|
|
|
|
BRA n |
Безумовний перехід |
- |
|
|
|
|
|
BZ n |
Перехід, якщо нуль (Z = 1) |
- |
|
|
|
|
|
CALL n, s |
Перехід на підпрограму. |
- |
|
|
|
|
|
CLRWDT |
Скинути сторожовий таймер |
TO, -PD |
|
|
|
|
|
DAW |
Десяткова корекція WREG |
C |
|
|
|
|
|
GOTO n |
Перехід за адресою |
- |
|
|
|
|
14
Мнемоніка |
|
Операція, яка виконується |
Ознаки |
команди |
|
||
|
|
|
|
NOP |
|
Ні операції |
- |
|
|
|
|
POP |
|
Читання вершини стека повернення |
- |
|
|
|
|
PUSH |
|
Запис у вершину стека повернення |
- |
|
|
|
|
RCALL n |
|
Короткий перехід на підпрограму 2 |
- |
|
|
|
|
RESET |
|
Програмне скидання |
всі |
|
|
|
|
RETFIE s |
|
Повернення із пп із дозвол. |
- |
|
|
|
|
RETLW k |
|
Повернення із пп із завантаженням |
- |
|
|
WREG |
|
RETURN s |
|
Повернення з підпрограми |
- |
|
|
|
|
SLEEP |
|
Перехід в SLEEP режим |
-TO, -PD |
|
|
|
|
|
|
Операції з константами |
|
|
|
|
|
ADDLW k |
|
Додати константу до WREG |
C, DC, Z, OV, N |
|
|
|
|
ANDLW k |
|
Логічне «ТАК» константи й WREG |
Z, N |
|
|
|
|
IORLW k |
|
Логічне «АБО» константи й WREG |
Z, N |
|
|
|
|
LFSR f, k |
|
Помістити константу (12 біт) в FSR |
- |
|
|
|
|
MOVLB k |
|
Помістити константу в BSR<3:0> |
- |
|
|
|
|
MOVLW k |
|
Помістити константу в WREG |
- |
|
|
|
|
MULLW k |
|
Множення константи на WREG |
- |
|
|
|
|
RETLW k |
|
Повернення із пп із завантаженням |
- |
|
|
WREG |
|
SUBLW k |
|
Вирахування WREG з константи |
C, DC, Z, OV, N |
|
|
|
|
XORLW k |
|
Логічне «АБО», що виключає |
Z, N |
|
|
константи й WREG |
|
|
Операції пам'ять даних ↔ пам'ять програм |
||
|
|
|
|
TBLRD* |
|
Табличне читання |
- |
|
|
|
|
TBLRD*+ |
|
Табличне читання з пост-інкрементом |
- |
|
|
|
|
TBLRD*- |
|
Табличне читання з пост- |
- |
|
|
|
|
TBLRD+* |
|
Табличне читання з перед- |
- |
|
|
|
|
TBLWT* |
|
Табличний запис |
- |
|
|
|
|
TBLWT*+ |
|
Табличний запис із пост-інкрементом |
- |
|
|
|
|
TBLWT*- |
|
Табличний запис із пост-декрементом |
- |
|
|
|
|
TBLWT+* |
|
Табличний запис із перед- |
- |
|
|
|
|
15
2. ОБЛАДНАННЯ ДЛЯ ПРОВЕДЕННЯ ЛАБОРАТОРНИХ РОБІТ
При виконанні лабораторних робіт використовується пакет програм MPLAB IDE і демонстраційна плата на PICDEM NUK. Схема електрична принципова плати показана на рис. 5. Плата призначена для встановлення практично будь-яких мікроконтролерів в 28-ми вивідних корпусах,
наприклад PIC16C73A, PIC16F876A, PIC18F242, PIC18F2525. На платі встановлені наступні вузли:
стабілізоване джерело живлення 5 В для використання плат в автономному режимі;
гніздо внутрісхемного програмування ISP, призначений для підключення плати до дебаггеру PICkit2 або PICkit3;
драйвер і гніздо RS232, який можна використовувати для комунікаційних програм і для завантаження програмного забезпечення за допомогою бутлоадера відповідно до рекомендацій по застосуванню
AN1310;
два потенціометри й три кнопки; п'єзоелектричний випромінювач; датчик температури TCN 75-5;
додаткову енергонезалежну пам'ять 24LC16B;
LCD сьомисегментний восьмирозрядний індикатор TIC55 із убудованим контролером ML1001;
світлодіоди.
Пам'ять і датчик температури працюють із послідовною шиною I2C, до датчика температури підключені перемички для встановлення його адреси й червоний світлодіод для використання в режимі термостата. Додатково є гніздо для підключення зовнішніх пристроїв до шини I2C. Найповніші можливості плати відповідають набору периферійних модулів мікроконтролерів розширеного сімейства nano Watt, наприклад PIC18F2520. Відповідність виводів мікроконтролера, елементів плати й периферійних модулів мікроконтролера показано в таблиці 3.
16
Рис. 5. Плата PICDEM NUK
Таблиця 3. Призначення виводів мікроконтролера
Елемент |
Вивід |
Операція, яка виконується |
|
плати |
МК |
||
|
|||
Кнопка S4 |
MCLR |
Примусове скидання мікроконтролера |
|
Потенціометр R1 |
RA0 |
Вхід АЦП AN0 |
|
|
|
Вхід блоку компараторів AN0 |
|
Потенціометр R2 |
RA3 |
Вхід АЦП AN3 |
|
|
|
Вхід блоку компараторів AN0 |
|
|
|
Позитивна опорна напруга АЦП |
|
Кнопка S1 |
RA4 |
Вхід паралельного порту |
|
|
|
Вхід таймера 0 у режимі лічильника |
17
Елемент |
Вивід |
Операція, яка виконується |
|
|
плати |
МК |
|
|
|
||
Кнопка S2 |
RA5 |
Вхід паралельного порту |
|
|
|
|
Вхід АЦП AN4 |
|
|
|
Вхід детектора зниженої напруги LVD |
Кварцовий |
RC0, |
Генератор таймера 1. М мікроконтролерах |
|
резонатор |
RC1 |
nano Watt може використовуватися для |
|
|
|
|
тактування ядра |
Випромінювач |
RC2 |
Вихід паралельного порту |
|
ZQ1, |
Світлодіод |
|
Вихід блоку CCP1 у режимах ШІМ або |
VD5 |
|
|
порівняння |
I2C шина |
RC3 |
Вивід SCL блоку SSP у режимі I2C |
|
I2C шина |
RC4 |
Вивід SDA блоку SSP у режимі I2C |
|
Світлодіод VD4 |
RC5 |
Вихід паралельного порту |
|
Драйвер RS232 |
RC6 |
Передавач модуля USART |
|
Драйвер RS232 |
RC7 |
Передавач модуля USART |
|
Кнопка S3 |
RB0 |
Вхід паралельного порту |
|
|
|
|
Вхід зовнішнього переривання INT0 |
Світлодіод VD3 |
RB1 |
Вихід паралельного порту |
|
Світлодіод VD2 |
RB2 |
Вихід паралельного порту |
|
Вхід |
CLK |
RB3 |
Вихід паралельного порту. Програмна |
індикатора |
|
реалізація протоколу SPI |
|
Вхід |
IN |
RB4 |
Вихід паралельного порту. Програмна |
індикатора |
|
реалізація протоколу SPI |
|
Вхід |
LD |
RB5 |
Вихід паралельного порту. Програмна |
індикатора |
|
реалізація протоколу SPI |
|
Гніздо ISP |
RB6 |
Вивід PGD для програмування |
|
Гніздо ISP |
RB7 |
Вивід PGC для програмування |
Виводи мікроконтролера можуть використовуватися багатьма периферійними модулями, більшість із них за замовчуванням відключені й виводи мікроконтролера є лініями портів вводу-виводу. Виключення становлять аналогові блоки - АЦП і блок компараторів. Зазначені блоки за замовчуванням виключені, але відповідні їм виводи призначені як аналогові й не можуть бути використані для цифрового вводу. Тому при написанні програм варто призначати потрібні виводи, як цифрові. Для PIC18F2520 всі виводи призначити цифровими можна наступними командами:
movlw b’1111’
18
movwf |
ADCON1 |
Схожа послідовність потрібно для PIC16F873A: |
|
banksel |
ADCON1 |
movlw |
b’110’ |
movwf |
ADCON1 |
При програмній реалізації протоколу SPI для LCD дисплея потрібно мати через наступне. Дисплей містить 8 символів, що містять семисегментну цифру, десяткову точку й символ стрілки (див. рис. 6).
Рис. 6. Протокол SPI LCD дисплея
Першим передається десяткова точка молодшого розряду. На лінії CLK і LD установлюється низький рівень, на лінію IN виводиться значення i-го біта, на лінію CLK подається імпульс синхронізації. Після видачі всіх бітів, на лінію LD подається імпульс, по якому відбувається запам'ятовування й вивід на індикацію переданої інформації.
19
3. ЗАВДАННЯ ДО ЛАБОРАТОРНИХ РОБІТ
Лабораторна робота №1 Складання й налагодження простих програм
Ціль роботи: одержання навичок самостійного написання програм для мікроконтролерів, вивчення порядку створення проекту, вводу програми, асемблювання, налагодження програми за допомогою програмного симулятора.
Зміст домашньої підготовки
Вивчити особливості архітектури, набір команд і способи адресації мікроконтролерів.
По посібнику до пакета MPLAB вивчити порядок створення й роботи із проектами: створення й редагування проекту, вводу програми, асемблювання.
Вивчити роботу асинхронних і часових стимулів у середовищі
MPLAB.
Скласти програму для мікроконтролера відповідно до індивідуального завдання. Розрахувати час виконання програми.
Вивчити режими програмою симуляції: покроковий, безперервний, із зупинками в контрольних точках, режим анімації.
Вивчити можливості в роботі з вікнами - пам'ять програм, пам'ять даних, регістри спеціальних функцій, вікно секундоміра, вікно модифікації, вікно стека.
Вивчити призначення директив ORG, END, LIST, INCLUDE, EQU. Відповісти на контрольні питання.
Порядок виконання роботи
Включити комп'ютер і запустити програму MPLAB.
Ввести програму, створити проект, підключити файл із програмою до проекту.
Зробити асемблювання, виправити синтаксичні помилки.
20