Смекни!
smekni.com

Микропроцессорные системы (стр. 2 из 6)

6. Выполните шаги 2-5 восемь раз для вывода всего байта.

Схема выполнения сдвигов:

Вывод числа в 16 с/с

1. Занесите число для вывода в регистр ( например в bl).

2. Сдвиньте bl на 4-ре разряда вправо так, чтобы старшие разряды стали нулевыми.

3. Сравните получившееся число с цифрой 9 и если оно меньше ли равно, то прибавьте к данному числу константу 30h ( для получения ASCII-кодов цифр 0-9 ).

4. Снова занесите исходное число в регистр bl.

5. Обнулите старшие 4-ре разряда и повторите пункт 3.

1.5 Задание

а) Выполните преобразование чисел из 2 с/с в 16 с/с, 10 с/с (ПК без знака), 10 с/с (ПК со знаком) и 10 с/с (ДК) в соответствии с вариантом 3.

Преобразовать число из 2 с/с в 16 с/с.

1) 0011 00102 →3 216

2) 1010 00112 →A 316

3) 0101 01012 →5 516

4) 1011 10002 →B 816

5) 0111 00102 →7 216

6) 1001 10102 →9 A16

Преобразовать число из 2 с/с в 10 с/с (ПК без знака)

1) 0011 00102 →32+16+2=5010

2) 1010 00112 →128+32+2+1=16310

3) 0101 01012 →64+16+4+1=8510

4) 1011 10002 →128+32+16+8=18410

5) 0111 00102 →64+32+16+2=11410

6) 1001 10102 →128+16+8+2=15410

Преобразовать число из 2 с/с в 10 с/с (ПК со знаком)

1) 0011 00102 →32+16+2=+5010

2) 1010 00112 →32+2+1=-3510

3) 0101 01012 →64+16+4+1=+8510

4) 1011 10002 →32+16+8=-5610

5) 0111 00102 →64+32+16+2=+12410

6) 1001 10102 →16+8+2=-26

Преобразовать число из 2 с/с в 10 с/с (ДК)

1) 0011 00102 →32+16+2=+5010

2) 1010 00112 → 11011101= 64+16+8+4+1=-93

3) 0101 01012 →64+16+4+1=+8510

4) 1011 10002 → 11001000= 64+8=-72

5) 0111 00102 →64+32+16+2=+12410

6) 1001 10102 → 11100110= 64+32+4+2=-102

б) Написать программу, которая выполняет вывод ASCII кода нажатой клавиши в 2 с/с и 16 с/с. Завершение программы должно происходить по нажатию клавиши NumLock



Продолжение блок - схемы

Рисунок 1.1 – Блок схема основной программы


Основная программа

Stac segment

db 64 dup (0)

ends

data segment

Msg db 13,10,''

System16 db 13,10,'16 б/б=$'

System2 db 13,10,'2 б/б=$'

Pystaya db 13,10,'$'

stQ db 13,10,''

ends

code segment

assume ds:data, cs:code, ss:stac

Start:

mov ax, data

mov ds, ax

mov es, ax

;--------------------------------------------

c:; Вывод строки 'Нажмите любую клавишу...'

mov ah, 09h

lea dx , Msg

int 21h

;Вывод ASCII код нажатой клавиши

mov ah, 01h

int 21h

mov cx, 8; Занесение в CX кол-ва циклов

mov bl, al; Сохранение AL в BL

mov bh, al;Сохранение Al в BH

;Вывод строки э2 с/с='

mov ah, 09h

lea dx, System2

int 21h

m1: sal bl, 1; Сдвиг BL на 1 разряд

mov dl, 0;Обнуление DL

rcl dl, 1;Сдвиг dl на 1 разряд

add dl, 30h; DL=DL+30

;Вывод DL

mov ah, 02h

int 21h

loop m1

;Вывод строки '16 c/c='

mov ah, 09h

lea dx, System16

int 21h

mov bl, bh; Загрузкаисходного AL

mov cx, 4

sar bl, cl;Сдвиг BL c 9

cmp bl, 9 ; Сравнение BL c 9

jle m2 ;Переход на m2 если <или=

add bl, 37h; BL=BL+37

jmp m3; Переход на m3

m2: add bl, 30h;BL=BL+30

;Вывод m3

m3: mov ah, 02h

mov dl, bl

int 21h

mov bl, bh; Загрузка исходного AL

and bl, 0Fh;Обнуление первых 4 разрядов

cmp bl, 9;Сравнение bl c 9

jle m4 ; Переход на m4 если <или=

add bl, 37h; BL=BL+37

jmp m6 ; Переход на m6

M4: add bl, 30h; BL=BL+30

;Вывод BL

M6: mov ah, 02h

mov dl, bl

int 21h

mov ah, 09h

lea dx, stQ

int 21h

mov ah, 02h

int 16h

and al,10000000b

jz d

mov ax, 4c00h

int 21h

d: jmp c

ends

END Start

Рисунок 1.2 – Результат работы программы


2 ГЕНЕРАЦИЯ ЗВУКОВЫХ СИГНАЛОВ В ПЭВМ

Для генерации звука в ПЭВМ используется программируемый таймер и программируемый параллельный интерфейс. Поэтому кратко рассмотрим использование данных микросхем в ПЭВМ.

2.1 Таймер КР1810ВИ54

Для задания временных интервалов и формирования сигналов с различными временными параметрами в IBMPC применяется программируемый таймер i8254 (отечественный аналог КР1810ВИ54) рисунок 2.1.

Рисунок 2.1 – Условно графическое обозначение таймера КР1810ВИ54

