86138

Программа опроса малой клавиатуры и обработки прерываний от большой

Курсовая

Информатика, кибернетика и программирование

Программа опрашивает маленькую клавиатуру с параллельной обработкой прерываний от большой, т. е. от последовательного порта. В качестве реакции на поступившее прерывание программа выводит значение нажатой на большой клавиатуре клавиши.

Русский

2015-04-03

69 KB

3 чел.

Московский Государственный Институт Электроники и Математики

(Технический Университет)

Курсовая работа по курсу

МИКРОПРОЦЕССОРНЫЕ СИСТЕМЫ

программа опроса малой клавиатуры и обработки прерываний от большой

Выполнила:

Студентка группы С-84

Белова О.

Преподаватель:

Гудков Ю.И.

Москва 2005 г.


Содержание

[1] Содержание

[2]
Блок-схема

[3]
Текст программы с комментариями


Описание работы программы 

Программа опрашивает маленькую клавиатуру с параллельной обработкой прерываний от большой, т. е. от последовательного порта. В качестве реакции на поступившее прерывание программа выводит значение нажатой на большой клавиатуре клавиши.

По адресу 8000 размещается основная программа, 8023 – обработка прерывания. В основной программе таймер настраивается на работу в 16-ричном режиме и разрешается прерывание от последовательного порта, после чего начинается непосредственно опрос малой клавиатуры (метка SCAN). Номер проверяемой клавиши ns инициализируется единицей. Сама процедура опроса реализована как вложенный цикл: внешний цикл FOR_1 для счета строк , внутренний FOR_2 – для счета столбцов. И тот и другой счетчики уменьшаются от 4х до 1. В начале внешнего цикла задается исходный байт сканирования (11111110). После задержки, организованной с помощью таймера в виде подпрограммы WAIT, значение из порта считывается и анализируется далее после загрузки счетчика столбцов. Значение из порта сдвигается вправо через перенос: в случае появления нуля – то есть нажатой клавиши – бит переноса  равен нулю, в обратном случае он установлен. В случае, если  клавиша не нажата, переходим к метке KEYPRESS_END: увеличиваем номер проверяемой клавиши, завершаем внутренний цикл. В случае выхода из первого цикла (закончился проверяемый столбец), сдвигаем байт сканирования влево циклически и завершаем внешний цикл. По завершении внешнего цикла – безусловный переход к началу сканирования SCAN.

В случае нажатия клавиши начинается ее обработка (KEYPRESS_BEGIN). Из массива KEYTABLE считывается ASCII-код ее значения в зависимости от номера ns, после чего символ выводится на экран (подпрограмма PUT_SYM). В рамках подпрограммы печати символа осуществляется очистка бита TI, копирование значения нажатой клавиши в аккумулятор, ожидание, пока установится TI и снова его очистка.

Начиная с 8023 адреса расположена процедура обработки прерывания. Она сохраняет в стеке текущее значение аккумулятора. Затем проверяет, установлен ли флаг прерывания. В случае его установки, она снова его сбрасывает, после чего печатает содержимое SBUF с помощью той же подпрограммы PUT_SYM.


Блок-схема



Текст программы с комментариями

  ns equ 2Fh ;номер нажатой клавиши на малой клавиатуре

  org 8000h

  ljmp INIT

  org 8023h ;обработка прерывания от большой клавиатуры

  push ACC

  push PSW

CHECK_RI: ;проверка флага прерывания

  jnb RI, QUIT_INT

  clr RI

  mov A, SBUF

  call PUT_SYM

QUIT_INT: ;завершение обработки прерывания

  pop PSW

  pop ACC

  reti

INIT:

  setb RS0 ;иcпользуем 1-й банк региcтров

  clr RS1

  anl tmod, #0F0h ;настраиваем таймер для работы в 16-разрядном режиме

  orl tmod, #01h

  clr TR0

  mov A,#0FFH

  mov P1,A

  mov IP, #0 :присвоение всем видам прерывания низшего приоритета

  mov IE, #10010000B ;разрешаем прерывания от приемопередатчика

SCAN:

  mov ns,#01h ;номер проверяемой клавиши

  mov R7,#11111110b ;исходный байт сканирования

  mov R6,#2 ;регистр, используемый для задержки

  call WAIT

  mov R1,#04h ;Загрузим счетчик строк = 4.

FOR_1: ;Первый цикл. Производится опрос матрицы клавиатуры по строкам.

mov P1,R7 ;Перешлем байт из регистра R7 в порт 1.

mov R6,#2

call WAIT

;Читаем значение из порта и проводим его анализ.

  mov 2Eh,P1 ;Запишем байт из порта в ячейку 2E.

  mov R2,#04h ;Загрузим счетчик столбцов = 4.

FOR_2: ;Второй цикл. Производим опрос значений в строке матрицы клавиатуры.

  mov A,2EH ;Запишем значение из ячейки 2E в A.

  rlc A ;Сдвиг аккумулятора вправо через перенос.

  mov 2EH,A ;Запишем в ячейку 2E значение из A.

  jc KEYPRESS_END ;Если не нажата клавиша переход к KEYPRESS_END

KEYPRESS_BEGIN: ;Обработка нажатой клавиши. Запишем ее значение.

  mov A,ns ;Записываем в A порядковый номер нажатой клавиши

  call KEYTABLE ;читаем из массива значение кнопки,

  call PUT_SYM  ;а затем выводим значение кнопки через SBUF.

  jmp SCAN ;Переход к началу сканирования.

KEYPRESS_END:

  inc ns ;Увеличиваем номер клавиши.

 djnz R2,FOR_2 ;Завершение второго цикла (FOR_2).

 

