PIC16 - микроконтроллеры, изучение, и всё что с ними связано

Перейти вниз

PIC16 - микроконтроллеры, изучение, и всё что с ними связано

Сообщение  Viktor2312 в Сб Фев 20 2016, 00:57

.
PIC16 - микроконтроллеры. Изучение, и всё что с ними связано.


Различные полезные ссылки и информация:

  • А тут архив, где можно скачать MPLAB различных версий под разные операционные системы и другое ПО:
    MPLAB X IDE Archives
  • Русскоязычный сайт: http://www.microchip.com.ru/
  • datasheet на PIC16F84



***




Продолжение в следующем посте...
.


Последний раз редактировалось: Viktor2312 (Пн Сен 17 2018, 14:07), всего редактировалось 9 раз(а)
avatar
Viktor2312
Гуру+

Сообщения : 11173
Дата регистрации : 2012-08-11
Возраст : 39
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

.

Сообщение  Viktor2312 в Сб Фев 20 2016, 00:57

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


____В микроконтроллере PIC16F84 существует два блока памяти - память программ и память данных. Каждый блок имеет собственную шину, таким образом, доступ к блокам может происходить одновременно.
____Память данных, в свою очередь, разделена на специальные регистры и регистры общего применения (ОЗУ пользователя). Специальные регистры применяются для хранения битов состояния, определяющих работу портов ввода-вывода, таймеров и других периферийных модулей микроконтроллера.
____Кроме специальных регистров и ОЗУ, пространство памяти данных содержит ячейки EEPROM. Эта область памяти не может быть адресована непосредственно, и доступ к ней получают через специальный регистр косвенной адресации EEADR, в который записывают порядковый номер ячейки. 64 байта EEPROM имеют номера с 00h по 3Fh. Обычно EEPROM используют для хранения констант, значения которых не должны пропадать при отключении питания.
____Несмотря на то, что EEPROM гарантированно допускает 10,000,000 циклов стирания-записи, изготовитель не рекомендует использовать её ячейки для хранения часто изменяемых значений, поскольку при этом может быстро исчерпаться её ресурс. Для хранения программных переменных следует использовать ОЗУ (регистры общего применения).

Память программ.

____Микроконтроллер PIC16F84A имеет 13-битный программный счётчик, позволяющий адресовать до 8К х 14 памяти программ. В микроконтроллере PIC16F84A физически адресуются только первые 1024 (0000h - 03FFh) ячеек памяти. Обращение к старшим адресам, лежащими за пределами указанного диапазона физически равносильно обращению к соответствующим адресам внутри диапазона.


Память программ.

____Старт по сбросу происходит с адреса 0000h, вектор прерывания один и расположен по адресу 0004h. Обычно по адресу 0004h располагают подпрограмму распознавания и обработки прерываний, а по адресу 0000h команду перехода на метку, расположенную сразу за подпрограммой обработки прерывания.

Память данных.

____В микроконтроллере PIC16F84A память данных разбита на две части  - специальные регистры и регистры общего применения (ОЗУ пользователя). Кроме того, память данных разделена на два банка. Что иллюстрирует рисунок ниже:


Организация памяти данных.

____Переключение банков происходит при помощи изменения 5-го бита в регистре STATUS. Если бит установлен в 0, адресуется нулевой банк, если в 1, соответственно, первый. Некоторые специальные регистры адресуются независимо от включённого банка. Например, обращение по адресу 03h при включённом банке 0 или по адресу 83h при включённом банке 1 равнозначно даёт доступ к специальному регистру STATUS. Регистры общего применения представляют собой статическое ОЗУ и могут быть адресованы непосредственно или косвенно, с применением регистра косвенной адресации FSR (04h). Так, например, адреса 0Eh и 8Eh адресуют одну и ту же ячейку ОЗУ.

Специальные регистры.

____Специальные регистры представляют собой статическое ОЗУ, в котором некоторые биты устанавливаются по умолчанию при сбросе. Ниже представлена таблица с специальными регистрами:


Специальные регистры и их назначение.


Регистр STATUS (адрес 03h, 83h).

____Регистр STATUS хранит арифметические флаги АЛУ, информацию о сбросе и бит выбора банка памяти данных. Как и любой другой регистр, регистр STATUS может являться регистром назначения для любой операции. Но если над регистром STATUS выполняют операцию, которая может изменить состояние битов Z, DC и C, то запись в эти три бита блокируется. Их состояние изменяется только аппаратно, в зависимости от состояния АЛУ. Более того, биты /TO и /PD также недоступны для записи. Следовательно, результат операции с регистром STATUS в качестве приёмника может оказаться совсем не таким, как ожидалось. Например, команда CLRF STATUS (очистит полностью регистр STATUS) на самом деле очистит только три старших бита и установит в 1 бит Z. Поэтому к регистру STATUS следует применять только команды BCF, BSF, SWAPF и MOVWF, потому что они не изменяют другие биты состояния.
____Рассмотрим подробно назначение битов регистра STATUS:


Биты регистра STATUS.

bit 7. IRP - бит выбора банка памяти, применяемый при косвенной адресации. Этот бит не применяется в PIC16F84A и должен всегда оставаться сброшенным. Чтобы обеспечить совместимость программы с более новыми микроконтроллерами, этот бит никогда нельзя использовать в программе при использовании микроконтроллера PIC16F84A.
0 = bank 0,1 (00h - FFh)
1 = bank 2,3 (100h - 1FFh)

bit 6 - 5. RP1, RP0 - биты выбора банка памяти, применяемый при прямой адресации.
00 = bank 0 (00h - 7Fh)
01 = bank 1 (80h - FFh)
10 = bank 2 (100h - 17Fh)
11 = bank 3 (180h - 1FFh)
Каждый банк содержит 128 байт. Поскольку в PIC16F84A используется только два банка, 0 и 1, то бит RP1 должен быть всегда сброшен, а для выбора банка используется бит RP0.

bit 4. /TO - флаг срабатывания сторожевого таймера. Устанавливается в 1 при включении питания и командами CLRWDT и SLEEP. Сбрасывается в 0 по завершении выдержки сторожевого таймера.

bit 3. /PD - режим хранения данных. Устанавливается в 1 при включении питания или выполнении команды CLRWDT. Сбрасывается в 0 командой SLEEP.

bit 2. Z - флаг нулевого результата. Устанавливается в 1, если результат арифметической или логической операции равен нулю. Сохраняет своё значение до следующей операции.

bit 1. DC - флаг десятичного переноса. Используется для команд ADDWF, ADDLW, SUBWF и SUBLW. Отслеживает перенос из четвёртого разряда результата.
1 = Произошёл перенос при сложении.
0 = Не произошёл перенос при сложении.
Вычитание в АЛУ выполняется сложением кода первого операнда с дополнительным кодом второго операнда. Значение бита контекстно зависит от того, какая операция выполнялась. Для операции вычитания значение бита инвертировано.

bit 0. C - флаг переноса. Используется для команд ADDWF, ADDLW, SUBWF и SUBLW. Отслеживает перенос из старшего разряда в бит переноса при сложении.
1 = Произошёл перенос при сложении.
0 = Не произошёл перенос при сложении.

____Вычитание в АЛУ выполняется сложением кода первого операнда с дополнительным кодом второго операнда. Значение бита контекстно зависит от того, какая операция выполнялась. Для операции вычитания значение бита инвертировано. Так, например, выполнив операцию вычитания 00h - 01h получаем FFh и бит С, установленный в 1. Следовательно результат операции отрицательный (бит С здесь выступает как знаковый разряд и число FFh с установленным знаковым разрядом по законам двоичной алгебры является минус единицей). При вычитании 01h - 00h получаем 01h и бит С = 0. Результат положительный. При сложении FFh + 02h получаем 01h и бит С = 1. Произошёл перенос, значит реальный результат 101h.
____При выполнении команд сдвига RRF и RLF в этот бит загружается соответственно младший или старший бит регистра-источника.
____Используя флаги /TO и /PD можно определить, чем был вызван сброс.


х - состояние битов не изменилось. Сброс по входу /MCLR в обычном режиме не меняет текущие значения битов /TO и /PD.


Регистр OPTION_REG (адрес 81h).

____Специальный регистр OPTION_REG представляет собой полностью доступный для записи и чтения регистр, в котором находятся биты, управляющие работой предварительного делителя, источниками внешних прерываний, встроенным таймером TMR0 и подтягивающими резисторами для порта B.


Биты регистра OPTION_REG.

____Назначение битов регистра OPTION_REG:

bit 7. /RBPU - включение встроенной нагрузки порта B.
1 = Нагрузка отключена.
0 = Нагрузка включена.

bit 6. INTEDG - выбор фронта прерывающего сигнала.
1 = Прерывание по нарастанию сигнала на выводе RB0/INT.
0 = Прерывание по спаду сигнала на выводе RB0/INT.