Таймер содержит три независимых канала, каждый из которого можно запрограммировать на работу в одном из шести режимов. Программирование канала осуществляется путём ввода управляющих слов в регистр режима канала и начального значения в его счётчики. Каждый канал имеет управляющий вход GATE и выход OUT и может работать в одном из следующих шести режимов, Которые условно можно разделить на три группы: Программируемый одновибратор (режимы 0 и 1), делитель частоты (режимы 2 и 3) , счётчик событий (режимы 4 и 5). При этом режимы 0, 4 – это режимы автозагрузки, т.е. после окончания выполнения функция без перепрограммирования по фронту сигнала GATE. Режимы 2, 3 – это режимы авто загрузки, т.е. после окончания выполнения функция без перепрограммирования начинает выполняться заново.

Режим 0 – прерывание терминального счёта.

Режим 1 – ждущий мультивибратор.

Режим 2 – генератор частоты.

Режим 3 – генератор меандра.

Режим 3 – счётчик событий.

Режим 5 – счётчик событий с автозагрузкой.

Для работы таймера его нужно запрограммировать на необходимый вид работы и загрузить в него константу счётчика. В IBMPC таймер имеет следующие программируемые порты:

Таблица 2.1 – Программируемые порты

Адрес Операция Назначение
40h записьчтение Загрузка счётчика канала 0Чтение счётчика канала 0
41h записьчтение Загрузка счётчика канала 1Чтение счётчика канала 1
42h записьчтение Загрузка счётчика канала 2Чтение счётчика канала 2
43h запись Запись управляющего слова в регистр режима канала

Для задания режима работы таймера нужно записать в порт 43h константу в соответствии с форматом управляющего слова (рисунок 2.2). А затем в порт 40h, 41h или 42h, в зависимости от программирующего канала, записать константу счётчика (для генерации звука данная константа задаёт частоту звука).


Рисунок 2.2 – Формат управляющего слова

Канал таймера имеет следующее назначение в IBMPC.

Таблица 2.2 – Назначение каналов таймера

Канал Назначение Режим
0 Системные часы (IRQ0) Режим 3, счётчик=0 (65536)
1 Запрос для канала 0 ПДП (регенерация памяти) Режим 2, счётчик=18
2 Генератор звука -

Для генерации звука в IBMPC используется канал 2, который программируется на режим 3, временная диаграмма которого показана на рисунке 2.3.

Рисунок 2.3 – Временная диаграмма работы таймера в режиме 3


Тактовая частота каждого канала равна 1,19318 МГц, т.е. каждый такт имеет длительность 0,84 мсек. Вход GATEканалов 0 и 1 всегда имеют высокий уровень, поэтому счёт на этих каналах разрешён всегда. Вход GATE канала 2 управляется битом 0 порта РВ интерфейса i8255 связанного с портом 61h.

При начальной загрузке BIOS инициализирует канал 0 для работы в режиме 3 со счётчиком 0( т.е. 65536 декрементов на цикл счёта). Поэтому частота системных часов равна 1,19 Мгц/65536= 18.2 Гц и прерывание IRQ0, связанное с вектором Int 8, происходит 18,2 раз в секунду, т.е. каждые 55 мсек увеличивается на единицу значение системных часов.

Канал 1 работает в режиме 2 со счётчиком 18, поэтому регенерация памяти происходит каждые 18 мсек. Перепрограммировать канал 0 и канал 1 нельзя, т.к. это приведёт к нарушению целостности данных в ОЗУ.

2.2 Программируемый периферийный интерфейс КР580ВВ55А

В состав IBMPC входит программируемый периферийный интерфейс (ППИ) i8255 (отечественный аналог KP580BB55A) рисунок4 .ППИ содержит три 8-разрядных порта (PA, PB, и PC) для организации обмена между ЦП и внешними устройствами, и регистр управления. Порты сгруппированы в две группы : группа А состоит из порта PA и старшей тетрады порта PC, группа B – из порта PB и младшей тетрады порта PC. Группа А может работать в трех режимах (0,1,2); группа B в двух (0 и 1). Режимы определяются содержимым регистра управления , имеющим формат изображенный на рисунке 2.5.


Рисунок 2.4 – условное графическое обозначение ППИ КР580ВВ55А


Рисунок 2.5 – Формат регистра управления ППИ

Режим 0 – основной режим Ввода – вывода (однонаправленный синхронный обмен).В этом режиме группа разделяется на два набора (порт и тетрада PC).В данном режиме порт PA,PB и тетрады (0-3), PC(4-7) могут использоваться для передачи данных между ЦП и внешними устройствами. Их можно программировать на ввод или вывод, для этого нужно лишь загрузить необходимую константу в управляющий регистр ППИ (рис.2)

Режим 1 – режим стробируемого ввода-вывода (однонаправленный асинхронный обмен по прерыванию). Порты РА и РВ используются для передачи данных, РС – для управляющих сигналов.

Режим 2 – режим двунаправленной шины (двунаправленный асинхронный обмен по прерыванию). Этот режим допустим только для группы А. В нем порт А становится двунаправленным, а 5-ть разрядов порта РС используются для управления портом РА.

ППИ в IBM РС занимает порты 60h – 63h. BIOS заносит в регистр управления (порт 63h) 99h, т.е. программирует группы А и В в режим 0, причем РА и РС является портами ввода, а РВ – портом вывода. Назначение портов следующее:

Таблица 2.3 – Назначение портов

Адрес Операция Назначение
60h чтение Вывод из порта РА
61h чтениезапись Вывод из порта РВВывод в порт РВ
62h чтение Вывод из порта РС
63h запись Ввод управляющего слова в регистр управления ППИ

Содержимое порта РВ изображено на рисунке 2.6.