
Kharakhnin / Аналоговые и цифр. устройства авт. пособие
.pdf
Прерывание по входу INT0 (нажата клавиша)
Задержка для устранения эффекта “дребезг контакта”
|
|
Да |
|
|
||
SB1 нажата? |
|
|
|
Выполнении функции при |
|
|
|
|
|
нажатии SB1 |
|
||
|
|
|
|
|
|
|
|
Нет |
|
Да |
|
|
|
|
|
|
|
|||
|
|
|
|
|||
|
|
|
|
|||
|
|
|
|
|
||
SB2 нажата? |
|
Выполнении функции при |
|
|||
|
|
|
|
|||
|
|
|
нажатии SB2 |
|
||
|
|
|
|
|
|
|
|
Нет |
|
|
|
|
|
|
|
|
|
|
|
|
|
Да |
|
|
SB8 нажата? |
|
|
Выполнении функции при |
|
|
|
нажатии SB8 |
||
|
|
|
|
|
|
Нет |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Выход из прерывания INT0
Рис. 29. |
Алгоритм работы системы в режиме прерывания по входу |
||
|
|
|
INT0 |
< 1 |
> |
ORG 0000H ; |
Начало программы с адреса 0000Н. |
< 2 |
> |
JMP START ; |
Переход на начало инициализации. |
< 3 |
> |
JMP INT_KLAV ; |
Вектор прерывания |
< 4 |
>START: MOV IE,#01H ; Разрешение прерывания от аппаратно- |
||
го запроса по входу INT0. |
|
||
|
|
|
121 |
<5 > SETB IT0 ; Установка прерывания по спаду (1-0) импульса.
<6 > SETB EA ; Разрешение всех установленных прерываний.
<7 >MAIN: ; Тело основной программы
< 8 > |
JMP MAIN ;Зацикливание основной программы. |
||
< 9 > INT_KLAV: CALL DELAY_50 ; Вызов подпрограммы за- |
|||
держки. |
|
|
|
< 10 > |
JNB P2.0,SB1 ; |
Проверка нажатия на клавишу SB1. |
|
< 11 > |
JNB P2.1,SB2 ; |
Проверка нажатия на клавишу SB2. |
|
< 12 > |
JNB P2.2,SB3 ; |
Проверка нажатия на клавишу SB3. |
|
< 13 > |
JNB P2.3,SB4 ; |
Проверка нажатия на клавишу SB4. |
|
< 14 > |
JNB P2.4,SB5 ; |
Проверка нажатия на клавишу SB5. |
|
< 15 > |
JNB P2.5,SB6 ; |
Проверка нажатия на клавишу SB6. |
|
< 16 > |
JNB P2.6,SB7 ; |
Проверка нажатия на клавишу SB7. |
|
< 17 > |
JNB P2.7,SB8 ; |
Проверка нажатия на клавишу SB8. |
|
< 18 >END_INT: NOP |
|
|
|
< 19 > |
RETI |
; Выход из прерывания. |
<20 >SB1: ;Выполнение функции при нажатии на клавишу SB1.
<21 > JMP END_INT ;
<22 >SB2: ; Выполнение функции при нажатии на клавишу SB2.
<23 > JMP END_INT ;
<24 >SB3: ;Выполнение функции при нажатии на клавишу SB3.
<25 > JMP END_INT ;
<26 >SB4: ;Выполнение функции при нажатии на клавишу SB4.
<27 > JMP END_INT ;
<28 >SB5: ;Выполнение функции при нажатии на клавишу SB5.
<29 > JMP END_INT ;
<30 >SB6: ;Выполнение функции при нажатии на клавишу SB6.
<31 > JMP END_INT ;
<32 >SB7: ; Выполнение функции при нажатии на клавишу SB7.
<33 > JMP END_INT ;
<34 >SB8: ;Выполнение функции при нажатии на клавишу SB8.
<35 > JMP END_INT ;
<36 >DELAY_50: Программная задержка на 50 мС (текст
<37> RET; не приводится).
5.1.2.Применение шифратора для организации клавиатуры
На рис. 30 показана функциональная схема организации клавиатуры с использованием приоритетного шифратора (8 х 3) К555ИВ1.
122

