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

1 SIGNALNA KUTIJA

2 RE[ENIE NA PROBLEMOT

2.1 OPIS NA PROBLEMOT

2.2 PROGRAMSKO RE[ENIE

2.3 KORISTEWE NA lg4310.exe

ZAKLU^OK

DODATOK lg4310.asm

1. SIGNALNA KUTIJA

Svojstva na 8255 vlezno izlezna karta kako osnova na signalnata kutija se:

-programibilni vlezno izlezni kontrolni funkcii,

-vlezno izlezni linii,

-maksimum 2MHz 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.

2. RE[ENIE NA PROBLEMOT

Vo ovaa glava e opi{an problemot, algoritmot za negovo re{avawe i programskoto re{enie.

2.1 OPIS NA PROBLEMOT

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.

 

2.2 PROGRAMSKO RE[ENIE

 

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 0FFH, 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.

 

 

 

2.3 KORISTEWE NA lg4310.exe

Programata raboti taka {to koga prekinuva~ot R2S0 e nagore broi, a prekinuva koga prekinuva~ot R2S0 e nadolu.

ZAKLU^OK

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.

 

Dodatok: lg4310.asm

 

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