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


 

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

28151. Проблема психической нормы и патологии 44 KB
  Вопрос определения нормы и патологии является крайне сложным и затрагивает различные сферы человеческой деятельности от медицины и психологии до философии и социологии. Был совершён ряд попыток вывести критерии психической нормы в число которых включали соответствующую возрасту человека зрелость чувств адекватное восприятие действительности наличие гармонии между восприятием явлений и эмоциональным отношением к ним умение уживаться с собой и социальным окружением гибкость поведения критический подход к обстоятельствам жизни наличие...
28152. Периодизация интеллектуального развития ребёнка (по Ж.Пиаже) 33.21 KB
  Швейцарский теоретиккогнитивист Жан Пиаже 1896-1980 был пионером в этой области исследований. С точки зрения Пиаже интеллект не просто реагирует на раздражители: скорее он растет меняется и адаптируется к миру. Пиаже и других когнитивных психологов называют структуралистами поскольку их интересует структура мышления и то каким образом интеллект перерабатывает информацию. Напротив когнитивные структуры Пиаже являются абстрактными и гипотетическими.
28153. Теоретические и психотерапевтические концепции Роджерса и Франкла 63 KB
  Этот мир создаваемый человеком может совпадать или не совпадать с реальной действительностью так как не все предметы в окружении человека осознаются им. Говоря о структуре Я Роджерс пришел к выводу о том что внутренняя сущность человека его Самость выражается в самооценке которая является отражением истинной сути данной личности его Я. Исследования проведенные Роджерсом доказывали что успешная социализация человека его удовлетворение работой и собой коррелируют с Уровнем его самосознания. При этом Роджерс не только говорит о...
28154. История развития представлений на природу способностей 58.5 KB
  История развития представлений на природу способностей Само понятие способности ввел в науку Платон. Источник развития способностей помещается внутрь человека они обусловлены наследственным генетическим фактором. К теориям преформизма примыкают и воззрения испанского врача Хуана Уарте Исследование способностей к наукам 1575 год. Уарте также говорил о врожденности способностей: Пусть плотник не занимается земледелием а ткач – архитектурой; пусть юрист не занимается лечением а медик адвокатским делом; но пусть каждый занимается только...
28155. Процесс психологического консультирования. Принципы, структура, техники 114.5 KB
  Цель консультирования помочь клиентам понять происходящее в их жизненном пространстве и осмысленно достичь поставленной цели на основе осознанного выбора при разрешении проблем эмоционального и межличностного характера . В консультировании акцентируется ответственность клиента т. признается что независимый ответственный индивид способен в соответствующих обстоятельствах принимать самостоятельные решения а консультант создает условия которые поощряют волевое поведение клиента. СТРУКТУРА ПРОЦЕССА КОНСУЛЬТИРОВАНИЯ Ни одна из...
28156. Проблема психологического «выгорания», копинг-стратегии 64.5 KB
  Проблема психологического выгорания копингстратегии. Совладающее поведение копингстратегии. Проблема копинга совладания личности с трудными жизненными ситуациями возникла в психологии во второй половине ХХ века. В настоящее время будучи свободно употребляемым в различных работах понятие копинг охватывает широкий спектр человеческой активности от бессознательных психологических защит до целенаправленного преодоления кризисных ситуаций.
28158. Психологические признаки трудовой деятельности 28 KB
  Климов выделяет четыре психологических признака трудовой деятельности: Сознательное предвосхищение социально ценного результата. Таким образом установим некоторую структуру рассматриваемого первого признака труда и будем различать в нем три компонента которые примем как относительно самостоятельные: а более или менее ясное знание о продукте деятельности б более или менее четкое осознание его социальной ценности в более или менее выраженный аффективный тон соответствующих знаний представлений образов. Деятельность становится трудом...
28159. Психологический анализ трудовой деятельности. Профессиографирование. Структура психограмм и теория индивидуальности Б. Г. Ананьева 43 KB
  Психологический анализ трудовой деятельности. Психологический анализ деятельности – это искусственная процедура расчленения деятельности на функции качества свойства способности состояния процессы. Уровни анализа трудовой деятельности: Рассматривая трудовую деятельность как систему В. Шадриков выделяет следующие уровни ее анализа: Личностномотивационный уровень: общественная значимость профессии; личностная значимость Компонентноцелевой анализ трудовой деятельности где выделяются: данная трудовая деятельность в целом и отдельные...