Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кордонець.doc
Скачиваний:
3
Добавлен:
31.10.2018
Размер:
354.82 Кб
Скачать

*Вхід irq з вищим пріоритетом

Дешифратор К155ІД6

Основні характеристики:

Вхідний струм, мА, не більше:

  • низького рівня ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... -1,6

  • високого рівня ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 0,04

Вхідна напруга, В:

  • низького рівня, не більше ... ... ... ... ... ... ... ... ... ... ... 0,4

  • високого рівня не менше ... ... ... ... ... ... ... ... .. ... ... 2,4

Вихідний струм, мА, не більше:

  • низького рівня ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 16

  • високого рівня ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... - 0, 4

  • Середній струм споживання, не більше ... ... ... ... ... ... 15мА

  • Напруга живлення ... ... ... ... ... ... ... ... ... ... ... ... ... 5В

3. Розробка програмного забезпечення.

    1. Розробка алгоритму роботи

Мікропроцесорна система на базі мікропроцесора 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, одиничний сигнал з якого повинен викликати зупинку системи в будь-який момент.

    1. Розробка програми

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 секунд)