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

T2V 28.12.

2018

01. Duke filluar nga momenti t1 mikrokontrolleri i ekzekuton keto instruksione:


MOV A, P1
CLR 091H
CLR 0A1H
INC 90H
SETB 092H
Cila eshte permbajtja binare e portit P1 ne fund te programit. Para fillimit permbajtja e portit P1 ka
qene (P1)=00010011B.

Zgjidhje:

MOV A, P1 vendos vleren 00010011B ne akumulator


CLR 091H ben 0 bitin e dyte te P1, pra P1 tani eshte 00010001B
CLR 0A1H nuk ndikon ne P1
INC 90H rrit P1 per 1, pra P1 tani eshte 00010010B
SETB 092H ben 1 bitin e trete te P1, pra P1 tani eshte 00010110B

Pergjigja: (P1)=00010110B

02. Eshte dhene programi (frekuenca e oscilatorit eshte 36MHz):


MOV 30H, #00000010B
MOV R7, #01H
LOOP:
MOV A, R7jk
DJNZ R7, LOOP
DJNZ 30H, LOOP

a) programi i ka 12 bajta
b) vlera e regjistrit A ne fund eshte e njohur
c) koha e ekzekutimit do te jete 257.0 µs
ç) DJNZ R7, LOOP do te ekzekutohet 257 here
d) permbajtja e regjistrit 30H ne fund do te jete 255

Zgjidhje:

TMCY = 12/fosc = 12/36MHz = 0.334 µs

a)
MOV direct, #data 3 bajt 2 cikle
MOV Rn, #data 2 bajt 1 cikel
MOV A, Rn 1 bajt 1 cikel
DJNZ Rn, rel 2 bajt 2 cikle
DJNZ direct, rel 3 bajt 2 cikle
Total 11 bajt, a) eshte e pasakte

b) sakte, vlera e A ne fund do te jete 1

c) e pasakte, programi do te ekzekutohet per 778 cikle te makines, qe eshte ekuivalente me 259.334
µs
ç) sakte

d) e pasakte, vlera ne 30H ne fund do te jete 0

03. Instruksioni: Loop: JZ Loop eshte i vendosur ne memorie duke filluar nga 4321H

a) si jane bajtat e instruksionit te dhene ne hex


b) nese PC=4321H instruksioni i ardhshem qe do te ekzekutohet eshte NOP
c) nese PC=4321H instruksioni i ardhshem qe do te ekzekutohet nuk eshte NOP
ç) nese PC=4322H instruksioni i ardhshem qe do te ekzekutohet nuk eshte MOV R7, A
d) nese PC=4322H instruksioni i ardhshem qe do te ekzekutohet eshte MOV R6, A

Zgjidhje:

a) JZ rel ka enkodimin 01100000 eeeeeeee ku e paraqet bitat e kercimit relativ. Kur vie te
instruksioni JZ Loop se pari inkrementohet per 2 PC, pra ka vleren 4323H, pastaj relative offset per
tu kthyer tek loop do te jete -2. Kjo paraqitet si signed integer, pra si 2-komplementi i numrit 2.
00000010
11111101 1K
11111110 2K
Pra bajtat e instruksionit ne hex do te jene 60 FE

b) e pasakte, per PC=4321H instruksioni i rradhes eshte JZ Loop

c) sakte

ç) sakte

d) pasakte

04. Gjendja e regjistrave te procesorit 8051 eshte si vijon (vlerat jane ne HEX)

Regjistri Vlera Regjistri Vlera


14 12 SP 11
13 34 PC 8210
12 56 A F0
11 78
10 9A

a) pas ekzekutimit te MOV P3, A vlera e PC do te jete 8213


b) pas ekzekutimit te RET vlera e A do te jete F0
c) pas ekzekutimit te RET vlera e PC do te jete 789A
ç) pas ekzekutimit te RET vlera e SP do te jete 05
d) adresa e fillimit te instruksionit te ardhshem eshte 0210

