Stap 2: De code
--bestand: spider.jal--PIC: 16F675
--doel: drop en spin verhogen wanneer infrarood de sensor raakt
--Doen wat je wilt met de code.
omvatten f675_4i
omvatten jdelay
var bits M1 is pin_a5
pin_a5_direction = output
var bits M2 is pin_a4
pin_a4_direction = output
var bits IR is pin_a2
pin_a2_direction = input
var vluchtige byte gpio op 0x05
var vluchtige byte cmcon op 0x19
var vluchtige byte wpu op 0x95
var vluchtige byte ansel op 0x9F
cmcon = 0b0001_0111--Comparateur af
GPIO = 0b0000_0000--i/o-pinnen lage initialiseren
--Raadpleeg het gegevensblad voor meer informatie over register banking
ASM bsf status_rp0--bank 1
Ansel = 0b0000_0000--uitschakelen A/D, maken alle pinnen digitale i/o
OPTIE = 0b0000_0000--bit 7: toestaan pullups wereldwijd
WPU = 0b0001_0100--individuele pullups inschakelen
ASM bcf status_rp0--terug naar bank 0
--normaal, de IR-sensor is hoog als op een 38kHz IR-straal niet speurder
--Als dat zo is, duurt de lijn laag
--de code is niet robuust, en vertrouwt op de sensor te verwerpen valse signalen
voor eeuwig lus
M1 = hoog
M2 = hoog
while (IR) lus einde lus
delay_1ms (1)
if (!. IR) dan
delay_1ms (1)
M2 = laag
delay_100ms (7)
M2 = hoog
delay_100ms (1)
M1 = laag
delay_100ms (2)
M1 = hoog
delay_100ms (1)
delay_100ms (13)
3 lus
M1 = laag
delay_10ms (12)
M1 = hoog
delay_10ms (8)
einde lus
delay_100ms (8)
delay_100ms (8)
6 lus
M1 = laag
delay_10ms (6)
M1 = hoog
delay_10ms (8)
einde lus
eind als
terwijl (!. IR) lus einde lus
delay_1s (3);
einde lus