Устройство управления системой очистки лобового стекла автомобиля, страница 3

Рис.1.4

 

         Отдельного рассмотрения заслуживает оригинальная подпрограмма задержки на 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