Страница: 10/14
Алгоритм программы обработки прерывания INT0 показан на рисунке 10.
Рис. 10. Алгоритм программы обработки прерывания INT0.
Если счетчик был равен нулю, тогда микроконтроллер переходит в режим приема кода операции от ПК.
Алгоритм дешифрации кода операции в программе обработки прерывания INT0 аналогичен алгоритму дешифрации кода операции в программе «Монитор». Здесь предусмотрены следующие коды операций:
¨ 01h - чтение памяти программ МК;
¨ 02h - запись информации в программно – доступные узлы МК;
¨ 03h - запись в память программ МК;
¨ 04h - выдача кода следующей команды;
¨ 05h - выполнение блока команд программы пользователя;
¨ 06h - выполнение программы в режиме реального времени;
¨ 07h - останов программы;
¨ 08h - выполнение следующего шага программы;
¨ другие – выполнение программ пользователя.
Большая часть подпрограмм, выбираемых пользователем в пошаговом режиме, аналогична подпрограммам, выбираемым в программе «Монитор».
Если значение регистра R5, при выходе из подпрограммы будет нулевым, то будет выполнен следующий шаг основной программы.
Для выполнения останова программы, достаточно перевести состояние сигнала на выходе P2.5 в нулевое состояние и в стеке подменить адрес следующей команды на адрес начала программы «Монитор».
Для того чтобы перевести программу пользователя из пошагового режима, в выполнение программы в режиме реального времени необходимо установить состояние сигнала P2.5 в нулевое состояние.
Алгоритм декодирования кода операции представлен на рисунке 11.
Рис. 11. Алгоритм декодирования кода операции в пошаговом режиме работы программы пользователя.
Для выдачи кода следующей команды необходимо считать 3 байта информации из памяти программ. Начальный адрес следующей команды можно взять из указателя стека.
2.3.2.4 Подпрограмма записи программы пользователя в память программ микроконтроллера.
В начале работы подпрограмма принимает количество передаваемых байтов из ПК. Для этого используется подпрограмма приема двух байтов информации. После ее выполнения данные необходимо перенести в счетчик количества принятых байтов. Функцию счетчика выполняют регистры R1 и R2.
Алгоритм записи программы пользователя в память программ микроконтроллера представлен на рисунке 12.
Рис. 12. Алгоритм подпрограммы записи программы пользователя в памяти программ микроконтроллера.
После того, как количество принимаемых байтов будет принято, необходимо принять адрес вершины принимаемого массива информации.
После этого становится возможным прием самой программы пользователя и запись ее в память программ микроконтроллера.
Алгоритм приема данных представлен на рисунке 13.
Рис. 13. Алгоритм приема данных в подпрограмме записи программы пользователя в память МК.
Адрес следующего байта программы содержится в регистре DPTR. После каждого принятого байта данных процедура проверяет правильность завершения подпрограммы приема одного байта данных, записывает его по адресу, указанному в регистре DPTR, увеличивает значение этого регистра и уменьшает счетчик принятых байтов.
После этого процедура проверяет счетчик принятых байтов программы пользователя и, в случае его обнуления, завершает процесс принятия данных.
2.3.2.5 Подпрограмма записи информации в программно– доступные узлы микроконтроллера
Подпрограмма записи информации в программно– доступные узлы микроконтроллера аналогична процедуре записи программы пользователя. Разница заключается в том, что для записи информации в программно – доступные узлы используется однобайтовая адресация, а при записи в память программ используется двухбайтовая адресация.
Реферат опубликован: 16/06/2007