Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Програмне забезпечення лаб роб 2.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.19 Mб
Скачать

Короткі теоретичні відомості Системи відображення інформації.

Найпростішими приладами відображення інформації в цифрових пристроях є світлодіоди і цифрові індикатори.

Рисунок 6 - Увімкнення одиничних індикаторів

У напівпровідникових світлодіодах використовується властивість pn-переходу випромінювати світло у видимій частині спектра при проходженні через нього прямого струму (Іпр = 5-20мА, Uпр = 2-3В). Варіанти увімкнення індикаторів на рис.6.

Для відображення цифрової інформації найбільшого поширення набули семисегментні індикатори, в яких зображення цифри складають з семи лінійних світлодіодних сегментів, розміщених у вигляді цифри 8.

На основі світлодіодів і семисегментних індикаторів будують підсистеми відображення інформації. При побудові підсистем відображення інформації розрізняють два підходи - динамічну та статичну схеми побудови підсистеми індикації.

Статична індикація полягає у постійному підсвічуванні індикаторів HL1-n від одного джерела інформації (рис.7).

Рисунок 7 - Структурна схема статичної індикації:

DA - дешифратор адреси, необхідний для вибирання відповідного регістра;

R1-R4-регістри, в яких тимчасово зберігається значення коду числа для відображення (відповідний регістр вибирають DA);

DC1-DC4 - семисегментні дешифратори, які перетворюють двійковий код у семисегментний код;

HL1-HL4 - семисегментні індикатори;

ШД - шина даних, по ній здійснюється передавання даних у цифровому форматі.

У такій системі кожен індикатор HL1-n увімкнений через власний дешифратор DC1-n і регістр RG1-n до шини даних, вибирання регістрів RG1-n проводиться за допомогою селектора адреси СА. Апаратні витрати при такій організації становлять n пар регістр + дешифратор при n десяткових розрядів індикатора.

Сутність динамічної індикації полягає в почерговому циклічному увімкненні кожного індикатора HL1-n до джерела інформації через загальну шину даних (рис.8).

Вибирання індикатора здійснюється дешифратором DА. У регістрі RD зберігається цифровий код, призначений для відображення. У регістрі RA зберігається адреса індикатора.

Рисунок 8 - Структурна схема динамічної індикації:

RD-регістр даних для тимчасового зберігання відображуваного числа або символу;

RA-регістр адреси для тимчасового зберігання двійкового коду адреси вибраного індикатора;

DA-дешифратор адреси, позиція задається двійковим кодом;

HL1-HL4 - семисегментні індикатори.

При такому увімкненні значно зменшуються апаратні витрати. Але необхідно забезпечити достатній час світіння одного індикатора, для того щоб не зменшувалася яскравість. Також необхідно забезпечити таку частоту перебору індикаторів, щоб не було помітно мерехтіння. Переваги такого способу помітні при кількості розрядів індикації більше 5.

У віртуальному стенді статична індикація реалізована за допомогою чотирьохразрядного семисегментного індикатора. Управління індикацією здійснюється за допомогою порту Р3 системного контролера, сигнали вибирання відповідного індикатора надходять від лінії порту Р3.0, Р3.1, Р3.2 і Р3.3.

Дані передаються на порт Р2. Формат даних формується відповідно до рис. 9.

Рисунок 9 – Схема підключення індикатора

Також у стенді є лінійка світлодіодів HL1-HL8, доступ до яких здійснюється через порт Р1. Світлодіоди запалюються записом логічних нулів у відповідні розряди.

Приклад програми для статичної індикації

На статичному індикаторі по черзі відображати цифру 5 на першому і третьому, а потім на другому та четвертому знакосинтезувальних місцях. Організувати почергове миготіння лінійки світлодіодів у шаховому порядку:

$ NOMOD51

$ Include (D:\ Sum_GU_STUD\MPP\ BIN\ASM51\mod51)

ORG 0

Begin:

mov R1, # 03h; записати в R1 число 3

mov R4, # 02h; записати в R4 число 2

mov A, R1; записати в A значення R1

add A, R4; скласти значення в А і R4, результат суми в А

mov R3, A

mov P1, # 01010101b; вивід результату на лінійку світлодіодів

mov A, R3

call decod; виклик підпрограми декодування

mov P3, # 0101b

mov P2, A

call DEL; виклик підпрограми затримки

mov A, R3

call decod; виклик підпрограми декодування

mov P3, # 1010b

mov P2, A

mov P1, # 10101010b

call DEL; виклик підпрограми затримки

jmp Begin, перехід у початок програми

decod:

mov DPTR, # TabDecod; запис у DPTR адреси символів

movc A, @ A + DPTR; непряме звернення до символу

ret

TabDecod:

db 11000000b; симв "0"

db 11111001b; симв "1"

db 10100100b; симв "2"

db 10110000b; симв "3"

db 10011001b; симв "4"

db 10010010b; симв "5"

db 10000010b; симв "6"

db 11111000b; симв "7"

db 10000000b; симв "8"

db 10010000b; симв "9"

db 10001000b; симв "А"

ret

DEL:; підпрограма затримки

mov R6, # 0FFh

mov R5, # 0Ah

C2: mov R7, # 0FFh

C4: djnz R7, C4

djnz R6, C2

djnz R5, C2

ret; вихід з підпрограми

END

  1. Таблиця 2 - Варіанти індивідуальних завдань до ЛР 2

Номер

вар.

Текст індивідуального завдання

1,11,

21

Занести до регістра R1число 09Н, віднімаючи від числа "1", відображати результат на статичному індикаторі у молодшому розряді до нуля. Вмикають переміщення світлодіода на HL1-HL8.

2,12,

22

Занести до регістра R1 число 05Н. Організувати біжучий рядок на статичному індикаторі справа наліво. Увімкнути в шаховому порядку світлодіоди HL1-HL8

3,13,

23

Занести до регістра R5 00Н, додаючи до числа "1", відображати результат на статичному індикаторі у молодшому розряді до 9. Вмикати переміщення світлодіода на HL1-HL8

4,14,

24

Почергово відображати на статичному індикаторі числа від 0 до 9, дублювати ці числа на лінійці світлодіодів (у двійковій формі)

5,15,

25

Вмикати переміщення світлодіода на HL1-HL8 зліва направо, а потім справо наліво. На статичному індикаторі відображати номер варіанта у форматі ХХН

6,16

Занести до регістра R7 число 08Н, віднімаючи від числа "2" відображати результат на статичному індикаторі в старшому розряді до нуля. Вмикати переміщення світлодіоду на HL1-HL8

7,17

Занести до регістра R1 число 08Н. Організувати біжучий рядок на статичному індикаторі зліва направо. Вмикати в шаховому порядку світлодіоди HL1-HL8

8,18

Занести до регістр R0 число 00Н, додаючи до числа "2", відображати результат на статичному індикаторі у молодшому розряді до 0АН. Вмикати переміщення світлодіода на HL1-HL8

9,19

Почергово відображати на статичному індикаторі числа від 9 до 0, дублювати ці числа на лінійці світлодіодів (у двійковій формі).

10,20

Вмикати переміщення світлодіода на HL1-HL8 справа наліво, а потім з ліво на право. На статичному індикаторі відображати номер варіанта у форматі ХХН

Примітка. Де Х – цифра від 0 до 9.

Рисунок 10 - Схема до лабораторної роботи 2

4 Лабораторна робота 3. Робота зі стеком

Тема «Робота зі стеком».

Мета роботи - вивчити принцип роботи стека ЕОМ.

Порядок виконання лабораторної роботи

1 Вивчити систему роботи стека МК51.

2 Розробити алгоритм для виконання індивідуального завдання.

3 Розробити програму для виконання індивідуального завдання.

4 Ввести програму індивідуального завдання на ПК.

5 За допомогою ПОЗ проаналізувати виконання індивідуальної програми.

6 Завантажити програму в стенд ЕОМ. Переконатися у правильному виконанні індивідуального завдання, при негативному результаті змінити алгоритм або програму. Повторити завантаження програми на стенд ЕОМ.

