Читайте также: |
|
Написання програми комбінаційного автомата за таблицею істинності
Ціль роботи: вивчити методи розв'язку логічних рівнянь для бітових змінних і засвоїти формальні методи написання програми для комбінаційних автоматів.
Теоретичні відомості. Спосіб реалізації комбінаційного автомата, розглянутий в 3 лабораторній роботі, має наступні обмеження: вхідні сигнали повинні бути підключені на один порт і підряд (інакше необхідно буде збирати інформацію з різних входів в одне вхідне слово); при досить великій кількості входів (7 і більше) і неповному використанні вихідних комбінацій нераціонально використовується пам'ять програм. Тому пропонується інший спосіб розв'язку задання керування, заснований на програмній реалізації логічних кон’юнктивно диз'юнктивних рівнянь.
Як і в попередньому випадку, функціонування автомата задається у вигляді таблиці істинності, наприклад, табл. 1
Приклад задання алгоритму у вигляді таблиці істинності
Таблиця 1
Входи | Вихід | |||
P1.2 | P1.4 | P2.1 | P2.3 | Р1.7 |
Запишемо логічне рівняння для виходу згідно з наведеною таблицею.
Р1.7=!Р1.2 & P1.4 & P2.1 & P2.3 +Р1.2 &!P1.4 & P2.1 &!P2.3+Р1.2 &
!P1.4 & P2.1 &!P2.3 (3.1)
Складемо схему алгоритму для першої функції «І» рівняння (рис. 3.1).
Слід звернути увагу, що команді переходу за умовою відповідає умовний оператор на блок-схемі алгоритму з результатом «ні» унизу. Тому для того, щоб програма була зручною, пропонується використовувати команди, які перевіряють інверсну умову. Тоді послідовне виконання таких команд і буде відповідати виконанню вихідної умови логічної функції.
У результаті програмна реалізація для першої функції «І» рівняння має вигляд:
JB P1.2,M1 JNB P1.4,M1 JNB P2.1,M1 JNB P2.3,M1 SETB P1.7 LJMP EXIT
M1: * * *;перевірка наступної умови
Схема алгоритму для функцій «АБО» наведена на рис. 3.6 у розділі 3.
У цьому алгоритмі під &1, &2 маються на увазі логічні функції «І» по рядках таблиці наведених рівнянь.
Повна програма логічного рівняння, відповідного до таблиці істинності, має вигляд:
Loop: JB P1.2,M1; перевірка умови першого рядка таблиці
JNB P1.4,M1 JNB P2.1,M1 JNB P2.3,M1
SETB P1.7; установка виходу в одиницю
LJMP Loop; і вихід
M1:
M2:
JNB P1.2,M2;; перевірка умови другого рядка таблиці
JB P1.4,M2 JNB P2.1,M2 JB P2.3,M2
SETB P1.7; установка виходу в одиницю
LJMP Loop; і вихід
JNB P1.2,M3; перевірка умови третього рядка таблиці
JB P1.4,M3 JNB P2.1,M3 JB P2.3,M3
SETB P1.7; установка виходу в одиницю
LJMP Loop; і вихід
LJMP Loop; і вихід
Методика виконання:
1. Заносимо програму у вікно редактора програми.
2. Контроль над роботою програми зробимо за допомогою редактора оточення. Для цього підключаємо на входи відповідні до задання кнопки, а на виходи – світлодіоди.
3. Правильність складання умов появи вихідних сигналів перевіряється під час симуляції виконання в покроковому режимі, остаточна перевірка – в автоматичному режимі. Для переходу на симуляцію в автоматичному режимі необхідно після включення повторно нажати клавішу F9.
Звіт повинен містити текст програми, вихідні дані й блок-схему алгоритму.
Варіанти задань
Варіант 1 | Комбінація натискання клавіш | Стан портів виводу | ||||||
Порти МК | P0.0 | P1.2 | P1.4 | P1.5 | P2.1 | P2.2 | P1.3 | P2.3 |
Кодова комбінація 1 | ||||||||
Кодова комбінація 2 |
Варіант 2 | Комбінація натискання клавіш | Стан портів виводу | ||||||
Порти МК | P0.0 | P1.2 | P1.4 | P1.5 | P2.1 | P2.2 | P1.3 | P2.3 |
Кодова комбінація 1 | ||||||||
Кодова комбінація 2 |
Варіант 3 | Комбінація натискання клавіш | Стан портів виводу | ||||||
Порти МК | P0.0 | P1.2 | P1.4 | P1.5 | P2.1 | P2.2 | P1.3 | P2.3 |
Кодова комбінація 1 | ||||||||
Кодова комбінація 2 |
Варіант 4 | Комбінація натискання клавіш | Стан портів виводу | ||||||
Порти МК | P0.0 | P1.2 | P1.4 | P1.5 | P2.1 | P2.2 | P1.3 | P2.3 |
Кодова комбінація 1 | ||||||||
Кодова комбінація 2 |
Варіант 5 | Комбінація натискання клавіш | Стан портів виводу | ||||||
Порти МК | P0.0 | P1.2 | P1.4 | P1.5 | P2.1 | P2.2 | P1.3 | P2.3 |
Кодова комбінація 1 | ||||||||
Кодова комбінація 2 |
Варіант 6 | Комбінація натискання клавіш | Стан портів виводу | ||||||
Порти МК | P0.0 | P1.2 | P1.4 | P1.5 | P2.1 | P2.2 | P1.3 | P2.3 |
Кодова комбінація 1 | ||||||||
Кодова комбінація 2 |
Варіант 7 | Комбінація натискання клавіш | Стан портів виводу | ||||||
Порти МК | P0.0 | P1.2 | P1.4 | P1.5 | P2.1 | P2.2 | P1.3 | P2.3 |
Кодова комбінація 1 | ||||||||
Кодова комбінація 2 |
Варіант 8 | Комбінація натискання клавіш | Стан портів виводу | ||||||
Порти МК | P0.0 | P1.2 | P1.4 | P1.5 | P2.1 | P2.2 | P1.3 | P2.3 |
Кодова комбінація 1 | ||||||||
Кодова комбінація 2 |
Варіант 9 | Комбінація натискання клавіш | Стан портів виводу | ||||||
Порти МК | P0.0 | P1.2 | P1.4 | P1.5 | P2.1 | P2.2 | P1.3 | P2.3 |
Кодова комбінація 1 | ||||||||
Кодова комбінація 2 |
Варіант 10 | Комбінація натискання клавіш | Стан портів виводу | ||||||
Порти МК | P0.0 | P1.2 | P1.4 | P1.5 | P2.1 | P2.2 | P1.3 | P2.3 |
Кодова комбінація 1 | ||||||||
Кодова комбінація 2 |
Варіант 11 | Комбінація натискання клавіш | Стан портів виводу | ||||||
Порти МК | P0.0 | P1.2 | P1.4 | P1.5 | P2.1 | P2.2 | P1.3 | P2.3 |
Кодова комбінація 1 | ||||||||
Кодова комбінація 2 |
Варіант 12 | Комбінація натискання клавіш | Стан портів виводу | ||||||
Порти МК | P0.0 | P1.2 | P1.4 | P1.5 | P2.1 | P2.2 | P1.3 | P2.3 |
Кодова комбінація 1 | ||||||||
Кодова комбінація 2 |
Варіант 13 | Комбінація натискання клавіш | Стан портів виводу | ||||||
Порти МК | P0.0 | P1.2 | P1.4 | P1.5 | P2.1 | P2.2 | P1.3 | P2.3 |
Кодова комбінація 3 | ||||||||
Кодова комбінація 4 |
Варіант 14 | Комбінація натискання клавіш | Стан портів виводу | ||||||
Порти МК | P0.0 | P1.2 | P1.4 | P1.5 | P2.1 | P2.2 | P1.3 | P2.3 |
Кодова комбінація 3 | ||||||||
Кодова комбінація 4 |
Варіант 15 | Комбінація натискання клавіш | Стан портів виводу | ||||||
Порти МК | P0.0 | P1.2 | P1.4 | P1.5 | P2.1 | P2.2 | P1.3 | P2.3 |
Кодова комбінація 3 | ||||||||
Кодова комбінація 4 |
Варіант 16 | Комбінація натискання клавіш | Стан портів виводу | ||||||
Порти МК | P0.0 | P1.2 | P1.4 | P1.5 | P2.1 | P2.2 | P1.3 | P2.3 |
Кодова комбінація 3 | ||||||||
Кодова комбінація 4 |
Лабораторна робота №5 Дослідження тимчасових затримок у МП системах
Ціль роботи: навчитися писати програми й розраховувати значення змінних для програмних тимчасових витримок.
Теоретичні відомості. Тимчасові витримки в мікропроцесорних системах легше всього організувати через програмні лічильники. У якості лічильників зручно використовувати регістри R0 – R7. При цьому виходимо з того, що команди виконуються за кінцевий час. Вихідними даними для розрахунків є частота кварцу мікроконтролера. У середовищі Mcstudio вона встановлюється в меню Виконання – Опції симуляції. Програми формування затримок зручно оформляти у вигляді підпрограми з передачею параметрів. Параметр – значення регістрів, що забезпечує задану тимчасову затримку.
У прикладі наведено програму тимчасової затримки для двобайтового лічильника.
Приклад:
Mov r2,#25h; завантаження молодшого байта затримки 1 ц Mov r3,#47h; завантаження старшого байта затримки 1 ц Lcall zd1; виклик підпрограми затримки 2 ц
M1: ajmp M1; нескінченний цикл
zd1: mov a,r2; пересилання вхідного значення в акумулятор 1 ц вип. r3
раз
m2: djnz a,m2; декремент молодшого байта затримки 2 ц вип. r2*r3 раз
djnz r3,zd1; декремент старшого байта затримки2 ц вип. r3 раз
ret;вихід з підпрограми 2 ц
Розрахунки часу затримки. За основу береться тривалість одного
Тзд=1ц+1ц+2ц+1ц*r3+2ц*r2*r3+2ц*r3+2=
=1+1+2+71+2*37*71+2*71+2=10869 [мkc].
Методика виконання:
1. Контроль витримки затримки проводиться за покажчиком часу, що перебуває у вікні «Ресурси» (пункт «Ядро MCS-51» (рис. 1).
2. Встановлення заданої частоти генератора виконується через пункт меню Виконання – Опції симуляції.
3. Для контролю виконання програми в автоматичному режимі використовувати крапку зупинки, встановлену на мітці М1. Для задання крапки зупинки необхідно маркер помістити на потрібну крапку програми й натиснути клавішу F5.
4. Задається крапка зупинки. Програма запускається на симуляцію в автоматичному режимі після переривання виконання (в крапці зупинки), час виконання не повинен відрізнятися від встановленого в заданні більш ніж на 5 мкс.
Рис. 1. Вікно ядра MCS-51 Рис. 2. Вікно установки частоти
генератора мікроконтролера
5. Значення регістрів визначається за формулою, що наведена вище. Для цього треба задати значення старшого байта затримки, що дорівнює 255, і за рівнянням знайти значення молодшого байта. Якщо отримане значення перевищує число 255, додаємо ще один цикл у програмі. З урахуванням цього коректуємо формулу й знаходимо потрібні значення.
Варіанти задань.
Час затримки повинен дорівнювати номеру за списком, що помножений на 27 мілісекунд.
Звіт повинен містити текст програми, вихідні дані й блок-схему алгоритму, отримане реальне значення затримки.
Дата добавления: 2015-07-08; просмотров: 131 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Лабораторна робота №3 | | | Лабораторна робота №6 |