Отчет по практике: Микропроцессорные системы

ends

END Start

Рисунок 3 – Результат работы программы


3 ПРИНЦИП РАБОТЫ КЛАВИАТУРЫ

Клавиатура выполнена, как правило, в виде отдельного устройства подключаемого к компьютеру тонким кабелем. Клавиатура содержит микроконтроллер который выполняет специализированные функции. Он осуществляет сканирование клавишного поля, обработку дребезга при нажатии и отпускании клавиши, буферизацию кодов и организацию передачи данных последовательном коде в компьютер. Упрощенная принципиальная схема клавиатуры, представлена на рисунке ниже.

Рисунок 3.1 – Принципиальная схема клавиатуры

При нажатии любой клавиши микроконтроллер вырабатывает Scan-код нажатой клавиши. Scan-код отличается от стандартного ASCII кода символа. Scan-код – это просто номер клавиши на клавиатуре. Таким образом Scan-код клавиш ” F ” и “ f ” одинаков. Таблица некоторых Scan-кодов приведена ниже.


Таблица 3.1 – Набор Scan - кодов

16с\с 10с\с клавиша 16с\с 10с\с клавиша 16с\с 10с\с клавиша
01 1 esc 1d 29 Ctrl 39 57 Space
02 2 1 ! 1e 30 A 3a 58 Caps Lock
03 3 2 @ 1f 31 s 3b 59 F1
04 4 3 # 20 32 d 3c 60 F2
05 5 4 $ 21 33 f 3d 61 F3
06 6 5% 22 34 g 3e 62 F4
07 7 6 ^ 23 35 h 3f 63 F5
08 8 7 & 24 36 j 40 64 F6
09 9 8 * 25 37 k 41 65 F7
0a 10 9 ( 26 38 l 42 66 F8
0b 11 0 ) 27 39 ; : 43 67 F9
0c 12 - _ 28 40 " 44 68 F10
0d 13 = + 29 41 ` ~ 45 69 Num Lock
0e 14 <- 2a 42 Shift (L) 46 70 Scroll Lock
0f 15 tab 2b 43 \ | 47 71 Home 7
10 16 q 2c 44 z 48 72 ↑ 8
11 17 w 2d 45 x 49 73 Pg Up 9
12 18 esc 2e 46 Ctrl 4a 74
13 19 r 2f 47 v 4b 75
14 20 t 30 48 b 4c 76 - 5
15 21 y 31 49 n 4d 77 ↔ 4\6
16 22 u 32 50 m 4e 78 +
17 23 i 33 51 , < 4f 79 End 1
18 24 o 34 52 . > 50 80 ↓ 2
19 25 p 35 53 / ? 51 81 Pg Dn 3
1a 26 [ { 36 54 Shift ® 52 82 Ins 0
1b 27 ] } 37 55 Prt Sc 53 83 del .
1c 28 Enter 38 56 Alt 54

Микроконтроллер передает скан-код в адаптер связи с клавиатурой, расположенный на системной плате. Адаптер связи преобразует полученный последовательный код в параллельный, передает его на входы порта ввода/вывода РА ППИ и устанавливает высокий уровень сигналаIRQ1- запрос на прерывание в контроллер прерываний КР1810ВН59Л. По этому сигналу контроллер формирует запрос на аппаратное прерывание процессора с вектором (типом прерывания) 09Н. Процессор прекращает свою работу и выполняет обработчик прерывания 09h. Который читает Scan-код из порта 60Н (порт РА ППИ) и анализирует Scan-код. Для дешифрации Scan-кодов обработчик прерывания 9h содержит специальную таблицу поиска. Обработчик также проверяет, не является ли скан-код кодом FFh, указывающим на переполнение 4-символьного аппаратного буфера Scan-кодов клавиатуры. При обнаружении кода FFh прерывание 9h сообщает о переполнении сигналом динамика. Когда поступает код от клавиши сдвига или переключателя, то в специальной переменной в памяти ПЭВМ фиксируется изменение статуса (например, переключение с верхнею регистра на нижний). Во всех остальных случаях Scan-код преобразовывается в код символа ASCII. Конечно, процедура сначала определяет установку клавиш сдвига и переключателей, чтобы правильно получить вводимый код (это "а" или "А"). После этого введенный код помещается в буфер клавиатуры, который представляем собой область памяти, способную запомнить до 15 вводимых символов, пока программа слишком занята, чтобы обработать их.

При чтении Scan-кода из порта ввода РА ППИ он не изменяется и любая другая программа может также его прочитать. Обработчик прерывания сообщает адаптеру связи с клавиатурой о завершении чтения скан-кода кратковременной установкой бита 7 порта вывода РВ IIПИ. По этому сигналу сбрасывается содержимое регистра адаптера связи и снимается сигнал запроса на прерывание IRQ1. Обработчик прерывания завершает свою работу выдачей сообщения контроллеру прерывания о завершении обработки. Для этого обработчик выдает код 20Н в порт 20Н (совпадение адреса порта и кода случайное).

Прерывание 9h является аппаратно-зависимым, поэтому его обработчик для 83-клавиатуры отличается от обработчика для расширенной 101-клавишной клавиатуры.


3.1 Таблица векторов прерываний

Для того чтобы связать адрес обработчика прерывания с номером прерывания, используется таблица векторов прерываний, занимающая первый килобайт оперативной памяти - адреса от 0000:0000 до 0000:03FF. Таблица состоит из 256 элементов - FAR-адресов обработчиков прерываний. Эти элементы называются векторами прерываний. В первом слове элемента таблицы записано смещение, а во втором - адрес сегмента обработчика прерывания.

Таблица 3.2 – Векторы прерываний

Номер Описание
0 Ошибка деления. Вызывается автоматически после выполнения команд DIV или IDIV, если в результате деления происходит переполнение (например при делении на 0). DOS обычно при обработке этого прерывание выводит сообщение об ошибке и останавливает выполнение программы. Для процессора 8086 при этом адрес возврата указывает на следующую после команды деления команду, а в процессоре 80286- на первый байт команды вызвавшей прерывание.
1 Прерывание пошагового режима. Вырабатывается после выполнения каждой машиной команды. Если в слове флагов установлен бит пофлаговой трассирови TF. Используется для отладки программ. Это прерывание не вырабатывается после выполнения команды MOV в сегментные регистры или после загрузки сегментных регистров командой POP.
2 Аппаратное немаскируемое прерывание. Это прерывание может использоваться по разному в разных машинах. Обычно вырабатывается при ошибке четности оперативной памяти или запросе прерывпания сопроцессора.
3 Прерывание для трассировки. Это прерывание генерируется при выполнении однобайтовой машиной с кодом CCh и обычно используется отладчиками для установки точки прерывания.
4 Переполнение. Генерируется машинной командой INTO, если установлен флаг OF. Если флаг установлен, то команда INTO выполняется как NOP Это прерывание используется для обработки ошибок арифметических операций.
5 Печать копии экрана. Генерируется при нажатии на клавиатуре PrtScr. Обычно используется для печати образа экрана. Для процессора 80286 генерируется при выполнении машинной команды BOUND, если проверяемое значение вышло за приделы заданного диапазона.
8 IRQ0 прерывание интервального таймера возникает 18,2 раза в сек
9 IRQ1 Прерывание от клавиатуры. Генерируется при нажатии и при отжатии клавиши.
A IRQ2 используется при каскадировании аппаратных прерываний в машинах класса АТ.
B IRQ3 Прерывание асинхронного порта COM2
C IRQ4 Прерывание асинхронного порта COM1
D IRQ5 Прерывание от контроллера жесткого диска от XT
E IRQ6 Прерывание генерируется контроллером флопи диска после завершения операции.
F IRQ7 прерывание принтера. Генерируется принтером когда он готов к выполнению очередной операции. Многие адаптеры принтера не используют это прерывание.
70 IRQ8 прерывание от часов реального времени.
71 IRQ9 прерывание от контроллера EGA
75 IRQ13 прерывание от математического сопроцессора
76 IRQ14 прерывание от контроллера жесткого диска

Прерыванию с номером 0 соответствует адрес 0000:0000. прерыванию с номером 1 - 0000:0004 и т.д. Поэтому прерыванию от клавиатуры 09h соответствует адрес 0000:0024. т.е.в ячейке с адресом 0000:0024 хранится смещение обработчика прерывания, а в ячейке с адресом 00:00026 хранится адрес сегмента этого обработчика прерывания.

Инициализация таблицы происходит частично BIOS после тестирования аппаратуры и перед началом загрузки операционной системой, частично при загрузке DOS. DOSможет переключить на себя некоторые прерывания BIOS.

Ниже приведены назн

К-во Просмотров: 1061
Бесплатно скачать Отчет по практике: Микропроцессорные системы