Univerzalno 24-bitno sučelje

Velika je prednost ovog sučelja (sa univerzalnim U/I čipom 8255) koje se može nabaviti u Chipoteci na Bukovačkoj cesti u Zagrebu (kat.br. 750 1000 130) za svega 378 kuna (uključen PDV !!) ili kod Miroslava Kocijana, projektanta računala "Orao" (telefon broj 042 232 735 ili 042 350 432) što se može potpuno programski odrediti, hoće li mu svih tri 8-bitnih registara biti ulazno, izlazno ili kombinirano - u omjeru ulaz-izlaz od 8:16, 12:12 ili 16:8. O tome odlučuje postavljanje nekoliko bita u četvrtom registru čija je adresa n+3, gdje je n heksadecimalna adresa na koju je setirana kartica, u gornjem slučaju 200. Bitovi 2,5,6 i 7 moraju biti postavljeni kao na donjoj slici:

(Kako se upravlja gornjim registrom iz običnog BASIC programa možete vidjeti iz primjera na kraju ovog teksta!)
Najjednostavniji način spajanja ulaza u računalo jest pomoću otpornika koji trajno drže ulazne signale u položaju "1", tako da jednostavnim spajanjem kontakta na masu dobijamo kontrolni signal kao što je prikazano na donjoj slici:

Zbog mogućih smetnji (ali i zbog sigurnosti) strahovito je važno da imamo odvojene strujne krugove računala i naše robotske konstrukcije. kao što je to prikazano na gornjoj slici. Pošto 25-pinski konektor kartice imade samo 24 pina plus uzemljenje, bilo je potrebno dodati poseban priključak za +5 volti sa zaštitnom diodom i otpornikom od 100 ohma prema donjoj slici:

Takav spoj omogućuje nam da načinimo specijalan priključni kabel na koji se mogu uključivati do tri standardna robotska sučelja opisana ovdje ili do tri ulazna sučelja prema gornjoj shemi :

Najjednostavniji sklopovi za testiranje ulaza i izlaza iz ovog sučelja izgledaju ovako:

Naravno - sve će vam biti jasnije kada vidite QBASIC program za testiranje ulaza i izlaza ove kartice:
' Testiranje 8255 I/O
kartice (QBASIC, Mak'95)
ADR = &H240 ' Ovo je osnovna adresa. (Kontrolni registar je
na ADR+3)
' Registar A je na adresi ADR. Registri B i C su na ADR+1 i
ADR+2.
start: SCREEN 0: CLS
PRINT " Želite li testirati ulaze ili izlaze u računalo
?": PRINT
INPUT " Izvolite birati : (U/I) : "; a$
IF a$ = "U" THEN GOTO ULAZ
IF a$ = "u" THEN GOTO ULAZ
IF a$ = "I" THEN GOTO IZLAZ
IF a$ = "i" THEN GOTO IZLAZ
GOTO start
IZLAZ: '----------------------- "MODE 0 OUT" TEST
-----------------------------
' (Sve su izlazi!)
PRINT : PRINT : COLOR 10: PRINT " IZLAZI": COLOR 13
PRINT " ---------- "
PRINT " Port A --- "
PRINT " ---------- "
PRINT " Port B --- "
PRINT " ---------- "
PRINT " Port C --- "
PRINT " ---------- "; : COLOR 11: PRINT "
(Ctrl-Break za kraj)"
OUT (ADR + &H3), &H80 ' Kontrolni registar za "MODE
0 OUT"
opet: FOR uzorak = &H0 TO &HFF ' Binarno odbrojavanje
(0-255) ...
OUT (ADR + &H0), uzorak ' PORT A
OUT (ADR + &H1), uzorak ' PORT B
OUT (ADR + &H2), uzorak ' PORT C
LOCATE 8, 17: COLOR 14: PRINT uzorak
LOCATE 10, 17: PRINT uzorak
LOCATE 12, 17: PRINT uzorak
FOR i = 1 TO 6000: NEXT i ' Da stvar ne ide prebrzo ...
LOCATE 8, 17: PRINT " "
LOCATE 10, 17: PRINT " "
LOCATE 12, 17: PRINT " "
NEXT uzorak
GOTO opet ' Za sada testiramo samo izlaz iz raźunala ...
'
ULAZ: '-------------------------- "MODE 0 IN" TEST
---------------------------- (Sve su ulazi!)
PRINT : PRINT : COLOR 10: PRINT " ULAZI": COLOR 13
PRINT " ----------- "
PRINT " Port A ---- "
PRINT " ----------- Ne možete očekivati da ulazi"
PRINT " Port B ---- budu stabilni ako ne spojite"
PRINT " ----------- PULL-UP ili PULL-DOWN otpore!)"
PRINT " Port C ---- "
PRINT " ----------- "; : COLOR 11: PRINT "
(Ctrl-Break za kraj)"
OUT (ADR + &H3), &H9B ' Kontrolni registar za "MODE
0 IN"
test: PORTA = INP(ADR + &H0) ' PORT A
PORTB = INP(ADR + &H1) ' PORT B
PORTC = INP(ADR + &H2) ' PORT C
' Naravno, sada bi trebalo vidjeti što je u PORTA, PORTB i PORTC
...
LOCATE 8, 17: COLOR 14: PRINT PORTA
LOCATE 10, 17: PRINT PORTB
LOCATE 12, 17: PRINT PORTC
FOR i = 1 TO 4000: NEXT i ' Vremenski razmak među očitanjima !
LOCATE 8, 17: PRINT " "
LOCATE 10, 17: PRINT " "
LOCATE 12, 17: PRINT " "
GOTO test