Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет_5.2.docx
Скачиваний:
1
Добавлен:
16.07.2019
Размер:
1.34 Mб
Скачать
  1. Выполнение заданий

    1. Вывод на экран жки двухстрочного текста

По заданию необходимо вывести на экран ЖКИ текст:

Microcontrollers2011

Бойцев и Скирёв

Схема программы:

Рис.6. Схема программы

Текст программы:

org 8400h

w1: equ 20h

w0: equ 21h

indic: mov w1,#0 ; Подготовка к вводу команд (R/S=0)

mov w0,#38h ; Установка 8-битного режима обмена с ЖКИ с выводом обеих строк

lcall ind_wr

mov w0,#0Ch ; Отображение экрана без курсоров

lcall ind_wr

mov w0,#80h ; Загрузка в счетчик АС адреса нулевой ячейки 1-й строки памяти ЖКИ

lcall ind_wr

mov w1,#1 ; Подготовка к вводу данных (R/S=1)

mov dptr,#FFD0h : Адрес внешней памяти, где хранится выводимые строки

wr_str1: movx a,@dptr

mov w0,a

lcall ind_wr ; Запись данных в ЖКИ

inc dptr

mov a,dpl

cjne a,#0E4h,wr_str1 ; проверка окончания 1-й строки

mov w1,#0

mov w0,#C0h ; Команда для адресации 1-й ячейки второй строки

lcall ind_wr

mov w1,#1 ; Подготовка к вводу данных

wr_str2: movx a,@dptr

mov w0,a

lcall ind_wr

inc dptr

mov a,dpl

cjne a,#0F8h,wr_str2

ret

ind_wr: mov F8h,w0 ; Загрузка в порт P5 записываемой в ЖКИ информации

setb p1.7 ; Установка сигнала E

clr p1.6 ; R/W=0 (запись)

mov a,w1 ; формируем R/S

mov c,acc.0

mov p1.4,c ;Установка R/S

lcall delay

clr p1.7 ; Сброс сигнала E

lcall delay

setb p1.7 ; Установка сигнала E

ret

delay: nop

nop

nop

nop

nop

nop

nop

nop

ret

org FFD0h

str1: db 'Microcontrollers2011'

str2: db 20h, 20h, A0h, EFh, A6h, E5h, 65h, B3h, 20h, B8h, 20h, 43h, BAh, B8h, 70h, A2h, B3h, 20h, 20h, 20h

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

В данной программе происходит взаимодействие с ЖКИ. С помощью сигнала R/S определяется режим взаимодействия с ЖКИ (посылка команды или посылка данных). Отображение надписи на ЖКИ осуществляется посимвольно. Программа подключается к выделенному участку внешней памяти. В результате, начиная с адреса FFD0h, в памяти выделяется 40 ячеек, под видеобуфер, в который помещаются НЕХ-коды символов, которые необходимо вывести на экран. Затем из этого буфера данные пересылаются в ЖКИ.

Использование оператора org FFD0h является нежелательным, поскольку есть риск возникновения конфликта ресурсов и программа может оказаться нерабочей. Для решения такой проблемы следует переместить объявление str1 и str2 до оператора ret.

Для вывода символов на экран ЖКИ используются HEX-коды. Их значения для латинского алфавита, десятичных цифр и знаков препинания совпадают с их ASCII-кодами. Однако, это не выполняется для букв русского алфавита, поэтому для вывода наших фамилий на русском языке необходимо указывать HEX-коды.

HEX-коды для надписи «Бойцев и Скирёв»: 20h, 20h, A0h, EFh, A6h, E5h, 65h, B3h, 20h, B8h, 20h, 43h, BAh, B8h, 70h, A2h, B3h, 20h, 20h, 20h.

В итоге на экране ЖКИ отображается текст, занесённый во внешнюю память.

    1. Опрос клавиатуры

По заданию необходимо разработать программу, реализующую опрос клавиатуры и запись кодов состояний клавиш в ячейки памяти с адресами 30h..33h (карты памяти клавиатуры).

Вход клавиатуры: выводы P4.3 – P4.0

Выход клавиатуры: выводы P4.7 – P4.4

Схема программы:

Рис.7. Схема программы

Текст программы:

org 8100h

p4: equ 0E8h

klav: mov r0,#30h ; инициализация карты памяти клавиатуры

mov p4,#f7h

orl p4, #F0h ; настройка порта P4 на вход

mov a,#F7h ; загрузка "бегущего нуля"

; Циклическое сканирование клавиатуры

m1: mov p4,a

mov r2,a

mov a,p4 ; чтение состояния клавиатуры

anl a,#F0h ; получение выходного кода

mov @r0,a ; заполнение карты памяти

inc r0

mov a,r2

rr a ; формирование следующего значения "бегущего нуля"

cjne a,#7fh,m1 ; продолжение опроса в цикле, если сканирование не завершено

ret

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

Порт P4 одновременно используется для ввода и вывода информации с клавиатуры.

В начале программы происходит настройка порта. На вход загружается код «бегущего нуля», а на выход «1111» (не нажата ни одна клавиша). Входные воздействия и выходная реакция при нажатии на клавиши показаны в таблице №1.

Затем в цикле происходит считывание состояния клавиатуры с порта. В разрядах 7 – 4 записан выходной код, определяющий столбец нажатой клавиши. Далее происходит заполнение карты памяти.

Карта памяти полностью описывает состояние клавиатуры. Она состоит из четырех ячеек памяти, в каждой из которых хранится информация о соответствующей строке клавиатуры (30h – первая строка, 33h – четвертая строка). Младшие четыре разряда в ячейках памяти всегда нули – эти разряды не хранят в себе никакой информации. Все информация о состоянии столбца хранится в старших четырех разрядах ячейки.

Были проверены состояния карты памяти клавиатуры для каждой из кнопок.

Результаты:

Таблица 3

№ клавиши

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

30h

31h

32h

33h

ничего не нажато

30h

31h

32h

33h

1

70

F0

F0

F0

2

B0

F0

F0

F0

3

D0

F0

F0

F0

4

E0

F0

F0

F0

5

F0

70

F0

F0

6

F0

B0

F0

F0

7

F0

D0

F0

F0

8

F0

E0

F0

F0

9

F0

F0

70

F0

10

F0

F0

B0

F0

11

F0

F0

D0

F0

12

F0

F0

E0

F0

13

F0

F0

F0

70

14

F0

F0

F0

B0

15

F0

F0

F0

D0

16

F0

F0

F0

E0

3 и 6

F0

F0

F0

F0

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]