Styring av lyskryss

Gruppeoppgave om:

H-P Ulven 25.08.16

Lyskrysset

Vi skal simulere hvordan vi programmerer en enkel datamaskin med et enkelt programmeringsspråk til å styre et lyskryss som ser omtrent slik ut:

Det er egentlig fire sider med grønt, gult og rødt lys på hver av disse fire trafikklysene, men vi foutsetter at de er koblet slik at hvis vi styrer de tre lysene vi ser på trafikklysene merket A og B i figuren, så vil alle fire sidene på alle de fire trafikklysene vise riktig farve.

Styring av lyssignalene

Figuren viser en side av et trafikklys som er styrt av et register i vår enkle mikroprosessor.

Registeret er på en byte med 8 bit, og de tre bitene lengst til høyre er koblet til de tre farvene.

De 5 andre bitene er ikke koblet til noe og det spiller derfor ingen rolle hva de inneholder.

For å få grønt og rødt lys samtidig (ikke så heldig i trafikken, men for eksemplets skyld), må vi sende en binær kode som har 101 i de tre bitene lengst til høyre:

???? ?101

for eksempel 0000 0101. Tenker og tolker vi denne koden som et binært tall, så er dette

1*4 + 0*2 + 1*1 = 5

Skal vi vise rødt og gult trenger vi en binær kode som ender på 110, for eksempel 0000 0110.

Som tall er dette 1*4 + 1*2 + 0*1 = 6.

Programmering

Vi tenker oss at vår lille datamaskin som skal styre dette lyskrysset blandt annet har følgende instruksjoner:
(Senere kan vi diskutere om det er andre instruksjoner vi ønsker oss i tillegg.)

Instruksjon: Eksempel: Forklaring:
WRITE( <reg>, <tall>) WRITE(B,7) Skriver tallet 7 til register B (som er koblet til lyssignal B i figuren øverst),
7 er binært 0000 0111, så WRITE(B,7) vil slå på alle tre farvene.
WAIT( <tall>) WAIT(500) Datamaskinen vil vente og ikke gjøre noe i 500 millisekunder.
REPEAT   Går tilbake til begynnelsen av programmet og fortsetter derfra.
Ved å avslutte med denne instruksjonen får vi altså datamaskinen til å
gjenta programmet vårt i det uendelige helt til strømmen blir slått av.

Eksempel på program:

WRITE(B,4)
WRITE(A,1)
WAIT(5000)
WRITE(B,1)
WAIT(5000)
REPEAT

Oppgaver

  1. Se på eksemplet på program i forrige avsnitt.
    Beskriv med ord hva programmet gjør og hva som vi skje i lyskrysset.
  2. Skriv et program som får det til å blinke gult i alle retninger.
  3. Skriv et program som styrer lyskrysset slik det ville bli gjort i virkeligheten.