Układ do eksperymentów z portem szeregowym

Poniżej przedstawiam układ, który można wykorzystać do doświadczeń z portem szeregowym komputera. Podane numery końcówek portu dotyczą gniazda DB-25.

Po podłączeniu tego układu do komputera, możemy włączać lub wyłączać odpowiednie diody poprzez zmiany wartości na porcie szeregowym. Do tego celu można wykorzystać prosty program o nazwie 'QBASIC'.

Po wpisaniu poniższych listingów można uzyskać bardzo ciekawe efekty.

Listing 1

DECLARE SUB p ()
DECLARE SUB d ()
DECLARE SUB t ()
DECLARE SUB r ()
10 CLS
20 r: d: SLEEP 1: r: p: t: SLEEP 1: r
30 GOTO 20

SUB d
abp = &H2E8
OUT (abp + 4), 2
END SUB

SUB p
abp = &H2E8
OUT (abp + 4), 1
END SUB

SUB r
abp = &H2E8
OUT (abp + 4), 0
OUT (abp + 3), 0
END SUB

SUB t
abp = &H2E8
OUT (abp + 3), 64
END SUB

 

Listing 2

DECLARE SUB r ()
10 CLS
20 abp = &H2E8
30 r
40 OUT (abp + 4), 3
43 OUT (abp + 3), 64
50 FOR x = 1 TO 10000: NEXT x: SOUND 500, 500 / 1000
60 r
70 FOR y = 1 TO 10000: NEXT y: SOUND 600, 500 / 1000
80 GOTO 10

SUB r
abp = &H2E8
OUT (abp + 4), 0
OUT (abp + 3), 0
END SUB

 

Listing 3

DECLARE SUB d ()
DECLARE SUB z ()
DECLARE SUB r ()
DECLARE SUB t ()
DECLARE SUB p ()
10 CLS
20 abp = &H2E8
25 r
30 PRINT "Co wybierasz ?"
40 PRINT "1. Jeden."
50 PRINT "2. Dwa."
60 PRINT "3. Trzy."
70 INPUT a$
80 IF a$ = "1" THEN p: GOTO 200
90 IF a$ = "2" THEN d: GOTO 300
100 IF a$ = "3" THEN t: GOTO 400
110 IF a$ <> "1" OR a$ <> "2" OR a$ <> "3" THEN z: GOTO 10
200 CLS : PRINT "Mozliwosc pierwsza.": SLEEP 0: GOTO 10
300 CLS : PRINT "Mozliwosc druga.": SLEEP 0: GOTO 10
400 CLS : PRINT "Mozliwosc trzecia.": SLEEP 0: GOTO 10

SUB d
abp = &H2E8
r
FOR a = 1 TO 5
OUT (abp + 4), 2
FOR x = 1 TO 2000: NEXT x: SOUND 400, 800 / 1000
r
FOR y = 1 TO 2000: NEXT y: SOUND 500, 800 / 1000
NEXT a
END SUB

SUB p
abp = &H2E8
FOR a = 1 TO 5
OUT (abp + 4), 1
FOR x = 1 TO 2000: NEXT x: SOUND 300, 800 / 1000
r
FOR y = 1 TO 2000: NEXT y: SOUND 400, 800 / 1000
NEXT a
END SUB

SUB r
abp = &H2E8
OUT (abp + 4), 0
OUT (abp + 3), 0
END SUB

SUB t
abp = &H2E8
r
FOR a = 1 TO 5
OUT (abp + 3), 64
FOR x = 1 TO 2000: NEXT x: SOUND 500, 800 / 1000
r
FOR y = 1 TO 2000: NEXT y: SOUND 600, 800 / 1000
NEXT a
END SUB

SUB z
abp = &H2E8
r
FOR a = 1 TO 5
OUT (abp + 4), 1
FOR x = 1 TO 1000: NEXT x: SOUND 300, 800 / 1000
r
OUT (abp + 4), 2
FOR y = 1 TO 1000: NEXT y: SOUND 400, 800 / 1000
r
OUT (abp + 3), 64
FOR v = 1 TO 1000: NEXT v: SOUND 500, 800 / 1000
r
OUT (abp + 4), 2
FOR w = 1 TO 1000: NEXT w: SOUND 400, 800 / 1000
r
NEXT a
END SUB

 

Listing 4

DECLARE SUB r ()
10 CLS
20 abp = &H2E8
30 r
40 OUT (abp + 4), 1: SLEEP 1: r
50 OUT (abp + 4), 2: SLEEP 1: r
60 OUT (abp + 3), 64: SLEEP 1: r
70 GOTO 40

SUB r
abp = &H2E8
OUT (abp + 4), 0
OUT (abp + 3), 0
END SUB

 

 

 


[ Strona główna | Uwagi ]