7 Роздрукувати лістинг правильно працюючої програми.

8 Відповісти на контрольні питання викладача.

Короткі теоретичні відомості

Восьмибітний покажчик стека (SP) може адресувати будь-яку область ОЗУ. Його вміст інкрементується, перш ніж дані будуть запам’ятовані у стеку в ході виконання команд PUSH і CALL. Вміст SP декрементується після виконання команд POP і RET. Подібний спосіб адресації елементів стека називають передінкрементним/постдекрементним. У процесі ініціалізації мікроконтролера після сигналу RST в SP автоматично завантажується код 07Н. Це означає, що якщо прикладна програма не перевизначає стек, то перший елемент даних у стеку буде розміщуватися у комірці ОЗУ з адресою 08Н.

Приклад програми для роботи зі стеком

Підрахувати і відобразити на статичному індикаторі кількість натискань кнопки SW1. Проміжний результат записати у стек. Після досягнення кількості натискань 8 вивести на статичний індикатор проміжні результати у зворотному порядку:

$ NOMOD51

$ Include (D:\ Sum_GU_STUD\MPP\ BIN\ASM51\mod51)

ORG 0

mov R5, # 00h

mov R2, # 08h

mov R1, # 08h

mov P2, # 0h

start:

jb p1.0, $

mov A, R5

inc Acc

jnb p1.0, start

mov P2, A

mov R5, A

PUSH Acc

djnz R2, start

vivod:

POP Acc

MOV P2, A

call DEL

djnz R1, vivod

DEL: ; підпрограма затримки

mov R6, # 0FFh

mov R5, # 0Ah

C5: mov R7, # 0FFh

C4: djnz R7, C4

djnz R6, C5

djnz R5, C5

ret ; вихід із підпрограми

END

Таблиця 3 - Варіанти індивідуальних завдань до ЛР 3

Номер

Вар.

Текст індивідуального завдання

1,11,

21

Підрахувати і відобразити на статичному індикаторі кількість натискань кнопки SW5. Проміжний результат записати в стек. Після досягнення кількості натискань 5 вивести на статичний індикатор суму проміжних результатів

2,12,

22

Підрахувати і відобразити на статичному індикаторі кількість натискань кнопки SW3. Проміжний результат записати в стек. Після досягнення кількості натискань 8 вивести на статичний індикатор середнє арифметичне проміжних результатів

3,13,

23

Підрахувати і відобразити на статичному індикаторі кількість натискань кнопки SW7. Проміжний результат записати в стек. Після досягнення кількості натискань 6 вивести на статичний індикатор кожне друге проміжне значення

4,14,

24

Підрахувати і відобразити на статичному індикаторі кількість натискань кнопки SW4. Проміжний результат записати в стек. Після досягнення кількості натискань 8 вивести на статичний індикатор суму кожного другого проміжного значення

5,15,

25

Підрахувати і відобразити на статичному індикаторі кількість натискань кнопки SW1. Проміжний результат записати в стек. Після досягнення кількості натискань 9 вивести на статичний індикатор кожне третє проміжне значення

6,16

Підрахувати і відобразити на статичному індикаторі кількість натискань кнопки SW2. Проміжний результат записати в стек. Після досягнення кількості натискань 9 вивести на статичний індикатор суму кожного третього проміжного значення

7,17

Підрахувати і відобразити на статичному індикаторі кількість натискань кнопки SW6. Проміжний результат записати в стек. Після досягнення кількості натискань 9 вивести на статичний індикатор суму проміжних результатів

8,18

Підрахувати і відобразити на статичному індикаторі кількість натискань кнопки SW8. Проміжний результат записати в стек. Після досягнення кількості натискань 8 вивести на статичний індикатор середнє арифметичне проміжних результатів

9,19

Підрахувати і відобразити на статичному індикаторі кількість натискань кнопки SW5. Проміжний результат записати в стек. Після досягнення кількості натискань 8 вивести на статичний індикатор кожне друге проміжне значення

10,20

Підрахувати і відобразити на статичному індикаторі кількість натискань кнопки SW4. Проміжний результат записати в стек. Після досягнення кількості натискань 9 вивести на статичний індикатор суму кожного третього проміжного значення

