Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
1.7.10 Вычисляемый переход
Вычисляемый переход может быть выполнен командой приращения к регистру PCL (например, ADDWF PCL). При выполнении табличного чтения вычисляемым переходом следует заботиться о том, чтобы значение PCL не пересекло границу блока памяти (каждый блок 256 байт).
1.7.11 Стек
PIC16F877 имеет 8-уровневый 13-разрядный аппаратный стек. Стек не имеет отображения на память программ и память данных, нельзя запись или прочитать данные из стека. Значение счетчика команд заносится в вершину стека при выполнении инструкций перехода на подпрограмму (CALL) или обработки прерываний. Чтение из стека и запись в счетчик команд PC происходит при выполнении инструкций возвращения из подпрограммы или обработки прерываний (RETURN, RETLW, RETFIE), при этом значение регистра PCLATH не изменяется.
Стек работает как циклический буфер. После 8 записей в стек, девятая запись запишется на место первой, а десятая запись заменит вторую и так далее.
Примечание:
1. В микроконтроллерах не имеется никаких указателей о переполнении стека.
2. В микроконтроллерах не предусмотрено команд записи/чтения из стека, кроме команд вызова/возвращения из подпрограмм (CALL, RETURN, RETLW и RETFIE) или условий перехода по вектору прерываний.
1.7.12 Страницы памяти программ
Все микроконтроллеры PIC16F87X способны адресовать 8К слов памяти программ. Инструкции переходов (CALL и GOTO) имеют 11-разрядное поле для указания адреса, что позволяет непосредственно адресовать 2К слов памяти программ. Для адресации верхних страниц памяти программ используются 2 бита в регистре PCLATH<4:3>. Перед выполнением команды перехода (CALL или GOTO) необходимо запрограммировать биты регистра PCLATH<4:3> для адресации требуемой страницы.
При выполнении инструкций возврата из подпрограммы, 13-разрядное значение для счетчика программ PC берется с вершины стека, поэтому манипуляция битами регистра PCLATH<3:4> не требуется.
Примечание: Содержимое регистра PCLATH не изменяется после выполнения инструкции RETURN или RETFIE. Пользователь должен сам изменить значения регистра PCLATH для последующего выполнения команд GOTO и CALL.
1.7.13 Косвенная адресация, регистры INDF и FSR
Для выполнения косвенной адресации необходимо обратиться к физически не реализованному регистру INDF. Обращение к регистру INDF фактически вызовет действие с регистром, адрес которого указан в FSR. Косвенное чтение регистра INDF (FSR = 0) даст результат 00h. Косвенная запись в регистр INDF не вызовет никаких действий (вызывает воздействия на флаги АЛУ в регистре STATUS). 9-бит косвенного адреса IRP сохраняется в регистре STATUS<7>. Пример реализации косвенной адресации рассмотрен в разделе 3.3, Лабораторная работа № 3.
1.8 Порты ввода/вывода
Некоторые каналы портов ввода/вывода мультиплицированы с периферийными модулями микроконтроллера. Когда периферийный модуль включен, вывод не может использоваться как универсальный канал ввода/вывода.
1.8.1 Регистры PORTА и TRISA
PORTA - 6-разрядный порт ввода/вывода. Все каналы PORTA имеют соответствующие биты направления в регистре TRISA, позволяющие настраивать канал как вход или выход. Запись '1' в TRISA переводит соответствующий выходной буфер в 3-е состояние. Запись '0' в регистр TRISA определяет соответствующий канал как выход, содержимое защелки PORTA передается на вывод микроконтроллера (если выходная защелка подключена к выводу микроконтроллера).
Чтение регистра PORTA возвращает состояние на выводах порта, а запись производится в защелку PORTA. Все операции записи в порт выполняются по принципу «чтение - модификация - запись», т. е. сначала производится чтение состояния выводов порта, затем изменение и запись в защелку.
RA4 - имеет триггер Шмидта на входе и открытый сток на выходе, мультиплицирован с тактовым входом TOCKI. Все остальные каналы PORTA имеют TTL буфер на входе и полнофункциональные выходные КМОП буферы.
Каналы PORTA мультиплицированы с аналоговыми входами АЦП и аналоговым входом источника опорного напряжения VREF. Биты управления режимами работы каналов порта ввода/вывода PORTA находятся в регистре ADCON1.
Примечание: После сброса по включению питания выводы настраиваются как аналоговые входы, а чтение дает результат '0'.
Биты регистра TRISA управляют направлением каналов PORTA, даже когда они используются как аналоговые входы. Пользователь должен удостовериться, что соответствующие каналы PORTA настроены на вход при использовании их в качестве аналоговых входов.
Таблица 1.5 Регистры и биты, связанные с работой PORTA
Адрес | Имя | Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит З | Бит 2 | Бит 1 | Бит 0 | Сброс POR, BOR | Другие сбросы |
05h | PORTA | – | – | RA5 | RA4 | RA3 | RA2 | RA1 | RA0 | --0х 0000 | --0u 0000 |
85h | TRISA | – | – | Регистр направления данных PORTA | --11 1111 | --11 1111 | |||||
9Fh | ADCON1 | ADFM | – | – | – | PCFG3 | PCFG2 | PCFG1 | PCFG0 | 0--- 0000 | 0--- 0000 |
Обозначение: – = не используется, читается как 0; u = не изменяется; х = не известно; q = зависит от условий. Затененные биты на работу не влияют.
Таблица 1.6 Функциональное назначение выводов PORTA
Обозначение вывода | № 6ита | Тип буфера | Описание |
RA0/AN0 | Бит 0 | TTL | Двунаправленный порт ввода/вывода или аналоговый вход |
RA1/AN1 | Бит 1 | TTL | Двунаправленный порт ввода/вывода или аналоговый вход |
RA2/AN2 | Бит 2 | TTL | Двунаправленный порт ввода/вывода или аналоговый вход |
RA3/AN3 | Бит З | TTL | Двунаправленный порт ввода/вывода или аналоговый вход |
RA4/T0CKI | Бит 4 | ST | Двунаправленный порт ввода/вывода, может использоваться как T0CKI, выход с открытым стоком |
RA5/–SS/AN4 | бит 5 | TTL | Двунаправленный порт ввода/вывода или вход выбора синхронного последовательного порта или аналоговый вход |
Обозначение: ST = вход с триггером Шмидта; TTL = входной буфер TTL.
ADCON1 (адрес 9Fh)
R/W–0 | U–0 | U–0 | U–0 | R/W–0 | R/W–0 | R/W–0 | R/W–0 |
ADFM | – | – | – | PCFG3 | PCFG2 | PCFG1 | PCFG0 |
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит З | Бит 2 | Бит 1 | Бит 0 |
PCGF3: PCGF0 | AN7/ RE2 | AN6/ RE1 | AN5/ RE0 | AN4/ RA5 | AN3/ RA3 | AN2/ RA2 | AN1/ RA1 | AND/ RA0 | Vref+ | Vref- |
0000 | А | A | A | A | A | A | A | A | Vdd | Vss |
0001 | А | A | A | A | Vref+ | A | A | A | RA3 | Vss |
0010 | D | D | D | A | A | A | A | A | Vdd | Vss |
0011 | О | D | D | A | Vref+ | A | A | A | RA3 | Vss |
0100 | D | D | D | D | A | D | A | A | Vdd | Vss |
0101 | D | D | D | D | Vref+ | D | A | A | RA3 | Vss |
011х | D | D | D | D | D | D | D | D | Vdd | Vss |
1000 | А | A | A | A | Vref+ | Vref - | A | A | RA3 | RA2 |
1001 | D | D | A | A | A | A | A | A | Vdd | Vss |
1010 | D | D | A | A | Vref+ | A | A | A | RA3 | Vss |
1011 | D | D | A | A | Vref+ | Vref - | A | A | RA3 | RA2 |
1100 | D | D | D | A | Vref+ | Vref - | A | A | RA3 | RA2 |
1101 | D | D | D | D | Vref+ | Vref - | A | A | RA3 | RA2 |
1110 | D | D | D | D | D | D | D | A | Vdd | Vss |
1111 | D | D | D | D | Vref+ | Vref - | D | A | RA3 | RA2 |
Примечание:
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |


