рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

RP1, RP0 – Биты 6 и 5 регистра FSR, соответственно

RP1, RP0 – Биты 6 и 5 регистра FSR, соответственно - раздел Образование, Архитектурой   Рис. 2.6. Прямая И Косвенная Адресация   ...

 

Рис. 2.6. Прямая и косвенная адресация

 

не используется, регистр f4 может быть использован как 5-ти битовый регистр общего назначения. Для PIC16C57 первые 16 байт каждого банка представляют собой физически одни и те же регистры. Только тогда, когда бит 4 (f4) установлен в единицу (указывает на следующие 16 байт), биты 5 и 6 выбирают один из четырех банков по 16 регистров каждый. Бит 7 регистра (f4) не используется и всегда читается как единица.

 

2.2.5.Регистр состояния STATUS

Регистр состояния (f3) содержит арифметические флаги АЛУ, состояние контроллера при сбросе и биты выбора страниц для программ с обьемом памяти превышающим 512 слов (PIC16C56/PIC16C57).Регистр STATUS доступен для любой команды так же, как любой другой регистр. Однако, биты TO и PD устанавливаются аппаратно и не могут быть записаны в регистр статуса программно. Это следует иметь в виду при выполнении команды с использованием регистра статуса. Например, команда CLRF f3 обнулит все биты, кроме битов TO и PD, а затем установит бит Z=1. После выполнения этой команды регистр статуса может и не иметь нулевое значение (из-за битов TO и PD) f3= 000??100. Поэтому рекомендуется для изменения регистра статуса использовать только команды битовой установки BCF, BSF, MOVWF, которые не изменяют остальные биты статуса. Воздействие всех команд на биты статуса можно посмотреть в «Описании команд» [8].

Биты 5-6 регистра статуса определяются как биты адреса страниц PA0-PA1 программной памяти(только для PIC16C56/PIC16C57 !!!). Когда исполняются команды GOTO, CALL и команды, когда программный счетчик изменяется, например MOVWF 2, биты адреса страниц PA0-PA1 загружаются в биты программного счетчика A9-A10. Таким образом, прямой адрес, указанный в слове команды, указывает на место внутри определенной страницы памяти. Команда RETLW не изменяет биты выбора страниц. После сигнала «Сброс»биты регистра статуса PA0-PA1 обнуляются.

Размещение флагов в регистре STATUS (Адрес: 03h. Значение по включению питания: 0001 1ххх) следующее:

 

b7 b6 b5 b4 b3 b2 b1 b0

PA2 PA1 PA0 TO PD Z DC C

 

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.


PA0, PA1 - . . . . . . . . . . . . . . .

Для кристаллов PIC16C54/C55 - это биты общего назначения.

Для PIC16C56:

PA0 - Бит выбора страницы

0= Страница 0 (000—FF),

1= Страница 1 (200—FF).

PA1 - Бит общего назначения.

Для PIC16C57:

PA1, PA0 - оба бита выбора страниц:

00= Страница 0 (000—FF),

01= Страница 1 (200—FF),

10= Страница 2 (400—FF),

11= Страница 3 (600—FF).

PA2 - Бит общего назначения (зарезервировано для будущих

разработок).

2.2.6. Регистр OPTION

Это регистр конфигурации предделителя и RTCC (TMRO). Значениями битов в этом регистре (он не имеет адреса!) определяется подключение предделителя к RTCC или WDT, коэффициент его деления, источник счетных импульсов, выбирается фронт сигнала для RTCC. Регистр OPTION предназначен только для записи и имеет ширину 6 бит. Во время исполнения команды "OPTION" содержимое регистра W загружается в этот регистр. По сигналу «Сброс» все биты этого регистра устанавливаются в единицы.

Регистр OPTION (Адрес: нет. Значение по включению питания: 11 1111) имеет следующее содержание:

 

b5 b4 b3 b2 b1 b0

RTS (T0CS) RTE (T0SE) PSA PS2 PS1 PS0

 

PS2...PS0 - Настройка предделителя (см. табл.2.4).

PSA -Бит, указывающий, что делитель работает с RTCC (TMRO) или WDT:

0 – RTCC,

1 – WDT.

RTE (T0SE) - Фронт сигнала RTCC:

0 - инкремент по положительному фронту на ножке RTCC,

1 - инкремент по отрицательному фронту на ножке RTCC.

RTS (T0CS) - Источник сигнала для RTCC:

0 - сигнал от внутреннего генератора,

1 - внешний сигнал на ножке RTCC.

 

2.2.7. Программный счетчик

Программный счетчик обеспечивает доступ к 12‑битным ячейкам встроенной постоянной памяти (EPROM), длина которой может быть до 2048 ячеек.

В зависимости от типа PIC, программный счетчик (PC) и соответствующий двухуровневый аппаратный стек имеют ширину от 9 до 11 бит (см. табл.2.5).

