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

Приклад програми:

Організувати почергове миготіння лінійки світлодіодів у шаховому порядку. При натисканні кнопки SW1 (INT0) виводити на статичному індикаторі число 01h, при натисканні кнопки SW2 (INT1) виводити на статичному індикаторі число 02h. У програмі використати переривання.

$ NOMOD51

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

ORG 0

jmp Config

ORG 0003h

jmp SW1

ORG 0013h

jmp SW2

Config:

mov P2, # 00000001b

mov IE, # 10100101b

mov IP, # 00000001b

Begin:

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

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

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

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

mov P1, # 10101010b

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

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

SW1:

mov P2, R1

reti

SW2:

mov P2, R2

reti

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

mov R6, # 0FFh

mov R5, # 0Ah

C2: mov R7, # 0FFh

C4: djnz R7, C4

djnz R6, C2

djnz R5, C2

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

END

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

Номер

вар.

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

1,11,

21

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

2,12,

22

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

3,13,

23

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

4,14,

24

Занести до регістра R0 число 00Н, додаючи до числа "1", відображати на подвійному статичному індикаторі, організувати можливість зміни кроку підсумовування, використовуючи INT0 і INT1 (INT0 - зменшує крок, INT1 - збільшує крок). Дублювати ці числа на лінійці світлодіодів (у двійковій формі)

5,15,

25

Занести до регістра R5 число 08Н. Використовуючи переривання INT0 і INT1 (INT0 - забирає "2", INT1-додає "2"), організувати можливість зміни значення на подвійному статичному індикаторі. Сумарну кількість натискань SW1 і SW2 виводити на одинарний статичний індикатор

6,16

Занести до регістра R3 число 40Н, віднімаючи від числа "4", відображати результат на подвійному статичному індикаторі у молодшому розряді до нуля. Після переривання INT0 вмикати, а по INT1 вимикати переміщення світлодіода на HL1-HL8

7,17

Занести до регістра R7 число 08Н. Після переривання INT0 організувати біжучий рядок на подвійному статичному індикаторі зліва направо, а по перериванню INT1 справа наліво. Ввімкнути крайні світлодіоди HL1-HL8

8,18

Після переривання INT0 вмикати парні світлодіоди на HL1-HL8, а після INT1 непарні. Занести до регістра R1 00Н, додаючи до числа "2", відображати результат на подвійному статичному індикаторі у молодшому розряді до 50

9,19

Занести до регістра R2 число 00Н, додаючи до числа "5", відображати на подвійному статичному індикаторі, організувати можливість зміни кроку підсумовування використовуючи INT0 і INT1 (INT0 - зменшує крок, INT1 - збільшує крок). Дублювати ці числа на лінійці світлодіодів (у двійковій формі)

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

10,20

Занести до регістра R0 число 05Н. Використовуючи переривання INT0 і INT1 (INT0 - забирає "5", INT1-додає "5"), організувати можливість зміни значення на подвійному статичному індикаторі. Сумарна кількість натискань SW1 і SW2 виводити на одинарний статичний індикатор

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

8 Лабораторна робота 7. Робота з таймерами-лічильниками. Система переривань МК51

Тема «Робота з таймерами-лічильниками.»

Мета роботи - вивчити режими роботи таймерів-лічильників.

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

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

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

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

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

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

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

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

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

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

Таймери/лічильники мікроконтролерів сімейства 8051.

У базових моделях сімейства є два програмованих 16-бітних таймери /лічильники (T/C0 і T/C1), які можуть бути використані як таймер, так і як лічильники зовнішніх подій. У першому випадку вміст відповідного таймера/лічильника (Т/С) інкрементується в кожному машинному циклі, тобто через кожні 12 періодів коливань кварцового резонатора, в другому воно інкрементується під впливом переходу з 1 в 0 зовнішнього вхідного сигналу, що подається на відповідний (T0, T1) вивід мікроЕОМ 8051. Оскільки на розпізнавання періоду потрібні два машинних цикли, максимальна частота підрахунку вхідних сигналів дорівнює 1/24 частоти резонатора. На тривалість періоду вхідних сигналів обмежень зверху немає. Для гарантованого прочитання вхідний сигнал повинен утримувати значення 1, як мінімум, протягом одного машинного циклу мікроЕОМ.

Для керування режимами роботи Т/С і для організації їх взаємодії з системою переривань використовуються два регістри спеціальних функцій (TMOD і TCON), опис яких наведено нижче.

Таблиця 11 - Регістр режиму роботи таймера/лічильника

Символ

Позиція

Назва і призначення

GATE

TMOD.7 для Т/С1 і TMOD.3 для Т/СО

Управління блокуванням. Якщо біт встановлено, то таймер/лічильник "x" дозволений до тих пір, поки на вході "lNTx" високий рівень і біт управління "TRx" встановлено. Якщо біт скинутий, то Т/С дозволяється, як тільки біт управління "TRx" встановлюється

С/Т

TMOD.6 для T/C1 і TMOD.2 для Т/СО

Біт вибору режиму таймера або лічильника подій. Якщо біт скинутий, то працює таймер від внутрішнього джерела сигналів синхронізації. Якщо встановлено, то працює лічильник від зовнішніх сигналів на вході "Tx"

M1

TMOD.5 для T/C1 і TMOD.1 для Т/СО

Режим роботи

M1

M0

 

0

0

Таймер ВЕ48. "TLx" працює як 5-бітний дільник

0

1

16 бітний таймер/лічильник. "THx" і "TLx" увімкнений послідовно

1

0

8-бітний автоперезавантажуваний таймер/лічильник. "THx" зберігає значення, яке має бути перезавантажена в "TLx" кожного разу пвсля переповнення

1

1

Таймер/лічильник 1 зупиняється. Таймер/лічильник 0: TLO працює як 8-бітний таймер/лічильник, і його режим визначається керуючими бітами таймера 0. TH0 працює тільки як 8-бітний таймер, і його режим визначається керуючими бітами таймера 1

M0

TMOD.4 для Т/С1 і TMOD.0 для Т/СО

Таблиця 12 - Регістр управління/статусу таймера TCON

Символ

Позиція

Ім'я та призначення

TF1

TCON.7

Прапорець переповнення таймера 1. Встановлюється апаратно при переповненні таймера/лічильника. Скидається при обслуговуванні переривання апаратно

TR1

TCON.6

Біт управління таймера 1. Встановлюється/скидається програмою для пуску/зупинки

TF0

TCON.5

Прапорець переповнення таймера 0. Встановлюється апаратно. Скидається при обслуговуванні переривання

TR0

TCON.4

Біт управління таймера 0. Встановлюється/скидається програмою для пуску/зупинки таймера/лічильника

IE1

TCON.3

Прапорець фронту переривання 1. Встановлюється апаратно, коли детектується фронт зовнішнього сигналу INT1. Скидається при обслуговуванні переривання

IT1

TCON.2

Біт управління типом переривання 1. Встановлюється/скидається програмно для специфікації запиту INT1 (фронт/низький рівень)

IE0

TCON.1

Прапорець фронту переривання 0. Встановлюється за фронту сигналу INT0. Скидається при обслуговуванні переривання

IT1

TCON .0

Біт управління типом переривання 0. Встановлюється/скидається програмно для специфікації запиту INT0 (фронт/низький рівень)