Steruje dwoma silnikami, jednak chciałbym aby jeden z nich się zatrzymał i zaczął cofać przez kilka sekund w momencie załączenia krańcówki. Podpięcie pinów opisane w kodzie. Krańcówka pod INT0 i pod INT1 i z drugiej strony do masy. Wąs = krańcówka.
Przy takim kodzie kreci się na starcie jedno koło a gdy załączę którąś z krańcówek to nic, jak dwie na raz oba koła się kręcą? Co jest źle?
$regfile = "m8def.dat"
$crystal = 1000000
Config Portb.0 = Output 'dioda
Config Portd.7 = Output 'silnik lewy 1
Config Portd.6 = Output 'silnik lewy 2
Config Portb.5 = Output 'silnik prawy 2
Config Portb.4 = Output 'silnik prawy 1
Config Int0 = Falling 'do ziemi
Config Int1 = Falling 'do ziemi
Enable Interrupts 'zezwolenie na obsługę przerwań
Enable Int0
Enable Int1
On Int0 Lewo Nosave ' obsługa przerwania INT0 - podprogram Zwieksz
On Int1 Prawo Nosave ' obsługa przerwania INT1 - podprogram Zmniejsz
Portb.0 = 1
Wait 2
Portb.0 = 0
Portc.4 = 0
Portd.7 = 0
Portd.6 = 0
Portb.5 = 0
Portb.4 = 0
Wait 5
Do
Portd.7 = 1
Portb.4 = 1
Portd.6 = 0
Portb.5 = 0
Portb.0 = 0
Loop
Lewo: 'podprogram lewo
Disable Interrupts 'zablokowanie przerwań
Portd.7 = 0
Portb.4 = 0
Portd.6 = 0
Portb.5 = 1
Portb.0 = 1
Wait 2
Portd.7 = 0
Portb.4 = 0
Portd.6 = 0
Portb.5 = 0
Portb.0 = 0
Enable Interrupts 'odblokowanie przerwaniń
Return 'koniec podprogramu - powrót do programu głównego
Prawo: 'podprogram prawo
Disable Interrupts 'zablokowanie przerwań
Portd.7 = 0
Portb.4 = 0
Portd.6 = 1
Portb.5 = 0
Portb.0 = 1
Wait 2
Portd.7 = 0
Portb.4 = 0
Portd.6 = 0
Portb.5 = 0
Portb.0 = 0
Enable Interrupts 'odblokowanie przerwaniń
Return 'koniec podprogramu - powrót do programu głównego
EndPrzy takim kodzie kreci się na starcie jedno koło a gdy załączę którąś z krańcówek to nic, jak dwie na raz oba koła się kręcą? Co jest źle?