Click here to load reader
Upload
martin-taleski
View
154
Download
1
Embed Size (px)
Citation preview
Аудиториски вежби по микропроцесорски системи
Александар Симевски 1/8
Задачи по микропроцесорски системи – I дел –
Зад.1. Секои 30ms од изолирана порта со адреса 0Ah се чита податок. Ако битовите 2 и 5 се 1 и
0 соодветно, на мемориски‐пресликана порта на адреса F00Ah се испраќа прочитаниот податок поделен со 2, инаку се испраќа прочитаниот податок помножен со 7. Фреквенцијата на кристалот на осцилаторот е 5MHz.
if (bit 2==1) and (bit 5==0) (F00Ah) <– Data/2 else (F00Ah) <– Data*7
РЕШЕНИЕ:
fosc = 5MHz Tosc = 0,2 µs ; Периодот е 1/f. Работниот период е 2 пати поголем. Ts = 2Tosc = 0,4µs DOCNI_1: MVI D,178d ; 14 циклуси x 0,4 µs= 5,6 µs x 178= 1 ms DOCNI: DCR D ; 4 циклуси JNZ DOCNI ; 10 циклуси RET DOCNI_30: MVI E,30d ; 30 пати по 1 ms = 30 ms DOCNI_1: MVI D,178d ; јамка за 1 ms DOCNI: DCR D JNZ DOCNI DCR E JNZ DOCNI_1 RET START: CALL DOCNI_30 ; доцнење од 30 ms IN VLEZNA ; се вчитува податокот од I/O уред на адр. OAh MOV B,A ANI 00100000b ; се проверува 5-тиот дали е 0 JNZ MNOZI_SO_7 ; ако резултатот ≠ нула скокни на MNOZI_SO_7 MOV A,B ORI 11111011b ; се проверува дали битот 2 е единица CPI FFh ; ACC се споредува со FFh JNZ MNOZI_SO_7 ; доколку не е 0 се скока на mnozi_so_7 DELI_SO_2: MOV A,B ; исполнети се двата услови RRC ; ACC се дели со 2 STA IZLEZNA ; резултатот се запишува на Mm порта JMP START ; безусловен скок на почеток
Аудиториски вежби по микропроцесорски системи
Александар Симевски 2/8
MNOZI_SO_7: MVI C,7d ; множењето е реализирано со собирање MVI A,0 PAK: ADD B DCR C JNZ PAK STA IZLEZNA ; резултатот се запишува на F00Ah JMP START END VLEZNA EQU OAh IZLEZNA EQU F00Ah
Зад.2. Да се иницијализира компонентата 8156 така да RAM‐от го зафаќа просторот 4800h–
48FFh. Портата А да се иницијализира како стробирана влезна порта, а B како обична излезна. Тајмерот брои поворка од кратки импулси со T = 1ms. ( f = 4MHz ). РЕШЕНИЕ:
А15 А14 А13 А12 А11 32к 16к 8к 4к 2к 0 1 0 0 1
Адресите на командно/статусниот регистар, портите и тајмерот се: CSR 01001 000 PA 01001 001 TLSB 01001 100 PB 01001 010 TMSB 01001 101 PC 01001 011
Аудиториски вежби по микропроцесорски системи
Александар Симевски 3/8
T = 0,25 µs, Ts = 0,5 µs; 1 ms = 2000 * 0,5 µs; 2000 = 7*256+208
Вредносите кои треба да се запишат во командно/статусниот регистар и тајмерот се: TMSB 11000111 ; 199 TLSB 11010000 ; 208 CSR 11010110 ; D6h
MVI A, 208d OUT TLSB MVI A, 199d OUT TMSB MVI A, D6h OUT CSR END CSR EQU 01001000 TMSB EQU 01001101
TLSB EQU 01001100 Зад.3. Да се проектира решение за раскрсница со помош на семафори, да се предложи
минимално хардверско решение (име на компонента).
РЕШЕНИЕ:
Ц (Ѕ1) Ж (Ѕ1) З (Ѕ1) Ц (Ѕ2) Ж (Ѕ2) З (Ѕ2) Ц (Р1) Ц (Р2) 0 0 1 1 0 0 1 0 1 мин. 0 1 0 1 0 0 1 1 3 сек. 1 0 0 1 1 0 1 1 3 сек. 1 0 0 0 0 1 0 1 1 мин. 1 0 0 0 1 0 1 1 3 сек. 1 1 0 1 0 0 1 1 3 сек. 0 0 1 1 0 0 1 0 1 мин.
S1 S2
P1
P2
Аудиториски вежби по микропроцесорски системи
Александар Симевски 4/8
Доволен е ROM 8355 START: MVI H, LIGHT
MVI L, LOC ; можеше и LXI H, LIGHT LOC MOV A, M ; се вчитува првата локација од ROM OUT PORTA ; се праќа на соодветна I/O порта CALL DOCNI_1MIN ; се повикува процедура за доцнење од 1 минута INX H ; зголеми го HL парот за 1 (наредна локација) MOV A, M ; се вчитува втората локација од ROM OUT PORTA ; се праќа на соодветна I/O порта CALL DOCNI_3SEC ; се повикува процедура за доцнење од 3 секунди
- - - - - - - - - - - - - - - - - -
MOV A, M ; се вчитува првата локација од ROM OUT PORTA ; се праќа на соодветна I/O порта CALL DOCNI_3SEC ; се повикува процедура за доцнење од 3 секунди JMP START ; на почеток на првобитната состојба на семафорот END
Зад.4. Да се напише еквивалентна асемблерска програма на соодветната C програма:
void main() { const int N = 30; int x[50], y[50], z[50]; for (int i = 1; i <= N; i++) { z[i] = 10; x[i] = 4*y[i]; } }
РЕШЕНИЕ:
ADRX DS 50 ; декларација на поле ADRX со 50 елементи ADRZ DS 50 ; декларација на поле ADRZ со 50 елементи ADRY DS 50 ; декларација на поле ADRY со 50 елементи N DS 1 ; дефинирање на еднобајтна променлива N
MVI A, 30d ; иницијализација на N на 30 STA N LXI B, ADRZ ; BC регистарскиот пар се полни со адресата на ADRZ LXI D, ADRY ; DE регистарскиот пар се полни со адресата на ADRY LXI H, ADRX ; HL регистарскиот пар се полни со адресата на ADRX
VRTI: MVI A, 10d STAX B ; се сместува 10 како елемент на полето ADRZ
; (индиректно преку BC)
Аудиториски вежби по микропроцесорски системи
Александар Симевски 5/8
LDAX D ; во ACC се вчитува елементот од ADRY полето
; (индиректно преку DE) RLC ; множење со 4 RLC MOV M, A ; тоа што е во ACC се сместува во полето ADRX
; (индиректно преку HL) INX B ; BC покажува на наредниот елемент од полето ADRZ INX D ; DE покажува на наредниот елемент од полето ADRY INX H ; HL покажува на наредниот елемент од полето ADRX LDA N DCR A ; намали го бројачот за 1 STA N
JNZ VRTI ; се додека бројачот е различен од 0 END
Зад.5. Два уреди за најава на комуникација со µP користат иста прекидна линија. Да се нацрта реализација на овој систем при што едниот уред е надреден (MASTER) во однос на другиот.
РЕШЕНИЕ:
Зад.6. Да се прикаже потребното хардверско поврзување кое ќе овозможи да се генерира
прекин од тип RST 7 при појава на прекин на линијата INTR на µP 8085. РЕШЕНИЕ:
Аудиториски вежби по микропроцесорски системи
Александар Симевски 6/8
Opcode на RST: 1 1 1 n n n 1 1
Зад.7. Од изолирана порта на адреса 0Ah се чита низа на податоци и на локација SUMA_PAR се
сместува вкупниот број на парни броеви. За време на работата може да се појави прекин од повисок приоритет која на локација SUMA_PAR додава 3. Да се нацрта хардверско поврзување и напише соодветна асемблерска програма. РЕШЕНИЕ:
2Ch: CALL PRIMI_DATA 34h: CALL DOJDE_POVISOK RET RET RST 5.5 RST 6.5
Иницијализација Главна програма END
Аудиториски вежби по микропроцесорски системи
Александар Симевски 7/8
Зад.8. За регулирање на гужва во услужна установа е проектиран систем каде шалтерски
работник со притискање на тастер ја најавува својата расположливост, а на дисплеј чија природа е небитна се прикажува бројот на шалтерот и бројот на корисникот кој е на ред. Во установата има два шалтера. Корисниците броевите ги добиваат на влез и во еден ден нема повеќе од 255 корисника. Да се нацрта минимално хардверско поврзување и да се напише соодветна асемблерска програма базирана на µP 8085A.
РЕШЕНИЕ:
MVI A,0 ; реден број на корисникот STA RDN_BR
MVI E,255d VRTI: MOV A,E ; јамка за 255 корисника ANI FFh JNZ VRTI ; сите интерапти се случуваат тука HLT ; крај на програмата END
RDN_BR DS 1 ; променлива што го чува редниот број на ; корисникот
; има само 4B меморија наменета за интерапт ; рутините(што е премалку), па затоа ; се повикува процедура (CALL = 3B, RET = 1B)
Аудиториски вежби по микропроцесорски системи
Александар Симевски 8/8
2Ch: CALL SERVIS_55 ; на адреса 2Ch, наменета за RST 5.5 RET 34h: CALL SERVIS_65 ; на адреса 34h, наменета за RST 6.5 RET SERVIS_55: MVI A,1 ; на дисплеј се испишува бројот на шалтер OUT 01h LDA RDN_BR ; се вчитува редниот број на корисникот INR A ; се зголемува за 1, се запишува во соодветната
; мемориска локација и се испишува на вториот ; дисплеј
STA RDN_BR OUT 02h DCR E ; еден корисник помалку RET SERVIS_65: MVI A,2d ; на дисплеј се испишува бројот на шалтер OUT 01h LDA RDN_BR ; се вчитува редниот број на корисникот INR A ; се зголемува за 1, се запишува во соодветната
; мемориска локација и се испишува на вториот ; дисплеј
STA RDN_BR OUT 02h DCR E ; еден корисник помалку RET