При cбросе, все биты программного счетчика устанавливаются в единицы. В процессе выполнения программы PC автоматически инкрементируется при выполнении каждой команды, если команда сама не изменит его в следующих случаях:

1) при исполнении команды GOTO в программный счетчик загружаются младшие 9 бит (PC <8:0>). В случае использования PIC16C56 или PIC16C57, в старшие два бита программного счетчика (PC <10:9>) загружаются биты выбора страниц PA1 и PA0 (биты 6 и 5 регистра статуса). При помощи команды GOTO можно переместиться в любое место любой страницы памяти программ;

 

Таблица 2.4

Настройка предделителя.

 

  PS2….PS0 Коэффициенты деления
RTCC (TMRO) WDT
0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1   1 : 2 1 : 4 1 : 8 1 : 16 1 : 32 1 : 64 1 : 128 1 : 256   1 : 2 1 : 4 1 : 8 1 : 16 1 : 32 1 : 64 1 : 128 1 : 256  

 

 

Таблица 2.5.

Ширина программного счетчика и стека

 

Тип МК Ширина PC Ширина стека
PIC16C54/PIC16C55 9 бит 9 бит
PIC16C56 10 бит 10 бит
PIC16C57 11 бит 11 бит

 

2) при исполнении команды CALL в программный счетчик загружаются младшие 8 бит, в то время как девятый бит обнуляется. Значение PC, увеличенное на единицу, будет сохранено в стеке. В случае PIC16C56/PIC16C57, в старшие два бита PC (PC <10:9>) загружаются биты выбора страниц PA1, PA0 (биты 6 и 5 регистра статуса);

3) команда RETLW выгружает в программный счетчик содержимое из вершины стека;

4) если программный счетчик задействован в команде (например, MOVWF 2, ADDWF 2, BSF 2,5), то 8 бит результата исполнения команды будут загружены в младшие 8 бит программного счетчика. Девятый бит PC будет обнулен. В случае PIC16C56/PIC16C57, в старшие биты PC<10,9> будут загружены биты выбора страниц PA1, PA0 (биты 6 и 5 в регистре статуса).

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

 

2.2.8. Стек и возвраты из подпрограмм

 

В микроконтроллерах PIC16C5X используется двухуровневый аппаратный стек. Это означает, что он может хранить одновременно не более двух адресов возврата.

Команда CALL инкрементирует текущее значение программного счетчика и записывает его в стек на уровень 1. При записи на уровень 1 стека его предыдущее значение автоматически записывается на уровень 2. Если вызывается более двух вложенных подпрограмм, то только два последних адреса возврата будут сохранены.

При исполнении команды RETLW в программный счетчик выгружается содержимое стека первого уровня. Одновременно содержимое стека второго уровня копируется в стек первого уровня. Если исполняются более двух команд RETLW друг за другом, в стеке обоих уровней будет записано значение второго уровня.

 

2.2.9. Рабочий регистр W

 

Рабочий регистр W содержит второй операнд в двухоперандных командах и поддерживает внутреннюю передачу данных.

 

 

2.2.10.Порты ввода/вывода

 

Регистры ввода/вывода могут управляться, как любые другие регистры. Однако, команда «чтение» (например MOVF 6,W) всегда считывает фактический уровень сигнала на ножке порта, независимо от того, запрограммирован этот разряд порта на ввод или на вывод. После сигнала «Сброс» все порты ввода/вывода устанавливаются на «ввод» (электрически эквивалентно третьему состоянию), а управляющие регистры ввода/вывода (TRISA, TRISB, TRISC) устанавливаются в единицы (конфигурация на ввод). Для того, чтобы конфигурировать некоторые линии порта на вывод, необходимо установить соответствующие биты в нужном TRIS регистре в «0». Это можно делать командой "TRIS f".

Порт А является 4‑битовым портом ввода/вывода. Используются только младшие 4 бита (RA0-RA3). Старшие биты 4— всегда читаются как нули.

Порт B является 8‑битовым портом ввода/вывода.

Порт С для PIC 16C55/C57: 8-битовый порт ввода/вывода. Для

PIC16C54/C56: внутренний регистр памяти (не порт) общего назначения.

Схема одного разряда (линии) порта ввода-вывода приведена на рис.2.7.

 

 

Защелка для бита данных

D Q   C /Q   C
От шины данных

Vdd

XOR
p

Вывод порта
Запись (WR Port )

       
 
   


Это один из бит рег. TRIS

От регистра W

D Q   C R /Q   C
           
 
   
     
 
 

 


  AND
По команде"TRIS f"

n

Сброс

 

На шину данных Vss

           
   
 
   
 
 

 


Чтение ( RD TRIS)

 

 

Рис. 2.7. Схема одного разряда порта ввода/вывода PIC 16C5X

 

