En vaskemaskin består av følgende hoveddeler:
Her er DI og DU registre for Digtal Inn og Digital Ut.
A1 og A2 er registre som mottar et tall som er konvertert fra ett enkelt analogt signal.
Vi forenkler og konsentrerer oss om disse måle- og styreverdiene i de to digitale registrene:
Bit nr: 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
128 |
64 |
32 |
16 |
8 |
4 |
2 |
1 |
Temperatur nådd |
Tomt for vann |
Nivå Nådd |
Bit nr: 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
128 |
64 |
32 |
16 |
8 |
4 |
2 |
1 |
Varmeelement | Pumpe | Tømmekran | Fyllekran | Fort | Bakover | Fremover |
Vi tenker oss at vår lille datamaskin som skal styredenne vaskemaskinen blandt annet har følgende instruksjoner:
(Vi trenger nå også noen test- og gjentagelsesinstruksjoner)
Instruksjon: Eksempel: Forklaring: WRITE( <reg>, <tall>) WRITE(DU, 5) Skriver tallet 5 til register DU.
Motoren vil da gå fremover og med største hastighet.tall = READ( <reg>) tall = READ(DI) Hvis vannivået er nådd og ønsket temperatur er nådd,
vil variabelen tall inneholde tallet 130.tall = AND(<tall>,< tall>) tom = AND(32, tall) Hvis variabelen tall inneholder 130 vil variabelen tom bli 1,
fordi bit nr 5 som tilsvarer 32 inneholder 1.
Vi "maskerer ut", eller sjekker om bit nr 5 er 1 eller 0.WAIT( <tall>) WAIT(500) Datamaskinen vil vente og ikke gjøre noe i 500 millisekunder. REPEAT
UNTIL(<variabel>=<tall>) WRITE(DU,48) REPEAT WAIT(5000) tall=READ(DI) tom=AND(32,tall) UNTIL(tom=1) WRITE(DU,5) WAIT(300000)Instruksjonene mellom REPEAT og UNTIL gjentas inntil variabelen får verdien tall. Eksempelt viser hvordan vi kan kan vente til pumpen er ferdig med å tømme ut vannet
før vi starter sentrifugering.LOOP(<tall>)
ENDLOOP LOOP(20) WRITE(DU,1) WAIT(5000) WRITE(DU,2) WAIT(5000) ENDLOOPGjentar alle instruksjonene som står mellom LOOP() og ENDLOOP instruksjonene.
Så sekvensen med 5 sekunder forover og 5 sekunder bakover vil bli gjentatt 20 ganger.
Lag et program som kjører en vanlig "hovedvask", som kort og stikkordsmessig kan beskrives omtrent slik:
Fyll vaskemaskinen med vann
Varm opp vannet til ønsket temperatur
Kjør 5 ganger fremover, vent 3 sekunder, kjør 5 ganger bakover 3 sekunder. Dette gjentaes 20 ganger.
Tøm vaskemaskinen for vann
Sentrifuger