123 |
применением с турыклавиа Организация .30 .Рис шифратора |
|
приоритетного |
SB1
SB1_R
SB1_S
SB2
SB2_R
SB2_S
SB3
SB3_R
SB3_S
SB4
SB4_R
SB4_S
|
|
|
|
|
|
|
|
+5V |
|
|
|
|
|
R1 |
R2 |
R3 |
R4 |
R5 |
R6 |
R7 |
R8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
DD1 |
|
|
|
DD2 |
|
|
|
|
|
|
|
|
|
R1 |
T |
1 |
|
I0 |
PRCD |
A0 |
|
|
|
|
|
|
|
S1 |
|
|
|
I1 |
|
A1 |
|
|
|
|
|
|
|
R2 |
|
2 |
|
I2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
S2 |
|
|
I3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A2 |
||
|
|
|
|
|
|
|
R3 |
|
3 |
|
I4 |
|
|
|
|
|
|
|
|
|
S4 |
|
|
I5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
R4 |
|
4 |
|
I6 |
|
G |
|
|
|
|
|
|
|
S4 |
|
|
I7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
E |
|
|
|
E |
|
E0 |
|
|
|
|
|
|
|
К561ТР2 |
GND |
К555ИВ1 |
||||
|
|
|
|
|
|
|
R9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
+5V |
|
|
|
|
|
|
DD3
P1.0 SMC
P1.1
P1.2
INT0 P3.2
AT89S8252
Микросхема принимает напряжение низкого уровня на один из восьми параллельных инверсных входов I0 – I7. На инверсных выходах А0 – А2 появляется двоичный код, пропорциональный номеру входа, оказавшегося активным. Приоритет в том случае, если несколько входов получили активные уровни, будет иметь старший среди них по номеру. Таким образом, вход I7 имеет наивысший приоритет. Активный сигнал на входе Е разрешает работу микросхемы. Рассмотрим табл.19 состояний К555ИВ1.
Таблица 19
|
|
|
В х о д ы |
|
|
|
|
В ы х о д ы |
|
||||
Е |
I0 |
I1 |
I2 |
I3 |
I4 |
I5 |
I6 |
I7 |
G |
A0 |
A1 |
A2 |
E0 |
1 |
Х |
Х |
Х |
Х |
Х |
Х |
Х |
Х |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
Активный (нулевой) сигнал на выходе G свидетельствует о наличии хотя бы одного активного сигнала на входах II. Таким образом, сигнал на выходе G можно использовать в качестве сигнала запроса на прерывание однокристального МК, поэтому выход G соединен с входом INT0. ЕО – выходной сигнал разрешения, свидетельствующий об отсутствии активных входов II. Поскольку шифратор имеет 8 входов, максимально можно подключить 8 клавиш. Используя совместно выход ЕО и вход Е, можно строить многоразрядные приоритетные шифраторы, а следовательно, и подключать большее количество клавиш. Эффект “дребезга контакта” устраняется аппаратно, для этого применяется микросхема К561ТР2, содержащая четыре RS триггера. Алгоритм работы аналогичен вышерассмотренному, программа имеет следующий вид:
<1> ORG 0000H
<2> JMP START ; Переход на начало инициализации системы. <3> JMP INT_KLAV ; Вектор прерывания при нажатии на клавишу
клавиатуры.
<4> START: MOV IE,#01H ; Разрешение прерывания от аппаратного запроса по входу INT0.
124
<5> |
SETB IT0 ; Установка прерывания по фронту импульса. |
|||
<6> |
SETB EA ; Разрешение всех установленных прерываний. |
|||
<7>MAIN: |
; Тело основной программы |
|||
<8> |
|
JMP MAIN ;Зацикливание основной программы. |
||
<9>INT_KLAV: MOV A,P1 ;Получение кода нажатой клавиши. |
||||
<10> |
CPL A ; Инвертирование для получения прямого кода. |
|||
<11> |
ANL A,#07H |
; |
Выделение младших 3 битов. |
|
<12> |
MOV R0,A |
; |
Сохранение кода в регистре R0. |
|
<13> |
XRL A,#00H |
; |
Проверка на нажатие клавиши SB1. |
|
<14> JZ SB1;Если SB1 нажата, то перейти на выполнение функции. |
||||
<15> |
MOV A,R0 ; Восстановление кода в А. |
|||
<16> XRL A,#01H ; Проверка на нажатие клавиши SB2. |
||||
<17> JZ SB2;Если SB2 нажата, то перейти на выполнение функции. |
||||
<18> |
MOV A,R0 ; Восстановление кода в А. |
|||
<19> XRL A,#02H ; Проверка на нажатие клавиши SB3. |
||||
<20>JZ SB3 ;Если SB3 нажата, то перейти на выполнение функции. |
||||
<21> |
MOV A,R0 ; Восстановление кода в А. |
|||
<22> |
XRL A,#03H ; Проверка на нажатие клавиши SB4. |
|||
<23> JZ SB4;Если SB4 нажата, то перейти на выполнение функции. |
||||
<24> END_INT: NOP |
|
|||
<25> |
|
RETI |
|
; Выход из прерывания. |
<26> SB1: ; Выполнение функции при нажатии на клавишу SB1. |
||||
<27> |
|
JMP END_INT ; |
||
<28> SB2: ; Выполнение функции при нажатии на клавишу SB2. |
||||
<29> |
|
JMP END_INT ; |
||
<30>SB3: ; Выполнение функции при нажатии на клавишу SB3. |
||||
<31> |
|
JMP END_INT ; |
||
<32>SB4: ; Выполнение функции при нажатии на клавишу SB4. |
||||
<33> |
|
JMP END_INT ; |
||
<34> |
END |
|
|
Отличием от программы, описанной выше, является то, что не используется подпрограмма задержки при входе в подпрограмму обслуживания прерывания, поскольку “дребезг” устраняется аппаратно. Предварительно необходимо выделить три младших разряда (шаг 11). Идентификация нажатой клавиши осуществляется посредством команды “ИЛИ ИСКЛЮЧАЮЩЕЕ” содержимого А и проверочных кодов ( шаги 13, 16, 19, 22). Перед каждой проверкой необходимо восстанавливать содержимое аккумулятора (шаги 15, 18, 21). После идентификации клавиши осу-
125
ществляется переход на процедуру выполнения соответствующей функции.
5.1.3. Матричный способ подключения клавиатуры
На рис. 31 показан матричный (3 х 3) способ включения клавиатуры. Клавиши включаются на пересечении линий строк и линий столбцов. Линии строк подключены на входы (I0, I1, I2 ) мультиплексора К555KП7. Линии столбцов через резисторы R1, R2 и R3 подключены к источнику питания +5 В. Столбцы также подключены к разрядам порта Р1 и входам логической микросхемы К555ЛИ3 , выполняющей функцию “И”. Выход схемы “И” подключен к входу Р3.2 (INT0) -аппаратному запросу прерывания процессора. Разряды порта Р1.0, Р1.1, Р1.3 подключены к адресным входам мультиплексора K555KП7, а также к выходам счетчика импульсов К555ИЕ2. Счетный вход С0 счетчика подключен к выходу генератора тактовых импульсов, выполненного на микросхеме
K555ЛН1.
Рассмотрим работу схемы. Генератор тактовых импульсов вырабатывает импульсы прямоугольной формы и подает их на вход счетчика К555ИЕ2. Счетчик считает импульсы и формирует на своих выходах 1, 2, 4 двоичный код от 000 до 111. При достижении кода 1000 с выхода 8 счетчика подается сигнал сброса последнего в нулевое состояние.
Сигналы с выхода счетчика поступают на адресные входы А0, А1, А2 мультиплексора, в результате строки матрицы клавиш последовательно одна за другой подключаются к общей шине, так как выход К555KП7 подключен к GND. Если ни одна из клавиш не нажата, то строки матрицы не обнуляются и на входе схемы “И” имеют место единичные сигналы, в результате на выходе “И” также наблюдается единичный уровень, и поэтому прерывания в работе МК не наступает.
При нажатии на одну из клавиш соответствующая строка оказывается обнуленной и на входе схемы “И” один из сигналов будет также нулевым, поэтому на вход INT0 МК поступит запрос на прерывание, что приведет к прерыванию в работе процессора. После этого МК должен прочитать содержимое порта Р1 и идентифицировать клавишу. В этой схеме подключения клавиатуры при невысокой частоте генератора (100 Гц) исключается явление “дребезга контакта”.
126