При операциях ввода порты не защелкиваются. Входной сигнал должен присутствовать пока идет процесс чтения (напр. MOVF 6, W). При операциях вывода порты защелкиваются и сохраняют значение до тех пор пока не будут перезаписаны. На рис.2.7 не показаны диоды, которые защищают ножку порта от внешних импульсов большого напряжения. Они ограничивают импульсное напряжение на ножке значениями от Vss - 0,6 до Vdd + 0,6 В. Если статическое напряжение, по каким либо причинам, выйдет за указанные пределы, то возникнут большие статические токи, способные вывести микроконтроллер из строя.

Проблемы при организации двунаправленных портов.Некоторые команды выполняются в режиме чтение-модификация-запись. Например, команды BCF и BSF считывают порт целиком, модифицируют один бит и выводят результат обратно. Здесь необходима осторожность. Например, команда BSF для бита 5 регистра f6 (порт В) сначала считает все восемь бит. Затем выполняются действия над битом 5 и новое значение байта целиком записывается в выходные защелки. Если другой бит регистра f6 используется в качестве двунаправленного ввода/вывода (скажем бит 0) и в данный момент он определен как входной, входной сигнал на этой ножке будет считан и записан обратно в выходную защелку этой же ножки, затирая ее предыдущее состояние. До тех пор пока эта ножка остается в режиме ввода, никаких проблем не возникает. Однако, если позднее линия 0 переключится в режим вывода, ее состояние будет неопределенным.

На вывод, работающий в режиме выхода, не должны подключатся внешние нагрузки по схеме «монтажное И» или «монтажное ИЛИ». Возникающие пи этом большие токи могут повредить кристалл.

Последовательное обращение к портам ввода/вывода.Запись в порт вывода происходит в конце командного цикла. Но при чтении, данные должны быть стабильны в начале командного цикла. Будьте внимательны в операциях чтения, следующих сразу за записью в тот же порт. Здесь надо учитывать инерционность установления напряжения на выводах. Может потребоваться программная задержка, чтобы напряжение на ножке (зависит от нагрузки) успело стабилизироваться до начала исполнения следующей команды чтения.

 

2.2.11. Таймер/счетчик

 

На рис.2.8 приведена упрощенная структурная схема модуля таймера. Он может работать в одном из 2-х режимов: таймера или счетчика.

Режим таймера выбирается установкой в"0" бита TOCS (RTS) в регистре ОРТION (<5>). В режиме таймера RTCC (TMRO) увеличивается в каждом командном цикле (в отсутствии предварительного делителя). Если происходит запись в RTCC, то увеличение счетчика задерживается на два последующих цикла выполнения команды. Запись в RTCC должна вестись с учетом этой задержки. При необходимости проверки регистра TMRO на ноль без влияния на процесс счета, рекомендуется пользоваться командой MOVF TMRO, W.

Режим счетчикавыбирается установкой в "1" бита TOCS (ОРТION<5>). В этом режиме содержимое таймера увеличивается по каждому перепаду 1/0 или 0/1 на выводе TOCKI. Перепад, увеличивающий значение TMRO, выбирается битом выбора фронта переключения TOSE (RTE) в регистре ОРТION (<4>). Установка этого бита в "0" вызывает увеличение RTCC по перепаду 0/1.

В регистр RTCC можно загрузить данные или считать из него, как из любого другого регистра. Содержимое этого регистра может быть инкрементировано фронтом внешнего сигнала, поступающим на вход RTCC кристалла, или внутренним сигналом синхронизации (CLKOUT=Fosc/4).

Структурная схема содержит элемент MUX - это электронный переключатель (мультиплексор).

 

TCY (=FOSC/4)

Шина данных

Вывод

TOCKI 0 1 8

 

1 0

 

TOSE TOCS

PSA

 

 

 

PSA

PS2:PS0

 

Разрешение

WDT 0 1

PSA

 

 

Выход

WDT

 

 

TOCS, TOSE, PSA, PS2: PS0 – Биты регистра OPTION <6:0>.

 

Рис. 2.8. Структурная схема модуля таймера

 

Для того, чтобы 8‑битовый предделитель присоединить к таймеру/счетчику, нужно установить определенным образом PSA бит и биты PS в регистре Option. Регистр Option - это специальный регистр, (у него нет адреса в памяти данных) но к нему можно обратиться при помощи команды OPTION. Если предделитель подключен к таймеру/счетчику (RTCC), любые команды записи в сам RTCC (регистр f1, например ClrF1, BSF1,5 ... и т.п.) очищают его.

Бит "RTS" (RTCC signal Source) в регистре Option, определяет источник счетных импульсов (внутренний или внешний).

Когда RTS = 1:

Сигналом синхронизации для таймера/счетчика RTCC или для пределителя, если он подключен к RTCC, является сигнал, поступающий на вывод RTCC. Значение бита 4 (RTE) в регистре Option определяет, происходит ли счет по заднему фронту (RTE=1) или по переднему фронту (RTE=0) сигнала на выводе RTCC.

Когда RTS = 0:

Регистр RTCC инкрементируется по сигналу внутренней синхронизации (=Fosc/4). В этом случае значение бита »в регистре Option и сигнал на выводе RTCC не имеют значения. Однако вывод RTCC следует подключить к Vdd или к Vss, как удобнее, чтобы случайно не попасть в режим теста и обеспечить корректность в режиме низкого потребления.

Пока на таймер/счетчик RTCC поступают синхроимпульсы (не важно внешние или внутренние, подключен предделитель к RTCC или нет), регистр f1- RTCC инкрементируется и по достижении значения «FFH» сбрасывается в 0. После обнуления счет продолжается.

Счетные импульсы задерживаются на два командных цикла. Например, после записи информации в RTCC, инкрементирование его произойдет через два командных цикла. Такое происходит со всеми командами, которые производят запись или чтение-модификацию-запись f1 (например, MOVF f1, CLRF f1). Если RTCC нужно проверить на равенство нулю без останова счета, следует использовать инструкцию MOVF f1,W.

Предварительный делитель представляет собой 8- битный счетчик который используется или как предделитель перед RTCC или как делитель частоты после Watchdog таймера. Если делитель подсоединен к RTCC, то он не может быть подключен к Watchdog таймеру и наоборот. Биты PSA и PS0 - PS2 в регистре OPTION определяют включение делителя и устанавливают его коэффициент деления.

Предделитель может подключаться по разному. Когда он присоединен к RTCC, все команды производящие запись в RTCC (например, CLRF 1, MOVWF 1, BSF 1,x... и т.д.) будут одновременно обнулять и делитель. Когда делитель подключен к WDT, команда CLRWDT также обнулит делитель вместе с Watchdog таймером. Подключение делителя ‑ прграммно управляемое. Чтобы избежать несанкционированного сигнала «Сброс» во время переключения делителя с RTCC на WDT, надо выполнить определенную последовательность команд:

1. MOVLW B`xx0x0xxx` ; Выбрать внутреннюю синхронизацию

; и новое значение для делителя. Если

; новое значение делителя равно "000"

; или "001", то надо временно выбрать

; другое значение делителя.

2. OPTION

3. CLRF 1 ; Обнулить RTCC и делитель.

4. MOVLW B`xxxx1xxx` ; Выбрать WDT, не изменяя

; значения де лителя.

 

5. OPTION

6. CLRWD ; Обнулить WDT и делитель (Сброс).

7. MOVLW B`xxxx1xxx` ; Выбрать новое значение для

; делителя.

8. OPTION

 

Пункты 1 и 2 требуются только тогда, когда к RTCC был подключен внешний источник. Пункты 7 и 8 необходимы тогда, когда в делитель требуется загрузить величину `000` или `001`.

Переключение делителя с WDT на RTCC необходимо осуществлять с помощью следующей последовательности команд:

 

1. CLRWDT ; Обнулить WDT и делитель.

2. MOVLW B`xxxx0xxx` ; Выбрать RTCC, новое значение для

; делителя и источник сигнала.

3. OPTION

 

Эта последовательность должна быть выполнна даже в том случае, если сторожевой таймер WDT запрещен.

– Конец работы –

Эта тема принадлежит разделу:

Архитектурой

Архитектурой... Общие сведения об ОМК PIC и их классификация В году фирма GI разработала периферийный контроллер Peripheral Interface Controller или PIC предназначенный для поддержки ввода вывода ти...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: RP1, RP0 – Биты 6 и 5 регистра FSR, соответственно

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Структурная организация микроконтроллеров PIC16C5X
Особенности архитектуры и структурная схема. Структурная схема ОМК PIC16C5X показана на рис.2.1. Основу структуры данного микроконтроллера составляют две внутренние шины: двунаправленная 8-битная ш

Режимы работы и специальные функции
Семейство микроконтроллеров Р1С16С5Х имеет набор специальных функций, предназначенных для расширения возможностей системы, минимизации стоимости, исключения навесных компонентов, обеспечения мин

Биты конфигурации
Микроконтроллеры семейства Р1С16С5Х имеют четыре бита конфигурации, устанавливающиеся на этапе программирования кристалла. Биты FOSC1 и FOSCO определяют тип генератора, бит WDTE разрешает использов

D=1 для обозначения F
f=5 разрядный адрес регистра   Команды работы с битами 11 8 7 5 4 0 OPCODE b(bit)

Окончание таблицы 2.7
  Мнемокод Название команды Цик лы Код команды (11-бит) Биты сос тоя- ния При- меча- ния

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги