Организация обмена информацией между микроконтроллером семейства MCS-51

Страница: 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