Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

ІКужій ЗАТВЕРДЖУЮ Заступник директора з НВР Я

Работа добавлена на сайт samzan.net:


МІНІСТЕРСТВО  ТРАНСПОРТУ  ТА  ЗВ’ЯЗКУ  УКРАЇНИ

 

ЛЬВІВСЬКИЙ  КОЛЕДЖ

ДЕРЖАВНОГО УНІВЕРСИТЕТУ ІНФОРМАЦІЙНО-КОМУНІКАЦІЙНИХ ТЕХНОЛОГІЙ

Навчальна дисципліна: Обчислювальна техніка та мікропроцесори

Лабораторія: апаратних засобів інформатизації

Спеціальність 5.091504  Обслуговування комп’ютерних та

інтелектуальних систем та мереж

РОЗГЛЯНУТО

на засіданні циклової комісії

Протокол №

від ”___”______20__ р.

Голова комісії

________________Л.І.Кужій

ЗАТВЕРДЖУЮ

Заступник директора з НВР

____________Я.Плешівський

„___”________20__ р.

ІНСТРУКЦІЯ

ДО  ПРАКТИЧНОЇ  РОБОТИ  № 2

НАЛАШТУВАННЯ МІКРОКОНТРОЛЕРА.

РЕГІСТРИ CONFIG, STATUS, OPTION.

 

Склав викладач:

М.І.Гамаль

Львів – 2010

1.МЕТА РОБОТИ: навчитись працювати з основними керуючими регістрами мікроконтролера, вивчити їх функції та призначення.

2.ЛІТЕРАТУРА:  

2.1. Предко М.Справочник по РІС-микроконтроллерам. Пер с англ. – М ДМК Пресс,2002, ООО «ДОДЭКА - XXI»,-512с.

2.2. Катрен Сид, РІС-микроконтроллеры. Все, что Вам необходимо знать.-М.: ООО «ДОДЭКА – XXI,2008, -656с.

2.3. Скороделов В.В. Проектирование устройств на однокристальных микроконтроллерах с RISC-архитектурой. В 2 кн. Кн. 1. Особенности проектирования МКУ и архитектура микроконтроллеров РІС: Учебн. пособие. – Х.: ХГПУ, 1999. – 120 с., ил.

2.4. Інструкція до даної практичної роботи.

3.ЗАВДАННЯ:

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

Завдання

Варіант_1

Варіант_2

В регістрі STATUS встановити біти вибору

0-вого банку

1-ого банку

В регістрі OPTІON встановити коефіцієнт розподілу попереднього дільника

1:32

1:64

Встановити в регістрі OPTІON попередній дільник

перед таймером TMR0

перед сторожовим таймером WDT

Задати в регістрі OPTІON спрацювання обліку імпульсів

по спадаючому фронті імпульсів

по наростаючому фронті імпульсів

Встановити використання в регістрі OPTІON підтягуючих резисторів

Встановити в регістрі INTCON біт дозволу

глобального переривання

по переповненні таймера

Встановити в регістрі INTCON біт дозволу переривання

по входу INT

по зміні рівнів сигналу на виводах RB4…RB7.

Зформувати слово конфігурації за допомогою директиви CONFІG:

Встановити біт захисту

виключений

включений

Встановити біт дозволу затримки включення живлення

включений

затримки не буде

Встановити біт дозволу роботи сторожового таймера

включений

виключений

Встановити вибір типу генератора

Стандартний кварцовий генератор

RC генератор із зовнішнім RC ланцюгом

  1.  Результати завдання записати у формі таблиць:

STATUS

IRP

RP1

RP0

-TO

-PD

Z

DC

C

OPTІON

-RBU

INTDEG

TOCS

TOSE

PSA

PS2

PS1

PS0

INTCON

GIE

EEIE

TOIE

INTE

RBIE

TOIF

INTF

RBIF

CONFІG

13

12

11

10

9

8

7

6

5

4

3

2

1

0

Не задіяні (читаються как 1)

CP

-PWRTE

WDTE

FOSC1

FOSCO

4. МЕТОДИЧНІ ВКАЗІВКИ:

Одними з основних елементів архітектури мікроконтролера є його регістри (регістри - це комірки пам'яті усередині МК, обмін інформацією між якими здійснюється простими й короткими командами).

У середині 70- х років минулого століття, коли мікропроцесори вже минули етап становлення, а мікроконтролери ще не виділилися з них у самостійний клас виробів, найбільш поширеними мікросхемами були 8- розрядні процесори другого покоління 8080, 8085 фірми Іntel, 6800 фірми Motorola і Z80 фірми Zіlog. Технологія, по якій вони створювалися, не дозволяла розмістити на кристалі більше 5...7 тисяч транзисторів, тому при створенні цих мікросхем розроблювачам доводилося до розумних меж зменшувати кількість вхідних у них елементів і вузлів.

Із цієї причини згадані мікропроцесори мали у своєму складі всього близько  десяти регістрів. Одним з них був лічильник команд PC (Programm Counter), уміст якого збільшувався після виконання кожної команди. Крім нього, всі згадані мікропроцесори мали один або два регістри-акумулятора, із вмістом яких можна було виконувати будь-які доступні мікропроцесору дії по переміщенню й обробці даних. Далі, МП мав 4 регістри, де програміст міг розміщати адреси комірок пам'яті, з якими йому стояло працювати. На противагу йому, інші три мікропроцесори мали по 6 так званих регістрів загального призначення (РЗП), у яких могли зберігатися не тільки адреси комірок пам'яті, але й константи, змінні, значення функцій - будь-які дані.

І цим резерви всіх мікропроцесорів практично вичерпувалися. Виключення становив лише Z80, що, у порівнянні з 8080 і 8085, мав подвійний комплект акумуляторів і регістрів загального призначення (правда, у кожний конкретний момент доступним був тільки один акумулятор і один комплект РЗП).

А навіщо мікропроцесору потрібні були регістри типу РЗП?   Чи не простіше було б працювати без них, зберігаючи всі оброблювані дані в пам'яті? Простіше, але  на порядок повільніше.

Із числами, розташованими в регістрах, мікропроцесор виконував ті або інші дії набагато швидше, ніж з тими ж даними, розташованими в зовнішній оперативній пам'яті (внутрішня була ще не під силу існуючої тоді технології). Так, додавання двох чисел, що перебувають у РЗП, займало кілька тактів (одиниці мікросекунд). Додавання двох чисел, розташованих в ОЗП, вимагало в 5...10  разів більшого числа тактів і виконувалося за 20...50 мкс. Тому алгоритми найбільш часто виконуваних фрагментів програми складалися таким чином, щоб зменшити число необхідних для їхнього виконання констант і змінних до тої кількості, що цілком (або майже цілком) розмістилося б у наявних регістрах.

На відміну від згаданих мікропроцесорів, що з'явилися наприкінці 70- х перші мікроконтролери вже містили на кристалі кілька десятків осередків оперативної пам'яті. Частина з них була відведена під регістри, яких стало можливим зробити більше, ніж в 8085 або Z80. Таким чином, програми стало писати помітно легше - велика кількість регістрів і  оперативна пам'ять, що доповнює їх майже настільки ж швидка внутрішня, практично зняли обмеження на число використовуваних програмою змінних і констант.

Доступ до регістрів

У РІС-мікроконтролерах може застосовуватися до чотирьох банків по 128 (0x080) регістрів у кожному. Доступ до кожного із цих банків регістрів забезпечується за допомогою бітів RP* регістра стану (табл. ).

Таблиця . Використання бітів RP1 і RP0 регістра стану для адресації оперативної пам'яті

Діапазон адрес регістрів

RP1

RP0

0x000 - 0x07F

0

0

0x080 - OxOFF

0

1

0x0100-0x017F

1

0

0x0180-0x01FF

1

1

Роблячи маніпуляції з регістрами й вбудовуючи їх у програму  можна реалізувати величезну кількість різних пристроїв. Без детального знання всіх елементів цього "РІС - конструктора", не може бути й мови про ефективну роботу зі складання програм.

У РІС-ах існують дві групи регістрів:

  1.  регістри загального призначення (GRP)
  2.  регістри спеціального призначення (SFR).

Ці регістри є елементами оперативної пам'яті. Тобто, вони зберігають інформацію тільки при включеному живленні. Всі регістри як загального, так і спеціального призначення, по об’єму, є однобайтними. Це - загальний стандарт.

Регістри загального призначення

Щоб використати ці регістри, необхідно "прописати" регістри у програмі ("ввести їх в експлуатацію"), і у випадках звертань до  їх вмісту, зробити із цим вмістом, визначені програмістом дії.

Регістри загального призначення використовуються як однобайтна (або багатобайтна, якщо для цієї мети використовуються кілька регістрів) оперативна пам'ять. В основному, вони використовуються для того, щоб зберегти які-небудь числа, з метою використання їх надалі. Причому, по ходу виконання програми, ці числа можуть змінюватися: збільшуватися, зменшуватися, скидатися, знову завантажуватися (як у незмінному, так і в зміненому виді) і т.д.. У ході виконання програми, той самий регістр загального призначення (або група цих регістрів) може використовуватися для роботи не тільки з однією, але й із двома або більш функціонально незалежними групами числових даних.

Регістри загального призначення перебувають у порожніх клітинках. Кожній такій клітинці відповідає своя адреса. Порожні вони тому, що назви їм призначає програміст. Наприклад, для роботи в програмі, необхідний регістр буферної пам'яті, у якому потрібно "притримати" число, з метою його використання надалі.

Наприклад, регістр з назвою  Mem та адресою 0Ch .

Це означає , що регістр Mem займе в області оперативної пам'яті клітинку, що розташована правіше клітинки з написом INTCON. Регістр буферної пам'яті умовно "прописаний" (йому призначена назва й привласнена адреса в області оперативної пам'яті) і тепер з ним можна працювати.

При складанні програми, у порожні клітки цієї таблиці, можна заносити назви регістрів загального призначення, а при необхідності, і які-небудь пояснювальні написи

Рис.Область оперативної пам’яті РІС16F84

Регістри спеціального призначення (SFR).

Деталі РІС-конструктора складаються не з одних регістрів загального призначення. До його "деталей" належить практично вся електронна "начинка" PIC контролера: тактовий генератор, система скидання, АЛП, пам'ять, пристрої, що забезпечують переривання, порти введення/виведення, таймер TMR0, попередній дільник, сторожовий таймер WDT тощо. Перераховані вище пристрої мають декілька режимів роботи, конкретний режим роботи яких вибирає програміст.

Цей вибір режимів відбувається в регістрах спеціального призначення, шляхом встановлення відповідних їх бітів в 0 або 1, а також шляхом встановки в 0 або 1 відповідних бітів у так званому слові конфігурації.

Ці регістри (SFR) перебувають у клітинках жовтого кольору (за адресами 07h і 87h - перебувають їхні назви). Назви й адреси цих регістрів стандартні (незмінні) і маніпулювати ними (призначати свої), на відміну від регістрів загального призначення, не можна. Єдине, що можна з ними зробити, так це тільки змінити їхній вміст, тобто, виконати ті або інші маніпуляції з їхніми бітами (встановити ті або інші з них в 0 або 1).

Залежно від цих маніпуляцій, електронна "начинка" МК здобуває властивості, що забезпечують функціонування програми (а значить і пристрою) за задумом програміста.

Деякі регістри SFR з назвами  дублюються (відображаються) в обох банках. Робота в більшості регістрів SFR відбувається в нульовому банку. При цьому, вміст регістрів SFR нульового банку, виділених червоним кольором, дублюється у першому банку.

Для роботи з регістрами SFR 1-го банку, виділеними чорним кольором, необхідно (при звертанні до кожного з них) перейти в 1-й банк, зробити з їхнім умістом необхідні дії, і повернутися після цього назад, у нульовий банк. У нульовому банку, дій з їхнім умістом робити не можна.

Склад регістрів спеціального призначення STATUS, OPTION_R, INTCON

Таких регістрів 5 (див. область оперативної пам'яті), і їх назви потрібно добре запам'ятати саме через необхідність зміни банку.Деякі регістри спеціального призначення, крім бітів, що безпосередньо впливають на настроювання "начинки" Піка, мають ще й біти, які на ці настроювання не впливають. Їх називають прапорцями.

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

Загальна інформація з SFR:

У регістрі STATUS утримуються прапорці стану АЛП, прапорці скидання мікроконтролера й біти керування банками пам'яті даних. Оскільки в регістрі STATUS присутні біти керування банками пам'яті необхідно, щоб він відображався у всіх банках пам'яті даних і мав однаковий зсув відносно початку банку. Регістр STATUS може бути адресований будь-якою командою, як і будь-який інший регістр пам'яті даних. Якщо звертання до регістра STATUS виконується командою, що впливає на прапори Z, DC і C, то зміна цих трьох бітів командою заблоковано. Ці біти скидаються або встановлюються відповідно до логіки ядра мікроконтролера.

Регістр STATUS доступний для будь-якої команди так само, як будь-який інший регістр. Проте біти TO і PD встановлюються апаратно і не можуть бути записані в регістр статусу програмно. Це слід мати на увазі при виконанні команди із використанням регістра статусу. Наприклад, команда CLRF f3 обнулить всі біти, крім бітів TO і PD, а після цього встановить біт Z = 1. Після виконання цієї команди регістр статусу може і не мати нульового значення (через біти TO і PD) f3 = 000?? 100. Тому рекомендується для зміни регістра статусу використовувати тільки команди бітового встановлення BCF, BSF, MOVWF, що не змінюють інші біти статусу. Вплив всіх команд на біт статусу можна подивитися в описі команд.

У регістрі STATUS розташовані три робочі біти (5,6,7). 5-им бітом перемикаються банки (0 - нульовий банк, 1 - перший банк). На момент старту (початку виконання) програми завжди автоматично виставляється нульовий банк. Біт RP1 встановлюється рівним нулю й для зміни банку досить змінювати тільки значення біта RP0 (за замовчуванням RP0 установлюється в 0).

Зважаючи на те, що 7-й біт (IRP) також, за замовчуванням, встановлюється в 0, і в PIC16F84A 2-го й 3-го банку просто немає.Отже: у регістрі STATUS, у додатку до PIC16F84A, є всього один робочий біт перемикання банків RP0.

Деякі мікроконтролери не вимагають бітів ІRP і RP1 (STATUS<7:6>). У цьому випадку біти ІRP і RP1 не використовуються ЦПП й АЛП. Не рекомендується використовувати ці біти як біти загального призначення для сумісності програми з іншими мікроконтролерами (при записі в регістр STATUS біти ІRP і RP1 повинні рівнятися '0').  Прапори C і DC використовуються як біти запозичення й десяткового запозичення відповідно, наприклад, при виконанні команд вирахування SUBLW і SUBWF.

Регістр STATUS

біт 7:              ІRР: Біт вибору банка при непрямій адресації

1 = банк 2, 3 (100h - 1 FFh)

0 = банк 0, 1 (000h - 0FFh)

біти 6- 5:  RP1:RP0: Біти вибору банку при безпосередній адресації

11 =банк 3 (180h - 1FFh)

10 = банк 2 (100h - 17Fh)

01 = банк 1 (080h - 0FFh)

00= банк 0 (000h - 07Fh)

біт 4:   -TO: Прапор переповнення сторожового таймера

1= після POR або виконання команд CLRWDT, SLEEP

0= після переповнення WDT

біт 3:   -PD: Прапор включення живлення

1= після POR або виконання команди CLRWDT

0= після виконання команди SLEEP

біт 2:   Z: Прапор нульового результату

1= нульовий результат виконання арифметичної або логічної операції

0= не нульовий результат виконання арифметичної або логічної операції

біт 1:    DC: Прапор десяткового переносу/позики (для команд ADDWF, ADDWL, SUBWF,

                                  SUBWL), позика має інверсне значення

1= був перенос із молодшого напівбайта

0= не було переносу з молодшого напівбайта

біт 0:                   C: Прапор переносу/позики (для команд ADDWF, ADDWL, SUBWF, SUBWL),  

                                    позика має інверсне значення

1= був перенос зі старшого біта/ 0 = не було переносу зі старшого біта

C – Прапорць перенесення/позики.

Для команд ADDWF і SUBWF. Цей біт встановлюється, якщо в результаті операції з самого старшого розряду відбувається перенесення. Віднімання здійснюється шляхом додавання додаткового коду другого операнда. При виконанні команд зсуву цей біт завжди завантажується з молодшого або старшого біта джерела, що зсувається.

; SUBWF Example #1 

;

clrf 0x20 ; f(20h) = 0 

movlf       1 ; wreg = 1 

subwf 0x20 ; f(20h) = f(20h)-wreg = 0 = FFh

; Carry = 0:

; Результат;від'ємний.

; SUBWF Example #2 

;

movlw 0xFF

movwf 0x20 ; f(20h) = FFh

clrw  ; wreg = 0 

subwf 0x20 ; f(20h) = f(20h)-wreg = FFh-0 = FFh

; Carry = 1: Результат додатний.


DC – Прапорець десяткового перенесення/позики.

Для команд ADDWF і SUBWF. Цей біт встановлюється, якщо в результаті операції з четвертого розряду відбувається перенесення. Механізм встановлення десяткового біта перенесення "DC" такий же, відрізняється лише тим, що відстежується перенесення з четвертого біта.

 

Z – Прапорець нульового результату:

Встановлюється, якщо результатом арифметичної або логічної операції є нуль.

PD – Power Down (режим зберігання даних):

Встановлюється в "1" при включенні живлення або за командою CLRWDT. Скидається в "0" командою SLEEP.

TO – Time Out. Прапорець спрацьовування сторожового (Watchdog) таймера:

Встановлюється в "1" при включенні живлення і командами CLRWDT, SLEEP. Скидається в "0" по закінченню затримки часу таймера WDT.

Регістр OPTІON_REG

Регістр OPTІON_REG доступний для читання й запису, містить біти керування:

  •  попереднім дільником TMR0/WDT;
  •  активним фронтом зовнішнього переривання RB0/ІNT;
  •  підтягуючи ми резисторами,  на входах PORTB.

біт 7:   -RBPU: Включення підтягуючи  резисторів на входах PORTB

1 = резистори  відключені

0 = резистори  включені

біт 6:            ІNTEDG: Вибір активного фронту сигналу на вході зовнішнього переривання ІNT

1 = переривання по передньому фронту сигналу

0= переривання по задньому фронту сигналу

біт 5:     T0CS: Вибір тактового сигналу для TMR0

1= зовнішній тактовий сигнал з виводу RA4/T0CKІ

0= внутрішній тактовий сигнал CLKOUT

біт 4:        T0SE: Вибір фронту збільшення TMR0 при зовнішньому тактовому сигналі

1= збільшення по задньому фронті сигнала (з високого до низького рівня) на      

виводі RA4/T0CKІ

0= збільшення по передньому фронті сигнала (з низького до високого рівня) на

виводі RA4/T0CKІ

біт 3:    PSA: Вибір включення попереднього дільника

1= попередній дільник включений перед WDT

0 = попередній дільник включений перед TMR0

біти 2- 0:     PS2: PS0: встановлення коефіцієнта розподілу попереднього дільника

Значення

Для TMR0

Для WDT

000

1:2

1:1

001

1:4

1:2

01 0

1:8

1:4

011

1:16

1:8

1 00

1:32

1:16

1 01

1:64

1:32

110

1:128

1:64

111

1:256

1:128

Всі 8 бітів регістра OPTION  - робочі.

Біти PS0,PS1,PS2 визначають коефіцієнт розподілу попереднього дільника. (Попередній дільник - це послідовний ланцюжок з 8-ми тригерів, кожний з яких ділить на 2. Таким чином, максимальний коефіцієнт поділу = 256, і він, у межах дозволених таблицею значень, може задаватися значеннями бітів PS0,PS1,PS2. Попередній дільник може бути включений або перед таймером TMR0, або після сторожового таймера WDT.

Це визначає 3-й біт регістра OPTION (PSA).

Таймер TMR0 - те ж саме, що й попередній дільник (Кділення = 256), але з можливістю попередньої установки і синхронізації. Попередня установка це є запис у таймер числа, починаючи з якого відбувається рахунок. Звичайно, такого роду завантаження (числову корекцію) роблять для завдання якоїсь початкової точки відліку. Якщо таймер TMR0 працює без попередньої установки, його коефіцієнт зподілу завжди дорівнює 256 і не міняється.

Основна функція таймера TMR0 - підрахунок кількості імпульсів за певне програмою час. Через кожні 256 імпульсів (при переході зі стану FFh у стан 00h) відбувається так зване переповнення таймера (перехід на нове кільце рахунку), кількість яких (при необхідності підрахунку кількості імпульсів більшого, ніж 256) підраховується. Наприклад: за 1сек. відбулося 10 переповнень, значить TMR0 порахував 2560 імпульсів. Якщо приплюсувати до цієї кількості вміст TMR0 на момент закінчення рахунку, то одержимо точну кількість імпульсів, що надійшли на вхід TMR0 за 1сек. Якщо перед TMR0 включений попередній дільник, то в підсумок підрахунку вносяться відповідні корективи, обумовлені заданим коефіцієнтом розподілу попереднього дільника й числом, що знаходиться у попередньому дільнику на момент закінчення рахунку.

На такому підрахунку й ґрунтується принцип роботи пристроїв, що роблять облік імпульсів за заданий інтервал часу.

Сторожовий таймер WDT це RC-Одновібратор (RC-очікуючий мультивібратор) з перезапуском, що формує імпульс тривалістю приблизно 18мс. Якщо робота WDT дозволена (а вона може бути й заборонена), то після старту програми, він запускається, і якщо його, в інтервалі часу 18мс., не запустити знову, то він закінчить формування імпульсу, і по його задньому фронті, сформується сигнал скидання, після чого програма почне виконуватися зі свого початку. У випадку "зависання" програми, WDT, скинувши програму на початок, може вивести її із цього стану. Саме тому таймер WDT і названий сторожовим. Для забезпечення цього сторожового режиму, у ході виконання програми, необхідно періодично (через час не більше 18мс.) скидати WDT (не допускати його спрацьовування).

Якщо після WDT поставити попередній дільник, то період скидання WDT можна збільшити (це залежить від заданого Кділ попереднього дільника)

3-й біт (PSA) регістра OPTION визначає, до чого підключити попередній дільник (до TMR0 або WDT).

Якщо попередній дільник включений після WDT, то вони обоє скидаються по команді скидання WDT.

4-тим бітом регістра OPTION (TOSE) встановлюється момент спрацьовування таймера TMR0. При установці біта TOSE в 1, рахунок відбувається по спадах імпульсної послідовності (перехід від 1 до 0), що є присутнім на виводі RA4/TOCKI, а при установці його в 0 - по фронтах (перехід від 0 до 1).

Значення 5-го біта регістра OPTION (TOCS) визначає, який сигнал буде подаватися на вхід TMR0: або зовнішній сигнал з рахункового входу RA4/TOCKI (біт установлюється в 1), або внутрішній тактовий сигнал CLKOUT (біт установлюється в 0). У якості внутрішнього тактового сигналу використовується сигнал із частотою опорного генератора Піка, розділеної на 4, тобто, у цьому випадку, TMR0 буде облікувати кожний машинний цикл (1мкс. при застосуванні кварцу на 4мГц). Це - для випадку роботи TMR0 без попереднього дільника.

Якщо використовується попередній дільник, то потрібно врахувати його коефіцієнт розподілу. 6-й біт регістра OPTION (INTEDG) визначає, по якому саме перепаді, на вході зовнішнього переривання INT, буде починатися виконання підпрограми переривання. 1 - "відхід" у підпрограму переривання буде відбуватися по фронті сигналу на виводі RB0/INT, 0 - по спаду.

Залежно від стану 7-го біта регістра OPTION (-RBPU), до виводів порту В або підключаються, або не підключаються підтягуючі резистори між виводами порту В и плюсом джерела живлення.

В PIC16F84A, вони підключаються або відключаються "оптом", тобто, всі 8, а не вибірково. Вони можуть побут підключені, до виводів порту В, і тільки у випадку установки режимів їхньої роботи "на вхід".

Виводи порту В можуть працювати як "на вхід", так і "на вихід". При роботі "на вихід", підтягуюючі резистори автоматично відключаються (якщо вони були підключені), тому що виводи засувок портів мають свої підтягуюючі резистори, які включені постійно (навантаження засувок).

При роботі "на вхід" підтягуюючі резистори, якщо вони були підключені, не відключаються.

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

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

У цьому випадку, підтягуюючий резистор порту В буде навантаженням зовнішнього пристрою з відкритим колектором або відкритим стоком. Якщо вихідні каскади зовнішніх пристроїв мають "своє" навантаження, то підтягуюючі резистори  підключати не потрібно.

В деяких випадках, це може привести до зміни режиму роботи вихідного каскаду зовнішнього пристрою по постійному струмові.

Регістр INTCON має 5 робочих бітів. Це регістр керування перериваннями.

Після виникнення факту переривання, за рахунок "відходу" робочої точки програми в підпрограму переривань, відбувається тимчасове припинення виконання "основної" програми.

Після повернення з підпрограми переривань, відпрацьовування "основної" програми триває.

Якщо в складі програми є підпрограма переривань, то в "шапці" встановлюється так званий вектор переривань, що також, як і команда старту для "основної" програми, визначає початкову адресу лічильника команд для першої команди, але тільки не "основної" програми, а підпрограми переривань.

"Основна" програма стартує й виконується доти, поки робоча крапка програми не ввійде в "зону" дозволу переривань.

Якщо в цій "зоні" відбувається, наприклад, зовнішнє переривання по входу RB0/INT, то адреса наступної команди "основної" програми запам'ятовується (адреса повернення записується в стек), виконання "основної" програми припиняється, і відбувається перехід (по векторі переривання) на початок виконання підпрограми переривання. Далі, підпрограма переривань виконується по такому ж принципі, як і "основна" програма, аж до закінчення цієї підпрограми. Наприкінці підпрограми переривань завжди виконується спеціальна команда повернення. При цьому, зі стека витягається адреса повернення, після чого "основна" програма починає виконуватися далі.

Таким чином, переривання - це специфічний перехід, у більшості випадків, по зовнішньому впливі, з "основної" програми, на виконання підпрограми переривання, з наступним поверненням з не в "основну" програму. У РІС-ах є кілька джерел переривань.

Для того, щоб відбулося кожне з них, спочатку потрібно встановити біт глобального дозволу переривань GIE (встановити в 7-м біт регістра INTCON одиницю).

6-й біт (EEIE) дозволяє/забороняє переривання по закінченню циклу запису в EEPROM пам'ять даних.

5-й біт (TOIE) дозволяє/забороняє переривання по переповненню TMR0, тобто, якщо цей вид переривань дозволений, то відхід у підпрограму переривання відбудеться при зміні вмісту TMR0 з FFh на 00h (при переповненні).

4-й біт (INTE) дозволяє/забороняє зовнішнє переривання по входу RB0/INT.

3-й біт (RBIE) дозволяє/забороняє переривання по зміні рівня сигналу на кожному з виводів RB4...RB7.

В шапці програми описуються біти конфігурації, в які входять:

  1.  Біт захисту
  2.  Біт дозволу роботи таймера включення живлення
  3.  Біт дозволу роботи сторожового таймера
  4.  Вибір типу генератора

Біти КОНФІГУРАЦІЇ.   Адреса 2007h

13

12

11

10

9

8

7

6

5

4

3

2

1

0

Не задіяні (читаються как 1)

CP

-PWRTE

WDTE

FOSC1

FOSCO

Біт 4

CP

Біт захисту:

1 - захист виключений

0 - захист включений

Біт 3

-PWRTE

Біт дозволу роботи таймера включення харчування PWRT:

0- буде вироблятися затримка при включенні живлення

1- затримки вироблятися не буде

Біт 2

WDTE

Біт дозволу роботи сторожового таймера  WDT:

1 – WDT включений

0 - WDTвиключений

Біт 1,0

FOSC1 FOSCO

Біти вибору типу генератора

Режимы тактового генератора:

00

LP - генератор

НЧ генератор для економічних додатків

01

XT - генератор

Стандартний кварцовий генератор

10

HS - генератор

ВЧ кварцовий генератор

11

RC - генератор

RC генератор із зовнішньої RC ланцюгом

Напруга живлення

Тип генератора

Макс, робоча частота

2-3 v

RC

2 Мгц

LP

200 Кгц

3 - 6 v

RC, XT

4 Мгц

LP

200 Кгц

4,5-5,5 v

HS

10 Мгц

Біти конфігурації задаються за допомогою директиви CONFІG.

ПРИКЛАД 1

LІST р=р16С77   ; Вибір типу м/контролера.

#ІNCLUDE <P16C77.ІNC>  ; Підключення допоміжного файлу.( Набір символів, доступних для ;конкретного мікроконтролера, перебуває у відповідному файлі ІNC)

;Настроювання бітів конфігурації

__CONFІG _ XT_OSC_ & PWRTE _ON &_ CP_OFF &_WDT_ON

……………………

org 0   ; Установка нульової адреси в пам'яті програм,

goto START   ; Початок виконання програми.

…………………….

end

ПРИКЛАД 2

CONFIG 03FF1H ; Біт захисту виключений, WDT виключений,

; стандартний XT - генератор.

; Визначення положення регістрів спеціального призначення.

ПРИКЛАД  3

__CONFIG _CP_OFF &_WDT_OFF & _PWRTE_ON & _XT_OSC

5.КОНТРОЛЬНІ ПИТАННЯ:

  1.  Для чого призначені регістри?
  2.  Які спеціальні регістри застосовуються в МК РІС?
  3.  Яку функцію виконує регістр STATUS, і які він має прапорці?
  4.  Для чого застосовується регістр OPTІON?
  5.  Якими бітами встановлюється коефіцієнт попереднього дільника для TMR0 та WDT?
  6.  Для чого призначений регістр INTCON?
  7.  Які робочі регістри в слові конфігурації?

6.ЗМІСТ ЗВІТУ:

6.1. Мета роботи.

6.2. Завдання.

6.3. Індивідуальне завдання і результати його виконання.

6.4. Письмові відповіді на контрольні питання.  




1. . Гармонические колебания
2. Адаптація учнів 5х кл
3. Менеджмент СТРАТЕГИЧЕСКОЕ ПЛАНИРОВАНИЕ В ДЕЯТЕЛЬНОСТИ ОАО РЖД
4. тематичному аналізі непридатні оскільки неможливо побудувати первісну
5. ЛАБОРАТОРНАЯ РАБОТА 8 Функции в EXCEL
6. ОТЧЕТ ПО ПРЕДДИПЛОМНОЙ ПРИКТИКЕ Выполнил студент гр
7. издательского совета СанктПетербургского государственного университета культуры и искусств
8. тематика реферативных работ.html
9. тема уголовного права как отрасли права
10. К началу 30 годов международная обстановка изменилась
11. Тема ЦІННОСТІ В ЖИТТІ ЛЮДИНИ ТА СУСПІЛЬСТВА
12. День Студента Настоящий документ представляет собой общие Правила для проведения детективной ролевой
13. БУКМАСТЕР 1993~ 191 с- ил
14. Ознайомлення з програмним пакетом MicroSim PSPICE 80
15. Проблема взаимодействия природы и культуры в творчестве Набокова
16. Конфликт понятие и виды Конфликтная ситуация
17. ВСЕУКРАИНСКИЙ АКЦИОНЕРНЫЙ БАНК новая редакция У Т В Е Р Д Ж Е Н О Решением Общего собрания акционеро
18. Безнадзорные дети
19. Соединяет предложения или члены предложения выражая противопоставление сопоставление
20. I Введение1