Max Spider - drivs av LEGO och PIC mikrokontroller (2 / 2 steg)
Steg 2: Koden
--Fil: spider.jal--PIC: 16F675
--syfte: släpp och höja spider när IR träffar sensorn
--Göra vad du vill med koden.
inkludera f675_4i
inkludera jdelay
var lite M1 är pin_a5
pin_a5_direction = utgång
var lite M2 är pin_a4
pin_a4_direction = utgång
var lite IR är pin_a2
pin_a2_direction = ingång
var flyktiga byte gpio på 0x05
var flyktiga byte cmcon på 0x19
var flyktiga byte wpu på 0x95
var flyktiga byte ansel på 0x9F
cmcon = 0b0001_0111--komparator off
gpio = 0b0000_0000--initiera i/o pins låg
--se databladet att ta reda på mer om registret banking
ASM bsf status_rp0--bank 1
Ansel = 0b0000_0000--stänga av A/D, göra alla stift digital i/o
ALTERNATIV = 0b0000_0000--bit 7: tillåta pullups globalt
wpu = 0b0001_0100--aktivera enskilda pullups
ASM bcf status_rp0--tillbaka till bank 0
--normalt, IR-sensorn är hög om inte upptäcka en 38kHz IR stråle
--om den gör det tar linjen låg
--koden inte är robust, och förlitar sig på sensorn för att avvisa falska signaler
för evigt loop
M1 = hög
M2 = hög
medan (IR) loop slutet loop
delay_1ms (1)
IF (!. IR) sedan
delay_1ms (1)
M2 = låg
delay_100ms (7)
M2 = hög
delay_100ms (1)
M1 = låg
delay_100ms (2)
M1 = hög
delay_100ms (1)
delay_100ms (13)
för 3 loop
M1 = låg
delay_10ms (12)
M1 = hög
delay_10ms (8)
avsluta loop
delay_100ms (8)
delay_100ms (8)
för 6 loop
M1 = låg
delay_10ms (6)
M1 = hög
delay_10ms (8)
avsluta loop
slut om
tag (!. IR) loop slutet loop
delay_1s (3);
avsluta loop