;Завершение первого цикла после обработки строки матрицы.

  mov A,R7 ;Загружаем в аккумулятор байт сканирования.

  rl A ;Сдвинем байт сканирования влево циклически.

  mov R7,A ;Записываем аккумулятор в байт сканирования.

  djnz R1,FOR_1 ;Завершение первого цикла (FOR_1).

;Завершение основного цикла.

  jmp SCAN ;Переходим к началу сканирования матрицы.

KEYTABLE: ;Процедура чтения массива значений клавиш.

  movc A,@A+PC ;Записываем в A значение из ячейки A+PC.

  ret ;Завершение подпрограммы чтения массива.

  db '8','C','2','5','7','0','1','4','x','D','A','-','9','B','3','6'

  

PUT_SYM: ;вывод символа

  clr TI        

  mov SBUF,A

  jnb TI, $     

  clr TI

  ret

WAIT: ;задержка с помощью таймера

  mov TH0, #0

  mov TL0, #0

  setb TR0

LOOP:

  jnb TF0, $

  clr TF0

  djnz R6,LOOP

  clr TR0

  ret

QUIT:

  nop

  end


 

А также другие работы, которые могут Вас заинтересовать

41673. Ознакомление со средой Autocad 2010 3.14 MB
  Интерфейс начальной настройки utoCD 2010 Ранние версии начиная с utoCD 2002 по utoCD 2008 включительно представляло интерфейс рабочего пространства в классическом виде которое представлено на рис. Рисунок 2 Классический вид рабочего окна utoCD 2010 Предлагается рассмотреть вид классического интерфейса окна программы. 3 приведена верхняя часть окна Рисунок 3 Строка заголовка строка меню панель быстрого вызова Рисунок 4 Окно работы с файлом Данное окно вызывается нажатием на после чего выпадает окно представленное на...
41674. Исследование типовых звеньев 193.53 KB
  3 Контрольные вопросы: Что такое передаточная функция Что такое переходная характеристика Что такое импульсная разгонная характеристика Как параметры каждого типового звена влияют на переходные характеристики системы Назовите основные типовые динамические звенья их передаточные и переходные функции. Что такое характеристическое уравнение Что такое нули и полюса передаточной функции Как их найти Какие показатели качества САР можно определить по переходной характеристике Таблица 1.3 Контрольные вопросы: Что такое передаточная...
41675. ФАКТОРНОЕ ИССЛЕДОВАНИЕ ПРОИЗВОДИТЕЛЬНОСТИ ГРУЗОВОГО АВТОМОБИЛЬНОГО ТРАНСПОРТНОГО СРЕДСТВА 60.28 KB
  Исходные данные: Грузоподъемность автомобиля q т Время в наряде Т ч Коэффициент использования грузоподъемсти γ Коэффициент использования пробега β Время постоя под загрузкойразгрузкой t зрч Техническая скорость Vт км ч 10 8 08 09 02 45 Расчетные формулы: Расчет суточной производительности автомобиля Q в тоннах и P в тоннокилометрах производится по следующим формулам: где: Tн время работы автомобиля в наряде; vт средняя техническая cкорость движения автомобиля км ч; qн номинальная...
41676. Исследование однофазного трансформатора 228.47 KB
  Методическое указание Самара Самарский государственный технический университет 2008 Печатается по решению Редакционноиздательского совета СамГТУ УДК621 313 Исследование однофазного трансформатора: метод. Содержат практические рекомендации по экспериментальным методам определения основных характеристик однофазного трансформатора по обработке опытных данных и оформлению отчетов а также контрольные вопросы. Такое изменение или трансформация переменного тока...
41677. Основы работы в MS Excel 192.46 KB
  Знакомство с приложением MS Excel. Приобретение элементарных навыков работы в среде пакета. Ввод и редактирования данных. Основные принципы ввода и редактирования данных изложены во многих книгах по основам работы в MS Excel [3]. Рассмотрим работу в среде пакета на конкретном примере.
41678. Исследование источника дискретной информации 165.5 KB
  А при изпользлвании кода Хаффмена избыточность уменьшилась до 0,51%, из этого следует что избыточность при кодировании этим методом уменьшилась в 16 раз. А при использовании кода Шеннона – Фано избыточность уменьшилась всего в 5,5 раз. Исходя из полученных значений, в нашем случае эффективнее использовать методику кодирования Хаффмена.
41679. Возможности текстового редактора WORD для работы с документами 193.87 KB
  Создание электронной подписи документа и проверка ее подлинности В разделе справка текстового редактора в окне поиск наберите ключевые слова цифровая подпись документа и найдите статью Цифровые подписи и сертификаты в которой вы сможете узнать что такое цифровая подпись что собой представляет сертификат подписи и центр сертификации что обеспечивает цифровая подпись. Для дополнительного чтения Получение цифрового сертификата от центра сертификации или партнера Майкрософт Если предполагается обмениваться документами...
41680. Режимы течения 43.45 KB
  Изменение уровня воды в баке м h 003 002 003 003 2. Температура воды С Т 23 23 23 23 4. Кинематический коэффициент вязкости воды см с v = 17. Объем воды поступившей в бак за время t см3 W = Bh 0000252 0000168 0000252 0000168 6.
41681. Цифровой осциллограф, генераторы сигналов, блок питания и вольтметр универсальный 5.65 MB
  Осциллограф конструктивно выполнен в виде платы расширения ПЭВМ и вставляется в любой из свободных слотов PCIшины материнской платы. Внешний вид осциллографа представлен на рисунке 1.1 Внешний вид осциллографа BORDO На внешней панели осциллографа имеются три стандартных разъема типа СР50. ПЗВМ управляет всеми режимами работы осциллографа осуществляет считывание информации из буферного ОЗУ ее обработку и передачу в видеопамять ПЭВМ для наблюдения на экране монитора.