Материалы сайта
Это интересно
Розробка мікропроцесорного пристрою системи автоматичного регулювання
MVI A ,91H - вивід в С4 одиниці OUT FBH - вивід в С4 одиниці MVI А, 8H вивід в C4 нуля OUT FBH вивід в C4 нуля Після цього АЦП приступив до перетворення вхідного сигналу в цифровий код. По закінченні перетворення МП переходить до програми обробки перетворешія. в якій послідовно вводиться 2 байти Хn; IN F8H ;ввід з каналу А STA XNL ;вивід по адресі XNL - молодшого байту Хn IN FAH ;ввід з каналу С ANI 03Н STA XNH ; вивід по адресі XNH - адреси старшою байту Хn операція виводу виглядає простіше: LDA YN1 ; ввід в акумулятор 8-розрядів Yn з комірки YN1 OUT F9H ; вивід в канал В; LDA YN2 ; ввід в акумулятор 2-х молодших розірядів YN3,YN2 ;(iншi занулені крім С4) OUT FBH Передача (двох) 2-х молодших розрядів Yn, окремо зумовлена тим, щоб була найменша похибка у вихідному сигналі оскильки AЦП виводить інформацію швидко. Передача 2-х. старших розрядів Yn окремо викликала б (значну похи6ку) стрибок вихідною сигналу. 6.Програма цифрової обробки інформації. Як видно зі схеми алгоритми функціонування NМП-пристрою, програма цифрової оброб-ки iнформації повинна неодноразово виконувати такі операції як : 1) множення 2-байтвох чисел на однобайтові; 2) додавання 2-х байтових чисел. Для цього можна використати готові програми [2] ПП множення цилих чисел без •знаку 16*8: |D |E | |* | | | |A | | | | | | | |A |H |I | | |DMULT: |LXI Н, 0H | | | |MVI С, 08Н | | |NXBIT: |DAD H | | | |RAL | | | |JNC NOADD | | | |DAD D | | |NOADD: |AСІ 0 | | | |DCR С | | | |JNZ NXBIT | | | |RET | ПП додавання двобайтових чисел: | |B |С | |+ | | | | |адрHL+1 |адрHL | | | | | | | | |адрHL+1 |адрHL | | |PLUS: |MOV A, C | | | |ADD M | | | |MOV M, A | | | |MOV А, В | | | |INX H | | | |ADC M | | | |MOV M, A | | | |DCX H | | | |RET | Виходячи, що з умови завдання вхідний сигнал - двополярний. то потрібно організувати операцію множення 2-го числа на однобайтове зі знаком. Оскільки вхідний сигнал представле-ний як 10-ти розрядний зі знаком, а є можливість використати ПП множення DMULT чисел 16*8 біт знаку, то при множенні будемо подавати як ціле додатнє число, за модулем рівне. В па- м'яті будемо зберігати в такому форматі: |байт XNH | |байт XNL | |D1| | | | | | |D8| |D7| | | | | | |D0| |5 | | | | | | | | | | | | | | | | | | |0 |0 |1 |0 |0 |0 |. | |. |. |. |. |. |. |. |. | | | модуль Xn |(адр.XNH=адр.XNH1) | З АЦП Xn подається у такому вигляді: 111…11 ( +Umax 100…00 ( 0 000…00 ( -Umax Для приведення цього формату потрібно: 1) коли X9=0 то проінвестувати розряди X0[pic]X9; D15=1 2) коли X9=1 то D15=0; X9=0 Користуючись алгоритмом програми обробки переривання і вищесказаним, програма обробки переривання на мові асемблеру буде: | |OP: |PUSH H | | | | |PUSH PSW | | | | |LHLD XNL |Занесення колишнього значення | | | |SHLD XNLP |Xn в комірку пам’яті для Xn-1 | | | |IN F8H |Ввід в програму розрядів | | | |MOV L, A |X0[pic]X7 | | | |IN FAH | | | | |ANI 03H |Ввід з каналу C розрядів | | | | |X8, X9 числа Xn | | | |MOV H, A | | | | |ANI 02H | | | | |JZ M1 |Визначення умови: | | | | |чи X9=0 | | | |MOV A, H | | | | |ANI 010 |Корекція старшого байту | | | |MOV H, A |додаткового Xn | | | |JMP M2 | | | | |MOV A, L | | | |M1: |CMA | | | | | | | | | |MOV L, A |Корекція від’ємного Xn до | | | |MOV A, H |прийнятого формулою Xn | | | |CMA | | | | |MOV H, A | | | | |SHLD XNI | | | |M2: |MVI A, 9H | | | | |OUT FBH |Запис Xn у комірку пам’яті XNI | | | |POP PSW |і XNH | | | |POP H |Вивід у канал C розряд C4=1 для| | | |EI |гашення результату | | | |RET | | | | | | | | | | |Дозвіл переривання | Основна програма повинна функціонувати по алгоритму, наведеному вище. Виникає тільки проблема узгодження інформації (кодів) представлення чисел з АЦП в пам'яті для виводу на АЦП (а вони всі різні). Для представлення Yn в пам'яті, виберемо той же формат, що і для Хn (так само і Хn-1). Коефіцієнти а0, а1, b1 в пам'яті зберігаються у вигляді модуля. Основна програма враховує, шо а1, є від'ємний. В основній програми будуть використані ще дві програми: 1) ПП переводу 2-х байтового числа в доповнений код (для спрощення операції додавання) | |DOP: |MOV A, H | | | |СМA | | | |MOV H, А | | | |MOV A, І | | | |СМА | | | |MOV L, A | | | |INX H | | | |RET | 2) ПП множення чисел зi знаком, яка використовує ПП DMULT (множення чисел без знака) | |MN |MOV C, A |Множник з регістру А заноситься в | | | | |регістр С для зберігання | | | |MOV A, H |Чи виконується умова, що множене | | | |JP ML |в (HL) є позитивне число | | | |MVI B, 1H |B=1 означає що множене (в HL) є | | | |ANI 7FH |від’ємне | | | |MOV H, A |Корекція множеного до модуля | | | |JMP MM |Числа | | |ML |MVI B, 0H | | | |MM |XCHG MM |B=0 означає, що множене (в HL) є | | | |MOV A, C |додатнє | | | |CALL DMULT |Обмін DE ( HL | | | |MOV L, H |Занесення в регістр А множника з | | | |MOV H, A |регістру С | | | |MOV A, B |Множення чисел без знаку (16*8) | | | | |Корекція результату (добутку) | | | |RET |до цілого числа | | | | |Ознака знаку множеного в А=1 – | | | | |від’ємне | | | | |А=0 додатнє | Основна програма починається з ініціалізації мікросхеми K580ВВ55 для обміну з ЦАП і АЦП, після тогоАЦП встановлюється (після гасіння) в режим іперетворення вхідного сигналу. Далі іде циклічний підрахунок і виведення результату. Основна програма. | |M00 |MVI A, 91H |ініціалзація ВВ355 | | | |OUT FBH | | | | |MVI A, 9H |запуск АЦП | | | |OUT FBH | | | | |Mvi A, 8H | | | | |OUT FBH | | | |M0 |LHLD XNPL |занесення в HL значення Xn-1 в комірку | | | |LDA Al |пам’яті | | | |CALL MN |занесення в аккумулятор байту а1 з пост. | | | |JNZ M3 |комірки | | | |CALL DOP |множення а1 * Xn-1 | | |M3 |SHLD AXNP |перевірка чи Xn-1 був від’ємним | | | |LHLD YNPL |перетворення а1 * Xn-1 в доповнюючий код | | | |LDA B1 |запис добутку а1 * Xn-1 в пам’ять для | | | |CALL MN |зберігання | | | |JZ M4 |занесення в HL значення Yn-1 в пам’ять | | | |CALL DOP |занесення в регістр А байту число b1 з | | |M4 |SHLD BYNP |пам’яті | | | |LHLD XNL |множення b1*Yn-1 | | | |LDA A0 |перевірка чи Yn-1 було додатнє | | | |CALL MN |перетворення b1*Yn-1 в доповнюючий код | | | |JZ M5 |запис добутку b1*Yn-1 в пам’ять для | | | |CALL DOP |зберігання | | |M5 |MOV B, H |запис в HL значення Xn з комірки пам’яті | | | |MOV C, L |запис в аккумулятор байт коеф. | | | |I.XI H, AXNP |множення а0*Xn | | | |CALL PLUS |перевірка чи Xn був додатній | | | |LDA BYNP |перетворення в доповнюючий код | | | |MOV C, A |значення добутку а0*Xn в доповнюючому | | | |LDA BYNP + 1 |коді в регістрову пару BC | | | |MOV B, A |занесення в HL, добутку а1*Xn-1 в доп. Коді| | | |CALL PLUS | | | | |LHLD AXNP |а0*Xn + а1*Xn-1 результат в М; М+1 | | | |MOV A, H | | | | |ANI 7FH |занесення в регістрову пару BC b1*Yn-1 | | | |CMA | | | | |MOV H, A | | | | |MOV A, L |додавання b1*Yn-1 результату Yn в доп. Коді| | | |CMA | | | | |MOV L, A |Yn ( HL (результат був в комірці для | | | | |а1*Xn-1) | | | | | | | | | | | | | | | | | | | |Перетворення Yn (який знаходиться в доп. | | | | |Коді) | | | | |в код для виводу на ЦАП | | | | | | | | |LDA AXNP+l |Перетворення Yn в код у якому значення Yn | | | |JP M15 |зберігається в пам’яті | | | |MOV B, H | | | | |MOV C, L | | | | |JMP M16 | | | |M15 |LDA AXNP |Занесення значення Yn в комірку пам’яті для| | | |MOV C, A |Yn-1 | | | |LDA AXNP+l | | | | |MOV B, A | | | |M16 |MOV A, C | | | | |STA YNPL | | | | |MOV A, B | | | | |STA YPPH | | | | |MOV A, L | | | | |ANI 01H |Вивід в розряд C6 каналу С молодшого | | | |Jz M7 |розряду Y0 результату Yn | | | |MVI A, 07H | | | | |JMP M8 | | | |M7 |MVI A, 0CH | | | |M8 |OUT FBH | | | | |MOV A, L |Вивід в розряд C7 каналу С молодшого | | | |ANI 02H |розряду Y1 результату Yni | | | |JZ M9 | | | |M9 |MVI A, 0FH | | | |M10 |JMP M10 | | | | | |Вивід в канал B розрядів Y2…Y9 результату | | | |MVI A, 0EH |наступним чином | | | |OUT FBH |Y8 ( B0 | | | |MOV A, L |Y9 ( B1 | | | |ANI FCH |Y2 ( B2 | | | |MOV L, A |Y3 ( B3 | | | |MOV A, H |……………… | | | |ANI 01H |Y7 ( B7 | | | |ADD L | | | | |MOV L, A | | | | |MOV A, H | | | | |JM M 11 | | | | |MVI A, 02H | | | | |ADD L | | | | |JMP M12 | | | |M11 |MOV A, L | | | |M12 |0UT F9H |Вивід логічного 0 розряд С4 каналу С для | | | |MVI A, 08H |дозволу перетворення АЦП | | | |OUT FB |перехід на початок | | | |JMP M0 | | Множення однобайтових чисел | |MULL88: |MVI B, 0 | | | |MVI E, 8 | | |NXBIT: |MOV A, C | | | |RAR | | | |MOV A, C | | | |DCR E | | | |RM | | | |MOV A, B | | | |JNC NOADD | | | |ADD D | | |NOADD: |RAR | | | |MOV B, A | | | |JMP NXBIT | Додавання цілих 8-розрядних зі знаком [2, 222] | |ADSIG |MVI C, 02H | | | |MOV A, D | | | |ANA A | | | |JM M1 | | | |DCR C | | |M2: |MOV B, A | | | |MOV A, E | | | |ANA A | | | |JM M1 | | |M3 |ADD B | | | |JM M4 | | |MUSIG |MOV A, C | | | |XRA D | | | |ANI 80H | | | |PUSH PSW | | | |MOV A, C | | | |ANI 7FH | | | |MOV C, A | | | |MOV A, D | | | |ANI 7FH | | | |MOV D, A | | | |CALL MUL88 | | | |POP PSW | | | |ORA B | | | |RET | Перевід у доповнюючий код (в DE) | |CMPL |MOV A, D | | | |CMA | | | |MOV D, A | | | |MOV A, E | | | |CMA | | | |MOV E, A | | | |INX D | | | |RET | В силу наведених порівнянь ми бачимо, що мікросхема К572ПВ3 краща з точки зору швидкодії. Тому ми будем використовувати дану мікросхему. К572ПВ3 виконана по технології КМОН, випускається у 18-вивідному корпусі з вертикальним розміщенням виводів. Крім того, дана АЦП містить у своєму складі ГТІ, компаратор напруг, буферний регістр з трьма станами (0, 1, високий імпенданс), РПП, ЦАП, логічні схеми керування і синхронізації, чого немають у своєму скдаді інші перераховані мікросхеми. Вона побудована таким чином, що АЦП забезпечує основні умови спряження з МП: 1) довжина цифрового слова на виході перетворювача відповідає довжині слова базових типів ВІС МП; 2) керування його роботою здійснюється безпосередньо сигналами від МП з мінімальними апаратними і програмними затратами; 3) часові характеристики АЦП добре співпадають з часовими характеристиками більшостів ВІС МП; 4) цифрові виходи перетворювача допускають пряме підключення до вхідних портів і шини даних МП. Логічні схеми керування і синхронізації регламентують весь процес перетворення і узгодження АЦП з зовнішніми пристроями. ГТ обслуговує процес перетворення і обміну даними. Ддя роботи АЦП потрібно ІОН, однополярне живлення та декільна регістрів. Ucc=4,75-5,25. Робоча тактова частота генератора 500 кГц задається зовнішніми RC елементами. Номерація і опис виводів: 1-3 – цифрові виводи 4-2; 4 – цифровий вивід 1; 5 – вивід стану [pic]; 6 – вхід кеоування [pic]; 8 – вхід тактування CLK; 9 – цифрова земля DGND; 10 – напруга джерела живлення Ucc; 11 – опорна напруга UREF; 12 – вхід зміщення характеристик BOFS; 13 – аналоговий вхід ULEF; 14 – аналогова земля AGND; 15 – цифровий вхід 8; 16-18 – цифрові виходи 7-5. Мікросхема АЦП здатна працювати з внутрішнім так і зовнішнім ГТІ. Алгоритм перетворення АЦП реалізується за допомогою регістра послідовних наближень, який включає регістер зсувів і регістра пам’яті на RS-тригерах. В ньому виконується операція порозрядного зсуву логічної одиниці у напрямку від старших розрядів до молодших, збереження результату перетворення і порозрядного запису стану КН при порівнянні вхідної аналогової напруги АЦП з напругою на виході ЦАП. Логічні схеми керування і синхронізації регламентують вест процес перетворення і узгодження АЦП з зовнішніми пристроями з їх допомогою при появі зовнішніх сигналів [pic] формуються сигнали внутрішнього керуваня: скидання, початок перетворення, управління буферним регістром і вихідним сигналом[pic]. По сигналу скидання АЦП встановлюється у вихідний стан, при якому в РПП записаний код 10…00. По сигналу початку перетворення запускається внутрішній асинхронний ГТІ, який обслуговує проце перетворення і обміну даними. При часовому співпадінні вище перерахованих сигналів формується сигнал керування регістром з логікою на три стани. Внутрішнє ГТІ побудоване таким чином, що по сигналу запуска перший від’ємний перепад тактового імпульса встановлює старший розряд у відповідний стан, після чого без додаткових часових витрат починається обробка інформації у другому розряді і т.д.. Часові характеристики ІС: o час встановлення АЦП у початковий стан – 2 мкс; o час затримки зчитування даних – 120 нс; o час затримки скидування даних – 80 нс. |7 |M00:|MVI A, 90H |;ініціалзація ВВ355 | |10 | |OUT 0A3H | | |7 | |MVI A, 9H |;запуск АЦП | |10 | |OUT 0A3H | | |7 | |Mvi A, 8H | | |10 | |OUT 0A3H | | |16 | |LHLD YNP2 |;занесення в HL значення Yn-2 в комірку | |13 |M0: |LDA C0 |пам’яті | |17 | |CALL MULL88 |;занесення в аккумулятор байту а1 з пост. | |17 | |CALL CMP |Комірки | |16 | |SHLD CYNP |;множення c0 * Yn-2 | |16 |M3: |LHLD YNPL |;перетворення c0 * Yn-2 в доповнюючий код | |13 | |LDA B0 |;запис добутку c0 * Yn-2 в пам’ять для | |17 | |CALL MULL88 |зберігання | |17 | |CALL CMP |;занесення в HL значення Yn-1 в пам’ять | |16 | |SHLD BYNP |;занесення в регістр А байту число b0 з | |16 |M4: |LHLD XNL |пам’яті | |13 | |LDA A0 |;множення b0*Yn-1 | |17 | |CALL MULL88 |;перетворення b0*Yn-1 в доповнюючий код | |17 | |CALL CMP |;запис добутку b0*Yn-1 в пам’ять для | |5 | |MOV B, H |зберігання | |5 |M5: |MOV C, L |;запис в HL значення Xn з комірки пам’яті | |10 | |LXI H, CYNP |;запис в аккумулятор байт коеф. | |17 | |CALL ADSIG |;множення а0*Xn | |13 | |LDA BYNP |;перетворення в доповнюючий код | |5 | |MOV C, A |;значення добутку а0*Xn в доповнюючому | |13 | |LDA BYNP + 1 |;коді в регістрову пару BC | |5 | |MOV B, A |;занесення в HL, добутку c0*Yn-2 в доп. | |17 | |CALL ADSIG |коді | |16 | |LHLD CYNP |;а0*Xn + c0*Yn-2 результат в М | |5 | |MOV A, H |;занесення в регістрову пару BC b0*Yn-1 | |7 | |ANI 7FH | | |4 | |CMA | | |5 | |MOV H, A |;додавання b0*Yn-1 результату Yn в доп. | |5 | |MOV A, L |коді | |4 | |CMA |;Yn ( HL (результат був в комірці для | |5 | |MOV L, A |c0*Yn-2) | | | | | | | | | | | | | | | | | | | |;Перетворення Yn (який знаходиться в доп. | | | | |коді) | | | | |;в код для виводу на ЦАП | | | | | | |13 | |LDA AXNP+l |;Перетворення Yn в код у якому значення Yn | |10 | |JP M15 |;зберігається в пам’яті | |5 | |MOV B, H | | |5 | |MOV C, L | | |10 | |JMP M16 | | |13 |M15:|LDA CYNP |;Занесення значення Yn в комірку пам’яті | |5 | |MOV C, A |для Yn-1 | |13 | |LDA CYNP+l | | |5 | |MOV B, A | | |5 | |MOV A, C | | |13 |M16:|STA YNPL | | |5 | |MOV A, B | | |13 | |STA YPPH | | |5 | |MOV A, L | | |7 | |ANI 01H |;Вивід в розряд C6 каналу С молодшого | |10 | |JZ M7 |розряду Y0 ;результату Yn | |7 | |MVI A, 07H | | |10 | |JMP M8 | | |7 | |MVI A, 0CH | | |10 | |JMP M10 | | |7 |M7: |MVI A, 0EH |;Вивід в канал B розрядів Y2…Y9 результату | |10 | |OUT 0A3H |;наступним чином | |5 |M10:|MOV A, L |;Y0 ( B0 | |7 | |ANI FCH |;Y1 ( B1 | |5 | |MOV L, A |;Y2 ( B2 | |5 | |MOV A, H |;Y3 ( B3 | |7 | |ANI 01H |;……………… | |4 | |ADD L |;Y7 ( B7 | |5 | |MOV L, A | | |5 | |MOV A, H | | |10 | |JM M 11 | | |7 | |MVI A, 02H | | |4 | |ADD L | | |10 | |JMP M12 | | |5 | |MOV A, L | | |10 | |0UT 0A2H | | |7 | |MVI A, 08H |;Вивід логічного 0 розряд С4 каналу С для | |10 |M11:|OUT 0A3H |дозволу ;перетворення АЦП | |10 | |JMP M0 |;перехід на початок | | |M12:| | | | | | | | | | | | | | | | | | Назва програми |Кількість тактів, необхідних для виконнаня програми |Число виконань даної програми за один цикл |Кількість тактів, за цикл виконання програми | | |Основна |717 |1 |717 | |програма | | | | |MULL88 |95 |3 |285 | |OP |108 |1 |108 |