|
.31 .Рис |
127 |
способ Матричный |
|
люченияподк |
|
клавиатуры |
DD1 |
|
DD2.1 |
|
|
|
|
|
SMC |
P1.7 |
& |
|
|
|
+5V |
|
|
|
|
|
|
|||
|
P1.6 |
R1 |
R2 |
|
R3 |
|
DD5 |
|
|
|
|
|
|
||
|
P1.5 |
|
|
|
|
I0 |
MUX |
|
|
К555ЛИ3 |
|
|
|
|
|
|
P1.4 |
|
|
|
|
I1 |
|
|
P1.3 |
|
SB1 |
SB2 |
SB3 |
I2 |
|
|
|
|
|
|
|||
|
P1.2 |
|
|
|
|
I3 |
|
|
P1.1 |
|
SB4 |
SB5 |
SB6 |
I4 |
|
|
|
|
|
|
|
||
|
P1.0 |
|
SB7 |
SB8 |
SB9 |
I5 |
OUT |
|
|
|
|
|
|||
|
P3.2 |
INT0 |
|
|
|
I6 |
|
|
|
|
|
|
|
||
AT89S8252 |
|
|
|
|
I7 |
GND |
|
|
|
|
|
|
|||
|
|
|
|
|
|
A2 |
|
|
|
|
|
|
|
A1 |
|
|
|
|
|
|
|
A0 |
|
|
|
|
|
|
|
OE |
|
|
|
|
DD4 |
|
|
|
|
|
R4 |
R5 |
|
|
|
К555КП7 |
|
|
CT |
1 |
|
R6 |
|
||
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C1 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
1 |
|
|
|
|
C0 |
|
|
|
|
|
|
|
|
+5V |
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DD3.1 |
|
|
|
|
DD3.2 |
|
|
|
S1 |
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
С1 |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
К555ЛН1 |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
К555ИЕ2 |
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Определим |
коды клавиш, используя табл. 20. |
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 20 |
|
Клавиша |
|
P1.7 |
P1.6 |
P1.5 |
P1.4 |
|
P1.3 |
P1.2 |
P1.1 |
P1.0 |
HEX код |
|
|
SB1 |
|
1 |
1 |
1 |
|
1 |
|
0 |
0 |
0 |
0 |
F0H |
|
SB2 |
|
1 |
1 |
1 |
|
0 |
|
1 |
0 |
0 |
0 |
E8H |
|
SB3 |
|
1 |
1 |
0 |
|
1 |
|
1 |
0 |
0 |
0 |
D8H |
|
SB4 |
|
1 |
1 |
1 |
|
1 |
|
0 |
0 |
0 |
1 |
F1H |
|
SB5 |
|
1 |
1 |
1 |
|
0 |
|
1 |
0 |
0 |
1 |
E9H |
|
SB6 |
|
1 |
1 |
0 |
|
1 |
|
1 |
0 |
0 |
1 |
D9H |
|
SB7 |
|
1 |
1 |
1 |
|
1 |
|
0 |
0 |
1 |
0 |
F2H |
|
SB8 |
|
1 |
1 |
1 |
|
0 |
|
1 |
0 |
1 |
0 |
EAH |
|
SB9 |
|
1 |
1 |
0 |
|
1 |
|
1 |
0 |
1 |
0 |
DAH |
|
Рассмотрим программу, реализующую нахождение кода нажатой |
|||||||||||||
клавиши и выполнение соответствующей функции. |
|
|
|
||||||||||
<1> |
|
|
ORG 0000H |
|
|
|
|
|
|
|
|||
<2> |
|
|
JMP START |
|
|
|
|
|
|
|
|||
<3> |
|
|
ORG 0003H |
|
|
|
|
|
|
|
|||
<4> |
|
|
JMP INT_KLAV; Вектор прерывания от INT0 |
||||||||||
<5> START: MOV IE,#01 ; Установка прерывания по входу INT0 |
|||||||||||||
<6> |
|
|
SETB IT0 ; Вид прерывания по переходу из "1" в "0" |
||||||||||
<7> |
|
|
SETB EA |
|
; |
|
|
|
|
|
|
|
|
<8> |
|
MAIN: ; Выполнение основной программы |
|
|
|||||||||
|
|
|
JMP MAIN |
; |
|
|
|
|
|
|
|
||
<9> INT_KLAV:MOV A,P1; Получение байта состояния клавиатуры |
|||||||||||||
<10> |
|
MOV R1,A ; Сохранение состояния клавиатуры в R1 |
|||||||||||
<11> |
|
MOV R2,#00h ; Обнуление счетчика номера клавиш |
|||||||||||
<12> |
|
ANL A,#07h ; |
|
Выделение битов строк |
|
|
|||||||
<13> |
|
MOV B,#03h ;Загрузка в В количества столбцов |
|||||||||||
<14> |
|
MUL AB |
|
; |
|
Определение номера строки |
|||||||
<15> |
|
MOV R2,A |
; |
Сохранить номер строки в R2 |
|||||||||
<16> |
|
MOV A,R1 ; Восстановление состояния клавиатуры в А |
|||||||||||
<17> |
|
RL A ; |
Установка кода столбца в старшей тетраде |
||||||||||
<18> |
|
SWAP A |
|
; |
Код столбца в младшую тетраду |
||||||||
<19> |
|
ANL A,#07h; Выделить 3 младших бита кода столбца |
|||||||||||
<20> STOLB: RRC A ; Определение активного (нулевого) столбца |
|||||||||||||
<21> JNC DEF_COD ; Если столбец активен, то перейти на |
|||||||||||||
определение номера клавиши |
|
|
|
|
|
|
|
|
|||||
<22> |
INC R2 ;Инкремент счетчика номера клавиш |
||||||||||||
|
|
|
|
|
|
|
128 |
|
|
|
|
|
<23>SJMP STOLB; Продолжить сдвигать до определения активного столбца
<24> DEF_COD:MOV A,R2 ;
<25> |
ADD A,#01h ; Вычисление номера нажатой клавиши |
|
<26> |
MOV R2,A |
|
<27> |
MOV B,#03h ; |
|
<28> |
MUL AB ; |
Вычисление адреса |
<29>ADR:MOV DPTR,#ADR+1; перехода на подпрограмму |
||
<30> |
JMP @A+DPTR ; |
Переход на подпрограмму обработки |
<31>JMP SB1;Переход на процедуру обработки при нажатии SB1 <32> JMP SB2 ;Переход на процедуру обработки при нажатии SB2 <33>JMP SB3 ;Переход на процедуру обработки при нажатии SB3 <34> JMP SB4 ;Переход на процедуру обработки при нажатии SB4 <35>JMP SB5;Переход на процедуру обработки при нажатии SB5 <36>JMP SB6 ;Переход на процедуру обработки при нажатии SB6 <37>JMP SB7 ;Переход на процедуру обработки при нажатии SB7 <38>JMP SB8 ;Переход на процедуру обработки при нажатии SB8 <39>JMP SB9 ;Переход на процедуру обработки при нажатии SB9 <40> SB1: ; Выполнение функции при нажатии на клавишу SB1
<41> JMP END_INT ;
<42> SB2: ; Выполнение функции при нажатии на клавишу SB2
<43> JMP END_INT ;
<44> SB3: ; Выполнение функции при нажатии на клавишу SB3
<45> JMP END_INT ;
<46>SB4: ; Выполнение функции при нажатии на клавишу SB4
<47> JMP END_INT ;
<48> SB5: ; Выполнение функции при нажатии на клавишу SB5
<49> JMP END_INT ;
<50> SB6: ; Выполнение функции при нажатии на клавишу SB6
<51> JMP END_INT ;
<52>SB7: ; Выполнение функции при нажатии на клавишу SB7
<53> JMP END_INT ;
<54>SB8: ; Выполнение функции при нажатии на клавишу SB8
<55> JMP END_INT ;
<56>SB9: ; Выполнение функции при нажатии на клавишу SB9
<57> JMP END_INT ;
<58>END_INT: RETI ; Выход из прерывания
129

