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


 

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

65733. ФУНКЦІЇ ОРГАНІВ ДОСУДОВОГО СЛІДСТВА В КРИМІНАЛЬНОМУ ПРОЦЕСІ УКРАЇНИ 182 KB
  У науці кримінального процесу концепція щодо визначення кримінальнопроцесуальних функцій має більш як сторічну історію. Це пояснюється насамперед тим що правильне визначення кримінально-процесуальних функцій та їх...
65734. Активізація залучення прямих іноземних інвестицій в економіку України в умовах глобальної конкуренції 265.5 KB
  В умовах глобальної конкуренції роль прямих іноземних інвестицій ПІІ полягає в залученні не лише необхідних обсягів капіталу а й сучасних технологій методів управління та висококваліфікованих менеджерів. Разом з тим глобалізація світогосподарських взаємин за участю прямих іноземних інвестицій...
65735. Удосконалення розрахунку напружено-деформованого стану мостових конструкцій з урахуванням динамічного впливу вантажних поїздів 697.5 KB
  Штучні споруди є невідємною та важливою складовою транспортної системи країни однак до цього часу в Україні відсутні рекомендації з визначення швидкісних режимів руху поїздів мостами. Більш ніж 10 залізничних мостів в Україні внаслідок наявності дефектів є барєрними обєктами що призводить...
65736. ЖАНРОВІ МОДИФІКАЦІЇ В ПОЕЗІЇ В. СКОТТА ТА ПОЕТІВ-«ЛЕЙКІСТІВ» 139.5 KB
  Скотта і поетів лейкістів яких обєднували схожі світоглядні позиції та напрямки естетичних пошуків ще недостатньо повно висвітлені в науці особливо в аспекті засвоєння народних традицій що вплинули на картину світу британського романтизму на його ранньому етапі й зумовили подальші художні відкриття.
65737. МОДЕЛЮВАННЯ І ПРОГНОЗУВАННЯ ДІЇ НЮХОВОГО НАНОБІОСЕНСОРА НА ОСНОВІ МОЛЕКУЛИ БІЛКА ТИПУ GPCR 481.5 KB
  Причинами цього є поперше те що сучасна кремнієва електроніка досягає межі мініатюризації і для виведення її на якісно новий рівень розвитку створення так званого квантового комп'ютера необхідна нова фізична елементна база з елементами розміру порядку нанометра тобто розміру молекули.
65738. Робота та розрахунок сталевих нагельних з’єднань дерев’яних конструкцій за повторних навантажень 1.33 MB
  Велике значення мають дослідження міцнісних і деформативних характеристик нагельних з'єднань дерев'яних елементів при одноразових та повторних навантаженнях оскільки при експлуатації значна кількість дерев'яних конструкцій знаходяться саме в таких умовах.
65739. ПРАВОВЕ РЕГУЛЮВАННЯ ПРОТИДІЇ ІНФОРМАЦІЙНИМ ВІЙНАМ В УКРАЇНІ 155.5 KB
  Незважаючи на надзвичайну важливість забезпечення належного функціонування всіх сфер життєдіяльності людини суспільства та держави необхідність ефективного забезпечення інформаційної безпеки держави зокрема шляхом вироблення надійного механізму протидії інформаційним війнам...
65740. СТАН АНТИОКСИДАНТНОЇ СИСТЕМИ ТА НЕСПЕЦИФІЧНА РЕЗИСТЕНТНІСТЬ У ТВАРИН ЗА ДІЇ ПРОБІОТИКІВ БПС 44 ТА БПС Л 227.5 KB
  Мета роботи: зясувати вплив пробіотичних препаратів БПС44 та БПСЛ на стан антиоксидантної системи та неспецифічну резистентність молодняку великої рогатої худоби ВРХ та свиней; встановити фактори антагоністичної дії штамів бактерій компонентів пробіотиків.
65741. ЗАБЕЗПЕЧЕННЯ ЯКОСТІ ПОСЛУГ ПЕРЕДАЧІ МУЛЬТИМЕДІА МЕРЕЖАМИ НОВОГО ПОКОЛІННЯ 1.25 MB
  Даний процес може сприяти виникненню проблем які повязані із гарантуванням рівня якості обслуговування мереж передачі мультимедійної інформації. Передплатники цих систем передачі мультимедійної інформації вимагають надання нових послуг які можуть бути доступними в будь якому місці...