Файл: Курс лекций по микроконтроллерам.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.06.2025

Просмотров: 1028

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

13

7)Контроллер обладает низким электропотреблением: при напряжении питания 2,4~6 В., потребляемый ток 2мА в нормальном режиме и 2мкА в режиме пониженного электропотребления.

8)реализуется в виде ИС с восемнадцатью выводами.

9)Имеется 12 линий ввода/вывода для подключения к объекту управления, организованных в два порта ввода/вывода:

порт А – четырехразрядный;

порт В – восьмиразрядный.

2.4. Внутренняя структура контроллера PIC16C58

Внутренняя ОЗУ (память данных) контроллера состоит из 73 восьмиразрядных РОН (регистров общего назначения) и 6 регистров специального назначения.

К специальным регистрам относят:

TMR0-регистр данных таймера счетчика контроллера.

STATUS-регистр признаков выполненной операции (слова состояния процессора).

FSR-регистр адреса для косвенной адресации данных.

PCL-младший байт счетчика РС контроллера.

ПОРТ А и ПОРТ В- регистр данных портов ввода/вывода.

Все перечисленные специальные регистры относятся к устройствам

непосредственно не связанным с ОЗУ. Однако, все эти регистры отображены в адресном пространстве ОЗУ, т.е. для команд они рассматриваются как ячейки ОЗУ с соответствующими адресами.

АЛУ контроллера позволяет обрабатывать восьмиразрядные данные и выполнять при этом следующие операции: сложение, вычитание, сдвиг, логические операции и битовые операции.

Если в команде контроллера используется 2 операнда, то один из них обязательно размещается в рабочем регистре (аккумуляторе W). Это основной регистр контроллера, и большинство команд оперирует с ним.

При выполнении команды, признаки полученного результата АЛУ обязательно запишется в регистр STATUS.

2.5. Схемы синхронизации PIC16C58.

Для генерации тактовой частоты к выводам OSC1 и OSC2 контроллера подключают кварцевый резонатор по схеме:

Qz 20МГц

OSC1

C1=15пФ

OSC2

C2=15пФ

14

Емкости С1и С2-запускающие.

Вместо кварцевого резонатора (Qz) возможно использование внешних RCцепочек:

+Uп=5В

R'=3 ... 100K

C'=20пФ OSC1

R’=3кОм fosc=5МГц R’=100кОм,fosc=100кГц

OSC2

fosc/4

При использовании RC-цепочек тактовая частота fosc нестабильна и зависит от изменения напряжения питания Uп, температуры окружающей среды и старения RC-элементов.

Для начального «Сброса» контроллера используют следующую

схему:

Диод VD для быстрого разряда емкости

VD

10k

+Uп=5В

при включении питания Uп.

10k

Данная схема формирует сигнал «Сброс»

(MCLR)

требуемой

длительности

MCLR

Сброс

(10…100мс).

1.0

Тактовая частота fosc внутри контроллера

делится на 4, т.о. формируется частота

машинных циклов: Fмц=fosc/4.

За один машинный цикл (МЦ) в

контроллере параллельно выполняется две операции:

выполнение текущей команды.

Выборка следующей команды из памяти.

2.6. Организация памяти программ контроллера

PIC16C58 (ПЗУ)

Память программ контроллера предназначена для хранения выполняемых контроллером программ и имеет объем 2к двенадцатиразрядных слов. Весь объем памяти программ разбит на четыре страницы, причем объем каждой страницы512 слов.

Команды всегда выполняется из текущей страницы памяти программ. Номер текущей страницы определяется шестым и пятым битом регистра «STATUS».

Эти биты обозначаются РА1 и РА0.

Общая структура памяти программ имеет вид:


15

Ячейка с адресом 7FFH является стартом, т.к. на нее осуществляется переход при сбросе, при включении питания. В ней располагают команду безусловного перехода GOTO на нужную программу.

2.7. Организация памяти данных (внутреннее ОЗУ контроллера PIC16C58)

Внутреннее ОЗУ состоит из :

73 регистров 0H (ячеек),организованных в виде четырех банков регистров;

банка специальных регистров, включающих семь регистров управления.

Общая структура памяти данных имеет вид:

Текущий, используемый в данный момент банк РОН определяется шестым и пятым битом регистра FSR.

Память данных построена т.о., что при выборе любого из банков остается доступным банк специальных регистров. При этом он заменяет отсутствующие ячейки с адресами (20H…2FH, 40…4FH, 60…6FH).

Рассмотрим подробнее управляющие регистры из банка специальных регистров:

INDF* (адрес в ОЗУ 0Н) – это регистр данных при косвенной адресации данных.

Физически данный регистр не существует, он используется только совместно с регистром FSR. При обращении к регистру INDF фактически происходит обращение к ячейки ОЗУ, адрес которой находится в регистре

FSR.

Пример.

ADDNF INDF,0 ; W

W+(ячейка с адресом из FSR)

TMR0 (адрес в ОЗУ 1Н) - регистр данных восьмиразрядного таймера-счетчика контроллера .

PCL (адрес в ОЗУ 2Н) - младший байт счетчика команд контроллера РС . Счетчик команд РС одиннадцатиразрядный и используется для адресации команд в памяти программ контроллера. Он позволяет адресовать

любую из 2048 = 211 команд, находящихся в памяти программ. Формат счетчика команд РС:

A10

A9

A8

A7

A6

A5

A4

A3

A2

A1

A0

6

5

PCL (ячейка с адресом 02Н)

PA1 PA2

STATUS

значение зависит от выполняемой команд

определяет номер

GOTO,то А8 определяется адресом перех

текущей страницы

да из команды

п п

CALL (вызов в п/п), то А8=0


16

PCL может изменятся любой командой перехода, либо командой изменения содержимого ячейки памяти .

STATUS (адрес в ОЗУ 03Н) - регистр признаков результатов (регистр состояния контроллера) имеет формат:

7

0

PA1

PA0

TO

TD

Z

DC

C

номер текущей страницы п п

Z - признак нулевого результата.

C - бит-признак переноса (заем) из старшего разряда.

DC - бит-признак дополнительного переноса из одной тетрады байта в другую.

TO и TD - биты, определяющие источник сигнала «Сброс контроллера» (сторожевой таймер WDT, внешний сигнал сброса), а также режим контроллера, в котором этот сигнал поступил (рабочий режим, режим пониженного потребления) .

FSR (адрес в ОЗУ 4Н) - регистр адреса при косвенной адресации операндов (см. INDF* ). Формат регистра FSR:

7

0

х

B1

B0

a4

a3

a2

a1

a0

номер текущего

адрес ячейки в

банка ПД

текущем банке ПД

Замечание. Если разряд a4

в регистре FSR a4 = 0 , то номер текущего

банка B1 , B0 не анализируется и всегда выбирается банк специальных

регистров.

Port A, Port B (адрес в ОЗУ 05Н и06Н) - регистры данных портов ввода/вывода контроллера.

Разрядность регистра PortA- 4 бита (отсутствует 4 старших бита), разрядность PortB - 8 бит.

Для управления портами используются специальные регистры управления: TRISA и TRISB (Transiver / Resiver Instruction Set).

Разрядность регистров TRISA и TRISB совпадает с разрядностью

соответствующих портов (Port A и Port B).

Установка бита в регистр TRIS управляет соответствующим битом

PortA и Port B.

Установка разряда регистра TRIS в единицу программирует соответствующий разряд порта на ввод информации. Установка в ноль программирует разряд порта на вывод.

Для записи информации в регистр TRIS используется специальные команды:

TRIS 5 ; W→TRISA


17

TRIS 6 ; W→TRISB

Чтение или запись информации в порт А или В осуществляется теми же командами, что и для записи/чтения ячеек ОЗУ:

MOV WF Port A, W ; Port A→N

MOV F Port A, W ; W→ Port A.

2.8. Модуль таймера/счетчика контроллера

PIC16C58

Данный модуль предназначен для :

подсчета числа внешних импульсов, подаваемых на вход контроллера TOCKI (режим счетчика);

подсчета числа машинных циклов контроллера (fosc/4) (режим таймера).

Замечание. Т.к. частота машинных циклов при использовании кварцевого резонатора высокостабильна, то второй режим используют для подсчета времени.

Структурная схема таймера/счетчика имеет вид:

fosc/4 (мц)

0

Прдварительный

1

делитель частоты

Задержка

Счетчик

TOCKI

1

0

2 импульса

TMR0

(8разр.)

8

3

к ОЗУ

7

0

OPTION

х

х

TOCS

TOSE

PS

PS2

PS1

PS0

Основными блоками таймера/счетчика является:

восьмиразрядный двоичный суммирующий счетчик TMR0;

восьмиразрядный предварительный делитель частоты, который также представляет восьмиразрядный счетчик с программируемым коэффициентом деления частоты .

Основной отличительной чертой счетчика TMR0 от восьмиразрядного предделителя частоты является то, что информацию о числе бит подсчитанных предделителем частоты считать невозможно.

Предделитель работает как программируемый делитель частоты. При записи информации в TMR0 автоматически обнуляется

предделитель частоты.

Поясним назначение бит регистра OPTION, управляющего работой таймера/счетчика и изображенного на рисунке выше:

TOCS - бит, определяющий режим таймера (TOCS=0) или счетчика

(TOCS=1);


18

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

0

1

1

1

0

0

PS -бит, определяющий назначение предва-рительного делителя частоты ( если PS=0, то предделитель используется со сторожевым таймером

WDT, но не с таймером TMR0, с TMR0 когда PS=1).

PS2

PS2

PS2

TMR0

WDT

0

0

0

1:2

1:1

0

0

1

1:4

1:2

0

1

0

1:8

1:4

0

1

1

1:16

1:8

1

0

0

1:32

1:16

1

0

1

1:64

1:32

1

1

0

1:128

1:64

1

1

1

1:256

1:128

PS2 −PS0 - биты, определяющие

коэффициент деления частоты предделителя в соответствии с таблицей.

Для записи информации в регистр OPTION используется специальная команда:

OPTION; W→OPTION

2.9. Сторожевой таймер WDT контроллера

PIC16C58

Сторожевой таймер предназначен для устранения аварийных зацикливаний программ контроллера (зависания).

Принцип его работы состоит в следующем, через строго определенный интервал времени (≈18мс) сторожевой таймер генерирует сигналы «сброс контроллера». Нормально функционирующее ПО не должно допускать сброса контроллера, осуществляя постоянное обнуление WDT и тем самым, заставляя его начать отсчет времени заново.

Обнуление WDT осуществляется специальными командами: CLEEP;

или

CLRWDT.

Если же программа зациклилась, то обнуление WDT не произойдет вовремя, а следовательно произойдет сброс контроллера и перезапуск ПО.