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


 

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

75512. Понятие отчета в СУБД Access и его основных элементов 117 KB
  Отчеты представляют собой наилучшее средство представления информации из базы данных в виде печатного документа. По сравнению с другими методами вывода данных на печать отчеты обладают двумя принципиальными преимуществами...
75513. Пояснить создание и настройку отчета в режиме конструктора СУБД Access 22.5 KB
  Настройка отчетов Чтобы изменить размер выделенного элемента управления можно воспользоваться маркерами изменения размера находящимися на сторонах в нижних углах и в правом верхнем углу. Для перемещения невыделенного элемента управления используйте указатель мыши. Если элемент управления имеет присоединенную надпись она перемещается вместе с ним. перемещать элемент управления и присоединенную надпись можно независимо друг от друга с помощью маркеров перемещения расположенных в левых верхних углах элемента управления и надписи.
75514. Понятие перекрестного запроса в СУБД Access 54 KB
  Понятие перекрестного запроса в СУБД ccess С помощью перекрестного запроса можно более наглядно представить данные итоговых запросов предусматривающих группировку по нескольким признакам по двум в частности. Для преобразования итогового запросавыборки необходимо перейти в режим его Конструктора и выполнить команду Запрос Перекрестный. После этого в бланке запроса строка Вывод на экран будет заменена на строку Перекрестная таблица. Вид окна перекрестного запроса Существует возможность вывести данные в перекрестной таблице без создания в...
75515. Назначение и типы диаграмм данных в СУБД Access 51.5 KB
  Назначение и типы диаграмм данных в СУБД ccess Диаграммы используются для наглядного представления информации из базы данных. В ccess диаграмма как отдельный объект не существует а может являться элементом формы либо отчета. Для построения диаграмм в СУБД ccess используется модуль MSGrph в который передаются все исходные данные для построения диаграммы с помощью механизма обмена данными в Windows. Для передачи данных можно использовать Мастер диаграмм существующий в ccess.
75516. Общие сведения об ИС «1С: Предприятие» 25.5 KB
  Общие сведения об ИС 1С: Предприятие В последнее время наиболее широкое распространение получили системы автоматизированного бухгалтерского учёта одной из которых является система 1С: Предприятие. Ее преимуществами являются постпродажное обслуживание широкая сеть партнерских внедренческих фирм открытая архитектура возможность гибкой настройки и доработки системы силами самого предприятия или сторонних внедренческих фирм. В основу системы 1С: Предприятие 7.5 которые поддерживаются в Любом варианте поставки системы общие для...
75517. Характеристика типовой конфигурации 21.5 KB
  При отражении основных хозяйственных операций по различным разделам учета а также при вводе регламентных операций в конце месяца в типовой конфигурации происходит автоматическое формирование бухгалтерских проводок. Кроме того она поставляется с набором типовых операций полностью настроенных и готовых к применению.
75518. Конфигуратор ИС «1С: Предприятие» 100 KB
  Созданная конфигурация используется системой для реализации программного окружения для выполнения необходимых учетных задач. Работа по созданию конфигурации задачи выполняется в окне Конфигурация рис. Автоматически проверка на несохраненную информацию выполняется также при закрытии окна Конфигурация или при выходе из Конфигуратора. Конфигурация задачи сохраняется на диске в каталоге с базой данных определяется параметром D в командной строке запуска 1С:Конфигуратор в файле с именем 1CV7.
75519. Предметно-ориентированные ЭИС, основные понятия 29 KB
  Предметно-ориентированные информационные системы раскрываются организационно-методологические основы построения и функционирования экономических информационных систем. Рассматриваются возможности создания и использования бухгалтерских...
75520. Понятие базы данных, основные определения и понятия 29 KB
  База данных БД именованная совокупность данных отражающая состояние объектов и их отношений в рассматриваемой предметной области. Система управления базами данных СУБД совокупность языковых и программных средств предназначенных для создания ведения и совместного использования БД многими пользователями. Основными понятиями реляционных баз данных являются тип данных домен атрибут кортеж первичный ключ и отношение.