Реферат Курсовая Конспект
Таблиця 2.14 - раздел Образование, У 1975 році фірма GI розробила периферійний контролер Peripheral Interface Controller або PIC Опис Полів Команд Pic 16C71 Поле ...
|
Опис полів команд PIC 16C71
Поле | Опис |
f | Адреса регістра |
w | Робочий регістр |
b | Номер біта в 8-розрядному регістрі |
k | Константа |
x | Не використовується, асемблер формує код з х = 0 |
d | Регістр призначення: d = 0 результат в регістрі W, d =1 результат в регістрі f За замовчуванням d =1 |
Label | Ім'я мітки |
TOS | Вершина стека (Top Of Stack) |
PC | Лічильник команд (Program Counter) |
/TO | Тайм-аут (Time Out) |
/PD | Вимикання живлення (Power Down) |
dest | Регістр призначення: робочий регістр W або регістр, заданий в команді |
[] | Необов’язкові параметри |
() | Зміст |
? | Привласнення |
< > | Бітове поле |
Є | З набору |
Для команд роботи з бітами “b” позначає номер біта, що бере участь в команді, а “f” – це регістр, в якому цей біт розміщений. Для команд управління і операцій з константами “k” позначає 8-ми або 11-бітну константу або ідентифікатор.
Всі команди виконуються впродовж одного командного циклу, окрім наступних двох випадків:
· перехід по перевірці умови, якщо результат перевірки умови – істина;
· зміна програмного лічильника як результат виконання команди.
В цих випадках команда виконується за два цикли, з виконанням другого циклу як NOP. Один командний цикл складається з чотирьох періодів генератора. Таким чином, для генератора з тактовою частотою 4 МГц час виконання команди складе 2 мкс.
Таблиця 2.15
Система команд PIC 16C71
Мнемокод | Назва команди | Цикли | Код команди (14 бітів) | Біти стану | При- мітка |
Команди роботи з байтами | |||||
ADDWF f, d | Додавання W до f | 00 0111 dfff ffff | C, DC,Z | 2,3 | |
ANDWF f, d | Логічне І W і f | 00 0101 dfff ffff | Z | 2,3 | |
CLRF f | Скидання регістра f | 00 0001 1fff ffff | Z | ||
CLRW | Скидання регістра W | 00 0001 0000 0011 | Z | – | |
COMF f, d | Інверсія регістра f | 00 1001 dfff ffff | Z | – | |
DECF f, d | Декремент регістра f | 00 0011 dfff ffff | Z | 2, 3 | |
DECFSZ f,d | Декремент f, пропустити команду, якщо 0 | 1 (2) | 00 1011 dfff ffff | 2, 3 | |
INCF f, d | Інкремент регістра f | 00 1010 dfff ffff | Z | 2, 3 | |
INCFSZ f, d | Інкремент f, пропустити команду, якщо 0 | 1 (2) | 00 1111 dfff ffff | 2, 3 | |
IORWF f, d | Логічне АБО W і f | 00 0100 dfff ffff | Z | 2, 3 | |
MOVF f, d | Пересилання регістра f | 00 1000 dfff ffff | Z | 2, 3 | |
MOVWF f | Пересилання W в f | 00 0000 1fff ffff | |||
NOP | Холоста команда | 00 0000 0110 0000 | – | ||
RLF f, d | Зсув f ліворуч через перенос | 00 1101 dfff ffff | C | 2, 3 | |
RRF f, d | Зсув f праворуч через перенос | 00 1100 dfff ffff | C | 2, 3 | |
SUBWF f, d | Віднімання W від f | 00 0010 dfff ffff | C, DC, Z | 2, 3 | |
SWAPF f, d | Обмін місцями тетрад в f | 00 1110 dfff ffff | 2, 3 | ||
XORWF f, d | Виключає АБО W і f | 00 0110 dfff ffff | Z | 2, 3 | |
Команди роботи з бітами | |||||
BCF f, b | Скидання біта в регістрі f | 01 00bb bfff ffff | 2,3 | ||
BSF f, b | Установлення біта в регістрі f | 01 01bb bfff ffff | 2,3 | ||
BTFSC f, b | Пропустити команду, якщо біт f дорівнює 0 | 1 (2) | 01 10bb bfff ffff | – | |
BTFSS f, b | Пропустити команду, якщо біт f дорівнює 1 | 1 (2) | 01 11bb bfff ffff | – |
Закінчення табл. 2.15
Мнемокод | Назва команди | Цикли | Код команди (14 бітів) | Біти стану | При- мітка |
Команди передачі управління і операції з константами | |||||
ADDLW k | Додавання константи до W | 1 | 11 111x kkkk kkkk | C, DC, Z | 4 |
ANDLW k | Логічне І константи і W | 11 1001 kkkk kkkk | Z | ||
IORLW k | Логічне АБО константи і W | 11 1000 kkkk kkkk | Z | – | |
SUBLW k | Віднімання W від константи | 1 | 11 110x kkkk kkkk | C, DC, Z | 4 |
CALL k | Виклик підпрограми | 10 0kkk kkkk kkkk | – | ||
CLRWDT | Скидання Watchdog таймера | 00 0000 0110 0100 | /TO, /PD | – | |
GOTO k | Перехід за адресою | 10 1kkk kkkk kkkk | – | ||
RETLW k | Повернення з підпрогра- ми із завантаженням константи в W | 11 010xx kkkk kkkk | – | ||
RETFIE | Повернення з переривання | 2 | 00 0000 0000 1001 | 4 | |
RETURN | Повернення з підпрограми | 2 | 00 0000 0000 1000 | 4 | |
SLEEP | Перехід в режим SLEEP | 00 0000 0110 0011 | /TO, /PD | – | |
TRIS f | Завантаження TRIS регістра | 00 0000 0000 0ffff | |||
MOVLW k | Пересилання константи в W | 11 00хх kkkk kkkk | – | ||
XORLW k | Виключає АБО константи і W | 11 1010 kkkk kkkk | Z | – | |
OPTION | Завантаження W в OPTION регістр | 00 0000 0000 0000 |
Примітки:
1. Команди TRIS і OPTION поміщені в перелік команд для сумісності з сімейством PIC16C5X. Їхнє використання не рекомендується. В PIC16C71 регістри TRIS і OPTION доступні для читання і запису як звичайні регістри з номером. Ці команди можуть не підтримуватися в подальших розробках PIC16CXX.
2. Коли модифікується регістр вводу/виводу (наприклад MOVF PORT, 1), використовується значення, що зчитується з виводів. Наприклад, якщо у вихідній защіпці порту, включеного на ввід, знаходиться “1”, а зовнішній пристрій формує на цьому виводі “0”, то в цьому розряді даних буде записаний “0”.
3. Якщо операндом команди є регістр TMRO (і, якщо дозволено, d = 1), то попередній дільник, якщо він підключений до TMRO, буде обнулений.
4. Команди ADDLW, RETFIE, RETURN і SUBLW відсутні в системах команд PIC 12CXX і PIC 16C5X.
Більш докладний опис команд з прикладами їх виконання наведений в додатку В (B1 і B2). Дану систему команд мають всі мікроконтролери розширеного сімейства (PIC16CХX – PIC16C7X/8X/9X), а також МК PIC 14000. Мікроконтролери найпростішого і базового сімейств (PIC12CXX і PIC16C5X) мають урізану систему команд (додаток В1). Мікроконтролери високопродуктивного сімейства (PIC17CXX) мають розширену (у порівнянні з PIC16CXX) систему команд, що містить до 57 команд [5, 6].
2.3.17. Особливості програмування
Розробка робочих програм для мікроконтролерів PIC16C5X і PIC16C71 здійснюється за однією й тією ж методикою з використанням одних і тих же інструментальних засобів [8]. Системи команд, за винятком чотирьох додаткових команд для PIC16C71: ADDLW, SUBLW, RETFIE, і RETURN, практично повністю співпадають. Тому програми, розроблені раніше для PIC16C5X, можуть бути використані для PIC16C71. Однак, щоб перевести програмний код, написаний для PIC16C5X в код для PIC16C71, користувач повинен виконати наступні кроки:
1. Замінити операції по вибору сторінок програмної пам'яті (біти PA2, PA1, PA0) командами CALL, GOTO.
2. Переглянути всі операції переходів, що обчислюються, (запис в PC або додавання з PC і т. д.) і переконатися, що біти сторінок встановлюються коректно і для нового кристала.
3. Виключити переключення сторінок пам'яті даних. Перевизначити змінні і перерозподілити пам'ять для них.
4. Перевірити запис в регістри STATUS, OPTION, FSR, тому що вони дещо змінені.
5. Змінити вектор скидання при включенні на 0000h.
6. Звернути увагу, що адреса 07h – це неіснуюча адреса пам'яті даних.
При розробці нових програм для PIC 16С71 звичайно необхідно враховувати всі архітектурні особливості та відмінності даного мікроконтролера від PIC 16С5Х, які достатньо докладно були описані вище.
2.4. Однокристальні МК PIC 16С84
Мікроконтролери PIC 16С84 (16F84) також відносяться до розширеного сімейства, мають цілий ряд таких же істотних відмінностей від МК базового сімейства, як і PIC 16С71, абсолютно не відрізняються від останніх системою команд і особливостями програмування, але володіють дещо іншими функціональними можливостями. Тому, в даному розділі будуть розглянуті лише відмінності PIC 16С84 (16F84) від PIC 16С71, оскільки в іншому вони повністю співпадають.
2.4.1. Особливості структурної організації PIC 16С84
Структурна схема ОМК PIC 16С84 (16F84) наведена на рис. 2.28. Головною відмінністю даного МК від PIC 16С71 є наявність електрично перепрограмовуємої пам'яті даних-констант EEPROM і відсутність модуля АЦП. Ці та інші пов'язані з ними відмінності наведені в наступному списку:
1. Пам'ять програм електрично перепрограмовуєма (EEPROM). Це дозволяє користувачу досить просто безліч разів перепрограмовувати мікроконтролер, що дуже істотно на етапі відлагодження робочих програм і при зміні функціональних можливостей МКП в процесі створення та експлуатації.
2. Наявність додаткової електрично перепрограмовуємої EEPROM пам'яті для даних-констант розміром 64 х 8 байтів.
3. Чотири джерела переривання. Три з яких такі ж самі, як і в PIC 16С71:
– зовнішнє переривання з виводу RBO/INT,
– переривання від лічильника/таймера TMRO(RTCC),
– переривання від зміни сигналів на входах порту RB < 7:4 >, а четверте джерело нове:
– по завершенню запису даних в пам'яті EEPROM.
4. Робоча частота – 0 Гц.....10 МГц (мінімальний цикл виконання команди – 400 нс).
5. Модуль АЦП відсутній.
6. Керуючий регістр переривань INTCON модифікований.
Замість біта дозволу/заборони переривання від аналого-цифрового перетворювача ADIE в 6 розряді регістра INTCON знаходиться біт дозволу/заборони переривання по завершенню запису даних в пам'яті EEPROM (EEIE), причому:
– EEIE = 0 забороняє переривання (прапорець EEIF в регістрі EECON1),
– EEIE = 1 забороняє переривання.
Призначення всіх інших бітів регістра INTCON таке ж саме, як і в PIC 16С71.
7. У складі 15 спеціальних регістрів замість непотрібних в даному мікроконтролері ADCON0, ADCON1, ADRES1 і ADRES2 (в зв'язку з відсутністю АЦП) з'явилися нові регістри EEDATA, EECON1, EEADR і EECON2, які управляють EEPROM даних-констант і розташовані в ОЗП (RAM) відповідно за тими ж адресами.
Рис. 2.28. Структурна схема ОМК PIC16F84 (16C84)
2.4.2. Позначення виводів і їх функціональне призначення
Розташування і позначення виводів ОМК PIC 16С84 повністю співпадає з PIC 16С71 за винятком того, що ніжки RA0, RA1, RA2, RA3 в зв'язку із відсутністю АЦП представляють собою лише двонаправлені лінії вводу/виводу сигналів з ТТЛ рівнями.
2.4.3. Організація пам'яті даних (ОЗП)
Розміщення регістрів в пам'яті даних наведене на рис. 2.29.
Сторінка 0 | Сторінка 1 | ||
00 h | IND0 (*) | IND0 (*) | 80 h |
01 h | RTCC | OPTION | 81 h |
02 h | PCL | PCL | 82 h |
03 h | STATUS | STATUS | 83 h |
04 h | FSR | FSR | |
05 h | PORT А | TRISA | 85 h |
06 h | POTR В | TRISB | 86 h |
07 h | //////////// | ///////////// | 87 h |
08 h | EEDATA | EECON1 | 88 h |
09 h | EEADR | EECON2 | 89 h |
0А h | PCLATH | PCLATH | 8А h |
0B h | INTCON | INTCON | 8B h |
0C h (PIC16C84) 2F h 30 h (PIC16F83, PIC16FR83) 4F h | 36/68 регістрів загального призначення (ОЗП) ------------------- | Відображаються на банк 0 ---------------------- | 8С h AF h B0 h CF h |
50 h (PIC16F84, PIC16FR84) 7F h | /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | D0 h FF h |
(*) – нефізичний регістр (непряма адреса), ///// – відсутній, зчитується як "0"
Рис. 2.29. Розміщення регістрів в пам'яті даних
Область ОЗП організована як 128 х 8, має також 2 сторінки з однаковою ємністю (128 байтів) і практично не відрізняється від пам'яті даних PIC 16С71 за винятком того, що на місцях регістрів ADCON0, ADCON1, ADRES1 і ADRES2 в зв'язку із відсутністю АЦП знаходяться відповідно регістри управління EEPROM даних-констант EEDATA (08h), EECON1 (88h), EEADR (09h), EECON2 (89h). Всі регістри PIC 16C84 (16F84), також як і у всіх інших ОМК сімейства PIC, розділяються на дві функціональні групи: спеціальні регістри і регістри загального призначення (РЗП).
Регістри спеціального призначення використовуються для управління функціями мікроконтролера і можуть бути розділені на два набори: регістри базових функцій і регістри периферійних пристроїв. Регістри базових функцій включають в себе регістр-перемикач непрямої адресації (INDF), програмний лічильник (РС), представлений двома регістрами PCL і PCLATH, регістр слова стану (STATUS), регістр-покажчик непрямої адресації (FSR), робочий регістр (W), регістр переривань (INTCON), а також регістр режимів роботи або конфігурації попереднього дільника і таймера OPTION). До складу регістрів периферійних пристроїв входять регістри вводу/виводу (RA-порт А і RB-порт В), регістри даних (EEDATA) і адреси (EEADR) пам'яті даних-констант, регістр таймера-лічильника (TMRO) і регістри управління конфігурацією портів вводу/виводу (TRISA і TRISB).
Опис спеціальних регістрів наведений в табл. 2.16. Всі спеціальні регістри також відображаються на пам'ять даних.
До комірок ОЗП можна так само, як і в PIC 16С71, адресуватися прямо або побічно, через регістр-покажчик FSR (04h). Це, до речі, відноситься і до EEPROM пам'яті даних-констант.
2.4.4. Довготривала пам'ять даних-констант EEPROM
Пам'ять даних-констант EEPROM дозволяє прочитати і записати байт інформації. При записі байта автоматично стирається попереднє значення і записується нове (стирання перед записом). Всі ці операції проводить вбудований автомат запису EEPROM. Вміст елементів цієї пам'яті зберігається при вимкненому живленні.
Мікроконтролер PIC16C84 має EEPROM пам'ять даних-констант ємністю 64 х 8 бітів, яка дозволяє запис і читання під час нормальної роботи (у всьому діапазоні напруг живлення). Ця пам'ять не належить області регістрів ОЗП. Доступ до неї здійснюється через два регістри: EEDATA <08h>, який містить в собі 8-бітові дані для читання/запису і EEADR <09h>, який містить в собі адресу комірки, до якої йде звертання. Додатково є два керуючих регістри: <88h> і EECON2<89h>.
Таблиця 2.16
Опис спеціальних регістрів PIC 16F84
Адреса | Ім'я | Біт 7 | Біт 6 | Біт 5 | Біт 4 | Біт 3 | Біт 2 | Біт 1 | Біт 0 |
Банк 0 | |||||||||
00h | INDF | Використовується значення FSR для доступу до пам'яті даних (нефізичний регістр) | |||||||
01h | TMRO | 8-розрядний таймер/лічильник | |||||||
02h | PCL | Молодші 8 розрядів лічильника команд РС | |||||||
03h | STATUS2 | IRP | RP1 | RP0 | TO | PD | Z | DC | С |
04h | FSR | Регістр непрямої адресації (Покажчик адреси) | |||||||
05h | PORTA | _ | _ | _ | RA4/ TOCKI | RA3 | RA2 | RA1 | RA0 |
06h | PORTB | RB7 | RB6 | RB5 | RB4 | RB3 | RB2 | RB1 | RB0/ INT |
07h | |||||||||
08h | EEDATA | Регістр даних ППЗП даних-констант | |||||||
09h | EEADR | Регістр адреси ППЗП даних-констант | |||||||
0Ah | PCLATH | Старші розряди лічильника РС1 | |||||||
0Bh | INTCON | GIE | EEIE | TOIE | INTE | RBIE | TOIF | INTF | RBIF |
Банк 1 | |||||||||
80h | INDF | Використовується значення FSR для доступу до пам'яті даних (нефізичний регістр) | |||||||
81h | OPTION | RBPU | INTEG | TOCS | TOSE | PSA | PS2 | PS1 | PS0 |
82h | PCL | Молодші 8 розрядів лічильника команд РС1 | |||||||
83h | STATUS2 | IRP | RP1 | RP0 | TO | PD | Z | DC | С |
84h | FSR | Регістр непрямої адресації (Покажчик адреси) | |||||||
85h | TRISA | Біти управління портом А | |||||||
86h | TRISB | Біти управління портом В | |||||||
87h | |||||||||
88h | EECON1 | EEIF | WRERR | WREN | WR | RD | |||
89h | EECON2 | Регістр управління 2 ППЗП даних-констант (нефізичний регістр) | |||||||
0Ah | PCLATH | Старші розряди лічильника РС1 | |||||||
0Bh | INTCON | GIE | EEIE | TOIE | INTE | RBIE | TOIF | INTF | RBIF |
Примітки:
1. Старші розряди програмного лічильника РС < 12:8 > прямо недоступні. Вони можуть бути записані або прочитані тільки через регістр PCLATH.
2. Низький рівень сигналу на вході MCLR не змінює стану бітів PD і TO. Біти зберігають своє значення, поки не поступить будь-яка інша умова скидання.
Регістр EECON1 (Адреса 88h. Зміст релистра при включенні живлення – ---0x000) має наступний зміст:
– | – | – | EEIF | WRERR | WREN | WR | RD |
RD | – Біт читання: |
RD = 1: Запускає читання пам'яті даних EEPROM. Читання займає один цикл. Встановлюється програмно. Онулюється апаратно.
WR | – Біт запису: |
WR = 1: Запускає запис в пам'ять даних EEPROM. Встановлюється програмно. Онулюється апаратно.
WREN | – Біт дозволу запису в пам'ять даних EEPROM: |
WREN = 1: Дозволений запис.
WREN = 0: Заборонений запис. Після включення живлення WREN онулюється.
WRERR | – Прапорець помилки запису: |
WRERR = 1: Прапорець встановлюється, коли операція запису передчасно переривається сигналом скидання /MCLR (під час звичайного режиму чи режиму SLEEP), або сигналом скидання WDT під час звичайного режиму.
EEIF | – Прапорець запиту переривання по закінченню запису: |
EEIF = 1: Прапорець встановлюється, коли завершений запис. Відповідний біт дозволу переривання по закінченню запису в EEPROM – EEIE знаходиться в регістрі INTCON.
Керуючий регістр EECON2(Адреса: 89h). Значення після включення відсутнє, читається як “0” – фізично відсутній. При читанні EECON2 зчитується “0”. Регістр EECON2 призначений виключно для використання в послідовності команд, що здійснює запис в пам'ять EEPROM.
При зчитуванні даних з пам'яті EEPROMнеобхідно записати необхідну адресу в регістр EEADR і потім встановити біт RD в регістрі EECON1<0> в одиницю. Дані з'являться в наступному командному циклі в регістрі EEDATA і можуть бути прочитані. Дані в регістрі EEDATA защеплюються. Приклад фрагмента програми зчитування даних з пам'яті даних-констант EEPROM наведений нижче:
; Зчитування з пам'яті даних-констант.
Bcf STATUS, RP0 ; Установка банку 0.
Movlw CONFIG_ADDR ;
Movwf EEADR ; Адреса читання.
Bsf STATUS, RP0 ; Установка банку 1.
Bsf EECON1, RD ; Читання EEPROM.
Bcf STATUS, RP0 ; Установка банку 0.
Movf EEDATA, W ; Прочитані дані W.
При записі в пам'ять EEPROM, необхідно спочатку записати необхідну адресу в EEADR регістр і дані в EEDATA регістр. Потім виконати спеціальну обов'язкову послідовність команд, яка здійснює безпосередній запис:
; Обов'язкова послідовність команд.
;
Movlw 55h ;
Movwf EECON2 ; Запис 55 h.
Movlw AAh ;
Movwf EECON2 ; Запис AA h.
Bsf EECON1, WR ; Установка біта WR,
; початок циклу запису.
Під час виконання цього фрагмента програми, всі переривання повинні бути заборонені для точного виконання часової діаграми. Час запису – приблизно 10 мс. Фактичний час запису буде змінюватися в залежності від напруги, температури та індивідуальних властивостей кристала. У кінці запису біт WR автоматично онулюється, а прапорець завершення запису EEIF, він же запит на переривання, встановлюється. Приклад фрагмента програми запису в пам'ять даних-констант EEPROM наведений нижче:
; Запис в пам'ять даних-констант.
;
Bsf Status, RP0 ; Установка банку 1.
Bcf Intcon, GIE ; Заборона переривань.
; Обов'язкова послідовність команд.
Movlw 55h ;
Movwf EECON2 ; Запис 55 h.
Movlw Aah ;
Movwf EECON2 ; Запис AA h.
Bsf EECON1, WR ; Установка біта WR,
; початок циклу запису.
Bsf Intcon, GIE ; Дозвіл переривань.
Для запобігання випадковим записам в пам'ять даних передбачений спеціальний біт WREN в регістрі EECON1. Рекомендується тримати біт WREN вимкненим, крім тих випадків, коли треба відновити пам'ять даних. Більш того, кодові сегменти, які встановлюють біт WREN і ті, які виконують запис, повинні зберігатися на різних адресах, щоб уникнути випадкового виконання їх обох при збої програми.
Керуючі біти RD і WR запускають відповідно читання і запис. Вони можуть бути встановлені тільки програмно. Скидаються – апаратно по завершенню операцій читання/запису. Заборона програмного скидання біта WR запобігає передчасному закінченню запису.
Прапорець помилки WRERR встановлюється, коли процес запису переривається сигналом скидання /MCLR або сигналом скидання від WDT таймера. Рекомендуємо перевіряти цей прапорець WRERR і при необхідності проводити перезапис даних, дані і адреса яких зберігаються в регістрах EEDATA і EEADR.
Прапорець завершення перериванняEEIF встановлюється, коли вбудований автомат завершує запис в пам'ять даних. Він повинен бути скинутий програмно.
2.4.5. Організація переривань
Переривання в PIC 16С84 організовані так само, як і в PIC 16С71. Але замість переривання від АЦП (в зв'язку з його відсутністю) введене переривання по закінченні запису даних в EEPROM. У зв'язку з цим, як вже згадувалося раніше, модифіковано керуючий регістр переривань.
Прапорець запиту переривання по закінченні запису даних-констант в довготривалу пам'ять EEIF (EECON1<5>) встановлюється по закінченню автоматичного запису в EEPROM. Це переривання може бути замасковане скиданням біта EEIE (INTCON<6>).
Скидання біта запиту переривання EEIF в регістрі EECON1<5> може бути здійснено в програмі обробки.
– Конец работы –
Эта тема принадлежит разделу:
СТРУКТУРНА ОРГАНІЗАЦІЯ ТА РЕЖИМИ РОБОТИ ОМК PIC...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Таблиця 2.14
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов