- •Содержание
- •Введение
- •Лабораторная работа 1 Изучение интегрированной среды разработки mplab
- •Методика выполнения работы
- •Создание нового проекта
- •Создание файла с исходным текстом программы
- •Добавление файла к проекту
- •Компиляция исходного текста программы в машинные коды
- •Запись кода программы во внутреннюю flash память микроконтроллера
- •Отладка (выполнение) программы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа 2 Изучение запоминающих устройств микроконтроллеров pic-micro
- •Порядок выполнения работы
- •Постановка задачи
- •Разработка алгоритма программы
- •Написание текста программы на языке Ассемблер
- •Трансляция исходного текста программы в машинные коды
- •Тестирование и отладка
- •Сопровождение
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа 3 Изучение работы параллельных портов микроконтроллеров pic-micro
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа 4 Изучение работы последовательных портов микроконтроллеров pic-micro
- •Порядок выполнения работы
- •Лабораторная работа 5 Изучение работы таймеров микроконтроллеров pic-micro
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа 6 Изучение работы аналого-цифрового преобразователя микроконтроллеров pic-micro
- •Порядок выполнения работы
- •Постановка задачи
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа 7 Изучение работы модуля захвата/сравнения/шим микроконтроллеров pic-micro
- •Порядок выполнения работы
- •Содержание отчета
- •Библиографический список
- •Приложение 1. Схема лабораторного макета
- •Приложение 2. Краткое описание набора инструкций pic16
- •Приложение 3. Список команд pic16 и их подробное описание
- •Addlw – Сложение рабочего регистра w и константы k
- •Addwf – Сложение рабочего регистра w и регистра f
- •Andlw – Побитное «и» рабочего регистра w и константы k
- •Andwf – Побитное «и» рабочего регистра w и регистра f
- •Bтfsc – Условный переход при нулевом бите b регистра f
- •Bтfss – Условный переход при единичном бите b регистра f
- •Call – Вызов подпрограммы
- •Clrf – Обнуление регистра f
- •Clrw – Обнуление рабочего регистра w
- •Clrwdt – Сброс сторожевого таймера
- •Comf – Инверсия регистра f
- •Decf – Декремент регистра f
- •Decfsz – Декремент регистра f и пропуск в случае нулевого результата
- •Goto – Переход по адресу
- •Incf – Декремент регистра f
- •Incfsz – Декремент регистра f и пропуск в случае нулевого результата
- •Iorlw – Побитное «или» w и константы k
- •Iorwf – Побитное «или» w и регистра f
- •Movf – Пересылка регистра f
- •Movlw – Пересылка константы k
- •Movwf – Пересылка из регистра w в регистр f
- •Retfie – Возврат из подпрограммы с включением прерываний
- •Retlw – Выход из подпрограммы с загрузкой в регистр w константы k
- •Return – Выход из подпрограммы
- •Sleep – Перейти в спящий режим
- •Sublw – Вычитение w из константы k
- •Subwf – Вычитание w из регистра f
- •Swapf – Обмен местами ниблов в регистре f
- •Xorlw – Побитное «Исключающее или» w и константы k
- •Xorwf – Побитное «Исключающее или» w и регистра f
- •Основы микропроцессорной техники
- •620034, Екатеринбург, ул. Колмогорова 66.
Порядок выполнения работы
В данной лабораторной работе необходимо разработать и отладить программу, реализующую обращение к определенным областям памяти микроконтроллера PIC16F873A. Конкретное задание выдается преподавателем.
В качестве примера рассмотрим следующее задание: необходимо разработать программу заполняющую все регистры общего назначения банка 0 возрастающими двоичными числами начиная с h'00', и копирующую эти данные в EEPROM.
Постановка задачи
Представим исходную словесную форму задания в аналитическом виде. Для этого обозначим буквой N число записываемое в очередной регистр, буквой F адрес регистра, а буквой E адрес ячейки EEPROM. Поскольку адреса РОН в банке 0 начинаются с H'20', а заканчиваются H'7F', то можно записать, что F ⊂ [H'20', H'7F']. Соответственно в этот массив памяти поместятся числа от H'00' до H'5F' или N ⊂ [H'00', H'5F']. При копировании в EEPROM будут задействованы ячейки с адресами E ⊂ [H'00', H'5F']. Также можно записать: [F0]=0, [Fi]=Ni, [Fi+1]=Ni+1, [Ei]=[Fi]. В последних формулах квадратные скобки обозначают, что буквами F и E обозначены не адреса ячеек памяти, а содержимое ячеек памяти с этими адресами.
Разработка алгоритма программы
Укрупненный алгоритм программы приведен на рис. 2.5.
В первом блоке алгоритма производятся предварительные настройки Ассемблерной программы: ссылки на включаемые в основной текст файлы, задание начального адреса программы, распределение РОН и т. д.
Блоки со второго по седьмой описывают запись возрастающих чисел в банк 0 регистрового файла.
Во втором и третьем блоке задаются начальные значения адреса ячейки оперативной памяти данных и число, записываемое в эту ячейку.
В четвертом блоке производится собственно запись числа в ячейку памяти.
В пятом и шестом блоках производится вычисление адреса следующей ячейки и следующего числа (в данном примере это просто увеличение на единицу).
В седьмом блоке алгоритма производится сравнение числа с его конечным значением. Следует учесть, что в данном примере сравнение происходит после увеличения числа, по этому в качестве конечного значения взято число 60, а не 5F. Если число не достигло своего конечного значения, то программа возвращается к записи этого числа в очередную ячейку (блок 4, М10:), если же результат сравнения положительный, то программа переходит к копированию информации из ОЗУ в EEPROM (блоки с восьмого по тринадцатый).
В восьмом и девятом блоках задаются начальные значения адресов ячеек оперативной памяти данных и EEPROM.
В десятом блоке производится копирование информации из очередной ячейки ОЗУ в EEPROM.
В одиннадцатом и двенадцатом адреса ячеек ОЗУ и EEPROM увеличиваются на единицу.
В тринадцатом блоке производится сравнение адреса ячейки EEPROM с конечным значением, увеличенным на единицу. Если адрес ячейки не достиг своего конечного значения, то программа возвращается к блоку 10 (М20:), иначе переход к концу программы.
Рис. 2.5. Блок-схема алгоритма программы