
- •1.Аналіз технічного завдання.
- •2.Розробка схеми пристрою.
- •2.1. Архітектура мікроконтролера.
- •2.2 Розробка структурної схеми.
- •2.3 Вибір додаткових елементів схеми.
- •*Вхід irq з вищим пріоритетом
- •3. Розробка програмного забезпечення.
- •Розробка алгоритму роботи
- •Розробка програми
- •Висновки
- •5. Список використаної літератури.
*Вхід irq з вищим пріоритетом
Дешифратор К155ІД6
Основні характеристики:
Вхідний струм, мА, не більше:
-
низького рівня ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... -1,6
-
високого рівня ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 0,04
Вхідна напруга, В:
-
низького рівня, не більше ... ... ... ... ... ... ... ... ... ... ... 0,4
-
високого рівня не менше ... ... ... ... ... ... ... ... .. ... ... 2,4
Вихідний струм, мА, не більше:
-
низького рівня ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 16
-
високого рівня ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... - 0, 4
-
Середній струм споживання, не більше ... ... ... ... ... ... 15мА
-
Напруга живлення ... ... ... ... ... ... ... ... ... ... ... ... ... 5В
3. Розробка програмного забезпечення.
-
Розробка алгоритму роботи
Мікропроцесорна система на базі мікропроцесора I8080 або його вітчизняного аналога КР580ВІ80А необхідна у виробництві для одержання й аналізу даних з датчиків, виконання заданої функції. Мікропроцесорна система працює за наступним алгоритмом (Рисунок 1.5):
Рис 2.3 Алгоритм роботи
Блок 1: початок роботи
Блок 2: ініціалізація системи - забезпечує початкову установку системи: налаштування програмних БІС (паралельних і послідовних периферійних адаптерів, контролера переривань, таймера), засилання у вихідні канали керуючих впливів і т.д.
Блок 3: введення і обробка цифрової інформації - реалізує завдання логічного управління: приймає інформацію від двійкових датчиків Х1 ... Х4, обчислює значення булевої функції і видає це значення в якості керуючого сигналу (УС) Y1 стосовно вихідної каналу.
Блок 4: введення і обробка аналогової інформації - забезпечує прийом інформації з аналогових датчиків V1 ... V3 її перетворення в цифрову форму, обчислення значень керуючих впливів Y2 ... Y4 і видачу їх за вихідним каналу. При цьому Y2 і Y3 є двійковими сигналами, а Y4 - 8-розрядним кодом, що перетворюються в аналоговий сигнал V4.
Блок 5: вибір - забезпечує циклічний режим управління або зупинку МПС відповідно до командою з пульта управління (ПУ) від оператора. У системі також є двійковий датчик аварійної ситуації Х0, одиничний сигнал з якого повинен викликати зупинку системи в будь-який момент.
-
Розробка програми
ORG 0000h
LXI SP,0FFEh ;Вказівник стека
MVI A,11011001b ;ініціалізація порту В/В №1 (розряду записані
навпаки див. схему підключення)
OUT 43h
MVI A,11010001b ;ініціалізація порту В/В №2
OUT 83h
; Основна програма
MAIN: MVI A,11110111b ; Ввімкнути світло в ліфті
OUT 80h
IN 81h ; Зчитуємо номер текучого поверху
ANI 00001111b ; Приводимо в 8 бітному виду використовуючи лог.
множення
MOV B,A ;Зберегти номер текучого поверху
IN 41h ;Зчитати номер поверху звідки виклик в рег. A
ANI 00001111b
MOV C,A ;Зберегти значення поверху звідки виклик
CMP B ;Зберегти поверх де ліфт та звідки виклик
JZ mB ;Рівні => одразу відкрити двері
JC mE ;Ліфт вище (A<B) => рух вниз
;Ліфт нижче (A>B) => рух вверх
mC: MVI A,01110111b ;Оберти двигуна вверх (+ горить світло в ліфті)
OUT 80h
m1: IN 81h
ANI A,00001111b
CMP C
JNZ m1
JMP m4 ; Поверх де ліфт рівний поверху звідки виклик
mE: MVI A,10110111b ;Оберти двигуна вниз (+ горить світло в ліфті)
OUT 80h
m3: IN 81h ; зчитуємо номер текучого поверху
ANI 00001111b
CMP C
JNZ m3
m4: MVI A,11110111b ;Зняти сигнали руху ліфту
OUT 80h
m5: IN 40h ; Перевірка руху ліфту вверх
ANI 00010000b
JZ m5 ;Ліфт рухається вверх
m6: IN 40h
ANI 00100000b
JZ m6 ;Ліфт рухається вниз
mB: MVI A,11100111b ; Ввімкнути привід відкривання дверей
OUT 80h
m7: IN 40h
ANI 00001000
JZ m7 ;Двері не відкриті
MVI A,11110111b ;Вимкнути привід відкривання дверей
OUT 80h
CALL Wait20
IN 40h
ANI 01000000h
JZ m8 ;Немає тиску на підлогу
m9: IN 40h
ANI 00000001h
JNZ m9 ;Кнопка не була натиснута
m10: IN 40h
ANI 10000000h
JZ m10 ;Перенавантаження
MVI A,11010111b ;Ввімкнути привід зачинення дверей
OUT 80h
m11: IN 40h
ANI 00000100b
JZ m11 ; Двері не зачинені
MVI A,11110111b ;Ввімкнути привід зачинення дверей
OUT 80h
IN 42h ;Аналіз натиснутої кнопки
ANI 00001111b
MOV C,A ;Зберегти значення натиснутої кнопки
IN 81h ; Зчитуємо номер текучого поверху
ANI 00001111b
CMP C ;Зрівняти поверх де ліфт з значенням натиснутої кнопки
JZ mB ;Рівні => відчинити двері
JC mC ;A<C Ліфт нижче => рух ліфту вверх в С - поверх
JMP mE ; A>C Ліфт вище => рух ліфту вниз в С - поверх
m8: MVI A,11010111b ;Включить привод зачинення дверей
OUT 80h
m12: IN 40h
ANI 00000100b
JNZ m13 ; Двері зачинити
IN 40h
ANI 00000010b
JZ m12 ;Нема перешкод
MVI 11110111b ;Перешкода на шляху дверей => Вимкне привод зачинення дверей
OUT 80h
JMP m B ;Відчинити двері
m13: MVI A,11111111b ; Погасити світло
OUT 80h
KON: HLT
;Підпрограма задержки часу при частоті 2 Мгц
;2 МГЦ => 2 000 000 тактів с секунду
Wait20: PUSH C
PUSH B
PUSH A
MVI A,15h ;A = 20
mw3 MVI B,FF ;B = 252 7 тактів
mw2: MVI C,FFh ;C = 255 Занесення байта даних в регістр 7 тактів
mw1: NOP ;Команда NOP нічого не робить займає 4 такти
NOP ;4 такти
NOP ;4 такти
NOP ;4 такти
DCR C ;Зменшення регістру на одиницю займає 5 тактів
JNZ mw1 ;Команда переходу при прапорі z=0 займає 10 тактів
NOP ;4 такти
NOP ;4 такти
DCR B ;5 тактів
JNZ mw2 ;10 тактів
DCR A
JNZ mw3
POP A
POP B
POP C
RET ; ((31*255+30)*252+22)*20=39992840 тактів 20 секунд (19,96 секунд)