Читаем PIC-микроконтроллеры. Все, что вам необходимо знать полностью

     radix decima1

     __config _CPD_OFF & _WRT_ENABLE_OFF

     org h’300’; Таблица начинается с адреса h’300’ памяти программ.

; **************

; * ФУНКЦИЯ: Возвращает квадрат целого числа *

; * РЕСУРСЫ: Подпрограмма FLASH_GET *

; * ВХОД: Целое в W (от 0 до 100) *

; * ВЫХОД: 14-битное значение квадрата в SQRH:SQRL. *

; * Рабочий банк памяти — 0-й *

; **************

TABLE_QF_SQUARES; Таблица десятичных констант

dw 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225

dw 256,289,324,361,400,441,484,529,576,625,696,729,784,841

dw 900,961,1024,1089,1156,1225,1296,1369,1444,1521,1600,1681

dw 1764,1849,1936,2025,2116,2209,2304,2401,2500,2601,2704

dw 2809,2916,3025,3136,3249,3364,3481,3600,3721,3844,3969

dw 4049,4225,4356,4489,4624,4761,4900,5041,5184,5329,5476

dw 5625,5776,5929,6084,6241,6400,6561,6724,6889,7056,7225

dw 7396,7569,7744,7921,8100,8281,8464,8649,8836,9025,9216

dw 9409,9604,9801,10000

SQUARE bsf STATUS,RP1; Переключаемся во 2-й банк

             bcf STATUS,RP0

             movwf EEADR; Формируем адрес

             movlw 3

             movwf EEADRH

             call FLASH_GET; Считываем n-й элемент таблицы

             bsf STATUS,RP1; Снова идем во 2-й банк

             bcf STATUS,RP0

             movf EEDATA,w; Берем младший байт результата

             bcf STATUS,RP1; 0-й банк

             movwf SQRL; Копируем в SQRL (0-й банк)

             bsf STATUS,RP1; Снова идем во 2-й банк

             movf EEDATH,w; Берем старший байт результата

             bcf STATUS,RP1; 0-й банк

             movwf SQRH; Копируем в SQRH (0-й банк)

            return

Адрес nn-го элемента таблицы формируется в подпрограмме загрузкой числа nn, переданного в рабочем регистре, в регистр EEADR и записью константы h’03’ в регистр EEADRH. В результате указанных действий мы получаем двухбайтный адрес вида h’3nn’. После этого вызовом подпрограммы FLASH_GET из таблицы считывается 14-битное число. Затем подпрограмма копирует содержимое регистров EEDATH: EEDATA в регистры SQRH: SQRL. Так как эти регистры расположены в 0-м банке, то после копирования содержимого каждого из регистров данных модуля EEPROM, расположенных во 2-м банке, в рабочий регистр, нам приходится переключаться в 0-й банк. Поскольку микроконтроллеры PIC16F874/7 имеют 16 РОН, отображенных на все четыре банка памяти, было бы неплохо разместить регистры SQRH: SQRL именно в этой общей области памяти.

После занесения программы в FLASH-память микроконтроллера внешним программатором содержимое памяти программ начиная с адреса h’300’ будет выглядеть так, как показано на Рис. 15.5.

Рис. 15.5.Фрагмент FLASH-памяти программ, в котором записана таблица преобразования и подпрограмма SQUARE

Несмотря на то что в данном примере положение таблицы было выровнено по 256-байтной границе, на практике она может быть размещена в любом месте памяти. В общем случае для адресации nn-ячейки таблицы к полному 14-битному адресу начала таблицы требуется прибавить смещение nn. Как это можно сделать, обсуждается в Вопросе для самопроверки 15.2.

Процесс записи FLASH-памяти в микроконтроллерах линейки PIC16F87X также практически идентичен процессу записи в EEPROM, отличаясь, как и в случае операции чтения, только двумя командами пор. Правда, после запуска цикла записи выполнение программы приостанавливается примерно на 4 мс. В течение этого времени производится стирание и последующая запись нового значения в адресованную ячейку памяти программ. Затем программа возобновляет работу в нормальном режиме. Итак, запись в FLASH-память осуществляется по следующему алгоритму:

1. Загрузить адрес конечной ячейки в регистры EEADR: EEADRH.

2. Установить бит EEPGD, показывая, что мы обращаемся к памяти программ.

3. Установить бит WREN в EECON[2] для разрешения операции записи.

4. Запретить все прерывания, если они используются.

Перейти на страницу:

Все книги серии Программируемые системы

PIC-микроконтроллеры. Все, что вам необходимо знать
PIC-микроконтроллеры. Все, что вам необходимо знать

Данная книга представляет собой исчерпывающее руководство по микроконтроллерам семейства PIC компании Microchip, являющегося промышленным стандартом в области встраиваемых цифровых устройств. В книге подробно описывается архитектура и система команд 8-битных микроконтроллеров PIC, на конкретных примерах изучается работа их периферийных модулей.В первой части излагаются основы цифровой схемотехники, математической логики и архитектуры вычислительных систем. Вторая часть посвящена различным аспектам программирования PIC-микроконтроллеров среднего уровня: описывается набор команд, рассматривается написание программ на ассемблере и языке высокого уровня (Си), а также поддержка подпрограмм и прерываний. В третьей части изучаются аппаратные аспекты взаимодействия микроконтроллера с окружающим миром и обработки прерываний. Рассматриваются такие вопросы, как параллельный и последовательный ввод/вывод данных, временные соотношения, обработка аналоговых сигналов и использование EEPROM. В заключение приводится пример разработки реального устройства. На этом примере также демонстрируются простейшие методики отладки и тестирования, применяемые при разработке реальных устройств.Книга рассчитана на самый широкий круг читателей — от любителей до инженеров, при этом для понимания содержащегося в ней материала вовсе не требуется каких-то специальных знаний в области программирования, электроники или цифровой схемотехники. Эта книга будет также полезна студентам, обучающимся по специальностям «Радиоэлектроника» и «Вычислительная техника», которые смогут использовать ее в качестве учебного пособия при прослушивании соответствующих курсов или выполнении курсовых проектов.

Сид Катцен

Радиоэлектроника

Похожие книги

Электроника для начинающих (2-е издание)
Электроника для начинающих (2-е издание)

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию, елочные огни, электронные украшения, устройство преобразования звука, кодовый замок и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий. Во втором издании существенно переработан текст книги, в экспериментах используются более доступные электронные компоненты, добавлены новые проекты, в том числе с контроллером Arduino.

Чарльз Платт

Радиоэлектроника / Технические науки
Электроника для начинающих
Электроника для начинающих

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию для защиты от проникновения в дом, елочные огни, электронные украшения для одежды, устройство преобразования звука, кодовый замок, автономную роботизированную тележку и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий.Для начинающих радиолюбителей

Паоло Аливерти , Чарльз Платт

Радиоэлектроника / Технические науки
Искусство схемотехники. Том 3 (Изд.4-е)
Искусство схемотехники. Том 3 (Изд.4-е)

Широко известная читателю по предыдущим изданиям монография известных американских специалистов посвящена быстро развивающимся областям электроники. В ней приведены наиболее интересные технические решения, а также анализируются ошибки разработчиков аппаратуры: внимание читателя сосредотачивается на тонких аспектах проектирования и применения электронных схем. На русском языке издается в трех томах. Том 3 содержит сведения о микропроцессорах, радиотехнических схемах, методах измерения и обработки сигналов, принципах конструирования аппаратуры и проектирования маломощных устройств, а также обширные приложения. Для специалистов в области электроники, автоматики, вычислительной техники, а также студентов соответствующих специальностей вузов и техникумов.

Пауль Хоровиц , Уинфилд Хилл

Техника / Радиоэлектроника