Univerzitet "Sv. Kiril i Metodij"

Prirodno-matemati~ki Fakultet-Skopje

Institut za Informatika

SEMINARSKA RABOTA

Tekst skrol na signalna kutija

predmet: Mikroprocesori i Mikrokompjuteri

izrabotil: Blagoj \uzelov

mentor: d-r Marjan Gu{ev

Skopje, fevruari 1997

S O D R @ I N A


Ovaa seminarska rabota go razgleduva problemot koj e od estetski karakter. Imeno se raboti za “te~ewe” (skroluvawe) na odreden tekst na displejot od karti~kata koja e povrzana na 8255 programabilnata vlezno/izleznata karta. Bidej}i se raboti za cifroven osumsegmenten displej mo`nostite se ograni~eni no sepak celta na ovaa seminarska rabota e da se prika`at mo`nostite na vlezno/izleznata karta, mo`nostite na signalnata kutija kako i povrzanosta so kompjuterskiot sistem. Programata koja rakovodi so signalnata kutija e izrabotena vo asembler koj e najpogoden za ovaa prigoda.


1. SIGNALNA KUTIJA
1.1 Opis na signalnata kutija
1.2 Opis na problemot
2. PROGRAMSKO RE[ENIE
2.1 Algoritam
2.2 Programa za signalnata kutija
ZAKLU^OK
PRILOG 1: Listing na programata

1. SIGNALNA KUTIJA

Ovde }e se zadr`ime na opis na signalnata kutija kako i toa kako taa komunicira so kompjuterskiot sistem preku 8255 programabilnata vlezno/izlezna karta. Isto taka }e bide prilo`ena idejata za re{avawe na problemot.

1.1 Opis na signalnata kutija

Signalnata kutija se sostoi od ~etiricifren LED displej (sekoj e so po osum segmenti) i ima red od osum LE-diodi i red od osum prekinuva~i koi se povrzani so soodvetnite porti so 8255A ~ipovite kako {to e napi{ano na samata kutija. Izgledot na kutijata e prika`an na slika 1.

Slika 1: Izgled na Signalna kutija

Zna~i, ako na portata 1S se prati odreden bajt vo odnos na nego }e se prika`e odreden znak na mestoto za prvata cifra od displejot. Znakot na osumsegmentniot displej vo odnos na isprateniot bajt 76543210V se formira kako na {emata prika`ana na slika 2.

Slika 2: Osumsegmenten LED displej

Od seto ovaa se zaklu~uva deka na portite 1A, 1V, 1S, 2A i 2V mo`e da se ispra}aat bajtovi za da formirame razli~en prikaz, a isto taka mo`e da se “pro~ita” sostojbata na prekinuva~ite na portata 2S so prevzemawe na eden bajt od taa porta. Iako navidum dosta ednostavna ovaa signalna kutija nudi dosta golemi mo`nosti, a del od niv se prika`ani tokmu vo ovaa seminarska rabota...

1.2 Opis na problemot

Problemot se sostoi vo slednovo: se zadava odreden tekst koj potoa treba da se ispra}a na displejot od signalnata kutija taka da izgleda kako toj tekst da “te~e” od desno kon levo t.e. tekstot da skroluva po displejot od kutijata. Poradi toa {to se raboti za cifroven displej (digit display) site bukvi od abecedata ne }e mo`at da se prika`at na nego poradi toa se gubi efektot. Dosta golem broj od niv imaat soodvetna implementacija na gorenavedenite sedum segmenti (ne smetaj}i ja LE-diodata koja slu`i za ozna~uvawe na decimalnata to~ka).

Re{enieto bi bilo dadeniot tekst da se prika`uva na delovi sostaveni od po ~etiri bukvi taka {to sukcesivnite delovi se razlikuvaat za po edna bukva. Vsu{nost seta rabota e vo prika`uvawe na odredeniot del od tekstot koj vo dadeniot moment e vidliv i pravewe na mala pauza. Od goleminata na pauzata zavisi i brzinata so koja }e “te~e” tekstot, t.e. glatkosta na te~eweto na skrolot.

2. PROGRAMSKO RE[ENIE
2.1 Algoritam

Algoritamot se sostoi vo slednovo: tekstot {to treba da se skroluva se vnesuva od neposredniot korisnik, potoa zapo~nuva ciklusot na skrol koj se povtoruva se dodeka prekinuva~ot R2S7 e vo dolna polo`ba (polo`ba 0).

Vo ovoj ciklus se oddeluvat ~etiri znaci od tekstot koi treba da se prika`at (po odreden redosled t.e. vo prviot cilus prvite ~etiri znaci od tekstot, vo sledniot tie ~etiri znaci se:vtoriot, tretiot, ~etvrtiot i petiot znak itn.), istite se pretvaraat vo soodvetni kodovi koi se ispra}aat na displejot i na kraj se pravi pauza. Pauzata e funkcija od polo`bata na prekinuva~ite R2S, t.e. od soodvetniot broj koi istite go formiraat vo binaren broen sistem, zna~i neposredniot korisnik sam si ja regulira brzinata na skroluvawe na tekstot. Vo programata e dodadeno i palewe i gasewe na LE-diodite na portata R1S vo t.n. “pliva~ko svetlo” i toa so brzina ednakva na brzinata na “skroliraweto” na tekstot na displejot.


2.2 Programa za signalnata kutija

Programata e izrabotena vo asembler kako najprikladen za ovaa rabota. Najprvo }e zapo~neme so opis na makro komandite koi se koristat vo istata!

Makroata @Zemi i @Send slu`at za zemawe i ispra}awe na bajt od i kon soodvetnite porti koi se naveduvaat kako parametri:

@Send MACRO ?Port, ?Value
mov DX, ?Port
mov AL, ?Value
out DX, AL
ENDM

Makroto @Vadi slu`i za pretvarawe na soodvetniot znak koj treba da se prika`e na portata pri {to vo nizata bukvi se smesteni bajtovite koi odgovaraat na soodvetnite prtstavuvawa na bukvite od abecedata na osumsegmentniot displej:

@Vadi MACRO br mov AH,0
mov AL,br
mov SI,AX
mov CX,OFFSET bukvi+[SI]
ENDM

Sledniov programski segment prika`uva edna bikva na edna od portite poto~no na portata 1A (ovoj segment se povtoruva ~etiri pati, za sekaja porta posebno):

c1:
mov al,poz
mov AH,0
mov SI,AX
mov CX,OFFSET ispis+[SI]
mov pb,CL
sub pb,65
@Vadi pb
mov znak,CL
@Send Port1A, znak

inc poz
mov AH,0
mov AL,1
mov SI,AX
mov CX,OFFSET ispis+[SI]
mov BH,CL
mov AH,poz
add BH,1
cmp AH,BH
jbe c2
mov poz,2

Kako prilog sledi celosen listing na programata vo asembler.

ZAKLU^OK

Za kraj mo`eme da konstatirame deka mo`nostite na 8255 programabilnata vlezno/izlezna karta se dosta golemi i pokraj nejzinata ednostavnost. No sepak za poseriozni upotrebi postojat i drugi karti i uredi koi mo`at da se priklu~at na odreden kompjuterski sistem so {to dosta se zgolemuvaat mo`nostite. Celta na ovaa seminarska rabota be{e da se prika`e rabotata na signalnata kutija so standardnata 8255 karta koja e vo sotstav na sekoj RS-kompatibilen kompjuterski sistem. Programata raboti dosta solidno duri i na kompjuterski sistem so procesor Intel 80286.


Prilog 1: Listing na programata za skrol na signalnata kutija za MASM
@Display MACRO txt
mov DX, OFFSET txt
mov AH, 09H
int 21H
ENDM

@Zemi MACRO port
mov DX, port
in AL, DX
ENDM

@Send MACRO ?Port, ?Value
mov DX, ?Port
mov AL, ?Value
out DX, AL
ENDM

@Vadi MACRO br
mov AH,0
mov AL,br
mov SI,AX
mov CX,OFFSET bukvi+[SI]
ENDM

Stack SEGMENT STACK
DB 64 DUP(?)
Stack ENDS

Data SEGMENT

znak DB ?
port DW ?
poraka DB 'Program by Blagoj Guzelov',13,10,'$'
P1 DB 'Vnesete go tekstot koj sakate da vi skroluva:',13,10,'$'
P2 DB '(Napomena: Vo predvid doagaat samo bukvite',13,10, '$'
P3 DB ' A,B,C,D,E,F,G,H,I,J,L,O,P,S,U,V,Y,Z',13,10,'$'
P4 DB '--->$';
novred DB 13,10,'$'
bukvi DB 01110111B, 01111111B, 00111001B, 00111111B, 01111001B, 01110001B,
DB 00111101B, 01110110B, 00110000B, 00011110B, 0, 00111000B, 0, 0, 00111111B,
DB 01110011B,0,0,01101101B 0,00111110B,00111110B,0,0,01101110B,01011011B
led_znaci DB 00010001B, 00100010B, 01000100B, 10001000B
port1A DW 1B0H
port1B DW 1B1H
port1C DW 1B2H
Control1 DW 1B3H
port2A DW 1B4H
port2B DW 1B5H
port2C DW 1B6H
Control2 DW 1B7H
ispis DB 255 ; Rezervirame memorija za string
DB 0 ; so dolzina 255 karakteri
DB 255 DUP (0) ; pocetna dolzina 0
led DB ?
poz DB ?
pb DB ?

Data ENDS

Code SEGMENT
ASSUME CS:Code, DS:Data

Start:
mov AX,data
mov DS,AX
@Display poraka
@Display p1
@Display p2
@Display p3
@Display p4

mov DX, OFFSET ispis
mov AH, 0AH
int 21H

@Send Control1, 80H ;Inicijalizacija
@Send Control2, 89H ;na Portite
mov led, 0
mov poz, 2

pak: mov AX, 0000H ;Pocnuvanje na skrol
@Zemi port2C
mov znak, AL
and AL, 10000000B ;Proverka na on/off taster
cmp AX, 0000H
je cont

mov AL,0 ;
mov AH,4Ch ; DOS f-ja za kraj
int 21h ;
cont:
mov AH,0
mov AL,1
mov SI,AX
mov CX,OFFSET ispis+[SI]
mov BH,CL
mov AH,poz
add BH,1
cmp AH,BH
jbe c1
mov poz,2
c1:
mov al,poz
mov AH,0
mov SI,AX
mov CX,OFFSET ispis+[SI]
mov pb,CL
sub pb,65
@Vadi pb
mov znak,CL
@Send Port1A, znak


inc poz
mov AH,0
mov AL,1
mov SI,AX
mov CX,OFFSET ispis+[SI]
mov BH,CL
mov AH,poz
add BH,1
cmp AH,BH
jbe c2
mov poz,2
c2:
mov al,poz
mov AH,0
mov SI,AX
mov CX,OFFSET ispis+[SI]
mov pb,CL
sub pb,65
@Vadi pb
mov znak,CL
@Send Port1B, znak

inc poz
mov AH,0
mov AL,1
mov SI,AX
mov CX,OFFSET ispis+[SI]
mov BH,CL
mov AH,poz
add BH,1
cmp AH,BH
jbe c3
mov poz,2
c3:
mov AL,poz
mov AH,0
mov SI,AX
mov CX,OFFSET ispis+[SI]
mov pb,CL
sub pb,65
@Vadi pb
mov znak,CL
@Send Port2A, znak

inc poz
mov AH,0
mov AL,1
mov SI,AX
mov CX,OFFSET ispis+[SI]
mov BH,CL
mov AH,poz
add BH,1
cmp AH,BH
jbe c4
mov poz,2
c4:
mov al,poz
mov AH,0
mov SI,AX
mov CX,OFFSET ispis+[SI]
mov pb,CL
sub pb,65
@Vadi pb
mov znak,CL
@Send Port2B, znak

mov AH, led
mov bh, 3
cmp AH,BH
jbe c5
mov led,0
c5:
mov al,led
mov AH,0
mov SI,AX
mov CX,OFFSET led_znaci+[SI]
mov znak,CL
@Send Port1C, znak
inc led

dec poz
dec poz
mov CX,3000H ;pauza
pauza:
@Zemi Port2C
mov AH, 0
p: dec AX
cmp AX, 0000H
jg p
loop pauza

jmp pak

Code ENDS
END Start

;THE END