Разработка электронных весов, индицирующих вес товара в цифровой форме, страница 3

Микропроцессор подтверждает поступивший запрос прерывания, выполняя два последовательных цикла INTA. В этом цикле  микропроцессор переводит выводы всех управляющих сигналов (кроме INTA) в третье состояние и производит чтение одного

байта по шине данных.

Т.к. младшие 8 линий ШД подключены через резисторы 1 кОм на питание +5В, результатом чтения номера вектора прерывания будет число FFh. Умножая это число

на 4, микропроцессор получает адрес 3FC, по которому записаны четыре байта,

определяющие адрес подпрограммы обработки прерывания 0030h.

Слово с большим адресом содержит базовый адрес сегмента, а слово с меньшим адресом – смещение подпрограммы от начала кодового сегмента. После выполнения описанных процедур происходит переход по полученному адресу и выполнение подпрограммы обслуживания прерывания. (На самом деле, т.к. устройство использует только 9 линий ША, чтение этих байт из ПЗУ произойдёт по адресу 1FCh).

Следует отметить, что при переходе на подпрограмму микропроцессор автоматически записывает в сегмент стека адрес возврата из подпрограммы и содержимое регистра флагов, но, т.к. в системе используется только одно прерывание, эта информация не несёт полезной нагрузки, и поэтому специальных мер для её сохранения не принято.

3.6. Интерфейс клавиатуры и дисплея

Микросхема КР580ВВ79 представляет собой программируемое интерфейсное устройство,   предназначенное для ввода и вывода информации и позволяющее полностью освободить микропроцессор от операций регенерации изображения на дисплее (индикаторе). КР580ВВ79 стандартным образом подключается к шинам микропроцессорной системы, к управлению вводом/выводом относятся сигналы CS, A0, WR, RD, которые управляют считыванием и записью данных в различные внутренние регистры и буферы.

Характер информации, выдаваемой или запрашиваемой микропроцессором, определяется сигналом А0. Уровень логической единицы означает, что передаётся команда или состояние. Уровень логического нуля сигнализирует о передаче данных.

Т.к. в системе используется индикатор на 4 знака, то для формирования отображаемого слова применен принцип прямого управления элементами индикатора на светоизлучающих диодах АЛС324Б.

Контроллер производит выдачу данных (сохраненных в двоично- десятичном формате) через дешифратор- преобразователь двоично- десятичного кода в семисегментный на индикатор. Выдача данных через порты синхронизируется с помощью сигналов управления S0¸S3, которые обеспечивают выбор требуемого разряда индикатора. Контроллер работает в режиме внутренней дешифрации, т.е. в каждый момент времени активен только один сигнал управления из четырех. Для реализации описанного принципа работы индикатора в схему включены катодные формирователи, на которые подаются сигналы с адресных линий контроллера S0¸S3.

Микросхема 533ИД18 – дешифратор- преобразователь двоично- десятичного кода в семисегментный служит для управления семисигментными светодиодными индикаторами с объединенными анодами АЛС324Б.

Для установки режима работы контроллера клавиатуры и дисплея в регистр команд данного устройства заносится управляющее слово, содержащее следующую информацию:

рис. 5 Команда установки режима работы интерфейса

Далее программируется внутренний делитель тактовой частоты контроллера с целью получения значения базовой тактовой частоты микросхемы 100кГц: для этого в регистр команд загружается управляющее слово 00101000b (28h).

4.  ПРОГРАММА

000h:               MOV AL, 00h             ; инициализация контроллера клавиатуры и

                        OUT 09h                     ;   дисплея

                        MOV AL, 28h ;

                        OUT 09h, AL              ;

                        MOV AL, 30h             ; инициализация таймера

                        OUT 07h                     ; загрузка УС в нулевой канал

                        MOV AL, 64h            

                        OUT 07h                     ; загрузка УС в первый канал

                        MOV AL, 90h            

                        OUT 07h                     ; загрузка УС во второй канал

MOV AL, 3Fh             ; загрузка константы в нулевой канал таймера

                        OUT 04h                     ;

MOV AL, 9Сh           

                        OUT 04h                     ;

MOV AL, 02h             ; загрузка константы в первый канал таймера

                        OUT 05h                     ;

MOV AL, FFh            ; загрузка константы во второй канал таймера

                        OUT 06h                     ;

MOV AL, FFh

                        OUT 06h                     ;

            STI                              ; разрешение прерывания

                        HLT                            ; ожидание прерывания

030h:               IN 06h                         ; чтение младшего байта счётчика таймера

                        MOV CL, AL

IN 06h                         ; чтение старшего байта счётчика таймера

                        MOV AH, CL

                        MOV BX, FFFFh

                        SUB BX, AX              ;

MOV AX, BX             ;