UNIVERZITET "Sv. Kiril i Metodij"
Prirodno matemati~ki Fakultet - Skopje
Institut za Informatika
Binaren broja~ na
signalna kutija
Seminarska rabota po predmetot
Mikroprocesori i mikrokompjuteri
Izrabotil: \or|ina Lazova
Mentor: d-r Marjan Gu{ev
Skopje, fevruari 1998
REZIME
Vo ovaa seminarska rabota e razgledan problemot za realizacija na binaren broja~. Kako displej e upotrebena portata 1S na 8255 programibilnata vlezno/izlezna karti~ka. Programata koja rakovodi so signalnata kutija e napi{ana vo asembler koj najmnogu odgovara za taa cel.
ABSTRACT
The binary counter is realised in this seminar project. The port 1C, of the programmable I/O card is used as a display. The program that controls the signal box is written in assembler, the most appropriate for this purpose.
SODR@INA
lg4310.exeDODATOK
lg4310.asm1.
SIGNALNA KUTIJASvojstva na 8255 vlezno izlezna karta kako osnova na signalnata kutija se:
-programibilni vlezno izlezni kontrolni funkcii,
-vlezno izlezni linii,
-maksimum 2
MHz frekvencija na odbrojuvawe,-tri nezavisni 16 bitni broja~i,
-poddr`uva nekolku programibilni operacioni re`imi,
-
LED indikatori za vreme na v/i operacii,-selektivni adresi na portite.
8255A e
PPI (programmable peripheral interface) ured dizajniran za upotreba so RS kompatibilni sistemi. Negovata funkcija e realizirawe na vlezno izlezni operacii pome|u periferni edinici i kompjuterski sistem. Funkcionalnata konfiguracija na 8255A mo`e da se programira so pomo{ na sistemski softver, pa ne e potrebna dodatna nadvore{na kontrolna logika.8255A sodr`i tri 8-bitni porti A, V i S.
Portata A mo`e da raboti kako 8-bitna v/i vo re`im 0, 1 i 2.
Portata V mo`e da raboti kako 8-bitna v/i vo re`im 0 i 1.
Portata S mo`e da raboti kako 8-bitna v/i vo re`im 0 i 1.
Signalnata kutija za 8255 se sostoi od signalni sijalici, sedum segmenten displej i prekinuva~i povrzani so soodvetnite porti od 8255A ~ipovite.
Vo ovaa glava e opi{an problemot, algoritmot za negovo re{avawe i programskoto re{enie.
Problemot se sostoi vo realizacija na binaren broja~, a kako displej e upotrebena portata 2S. Algoritmot za re{avawe e sledniot:
Broevite {to se ispra}aat na portata 2S se smesteni vo registarot SH. Na po~etokot vo nego se smestuva nula, se ispra}a na portata i ponatamu pred sekoe ispra}awe na vrednost na portata se zgolemuva vrednosta na SH za eden. Broeweto odi se dodeka ne se dostigne najgolemata vrednost {to mo`e da se pretstavi na displejot. Potoa dokolku programata ne se prekine so postavuvawe na prekinuva~ot R2S0 nadolu se po~nuva povtorno od nula.
Sleduva podetalno objasnuvawe na programata
lg4310.asm .Vo programata se koristat slednite makroa:
@Send MACRO ?Port, ?Value
MOV DX, ?Port
MOV AL, ?Value
OUT DX, AL
ENDM
Slika 1. Makro za ispra}awe vrednost na portata.
So makroto
Send pretstaveno na slikata br.1 se ispra}a vrednost na portata so instrukcijata OUT. Pritoa vrednosta prethodno mora da se smesti vo registerot AL.
@Receive MACRO ?Port
MOV DX, ?Port
IN AL, DX
ENDM
Slika 2.Makro za prezemawe na vrednost od portata.
Makroto
Receive pretstaveno na slika br.2 prezema vrednost od portata i ja smestuva vo registerot AL so pomo{ na instrukcijata IN. Se koristi za kontrola na prekinot na programata.
@Display MACRO txt
MOV DX, OFFSET txt
MOV AH, 09H
INT 21H
ENDM
Slika 3. Makro za pe~atewe tekst na ekranot.
Makroto
Display pretstaveno na slika br.3 povikuva soodvetna devetta funkcija za softverski prekin 21N od MS DOS operativniot sistem za pe~atewe na tekst na ekranot. Pri toa vrednosta 9 {to se postavuva vo registerot AN go nosi redniot broj na sistemskata funkcija, a registerot DX e poka`uva~ na tekstot {to treba da se otpe~ati.
@Brisi MACRO
MOV CX,0
MOV DX,2479H
MOV BH,7
MOV AX,600H
INT 10H
ENDM
Slika 4. Makro za bri{ewe na ekranot.
Makroto
Brisi pretstaveno na slika br.4 vr{i bri{ewe na ekranot so skrolirawe na cel ekran nadolu.
Poc2:
@Receive Port2C
SHR AX,1
JNC Kraj
Slika 5. Programski segment za kontrola na prekinot.
Programskiot segment pretstaven na slika br.5 proveruva dali prekinuva~ot R2S0 e postaven nadolu. Dokolku e, programata zavr{uva.
CMP CH, br2 ; proveruva dali vrednosta smestena vo CH e pomala
JB Nap ; od OFFH.
XOR CH, CH ; dokolku e pocnuva da broi povtorno od nula
JMP Prikaz
Nap:
INC CH
Prikaz:
;Prikaz na broj na displej
MOV broj, CH
@Send Port1C, broj
Slika 6. Realizacija na broja~ot.
Programskiot segment pretstaven na slika br.6 e vsu{nost realizacija na broja~ot. Vo SN na po~etokot e smestena nula. Se proveruva dali vrednosta na SN e pogolema od 0
FFH, dokolku e broja~ot povtorno po~nuva da broi od nula. Vo sprotivno se ispra}a na portata vrednosta na SN, a potoa vrednosta se zgolemuva za eden. Vo ovoj slu~aj koga se raboti so portata 1S kako displej rabotata e olesneta poradi toa {to portata avtomatski binarno ja pretstavuva vrednosta {to }e i se isprati heksadecimalno.
PUSH CX ;oddeleniot segment e za pauza
PUSH AX ;najprvo se zacuvuvaat vrednostite na CX i AX
XOR AX, AX
Ciklus: MOV CX, 60000
Nisto: NOP ; se dodeka vrednosta vo AX ne dostigne 5
LOOP Nisto ; instrukcijata NOP se izvrsuva po 60000 pati
INC AX
CMP AX, 5
JNE Ciklus
POP AX ; se obnovuvaat sodrzinite ne AX i CX
POP CX
JMP Poc2
Slika 7. Programski segment za pauza pome|u dva posledovatelni broja pri broeweto.
Vo programskiot segment pretstaven na slika br.7 pauzata pome|u dva posledovatelni broja se realizira so pomo{ na instrukcijata
NOP. Ovaa instrukcija trae tri vremenski takta i se izvr{uva pove}e pati so pomo{ na ciklus.
Kraj:
MOV AL, 0
MOV AH, 4CH
INT 21h ;DOS funkcija QUIT
Slika 8. Programski segment za kraj na programata.
Programskiot segment pretstaven na slika br.8 povikuva sistemska funkcija za softverskiot prekin 21N so reden broj 4SN od operativniot sistem
MS-DOS za oznaka na funkcija so koja {to regularno se zavr{uvaat programite.
Programata raboti taka {to koga prekinuva~ot R2S0 e nagore broi, a prekinuva koga prekinuva~ot R2S0 e nadolu.
Ovaa seminarska rabota go re{ava problemot za realizacija na binaren broja~ na signalnata kutija zasnovana na 8255 programibilnata vlezno-izlezna karti~ka. Mo`e da se konstatira deka mo`nostite na ovaa karta se mo{ne golemi i pokraj nejzinata ednostavnost. Celta na ovaa seminarska rabota e da se prika`e rabotata na signalnata kutija so standardnata 8255 karta i pretstavuva dobro iskustvo vo programiraweto na vakvi sli~ni uredi.
TITLE DOMASNA
COMMENT* 8255 I/O card testing program *
@Send MACRO ?Port, ?Value ;Makro za prenesuvanje na vrednosta Value od AL
MOV DX, ?Port ;vo portata Port
MOV AL, ?Value
OUT DX, AL
ENDM
@Receive MACRO ?Port ;Makro za kopiranje na sodrzinata na
MOV DX, ?Port ;portata Port vo AL.Se koristi pri kon-
IN AL, DX ;trolata za prekinuvanje na programata
ENDM
@Display MACRO txt ;Prikaz na txt na ekran
MOV DX, OFFSET txt
MOV AH, 09H
INT 21H
ENDM
@Brisi MACRO ;Makro za brisenje na ekranot
MOV CX,0
MOV DX,2479H
MOV BH,7
MOV AX,600H
INT 10H
ENDM
Stack SEGMENT STACK
DB 128 DUP('?')
Stack ENDS
Data SEGMENT
port1A DW 1B0H
port1B DW 1B1H
port1C DW 1B2H
Control1 DW 1B3H
port2A DW 1B4H
port2B DW 1B5H
port2C DW 1B6H
Control2 DW 1B7H
Predmet DB ' MIKROPROCESORI I MIKROKOMPJUTERI','$'
Student DB ' izraboti: LAZOVA GORGINA','$'
Poraka DB 'Programa za binaren brojac na napred ','$'
Poraka1 DB 'Kontrolata se izveduva so prekinuvacot PC20 taka sto','$'
Poraka2 DB 'koga prekinuvacot e gore programata e startuvana,','$'
Poraka3 DB 'a koga prekinuvacot e dole programata se prekinuva.','$'
NOVRED DB 13,10,'$'
char DB ?
init1 DB 80H
init2 DB 89H
br1 DB 00H
br2 DB 0FFH
broj DB ?
Data ENDS
Code SEGMENT
ASSUME CS:Code, DS:Data, SS:Stack
Poc:
MOV AX, Data
MOV DS, AX ;Postavuvanje na pocetnata adresa
;na Data vo DS
@Brisi
MOV CX, 0005H
Pak:
@Display NOVRED ;Za ispisuvanje na prazni redovi
DEC CX
CMP CX, 0000H
JG Pak
Naslov:
@Display NOVRED
@Display Predmet
@Display NOVRED
@Display Student
@Display NOVRED
@Display NOVRED
@Display Poraka
@Display Poraka1
@Display Poraka2
@Display Poraka3
Poc1:
@Send Control1, init1 ;inicijalizacija na dvata cipa
@Send Control2, init2
Poc2:
@Receive Port2C ;kontrola na prekinuvacot PC20
SHR AX,1
JNC Kraj
;Brojac napred
CMP CH, br2 ; proveruva dali vrednosta smestena vo CH e pomala
JB Nap ; od OFFH
XOR CH, CH ; dokolku e pocnuva povtorno da broi od nula
JMP Prikaz
Nap:
INC CH
Prikaz:
;Prikaz na broj na displej
MOV broj, CH
@Send Port1C, broj
PUSH CX ; Oddeleniot segment e za pauza
PUSH AX ; najprvo se zacuvuvaat vrednostite na CX i AX
XOR AX, AX
Ciklus: MOV CX, 60000
Nisto: NOP ; se dodeka vrednosta vo AX na dostigne 5
LOOP Nisto ; instrukcijata NOP se izvrsuva po 60000 pati
INC AX
CMP AX, 5
JNE Ciklus
POP AX ; se obnovuvaat sodrzinite na AX i CX
POP CX
JMP Poc2
Kraj:
MOV AL, 0
MOV AH, 4CH
INT 21h ;DOS funkcija QUIT
Code ENDS
END Poc