| Главная страница | | Архитектура микроЭВМ | | Принципы обмена данными | | Лабораторные работы | | Примеры систем | | Программно-логическая модель | | Справочная информация |
 
Однокристальная микроЭВМ МК Система определения спектра

   ПРОГРАММА РАБОТЫ МИКРОЭВМ

    В состав программного обеспечения микроЭВМ естественно должна входить основная программа, которая должна выполнять функции инициализации, накопления данных и получения спектра. Также должна быть программа обработки прерывания от INT0, которая должна принимать данные, записанные компьютером в БИС ППИ и после этого запускать выполнение основной программы микроЭВМ. Программа обработки прерывания от INT1 как ответ на получение слова спектра компьютером должна выдавать новое слово.

    На первый взгляд необходима еще и программа обработки прерывания от последовательного порта. В режиме 1 при поступлении байта в порт она будет записывать новые значения от источника данных в память микроЭВМ. Если микроЭВМ не успеет считать данные от источника до прихода новых данных, они будут потеряны. Так как последовательный порт МК51 поддерживает интерфейс RS-232 не полностью, то необходимо при передачах обмениваться сигналами подтверждения приема - если микроЭВМ приняла данные от источника, то она должна послать источнику сигнал подтверждения приема и разрешения передачи новой порции данных. В качестве такого сигнала можно использовать посылку любого байта или же возвращать принятые данные. Выберем вариант с посылкой байта, равного 0Fh.
    Прерывание от последовательного порта возникает не только при приходе байта, но и при выходе байта из порта. Запретить прерывание от ухода байта нельзя. В таком случае получится прерывание от последовательного порта при обработке самого этого прерывания. Поэтому прием данных от последовательного порта в режиме 1 следует организовать включив в основную программу программный опрос признака прихода данных в порт - опрос бита RI.

    Программа инициализации, накопления данных и получения спектра
    Программа инициализации начинает выполняться после подачи питания на микроЭВМ и после формирования процессором сигнала системного сброса. Ее основные функции - настройка последовательного порта на работу в режиме 1 и таймера/счетчика 1 в режиме 2 на генерацию переполнений, обеспечивающих последовательную передачу с частотой 2,4 Кбод. Программа разрешает прерывание от INT0 и выполняет очистку памяти под область спектра. Объем этой памяти равен 64 ячейкам, начальный адрес области памяти задан как 30h, это значение хранится в регистре R1. Накопленные N значений будут запоминаться в памяти, начиная с адреса 10h, этот адрес заносится в регистр R0.
    После поступления сигнала запуска от компьютера, признаком чего является наличие «1» в бите F0, программа анализирует заданный режим - код на входе Р0.7. В случае первого режима при поступлении очередного слова от источника в последовательный порт (состояние бита RI=1), программа записывает принятое слово в область памяти, определяемую адресом в регистре R0, посылает через последовательный порт сигнал разрешения передачи нового слова и вновь ожидает поступления нового слова. Если в памяти накоплены все N слов, программа переходит к формированию спектра. Алгоритм формирования спектра основан на том, что программа определяет сколько раз встречается определенное значение в N словах и заносит это количество в определенную ячейку спектра. Например, если число 5 было принято 6 раз, то в ячейке памяти с адресом 30h+5h=35h будет записано число 6.
    После формирования спектра программа передает первое слово из памяти в порт Р1, формирует сигнал запроса прерывания на выходе Р3.7, разрешает прерывания от INT1 и далее ожидает окончания вывода всех слов спектра, которое выполняется программой обработки этого прерывания.
    В режиме 2 программа должна опрашивать последовательный порт (то, что находится в регистре SBUF) с периодом Т. Для получения сигнала периодического опроса используем таймер/счетчик 0 в режиме 1. Максимальное значение периода работы 16-разрядного таймера может быть равно 65535 мкс. Программа загружает в таймер константу пересчета, равную 65535-50000=15535 (3CAFh), что обеспечивает переполнение таймера через 50 мс. Для получения необходимого периода опроса используется дополнительный программный счетчик на регистре R4, в котором должна находиться величина Т, умноженная на 20. Тогда при Т, например, равном 1с, общее время пересчета будет равно 1х20х50 мс=1с.
    С таким периодом программа опрашивает последовательный порт и заносит слова в память. Так как новое слово может быть принято в SBUF только при RI=0, то после записи слова этот бит обнуляется. Затем управление передается формированию спектра как в первом режиме.
    После вывода всего спектра программа вновь переходит к установке начальных значений и к ожиданию нового сигнала запуска.

Блок-схема алгоритма
программы
инициализации
и накопления
спектра

Текст программы
часть 1

Текст программы
часть 2

    Программа обработки прерывания от INT0
    В функции программы обработки прерывания от INT0 входит считывание значения кода T со входов порта Р2. Значение этой величины указывает только количество секунд в коде Т. Для организации цикла опроса в режиме 2 с таким периодом используется таймер/счетчик с периодом 50 мс и программный счетчик на регистре R4. В регистр R5 заносится величина Т, умноженная на 20. В основной программе эта величина копируется в R4.
    Программа обработки прерывания также считывает код из порта Р0, выделяет из него величину N и сохраняет ее в регистрах R6 и R7. В конце программа устанавливает в «1» бит F0 - признак запуска микроЭВМ.

Блок-схема алгоритма
программы
обработки
прерывания
от INT0

Текст программы

    Программа обработки прерывания от INT1
    Программа обработки прерывания от INT1 выдает в порт Р1 очередное слово спектра из ячейки памяти, адрес которой находится в регистре R1. Выдав слово, программа формирует запрос прерывания процессора и устанавливает новое значение в регистре R1. Так как в этой программе используется значение аккумулятора, то при входе в программу значение А запоминается в стеке, а при выходе из программы - выталкивается из стека.
Блок-схема алгоритма
программы
обработки
прерывания
от INT1

Текст программы

   ТЕПЕРЬ ДЛЯ ВЫПОЛНЕНИЯ ЗАДАНИЯ ТРЕБУЕТСЯ:

- отладить программу работы микроЭВМ Отладка программы

| На главную страницу | На начало раздела | Задание на разработку системы | На предыдущий этап | На начало страницы | © КСиТ МИФИ, 2000 г.