5.1.4. Комбинированный способ организации клавиатуры
Комбинированный способ организации клавиатуры подразумевает одновременное сканирование дисплея и клавиш. Рассмотрим электрическую принципиальную схему динамической индикации на дисплее АЛС 318А, представленную на рис. 35. Динамическая индикация подразумевает постоянную регенерацию изображения на дисплее (приблизительно 50 раз в секунду). Поэтому ЭВМ при таком подключении должна один раз в 20 миллисекунд вывести информацию на дисплей. Порт Р1 управляет одновременно преобразователем кодов КР514ИД1 (BCD код на входе преобразуется в код семисегментных индикаторов на выходе) и демультиплексором знакомест дисплея К555ИД7 (двоичный код на входах преобразуется в унитарный на выходе). Транзисторы КТ315В и КТ361В предназначены для усиления по току сигнала запятой. Вторые выводы клавиш SB0 – SB7 клавиатуры соединены вместе и подключены к входу-запросу на прерывание INT0 (P3.2). Таким образом, работа клавиатуры организована по прерываниям. Код нажатой клавиши соответствует коду на разрядах Р1.5, Р1.6, Р1.7. Режим динамической индикации удобно построить с применением таймера, который будет работать в режиме прерывания через каждые 20 миллисекунд.
Рассмотрим алгоритмы, представленные на рис.32, 33, 34 и программу работы микроконтроллера по рассматриваемой схеме рис. 35.
Прерывание по запросу INT0
1Получить код на разрядах Р1.5, Р1.6, Р1.7 порта Р1
2 |
Записать код в ОЗУ |
|
Выход из прерывания
Рис. 32. Алгоритм работы при нажатии на клавишу клавиатуры
130