bit 5. T0CS - выбор источника тактирования для таймера TMR0.
1 = Импульсы с входа RA4/T0CKI.
0 = Внутренняя тактовая частота (CLKOUT).

bit 4. T0SE - выбор фронта сигнала для таймера TMR0, если в качестве источника выбран вход RA4/T0SKI (T0CS = 1).
1 = Инкремент по спаду на выводе RA4/T0SKI.
0 = Инкремент па нарастанию на выводе RA4/T0SKI.

bit 3. PSA - бит, управляющий подключением предварительного делителя.
1 = Предварительный делитель подключён к WDT.
0 = Предварительный делитель подключён к TMR0.

bit 2 - 0. PS2 - PS0 - управление коэффициентом деления предварительного делителя в зависимости от подключения.




Регистр INTCON (адрес 0Bh, 8Bh).

____Регистр INTCON - это полностью доступный для чтения и записи регистр, в котором хранятся биты, управляющие различными источниками прерываний.


____Назначение битов регистра INTCON:

bit 7. GIE - бит глобального запрета прерываний.
1 = Разрешены все немаскируемые прерывания.
0 = Запрещены все прерывания.

bit 6. EEIE - разрешение прерывания по окончанию записи в EEPROM.
1 = Прерывание по окончанию записи разрешено.
0 = Прерывание по окончанию записи запрещено.

bit 5. T0IE - разрешение прерывания по переполнению таймера TMR0.
1 = Прерывание разрешено.
0 = Прерывание запрещено.

bit 4. INTE - разрешение прерывания по входу RB0/INT.
1 = Прерывание разрешено.
0 = Прерывание запрещено.

bit 3. RBIE - разрешение прерывания по изменению состояния на входах порта B, линии RB7 - RB4.
1 = Прерывание разрешено.
0 = Прерывание запрещено.

bit 2. T0IF - флаг прерывания по переполнению таймера/счётчика TMR0.
1 = TMR0 был переполнен (следует сбросить программно!).
0 = TMR0 не был переполнен.

bit 1. INTF - флаг прерывания по входу RB0/INT.
1 = Произошло прерывание по входу RB0/INT (следует сбросить программно!).
0 = Не происходило прерывание по входу RB0/INT.
Флаг используется для определения источника прерывания.

bit 0. RBIF - флаг прерывания по изменению состояния на входах RB7 - RB4.
1 = На одном из входов RB7 - RB4 произошло изменение уровня (следует сбросить программно!).
0 = Не происходило прерывание по изменению уровня.
Флаг используется для определения источника прерывания.


***





Продолжение в следующем посте...
.


Последний раз редактировалось: Viktor2312 (Пн Сен 17 2018, 14:42), всего редактировалось 34 раз(а)
avatar
Viktor2312
Гуру+

Сообщения : 11173
Дата регистрации : 2012-08-11
Возраст : 39
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

.

Сообщение  Viktor2312 в Сб Фев 20 2016, 00:58

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

____Программный счётчик микроконтроллера (РС) содержит 13 разрядов. Младший байт счётчика является полностью доступным для чтения и записи регистром PCL (адрес 02h, 82h). Старший байт PCH, в нём используются только пять младших бит. Старшие пять битов счётчика непосредственно не доступны для чтения и записи. Обращение к ним происходит через регистр PCLATH (адрес 0Ah, 8Ah), являющийся буфером-защёлкой для старших битов счётчика. Содержимое PCLATH переносится в старшие биты РС, когда происходит запись нового значения в программный счётчик РС. Это случается, когда выполняются команды CALL, GOTO или регистр PCL является регистром назначения для результата арифметической операции.
____Если команды отрабатываются последовательно, без "прыжков", и произошло переполнение PCL, состояние 255 сменилось на состояние 0, то содержимое PCH инкрементируется, увеличивается на 1.


____Возможность выполнять арифметические операции непосредственно над программным счётчиком позволяет очень просто и эффективно, всего двумя командами, выполнять табличную перекодировку значений. Следует только контролировать исходное значение, чтобы программный счётчик не вышел за пределы таблицы, если в ней применено менее 256 записей.
____Вычисляемый переход может быть выполнен командой приращения к регистру PCL (например, ADDWF PCL). При выполнении вычисляемого перехода следует заботиться о том, чтобы значение PCL не пересекло границу блока памяти (каждый блок 256 байт).

Примечание. При записи значения в регистр PCL, автоматически происходит перезапись 5 младших бит из регистра PCLATH <4:0> в регистр PCH.

____Микроконтроллер PIC16F84 имеет 1 К слов программной памяти. Команды CALL и GOTO используют 11 бит для указания адреса, что позволяет использовать 2 К слов адресного пространства. Для предстоящего расширения программной памяти потребуется ещё два бита, определяющих её страницы. В качестве этих битов будут использоваться разряды 4 и 3 регистра PCLATH. При использовании в программе команд CALL и GOTO надо быть уверенным, что биты 4 и 3 в PCLATH запрограммированы правильно и произойдёт переход на нужную страницу памяти. Сейчас биты 4 и 3 не используются, однако для обеспечения совместимости "снизу вверх" использовать их в своих программах в качестве битов общего назначения (например для хранения флагов) не рекомендуется.
____


Последний раз редактировалось: Viktor2312 (Пн Сен 17 2018, 19:57), всего редактировалось 11 раз(а)
avatar
Viktor2312
Гуру+

Сообщения : 11173
Дата регистрации : 2012-08-11
Возраст : 39
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: PIC16 - микроконтроллеры, изучение, и всё что с ними связано

Сообщение  Viktor2312 в Сб Фев 20 2016, 00:59

резерв.


Последний раз редактировалось: Viktor2312 (Ср Сен 12 2018, 17:35), всего редактировалось 2 раз(а)
avatar
Viktor2312
Гуру+

Сообщения : 11173
Дата регистрации : 2012-08-11
Возраст : 39
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: PIC16 - микроконтроллеры, изучение, и всё что с ними связано

Сообщение  Viktor2312 в Сб Фев 20 2016, 01:03

резерв.


Последний раз редактировалось: Viktor2312 (Ср Сен 12 2018, 17:14), всего редактировалось 1 раз(а)
avatar
Viktor2312
Гуру+

Сообщения : 11173
Дата регистрации : 2012-08-11
Возраст : 39
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: PIC16 - микроконтроллеры, изучение, и всё что с ними связано

Сообщение  Viktor2312 в Пт Апр 22 2016, 18:37

резерв.
avatar
Viktor2312
Гуру+

Сообщения : 11173
Дата регистрации : 2012-08-11
Возраст : 39
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: PIC16 - микроконтроллеры, изучение, и всё что с ними связано

Сообщение  Viktor2312 в Ср Сен 12 2018, 17:24

резерв.


Последний раз редактировалось: Viktor2312 (Чт Сен 13 2018, 13:34), всего редактировалось 4 раз(а)
avatar
Viktor2312
Гуру+

Сообщения : 11173
Дата регистрации : 2012-08-11
Возраст : 39
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: PIC16 - микроконтроллеры, изучение, и всё что с ними связано

Сообщение  Viktor2312 в Ср Сен 12 2018, 17:26

резерв.


Последний раз редактировалось: Viktor2312 (Пн Сен 17 2018, 14:20), всего редактировалось 2 раз(а)
avatar
Viktor2312
Гуру+

Сообщения : 11173
Дата регистрации : 2012-08-11
Возраст : 39
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: PIC16 - микроконтроллеры, изучение, и всё что с ними связано

Сообщение  Viktor2312 в Ср Сен 12 2018, 17:34

резерв.


Последний раз редактировалось: Viktor2312 (Чт Сен 13 2018, 17:41), всего редактировалось 2 раз(а)
avatar
Viktor2312
Гуру+

Сообщения : 11173
Дата регистрации : 2012-08-11
Возраст : 39
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: PIC16 - микроконтроллеры, изучение, и всё что с ними связано

Сообщение  Viktor2312 в Чт Сен 13 2018, 13:35

На хранении:


MPLAB IDE v8.92
avatar
Viktor2312
Гуру+

Сообщения : 11173
Дата регистрации : 2012-08-11
Возраст : 39
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: PIC16 - микроконтроллеры, изучение, и всё что с ними связано

Сообщение  Viktor2312 в Чт Сен 13 2018, 13:36

резерв.
avatar
Viktor2312
Гуру+

Сообщения : 11173
Дата регистрации : 2012-08-11
Возраст : 39
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: PIC16 - микроконтроллеры, изучение, и всё что с ними связано

Сообщение  Viktor2312 в Пн Сен 17 2018, 14:20

резерв.
avatar
Viktor2312
Гуру+

Сообщения : 11173
Дата регистрации : 2012-08-11
Возраст : 39
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: PIC16 - микроконтроллеры, изучение, и всё что с ними связано

Сообщение  Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения