|
Отдельного рассмотрения заслуживает оригинальная подпрограмма задержки на 1 сек с опросом клавиатуры. Особенность этой подпрограммы заключается в том, что после загрузки в пару h постоянной времени (блок 4.1) в пару h заносится адрес ячейки памяти, в которой хранится код включённого режима (блок 4.3). И, в зависимости от режима, программа накладывает на информацию, пришедшую с клавиатуры, маску, «пропускающую» в коде с порта ввода разряды, соответствующие только командам «выключено» и «включение со скоростью 30 движений в минуту», – для режима 1 движение в минуту, или «выключено» и «включение со скоростью 1 движение в минуту», – для режима 30 движений в минуту. То есть все «ненужные» повторные нажатия клавиш включения программа просто отсеивает.
Очевидно, если не нажата ни одна из нужных клавиш, программа переходит на стандартную рассчитанную в тактах процедуру, на которую затрачивается в общей сложности 1737048 тактов процессора. Недостающие до 1738000 тактов (соответствующих задержке в 1 сек) 52 такта вырабатываются циклом timkil. Если была нажата одна из нужных клавиш, проходит защита от дребезга нажатия и отпускания, определение нажатой клавиши и переход на соответствующую часть программы.
Рис.1.5
2. Листинг программы
Текст программы
; курсовая работа
; программа управления системой очистки лобового стекла автомобиля
; выполняемые функции:
; нажатие на клавишу *0*- выключено
; *2*- включение со скоростью 30 движений в минуту
; *3*- включение со скоростью 1 движение в минуту.
; исходное положение щёток очистки – справа.
; при выключении щётки возвращаются в исходное состояние.
; при включении режима 1 движение в минуту движение совершается в начале минутного
;цикла по схеме: перемещение влево длительностью 1 сек. - перемещение вправо
;длительностью 1 сек. – 58 секунд ожидания.
; при включении одного из режимов на повторное нажатие соответствующей этому
;режиму кнопки программа не реагирует.
; rejim - ячейка памяти, в которой хранится код включённого режима:
; 1(00000001) - 30 движений в минуту, 2(00000010) - 1 движение в минуту
; распределение регистров микропроцессора:
; B- содержит счетчик времени оставшегося до след перемещения, С- содержит
;постоянную защиты от дребезга и некоторые вспомогательные постоянные,
; D- содержит эталон времени до след перемещения, Е – здесь хранится код положения щетки,
;H,L - содержит постоянную времени на одну секунду
;
porta equ 80h ;адрес индикатора
portc equ 82h ;адрес клавиатуры
porcrl equ 83h ;адрес порта управления внешними устройствами
posvr equ 13067 ;постоянная времени на одну секунду
posdr equ 254 ;постоянная времени защиты от дребезга
wetka equ 6ch ;1.1 код маски для смены положения щетки 01101100
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.