|
|
Taal:
|
|
Technische specificaties:
Er zijn drie types DIGOUT geïmplementeerd op dezelfde print:
Voor de drie types DIGOUT wordt dezelfde print gebruikt met een verschillende bestukking per type.
Subroutines: (voorbeeld middels een programma)
Om met dit demonstratie programma te kunnen werken moeten er 8 lampjes aangesloten worden op de DIGOUT-print aansluit-terminal. Door telkens één lampje te verbinden met de punten O0 t/m O7 en de GND aansluiting zal na het 'runnen' van dit programma na een overeenkomstige input de lampjes gaan branden, (voor aansluitingen zie tekening)
Dit programma is geschreven voor MSX-computers, maar kan op zeer eenvoudige wijze aangepast worden voor andere computers. (P2000 en PC).
Hoofdzaak is dat u het werken met Subroutines onder de knie krijgt, Het bestuderen van het programma geeft al een juiste indruk over het werken met subroutines.
Voor de lampjes kan men bijvoorbeeld zogenaamde fietslampjes nemen van 4,5 - 5 Volt. De externe voeding kan dan betrokken worden uit een ‘platte’ 4,5 Volt batterij.
In regel 220 wordt het kaartnummer geselecteerd.
In regel 230 wordt de data-bus geladen met 0. (Omdat men nog niet weet welke waarde een output-bit zal hebben maken we eerst de output-bits spanningsloos, Zie programmering: 'Let op’)
In regel 240 wordt naar de subroutine gesprongen.
In de regels 480 t/m 500 staat de uiteindelijke subroutine en in regel 510 springt men terug naar het hoofd-programma.
Na een input vanaf het toetsenbord wordt in regel 450 de subroutine aangeroepen en geladen met de waardes verkregen uit de input (G1)
10 | 'Voorbeeld UNIFACE DIGOUT |
20 | ' |
30 | '8 output |
40 | ' |
50 | CLS |
60 | WIDTH 37 |
70 | KEY OFF |
80 | PRINT" UNIFACE OUTPUT" |
90 | PRINT" =============" |
100 | |
110 | PRINT" Dit is een van de vele " |
120 | PRINT" mogelijkheden van UNIFACE" |
130 | |
140 | PRINT" Door een getal in te geven." |
150 | PRINT" (0 t/m 255) kan men de acht." |
160 | PRINT" uitgangen adresseren." |
170 | FOR P=1 TO 9 |
180 | |
190 | NEXT P |
200 | PRINT" -> maak uw Keuze ( 0 t/m 255 ) <-" |
210 | ' |
220 | KA=16 : 'Kaartnummer |
230 | G1=0 : 'Data |
240 | GOSUB 480 : 'Aanroep Bedieningsroutine |
250 | ' |
260 | LOCATE 0,12 |
270 | PRINT " Bit 0 1 2 3 4 5 6 7 " |
280 | PRINT " +-+-+-+-+-+-+-+" |
290 | PRINT USING " Data | | | | | | | | | | => ###"; G1 |
300 | PRINT " +-+-+-+-+-+-+-+" |
310 | A=8 |
320 | A$=RIGHT$(BIN$(G1 XOR 256),8) |
330 | FOR K=1 TO 15 STEP 2 |
340 | LOCATE K+7,14 |
350 | P$=MID$(A$,A,1) |
360 | PRINT P$ |
370 | A=A-1 |
380 | NEXT K |
390 | LOCATE 16,22 |
400 | PRINT " " |
410 | LOCATE 10,22 |
420 | LINE INPUT "Data: ";G1$ : 'Data ingeven |
430 | G1=VAL(G1$) |
440 | IF G1<0 OR G1>255 THEN 390 |
450 | GOSUB 480 |
460 | GOTO 260 |
470 | ' |
480 | OUT 48,G1 : 'Zet data op de databus |
490 | OUT 49,255-KA : 'Adresseren van de kaart |
500 | OUT 49,0 : 'Reset Kaartadress |
510 | RETURN |