Рисунок 11 - Схема до лабораторної роботи 3

5 Лабораторна робота 4. Робота з регістром слово стану програми (PSW)

Тема «Робота з регістром PSW. Умовні переходи. Схеми відображення інформації».

Мета роботи - вивчити принцип роботи регістра PSW і умовних переходів.

Порядок виконання лабораторної роботи

1 Вивчити систему роботи стека МК51.

2 Розробити алгоритм для виконання індивідуального завдання.

3 Розробити програму для виконання індивідуального завдання.

4 Ввести програму індивідуального завдання на ПК.

5 За допомогою ПОЗ проаналізувати виконання індивідуальної програми.

6 Завантажити програму в стенд ЕОМ. Переконатися у правильному виконанні індивідуального завдання, при негативному результаті змінити алгоритм або програму. Повторити завантаження програми на стенд ЕОМ.

7 Роздрукувати лістинг правильно працюючої програми.

8 Відповісти на контрольні питання викладача.

Таблиця 4 - Перелік прапорців

Символ

Позиція

Ім’я і призначення

P

PSW.0

Прапорець пріоритету. Встановлюється і скидається апаратно в кожному циклі команди і фіксує непарне/парне число одиничних біт в акумуляторі

-

PSW.1

Не використовується

OV

PSW.2

Прапорець переповнення. Встановлюється і скидається апаратно при виконанні арифметичних операцій

RS0 - RS1

PSW.3 - PSW.4

Біти вибору використовуваного банку регістрів. Можуть бути змінені програмним шляхом

RS0

RS1

Банк

Границі адресів ОЗП

0

0

0

00H - 07H

1

0

1

08H - 0FH

0

1

2

10H

1 17H

1

3

8H - 1FH

Продовження табл. 4

F0

PSW.5

Прапорець користувача. Може бути встановлений, скинутий або перевірений програмою користувача

АС

PSW.6

Прапорець допоміжного перенесення. Встановлюється і скидається тільки апаратними засобами при виконанні команд додавання і віднімання і сигналізує про перенесення або позички в біті 3 акумулятора

C

PSW.7

Прапорець перенесення. Встановлюється і скидається як апаратно, так і програмним шляхом

Як початковий код використовувати програму, розроблену в лабораторній роботі 3.

Приклад програми для роботи зі стеком

Занести в акумулятор число і виконати перевірку прапорця паритету. Якщо прапорець дорівнює «0», вивести на статичний індикатор число 00h, якщо прапорець дорівнює «1», вивести число 11h.

$ NOMOD51

$ Include (D:\ Sum_GU_STUD\MPP\ BIN\ASM51\mod51)

ORG 0

mov A, # 01000100b

jb PSW.0, Chetnoe

mov P2, # 11h

jmp Stop

Chetnoe:

mov P2, # 00h

Stop:

jmp Stop

END

Таблиця 5 - Варіанти індивідуальних завдань до ЛР 4

Номер

вар

Текст індивідуального завдання

1,11,

21

Підрахувати і відобразити на статичному індикаторі кількість натискань кнопки SW1. Після досягнення кількості натискань 5 занести кількість натискань в акумулятор і перевірити прапорець паритету. При натисканні кнопки SW2 виконати перевірку прапорця паритету. Якщо прапорець дорівнює «0», вивести на статичний індикатор число 00h, якщо прапорець дорівнює «1», вивести число 11h

2,12,

22

Підрахувати і відобразити на статичному індикаторі кількість натискань кнопки SW3. Після досягнення кількості натискань 6 занести кількість натискань в акумулятор і перевірити прапорець паритету. При натисканні кнопки SW4 виконати перевірку прапорця паритету. Якщо прапорець дорівнює «0», вивести на статичний індикатор число 00h, якщо прапорець дорівнює «1» вивести число 11h

3,13,

23