Zgjidhje:

a) e pasakte, MOV direct, A eshte instruksion 2 bajtesh, qe do te thote PC inkrementohet per 2, pra
nga 8210 behet 8212
b) sakte, RET nuk ndikon ne A

c) sakte, SP pointon ne adresen 11H, pas RET, SP dekrementohet per 2 dhe vlerat e adresave 11H
dhe 10H vendosen ne PC

ç) pasakte, vlera e SP zbritet per 2, pra SP=0F

d) pasakte, PC pointon ne adresen e ardhshme qe eshte 8210

05. Timer 0 duhet te punoj si "interval timer" ne modin 8-bit autoreload dhe Timer 1 si numerues
16-bitesh me kontroll nga sinjali i jashtem. Te shkruhet programi perkates per konfigurimin e timer-
eve dhe fillim te punes se tyre.

Zgjidhje:

MOV TMOD, #11010010B ose MOV TMOD, #0D2H


SETB TR0
SETB TR1

06. Ne regjistrin IE (Interrupt Enable) eshte shkruar vlera 1001 1001 (99H)

a) Interrapti i portit serik do te aktivizohet pas pranimit te karakterit


b) Interrapti i Timer 1 do te aktivizohet pas kalimit nga vlera maksimale ne zero
c) Interrapti i portit serik do te aktivizohet pas pranimit por jo pas dergimit te bajtit
ç) Interrapti i Timer 2 nuk eshte i mundesuar
d) Interrapti i hyrjes se jashtme INT0 nuk eshte i mundesuar

Zgjidhje:

a) sakte, vlera e bitit 4 te IE eshte 1 qe aktivizon serial port interrupts (Gjithashtu biti 7 i IE eshte 1
qe aktivizon interruptat globalisht)

b) sakte, vlera e bitit 3 te IE eshte 1 qe aktivizon timer 1 interrupts

c) pasakte, interrupti i portit serik aktivizohet ne te dyja rastet

ç) sakte, vlera e bitit 5 te IE eshte 0 qe do te thote se timer 2 interrupts nuk jane aktivizuar

d) pasakte, vlera e bitit 0 te IE eshte 1 qe aktivizon external 0 interrupts

07. Ne portin 0 eshte lidhur treguesi 7-segmentesh ashtu qe "0" ne bitin perkates e ndez segmentin
perkates (P0.0-a, P0.1-b, P0.2-c, P0.3-d, P0.4-e, P0.5-f, P0.6-g, P0.7-DP). Te gjitha lokacionet e
memories se brendshme kur perdoren si burim e kane permbajtjen te barabarte me adresen e tyre
(p.sh. (23H)=23H).

a) Pas MOV P0, @R0 ne tregues ndizet shkronja 8.


b) Pas MOV P0, 46H ne tregues ndizet shkronja C
c) Instruksioni MOV 80H, #00H nuk mund ta ndryshoj gjendjen e treguesit
ç) Pas MOV 90H, 7FH ne tregues ndezet 8
d) Nese ne tregues ka qene i ndezur 8 pas MOV P0, 8 do te jete i ndezur 8
Zgjidhje:
a) sakte, R0 gjendet ne adresen 00H qe ka vlere 00H, pra @R0 eshte ekuivalent me 00H.
00H=00000000B qe ndez te gjithe indikatoret dhe ndizet "8."
b) e sakte, 46H=01000110B, ndizen segmentet a, d, e, f, DP. Keto formojne shkronjen C
c) e pasakte, 80H eshte adresa e P0, vlera #00H do te ndez te gjithe segmentet pra mund ta ndryshoj
gjendjen e treguesit.
ç) e pasakte, 90H eshte adresa e P1 e cila nuk ndikon ne indikator.
d) e pasakte, 8 ne binar eshte 00001000 qe nuk formon numrin 8

