Программа инициализации начинает
выполняться после подачи питания на микроЭВМ и после формирования процессором сигнала
системного сброса. Ее основные функции - настройка последовательного порта на работу в
режиме 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 |