Підрахувати і відобразити на статичному індикаторі кількість натискань кнопки SW5. Після досягнення кількості натискань 7 занести кількість натискань в акумулятор і перевірити прапорець паритету. При натисканні кнопки SW6 виконати перевірку прапорця паритету. Якщо прапорець дорівнює «0», і вивести на статичний індикатор число 00h, якщо прапорець дорівнює «1», вивести число 11h

4,14,

24

Підрахувати і відобразити на статичному індикаторі кількість натискань кнопки SW7. Після досягнення кількості натискань 8 занести кількість натискань в акумулятор і перевірити прапорець паритету. При натисканні кнопки SW8 виконати перевірку прапорця паритету. Якщо прапорець дорівнює «0», і вивести на статичний індикатор число 00h, якщо прапорець дорівнює «1», вивести число 11h

5,15,

25

Підрахувати і відобразити на статичному індикаторі кількість натискань кнопки SW1. Після досягнення кількості натискань 9 занести кількість натискань в акумулятор і перевірити прапорець паритету. При натисканні кнопки SW2 виконати перевірку прапорця паритету. Якщо прапорець дорівнює «0», і вивести на статичний індикатор число 00h, якщо прапорець дорівнює «1», вивести число 11h

Продовження табл. 5

6,16

Підрахувати і відобразити на статичному індикаторі кількість натискань кнопки SW3. Після досягнення кількості натискань 4 занести кількість натискань в акумулятор і перевірити прапорець паритету. При натисканні кнопки SW4 виконати перевірку прапорця паритету. Якщо прапорець дорівнює «0», і вивести на статичний індикатор число 00h, якщо прапорець дорівнює «1», вивести число 11h

7,17

Підрахувати і відобразити на статичному індикаторі кількість натискань кнопки SW5. Після досягнення кількості натискань 5 занести кількість натискань в акумулятор і перевірити прапорець паритету. При натисканні кнопки SW6 виконати перевірку прапорця паритету. Якщо прапорець дорівнює «0», і вивести на статичний індикатор число 00h, якщо прапорець дорівнює «1», вивести число 11h

8,18

Підрахувати і відобразити на статичному індикаторі кількість натискань кнопки SW7. Після досягнення кількості натискань 6 занести кількість натискань в акумулятор і перевірити прапорець паритету. При натисканні кнопки SW8 виконати перевірку прапорця паритету. Якщо прапорець дорівнює «0», і вивести на статичний індикатор число 00h, якщо прапорець дорівнює «1», вивести число 11h

9,19

Підрахувати і відобразити на статичному індикаторі кількість натискань кнопки SW1. Після досягнення кількості натискань 7 занести кількість натискань в акумулятор і перевірити прапорець паритету. При натисканні кнопки SW2 виконати перевірку прапорця паритету. Якщо прапорець дорівнює «0», і вивести на статичний індикатор число 00h, якщо прапорець дорівнює «1», вивести число 11h

10,20

Підрахувати і відобразити на статичному індикаторі кількість натискань кнопки SW3. Після досягнення кількості натискань 8 занести кількість натискань в акумулятор і перевірити прапорець паритету. При натисканні кнопки SW4 виконати перевірку прапорця паритету. Якщо прапорець дорівнює «0», і вивести на статичний індикатор число 00h, якщо прапорець дорівнює «1», вивести число 11h

Рисунок 12 - Схема до лабораторної роботи 4

6 Лабораторна робота № 5. Робота з масивами

Тема «Робота з масивами».

Мета роботи - вивчити принцип роботи з масивами.

Порядок виконання лабораторної роботи

1 Вивчити систему роботи стека МК51.

2 Розробити алгоритм для виконання індивідуального завдання.

3 Розробити програму для виконання індивідуального завдання.

4 Ввести програму індивідуального завдання на ПК.

5 За допомогою ПОЗ проаналізувати виконання індивідуальної програми.

6 Завантажити програму в стенд ЕОМ. Переконатися у правильному виконанні індивідуального завдання, при негативному результаті змінити алгоритм або програму. Повторити завантаження програми на стенд ЕОМ.

7 Роздрукувати лістинг правильно працюючої програми.

8 Відповісти на контрольні питання викладача.

Приклад програми для роботи зі стеком

Ввести масив даних і знайти суму 1-го і 3-го елементів. Суму вивести на статичний індикатор.

$ NOMOD51

$ Include (D:\ Sum_GU_STUD\MPP\ BIN\ASM51\mod51)

ORG 0

mov R5, # 0h

mov R0, # 0h

mov R3, # 00h

mov R4, # 02h

Begin:

mov A, R3

mov DPTR, # Mas

movc A, @ A + DPTR

mov R5, A

mov A, R4

mov DPTR, # Mas

movc A, @ A + DPTR

add A, R5

mov P2, A

jmp Begin

Mas: DB 01h, 02h, 04h, 08h, 07h, 03h, 05h, 09h

ret

END

Таблиця 6 - Варіанти індивідуальних завдань до ЛР 5

Номер

вар

Текст індивідуального завдання

1,11,

21

Ввести масив даних і знайти суму 1-го, 3-го та 5-го елементів. Результат вивести на статичний індикатор

2,12,

22

Ввести масив даних і знайти середнє арифметичне перших п'яти елементів масиву. Результат вивести на статичний індикатор.

3,13,

23

Ввести масив даних і знайти добуток 2-го та 7-го елементів. Результат вивести на статичний індикатор

4,14,

24

Ввести масив даних і знайти середнє арифметичне останніх чотирьох елементів масиву. Результат вивести на статичний індикатор

5,15,

25

Ввести масив даних і знайти добуток перших чотирьох елементів. Результат вивести на статичний індикатор

6,16

Ввести масив даних і знайти різницю 8-го і 1-го елементів. Результат вивести на статичний індикатор

7,17

Ввести масив даних і знайти суму 2-го, 4-го та 7-го елементів. Результат вивести на статичний індикатор

8,18

Ввести масив даних і знайти добуток 3-го і 8-го елементів. Результат вивести на статичний індикатор

9,19

Ввести масив даних і знайти добуток останніх трьох елементів. Результат вивести на статичний індикатор

10,20

Ввести масив даних і знайти суму всіх елементів масиву. Результат вивести на статичний індикатор

Масив даних: 01h, 02h, 04h, 08h, 07h, 03h, 05h, 09h

Рисунок 13 - Схема до лабораторної роботи 5

7 Лабораторна робота 6. Система переривань МК51

Тема «Система переривань».

Мета роботи - вивчити режими роботи системи переривання ЕОМ, програмну обробку дискретних сигналів.

Порядок виконання лабораторної роботи

1 Вивчити систему роботи стека МК51.

2 Розробити алгоритм для виконання індивідуального завдання.

3 Розробити програму для виконання індивідуального завдання.

4 Ввести програму індивідуального завдання на ПК.

5 За допомогою ПОЗ проаналізувати виконання індивідуальної програми.

6 Завантажити програму в стенд ЕОМ. Переконатися у правильному виконанні індивідуального завдання, при негативному результаті змінити алгоритм або програму. Повторити завантаження програми на стенд ЕОМ.

7 Роздрукувати лістинг правильно працюючої програми.

8 Відповісти на контрольні питання викладача.

Короткі теоретичні відомості

Опитування дискретних сигналів. Для введення інформації широко застосовуються кнопкові перемикачі та контактні клавіатури. Сигнал таких перемикачів формується шляхом замикання (розмикання) електричного кола. Сигнал, що формується контактною парою, супроводжується дзенькотом контактів, тривалість якого становить ~ 8-12мс (рис. 14).

Рисунок 14 - Сигнал контактної пари

Для усунення дзенькоту контактів у вихідному сигналі на виході контактної пари встановлюють спеціальні формувачі. Приклад такого формувача, що базується на принципі безпосередньої установки RS-тригера, наведено на рисунку 15.

Рисунок 15 - Схема усунення дзенькоту контактів за допомогою RS-тригера

Для зменшення апаратних витрат застосовують програмне фільтрування дзенькоту контактів. Воно полягає у повторному опитуванні контактної пари із затримкою в 12мс, при збігу результатів опитування кнопка була натиснута, інакше в результаті першого опитування був зафіксований збій.