Jaså,
den gröna.
Det är 11 lysdioder, och de är i praktiken kopplade till 486:ans parallellport. De visar aktuell status hela tiden, och när datorn styr mina kontrollmoduler flipprar det lite hur som helst där, men när programmet inte gör något särskilt, har jag så de aktiveras i just det mönstret som syns där. Den 12:e utpinnen har jag ingen lysdiod till, för den är noll nästan hela tiden ändå, då den aktiverar inportarna på kontrollmodulerna.
Det sätt jag använder mig av i Basic-programmet, är att varje "frame" av mönstret är ett decimaltal motsvarande bitmönstret binärt. Sen plockar en loop fram varje nytt tal ur den flerdimensionerade variabeln, och delar upp det i två och fixar ut bitarna på rätt adresser.
Här har jag klippt och klistrat lite för att få till nån slags översikt av LED-funktionen
Kod:
DECLARE SUB Knightrider (v)
DIM LED(27)
FOR a = 0 TO 13
READ LED(a)
LED(27-a)=LED(a)
NEXT
DATA 1920,1856,1824,1680,1608,1316,1170,585,293,147,75,39,23,15
DO
IF TIMER < ktimer THEN ktimer = TIMER
IF TIMER - ktimer > 0 THEN
ktimer = TIMER
LED = LED + 1: IF LED > 27 THEN LED = 0
Knightrider LED(LED)
END IF
LOOP
SUB Knightrider (v)
d = v AND 255
c = (v AND 3840) / 256
c = c XOR 1
c = c XOR 2
c = c XOR 8
OUT 888, d
OUT 890, c
END SUB
Pratar man PIC så kan man ju använda en lookup table som man stegar sig genom om och om igen.