08. Nese fosc=10.24MHz te shkruhen instruksionet me te cilat konfigurohet qe porti serik te punoi ne
shpejtesine 9600 bps. Komunikimi te kryhet me interrapte. Sa do te jete shpejtesia reale e fituar dhe
gabimi i shprehur ne perqindje?

Zgjidhje:
10.24MHz/(12 * 32 * 9600) = 2.778 =~ 3
MOV TMOD, #20H
MOV TH1, #0FFH-3
MOV SCON, #40H
MOV IE, #90H
SETB TR1
Shpejtesia reale = 10.24MHz/(12 * 32 * 3 ) = 8888.89 bps
Gabimi ne perqindje = (|9600 - 8888.89| / 9600) * 100% = 7.4%

09. Te shkruhet programi i cili ne portin serik e pranon nje rresht me karaktere ASCII i cili
perfundon me CR+LF (ASCII kodi i CR dhe LF). Pas cdo rreshti nese teksti i rreshtit te pranuar
eshte AT do te kthehet pergjigja >OK e pasuar me CR+LF. Ne te gjitha rreshtat tjere dergohet > e
pasuar me CR+LF, me perjashtim te atyre te zbrazet kur dergohet vetem CR+LF.
Zgjidhje:
ORG 0000H
LJMP Main

ORG 0023H
CLR RI
LJMP SPISR

Main:
MOV R0, #30H
MOV IE, #90H
MOV SCON, #50H
SJMP $

SPISR:
MOV A, SBUF
MOV @R0, A
CJNE A, #0AH, Pjesa1
DEC R0
CJNE @R0, #0DH, Pjesa2
LJMP Kontrollimi

Pjesa1:
INC R0
RETI

Pjesa2:
INC R0
INC R0
RETI

Kontrollimi:
CJNE R0, #30H, Kontrollimi2
MOV A, #0DH
MOV SBUF, A
JNB TI, $
CLR TI
MOV A, #0AH
MOV SBUF, A
JNB TI, $
CLR TI
RETI

Kontrollimi2:
DEC R0
CJNE @R0, #'T', Kontrollimi3
DEC R0
CJNE @R0, #'A', Kontrollimi3
CJNE R0, #30H, Kontrollimi3
MOV A, #3EH
MOV SBUF, A
JNB TI, $
CLR TI
MOV A, #'O'
MOV SBUF, A
JNB TI, $
CLR TI
MOV A, #'K'
MOV SBUF, A
JNB TI, $
CLR TI
MOV A, #0DH
MOV SBUF, A
JNB TI, $
CLR TI
MOV A, #OAH
MOV SBUF, A
JNB TI, $
CLR TI
RETI

Kontrollimi3:
MOV A, #3EH
MOV SBUF, A
JNB TI, $
CLR TI
MOV A, #0DH
MOV SBUF, A
JNB TI, $
CLR TI
MOV A, #0AH
MOV SBUF, A
JNB TI, $
CLR TI
MOV R0, #30H
RETI
END

10. Te shkruhet programi i cili e kryen shumezimin e 2 numrave 2-bajtesh duke perdorur
instruksionin MUL. Adresa e LSB per numrat qe shumezohen eshte e ruajtur ne R0 dhe R1.
Rezultati ruhet ne adresat 40H deri 43H.
Zgjidhje:
Supozojme se adresa e MSB per numrat gjenden ne R2 respektivisht R3
Pra numri i pare R0R2 dhe numri i dyte R1R3

MOV A, R0
MOV B, R1
MUL AB
MOV 40H, A
MOV 41H, B
MOV A, R0
MOV B, R3
MUL AB
MOV 42H, B
ADDC A, 41H
MOV 41H, A
MOV A, R2
MOV B, R1
MUL AB
ADDC A, 41H
MOV 41H, A
MOV A, B
ADDC A, 42H
MOV 42H, A
MOV A, R2
MOV B, R3
MUL AB
ADDC A, 42H
MOV 42H, A
MOV A, B
ADDC A, #00H
MOV 43H, A

You might also like