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


 

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

23879. Послание архиепископа новгородского Василия ко владыке тверскому Федору о рае 26.5 KB
  Послание о земном рае читается в Софийской первой и Воскресенской летописях под 1347гСвое послание Василий пишет в Тверьузнав о распревозникшей среди тверичей по вопросу о существовании раяСущют 2 представляения о рае:рай находится на землев другом мирекак духовное понятиесугубо мысленноеВасилий убеждает Федора в сущ.нигде не сказаночто земной рай погибон создан богома все дела божьинетленныв Иерусалиме видел калиткукот не двигается с тех поркак Иисус ее претворил не до концаесть ад на земленовгородские ватаги видели вход в...
23880. Сказание об Индийском царстве 27 KB
  Сказание рисует сказочный образ далекой Индии.все о чем человек может мечтать в повседневной жизниобеспеченностьбогатсвообилие всего вокругуверенность в настоящем и будущемвсе это представлено в сказочнопреувеличенном видеИоанн пишетчто он царь над царямии ему подченено 3300царейцарские палаты грандиозны и с земными не могут вступать в сравнениеинд царство населяют не только обычные людино и самые невероятные человеч существарогатыетрехногиемногорукие и тдфантастичен животный мирв Индии есть все и при это нет ни тятяворани...
23881. Литературно-этикетный канун жития. Житие Феодосия Печерского 29 KB
  Житие Феодосия Печерского.Житие ФЕОДОСИЯ ПЕЧЕРСКОГОПмятник древнерусской литературы написанный преподобным Нестором Летописцем.Одним из древнейших русских монастырей был киевопечерскийбольшую роль в истории монастыря сыграл его постриженика затем игуменФеодосийПамятник рассказывает о жизни игумена КиевоПечерского монастыря преподобного Феодосия начиная от его рождения прихода в монастырь до игуменства и смерти.Житие Феодосия Печерского типичное монашеское житие рассказ о благочестивом кротком трудолюбивом праведнике вся жизнь...
23882. Творчество Епифания Премудрого. Житие Стефана Пермского 22.5 KB
  Житие Стефана ПермскогоЕпифаний родился в Ростове в первой половине 14века.Перу Епифания принадлежат 2 жития:Житиве Стефана Пермского и Житие Сергия Радонежского.доводит литературноэтикетный канон до совершенствау него 2ой этапа 1ый этапутверждение канонаЖития Феодосия Печерского и Алексияпышность языкамножество ярких деталейндивид стильЕпифаний неск раз определяет характер писательского труда как плетение словессближение звуковой формы слова и его смыслаМножество повторовпричастных оборотовритмика речитрадиционные метафорыЕпиф...
23883. Творчество Епифания Премудрого.Житие Сергия Радонежского 26.5 KB
  На сороковой день мальчика принесли в церковь крестили и дали ему имя Варфоломей. Они быстро научились грамоте а Варфоломей не мог. Варфоломей рассказал ему о своих неудачах в учебе и попросил помолиться о нем. Старец дал отроку кусок просфоры и сказал что отныне Варфоломей будет даже лучше знать грамоту чем его братья и сверстникитак потом все и будетмотив исполнения желания Мальчик уговорил священника зайти к его родителям.
23884. Хождение за три моря Афанасия Никитина 55 KB
  Билет 36Билет 38Повесть о Петре и ФевронииПовесть о ПиФ была написана в 16 векев век второго монументализма хотя по содержанию и духу она ближе к 15 веку веку русского предвозрождения когда осознавалась ценность человека единство человека и Бога. Жена так и сделала и змей проговорился: Смерть мне суждена от Петрова плеча и от Агрикова мечаБыл у Павла брат Петр и он согласился помочь точнее ему на роду написано сразиться со змеем но где найти Агриков меч они не знают. Один раз Петр в одиночестве пришел в церковь и отрок показал...
23885. Повесть о Горе Злочастии 28.5 KB
  Обобщенная судьба герояДобрый молодец Добрый молодец отказывается от родовой позиции хочет жить своим умом.представляениям только он может менять личинуДобрый молодец верит архангелу все пропиваетснова беден. ЧЕРТЫ лит повести: писалось когда РусьРоссия Родовая позиция уходитмолодец хочет жить своим умом Столкновение этих 2ух позиций Гуманистическая концепцияноваторствосочувствие падшему человеку Появляются: элементы психологизации характеровсочувствие падшему человеку ощущение непостоянства жизни и ее непрочности Боязнь...
23886. Повесть о Савве Грудцыне 27.5 KB
  Месть брошенной женщиныварит зельесавва выпивает и влюбляется и начинает ее домогаться. Савва заболеваетхочет исповедоватьсяно бес не отпускает егоа Савва не хочет отдавать ему душуЭпизод с царством Сатаны:золотой дворец и крылатые юноши вокруг него. Автор сочувствует: Бедныйбедный Савва.
23887. Повесть о Фроле Скобееве 23.5 KB
  Повесть о Карпе Сутулове Сюжет:ЖенаТатьяна. Жена организует свой позор самостоятельно.Воевода велит им выплатить штраф:50010001500половину себе забирает а вторую отдает Татьяны Жена стоит на позции своим умом комическая повесть автор смеется над героями и над Татьяной Сатирическому обличению подвергается распутное поведение духовенства и именитого купечества.