Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 9

Задачи по Микропроцесори

-I дел-
1. Секој 30ms од изолирана порта со адреса 0Ah се чита податок. Ако
битовите 2 и 5 се 1 и 0 соодветно на мемориска пресликана порта на
адреса F00Ah се испраќа прочитаниот податок поделен со 2, инаку се
испраќа прочитаниот податок помножен со 7. Фреквенцијата на
кристалот на осцилаторот е 5MHz.

If bit 2,5==1,0
F00Ah Data/2
Else
F00Ah Data*7

Решение:

fosc=5MHz
Tosc=0,2 µsec ;Периодата е 1/f. Работната периода е 2 пати поголема.
Ts=2Tosc
Ts=0,4µsec

DOCNI_1: MVI D,178d ;14 циклуси x 0,4 = 5,6 микросекунди x 178= 1ms
DOCNI: DCR D ;4 циклуси
JNZ DOCNI ;10 циклуси
RET

DOCNI_30: MVI E,30d ; 30 пати по 1 ms = 30 ms


DOCNI_1: MVI D,178d ; јамка за 1ms
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 ; исполнети се двата услови

1
RRC ; ACC се дели со 2
STA IZLEZNA ;резултатот се запишува на Mm порта
JMP START ;безусловен скок на почеток
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. Да се иницијализира компонентата 8155/56 така да RAM-от зафаќа


простор 4800h–48FFh. Портата А да се иницијализира како стробирана
влезна порта, а B како обична излезна. Тајмерот брои поворка од
кратки импулси со T = 1ms. (f=4MHZ).
РЕШЕНИЕ:

А15 А14 А13 А12 А11


32к 16к 8к 4к 2к
0 1 0 0 1

2
CSR 01001 000
PA 01001 001
PB 01001 010
PC 01001 011
TLSB 01001 100
TMSB 01001 101

T=0,25 microsec, Ts = 0,5 microsec; 1 ms = 2000 * 0,5 microsec; 2000 = 7*256+208

TMSB 11000111
TLSB 11010000 CSR
11010110

MVI A, 208d CSR EQV 01001000

3
OUT TLSB TMSB EQV 01001101 MVI A, 199d TLSB EQV
01001100
OUT TMSB
MVI A, D6h
OUT CSR
END

3. Да се проектира решение за раскрсница со помош на семафори, да се


предложи минимално хардверско решение (како име на компонента).

P2

S2 S1

P1

РЕШЕНИЕ:

ЦЦ Ж З Ц Ж З Ц

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

Доволен е ROM 8355


START MVI H,LIGHT
MVI L, LOC ;можеше и LXI H, LIGHT LOC
MOV A,M ; се вчитува првата локација од ROM
OUT PORTA ; се праќа на соодветна I/O порта

4
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 = 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)
LDAX D ;во ACC се вчитува елементот од ADRY полето (индиректно преку DE)
RLC ; множење со 4
RLC
MOV M,A ;тоа што е во ACC се сместува во полето ADRX (индиректно преку HL)
INX B ;BC покажува на наредниот елемент од полето ADRZ
INX D ;DE покажува на наредниот елемент од полето ADRY

5
INX H ;HL покажува на наредниот елемент од полето ADRX
LDA N
DCR A STA N ;намали го бројачот за 1.

JNZ VRTI ;се додека бројачот е различен од 0.

5. Два уреди за најава на комуникација со µP користат иста прекидна


линија. Да се нацрта компјутерска реализација на овој систем при што
едниот уред е надреден MASTER во однос на другиот.
РЕШЕНИЕ:

6. Да се прикаже потребното хардверско поврзување кое ќе овозможи


при појава на прекин на линијата INTR на µP 8085 да се генерира
прекин од тип RST 7.
РЕШЕНИЕ:

1 1 1 n n n 1 1

6
7. Од изолирана порта на адреса 0Ah се чита низа на податоци и на
локација SUMA_PAR се сместува вкупниот број на парни броеви. За
време на работата може да се појави прекин од повисок приоритет
која на локација SUMA_PAR додава 3. Да
се нацрта хардверско поврзување и напише соодветна асемблерска
програма.

Иницијализација
Главна програма RET RET
END
2Ch: CALL
PRIMI_DATA 34h:CALL DOJDE_POVISOK

RST 5.5 RST 6.5

8. За регулирање на гужва во услужна установа е проектиран систем каде


шалтерски работник со притискање на тастер ја најавува својата
расположливост, а на дисплеј чија природа е небитна се прикажува
бројот на шалтерот и бројот на корисникот кој е на ред. Во установата
има два шалтера. Корисниците броевите ги добиваат на влез и во еден
ден нема повеќе од 255 корисника. Да се нацрта минимално
хардверско поврзување и да се напише соодветна асемблерска
програма базирана на µP 8085A.
РЕШЕНИЕ:

7
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)

2Ch: CALL SERVIS_55 ;на адреса 2Ch, наменета за RST 5.5


RET
34h: CALL SERVIS_65 ;на адреса 34h, наменета за RST 6.5
RET

SERVIS_55: MVI A,1 ;на дисплеј се испишува бројот на шалтер

8
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

You might also like