Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по ОМТ.doc
Скачиваний:
17
Добавлен:
19.11.2019
Размер:
3.88 Mб
Скачать

Порядок выполнения работы

В данной лабораторной работе необходимо разработать и отладить программу, реализующую обращение к определенным областям памяти микроконтроллера PIC16F873A. Конкретное задание выдается преподавателем.

В качестве примера рассмотрим следующее задание: необходимо разработать программу заполняющую все регистры общего назначения банка 0 возрастающими двоичными числами начиная с h'00', и копирующую эти данные в EEPROM.

      1. Постановка задачи

Представим исходную словесную форму задания в аналитическом виде. Для этого обозначим буквой 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 обозначены не адреса ячеек памяти, а содержимое ячеек памяти с этими адресами.

      1. Разработка алгоритма программы

Укрупненный алгоритм программы приведен на рис. 2.5.

В первом блоке алгоритма производятся предварительные настройки Ассемблерной программы: ссылки на включаемые в основной текст файлы, задание начального адреса программы, распределение РОН и т. д.

Блоки со второго по седьмой описывают запись возрастающих чисел в банк 0 регистрового файла.

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

В четвертом блоке производится собственно запись числа в ячейку памяти.

В пятом и шестом блоках производится вычисление адреса следующей ячейки и следующего числа (в данном примере это просто увеличение на единицу).

В седьмом блоке алгоритма производится сравнение числа с его конечным значением. Следует учесть, что в данном примере сравнение происходит после увеличения числа, по этому в качестве конечного значения взято число 60, а не 5F. Если число не достигло своего конечного значения, то программа возвращается к записи этого числа в очередную ячейку (блок 4, М10:), если же результат сравнения положительный, то программа переходит к копированию информации из ОЗУ в EEPROM (блоки с восьмого по тринадцатый).

В восьмом и девятом блоках задаются начальные значения адресов ячеек оперативной памяти данных и EEPROM.

В десятом блоке производится копирование информации из очередной ячейки ОЗУ в EEPROM.

В одиннадцатом и двенадцатом адреса ячеек ОЗУ и EEPROM увеличиваются на единицу.

В тринадцатом блоке производится сравнение адреса ячейки EEPROM с конечным значением, увеличенным на единицу. Если адрес ячейки не достиг своего конечного значения, то программа возвращается к блоку 10 (М20:), иначе переход к концу программы.

Рис. 2.5. Блок-схема алгоритма программы