Організація звертання до пристроїв обміну іеформації буде реалізована у вигляді роздільного керування пам’ятю і зовнішніми пристроями. Лиш тільки дві команди IN і OUT, в цьому випадку, призначені для обміну інформації з зовнішніми пристроями. Так, як для цих команд адрес для зовнішнього пристрою 8-ми розрядний, то МП КР580ВМ80 може звертатись до 256 пристроїв воду і 256 пристроїв виводу. При цьому адресний простір пам’яті буде максимальним (64К).
Опишемо розміщення коефіцієнтів та змінних в адресному просторі
Адреса в пам’яті | Назва параметра | Тип пам’яті |
0000h | RST 0 | ПЗП |
0008h | RST 1 | |
0010h | RST 2 | |
0018h | RST 3 | |
0020h | RST 4 | |
0028h | RST 5 | |
0030h | RST 6 | |
0038h | RST 7 | |
500h | SP | ОЗП |
501h | а0 | |
502h | а1 | |
503h | а2 | |
504h | b0 | |
512h | Xn-2 | |
514h | Xn-1 | |
516h | Xn | |
518h | Yn-1 | |
520h | Yn |
3.3 Алгоритм функціонування МПП
Як відомо, ввід інформації від АЦП може здійснюватися одним з двох способів:
1) програмним опитуванням, при якому ініціатором обміну є мікропроцесор, періодично опитуючи готовність даних;
2) режимі переривань, при якому готовність даних формує сигнал переривання для МП, в результаті чого МП переходить на підпрограму обробки переривання (ввід інформації від АЦП).
Реалізація переривання можлива або з використанням команди RST N, або з використанням контролера переривань КР580ВН59. В двійковій формі команда RST N має вигляд:
1 1 К2 К1 К0 1 1 1
де К2 К1 К0 - двійковий код числа N.
При використанні цієї команди за сигналом «Готовність даних» від АЦП на шині даних повинен бути сформований код команди RST N. Цю команду можна легко згенерувати – розряди, які дорівнюють 1, отримуються підключенням лінії даних через резистор до +5 В, а код К2К1К0 можна отримати від шифратора на 3 лінії з 8.
Після того, як сигнал «Готовність даних» поступає на вхід синхронізації тригера відбувається перехід від “0” до “1” і дані з входу D (“1”) передаються на вихід Q, який з’єднаний з виводом запиту переривання INT мікропроцесора. Очевидно, що ця зміна відбувається коди на вході “R” (виводі INTE) сигнал має рівень “1”, тобто переривання дозволено. Після цього мікропроцесор переходить до підпрограми обробки переривання, яка зчитує дані з портів ППІ і заносить їх в пам’ять попередньо заборонивши переривання. По завершенню роботи підпрограми обробки переривання мікропроцесор повертається до виконання головної програми, в які опрацьовуються дані зчитані обробником переривання.Потім результат записується в пам’ять і в порти виводу на ЦАП, в кінці програми дані підготовлюються для наступного повторення операцій, тобто на місце Xn-1 записується Xn, на місце Xn-2 записується Xn-1, на місце Yn-1 Записується Yn.
Блок-схема алгоритму функціонування МПС
Блок-схема підпрограми обробки переривань
4. Загальна структура програми роботи МПП
4.1 Опис програми вводу, виводу
В даній схемі використуваються два контроллери КР580ВВ55 (ППІ) з наступними адресами:
Перша ППІ (підключена до АЦП) | Друга ППІ (підключена до ЦАП) | ||
Порт А | 80h | Порт А | 90h |
Порт B | 81h | Порт B | 91h |
Порт C | 82h | Порт C | 92h |
РКС | 83h | РКС | 93h |
Для запуску АЦП (сигнал Гашення/Перетворення) будемо використовувати розряд C0 каналу С.
Ввід-вивід інформації буде здійснюватися в режимі 1 роботи ППІ через канал А та В.
Спочатку треба ініціалізувати дві ППІ для цього виконуємо
1 | 0 | 1 | 1 | 1 | 1 | 1 | 0 |
MVIA,10111110B; запрограмували режим 1 для портів А та В на ввід.
OUT083H
1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 |
MVIA,10101100B
OUT093H;запрограмували режим 1 для портів 2-ої ППІ на вивід
Щоб запустити АЦП необхідно використати слово маніпуляції біта, в якому в розрядах D3-D1 задається номер біта порта С, а в розряді D0 – значення яке необхідно туди записати.Ознакою слова маніпуляції біта є нуль в найстаршому розряді, розряди D6-D4 – не використовуються для слова маніпуляції біта.
Тепер запускаємо АЦП
MVIA,00000000B;встановити в „0” старший розряд каналу С
OUT083H
MVIA,00000001B; встановити в „1” старший розряд каналу С
OUT083H
Після того як АЦП перетворить вхідний сигнал у 12-розрядний двійковий код буде сформовано сигнал „Готовність даних” який через тригер встановить сигнал INT=1, аце означає що почне виконуватися обробник переривання, код якого через буферний регістр буде виставлений на шину даних . Програма обробки переривання запише дані з портів А і В ППІ у комірки пам’яті і керування повернеться до головної програми.
Текст програми обробки переривання:
IRQ:
DI;заборона переривань, щоб цей обробник не був перерваний
PUSHB
PUSHD
PUSHH
PUSHPSW
IN80H; зчитуємо з порта А в акумулятор
STA516H; записуємо у пам’ять молодший байт Xn
IN81H; зчитуємо з порта В в акумулятор
ANI0FH; виділяємо 4 молодші біти з каналу В які є 9 ,10,11 i 12 розрядом Xn
STA517H;записуємо у пам’ять старший байт Xn
POPPSW
POPB
POPD
POPH
IRET
Програма виводу інформації на ЦАП буде викликатись в кінці кожного циклу обчислення Yn і її текст виглядає так :
VYVID:
LDA520H; завантажуємо в акумулятор молодший байт результату
OUT90H; виводимо в канал А
LDA521H; завантажуємо в акумулятор старший байт результату
ANI3FH;обнулення 14 і 15 бітів
OUT91H; виводимо в канал В
RET
4.2 Опис програми обробки інформації
Програма обробки інформації влючає в себе підпрограми множення 8-розрядного числа на 16-розрядне, підпрограму сумування добутків, що розміщені у стеку.
Підпрограма множення двобайтового числа на однобайтове без знаку.
Вхідні дані: регістр DE – множене; акумулятор A - множник.
Результати: регістри A,H,L- добуток (A – старші розряди; L - молодші).
Підпрограма використовує регістр C.
DMULT: LXI H,0
MVI D,0
MVI C,8
Z1: DAD H
RLC
JNC Z2
DAD D
Z2: DCR C
JNZ Z1
RET
Підпрограма сумування 16-розрядних чисел розміщених у стеку
Вхідні дані: вказівник стеку
Результати: регістри H,L
SUM:
POPB;зберігаємо адресу повернення з підпрограми
POPH;витягуємо зі стеку a0*Хn-1
POPD; витягуємо зі стеку b2*Xn-2
DADD; додаємо b0*Хn-1 + a2*Xn-2
POPD;витягуємо a1*Xn-1
DADD; додаємо b0*Хn-1 + a2*Xn-2+ a1*Xn-1
POPD; витягуємо a0*Xn
DADD; додаємо b0*Хn-1 + a2*Xn-2+ a1*Xn-1+ a0* Xn
JNC M1
MOVA,H
RAR
MOVH,AЗсовуємо результат додавання на 1 розряд вправо якщо
MOVA,Lвиник перенос при додаванні
RAR
MOVL,A
M1:
MOVA,H
STC
CMC
RAR
MOVH,A
MOVA,LЗсув результату на 2 розряди вправо
RARдля утворення даних, що прередаватимуться
MOVL,Aна ЦАП
STC
CMC
RAR
MOVH,A
MOVA,L
RAR
MOVL,A
PUSHB; відновлюємо адресу повернення
RET
Текст головної програми цифрової обробки інформації
ORG100H
MVIA,a0
STA501H
MVIA,a1
STA502H
MVIA,a2
STA503H
MVIA,b0
STA504H
LXIH,0
SHLD512H
SHLD514H
SHLD516H
SHLD518H
SHLD520H
LXISP,500H
MVIA,10111110B
OUT083H
MVIA,10101100Bініціалізація двох ППІ
OUT093H
START:
MVIA,00000000B
OUT82H
MVIA,00000001Bзапуск АЦП
OUT82H
LDA501H
LHLD516H
XCHG
CALL DMULT
MOVL,H
MOVH,A
PUSHH; зберігаємо у стеку результат множення a0* Хn
LDA502H
LHLD514H
XCHG
CALL DMULT
MOVL,H
MOVH,A
PUSHH; зберігаємо у стеку результат множення a1* Хn-1
LDA503H
LHLD512H
XCHG
CALL DMULT
MOVL,H
MOVH,A
PUSHH; зберігаємо у стеку результат множення a2* Хn-3
LDA504H
LHLD518H
XCHG
CALL DMULT
MOVL,H
MOVH,A
PUSHH; зберігаємо у стеку результат множення b0* Yn-1
CALLSUM
SHLD520H; записуємо Yn у пам’ять
CALLVYVID
LHLD520H; тоді зсув параметрів у пам’яті Yn->Yn-1
SHLD518H
LHLD514H; Xn-1 -> Xn-2
SHLD512H
LHLD516H; Xn -> Xn-1
SHLD514H
EI; дозвіл переривання
HLT; зупинка процесора поки не викличеться підпрограма обробки
; переривання і запише нове Xn
JMPSTART
4.3 Оцінка верхньої фінітної частоти вхідного аналогового сигналу
Кількість тактів, за які виконується програма, зведені в таблицю:
Таблиця
Назва програми | Кількість тактів, необхідних для виконнаня програми | Число виконань даної програми за один цикл | Кількість тактів, за цикл виконання програми |
Основна програма | 566 | 1 | 566 |
DMULT | 475 | 3 | 1425 |
Обробник переривання | 151 | 1 | 151 |
SUM | 206 | 1 | 206 |
Загальна тривалість | 2348 |
Теорема Котельникова:
Будь-який сигнал, який має скінчений спектр, може бути без втрат перетворений у цифрову форму і потім відтворений за відліками цього дискретного сигналу при умові:
Для виконання програми необхідно всього тактів N=2031. Для максимальної частоти f=2.5МГц для МП KР580ВМ80, частота видачі інформації fвид=2,5МГц/2348=1064,74 Гц