PIC Opg 1 Løsning

Fra HTX Arduino
Version fra 15. nov. 2022, 09:09 af Bar (diskussion | bidrag) Bar (diskussion | bidrag) (1 version importeret)
Spring til navigation Spring til søgning

Denne side gennemgår løsningen for PIC Opgave 1 - Blink

Løsningsforslag for Blink.

Generelt er alle løsningerne lavet med den sædvanlig opstartskode til en PIC16F684, og selve funktionen realiseret i et forever loop.

Opstartskoden kan ses generelt gennemgået i

Koden som jal-filer

Alle eksemplerne kan hentes i denne ZIP-fil.

At få udgangen til at blinke

For at få et ben til at fungere som udgang, så skal det sættes op i program-koden. Det kan gøres som følger:

-- Definer navne på port ben
var bit LED1     is pin_a0

-- Definer Input / Output
pin_a0_direction = output

Hele koden skal danne et loop, der bliver ved med at udføre koden, indtil der slukkes. Det gøres med et forever-loop. Inde i forever-loopet ser koden ud som følgende:

27  forever loop        -- fortsæt i det uendelige
28    LED1 = high
29    delay_100ms(5)
30    LED1 = low
31    delay_100ms(5)
32  end loop   -- end forever

Linje 27 er starten af forever-loopet, hvor koden starter igen, hver gang den er nået ned til linje 32, der afslutter forever-loopet

Linje 28 tænder lysdioden på PIC-boardet. Linje 29 holder en pause i programmet på et halvt sekund (det der rent faktisk sker er, at programmet looper igennem så meget kode at det tager et halvt sekund, hvor den ikke laver andet).

Linje 30 slukker så lysdioden igen, og linje 31 laver en ny pause på et halvt sekund.

Koden ligger som opg1a.jal i denne ZIP-fil.

At få blinket til at være afhængigt af en kontakt

For at få et ben til at fungere som indgang, så skal det sættes op i program-koden. Det kan gøres som følger:

var bit Kontakt1 is pin_a3
pin_a3_direction = input

Der udvides i koden inde i forever-loopet, så den ser ud som følgende:

29  forever loop        -- fortsæt i det uendelige
30    if Kontakt1 then
31      LED1 = high
32    end if
33    delay_100ms(5)
34    LED1 = low
35    delay_100ms(5)
36  end loop   -- end forever

Det er linje 30 og 32 der er sat ind i koden, og det gør at linje 31 kun bliver udført, hvis Kontakt1 indgangen er høj.

Koden ligger som opg1b.jal i denne ZIP-fil.