Skocz do zawartości

Początki programowanie.


Pomocna odpowiedź

no i endif, lub można też tak (bo i tak mamy tylko 2 stany możliwe, znaczy tylko 2 rozpatrujemy):

If Pind.7 = 1 Then                                       'jeżeli przycisk 1 wciśnięty 
  Portd.6 = 1    
else 
   Portd.6 = 0 
endif
$regfile = "m16def.dat"                                     'najpierw określamy typ proca
$crystal = 16000000                                         'definiujemy z jakim taktowaniem będzie pracował


Config Portd = &B1111110
      Portd = &B0000000                                    'wszędzie stan spoczynkowy-0



Do                                                         'pętla nieskończona

 If Pind.7 = 1 Then                                        'jeżeli przycisk 1 wciśnięty
  Portd.6 = 1
Else
   Portd.6 = 0
End If                                                      'koniec bloku warunkowego

Loop                                                       'koniec pętli

End                       

Zastosowałem taki program i dalej nic 🙁. Jedynie gdy wsadzę niebieską diodę i dotknę palcem rezystora przed diodą to świeci bardzo małym światłem.

Dalej nic. Tak wygląda aktualnie program:

$regfile = "m16def.dat"                                     'najpierw określamy typ proca
$crystal = 16000000                                         'definiujemy z jakim taktowaniem będzie pracował


Config Pind.7 = Input
Portd.7 = 1
Config Pind.6 = Output                                      'wszędzie stan spoczynkowy-0



Do                                                         'pętla nieskończona

 If Pind.7 = 1 Then                                        'jeżeli przycisk 1 wciśnięty
  Portd.6 = 1
Else
   Portd.6 = 0
End If                                                      'koniec bloku warunkowego

Loop                                                       'koniec pętli

End              

Nie powinno być tak?


Config Portd.7 = Input
Portd.7 = 1
Config Portd.6 = Output 

PS sprawdź czy masz napewno do dobrych pinów podłączone.

Dalej nic. Tak wygląda aktualnie program:
$regfile = "m16def.dat"                                     'najpierw określamy typ proca
$crystal = 16000000                                         'definiujemy z jakim taktowaniem będzie pracował


Config Pind.7 = Input
Portd.7 = 1
Config Pind.6 = Output                                    'wszędzie stan spoczynkowy-0



Do                                                         'pętla nieskończona

 If Pind.7 = 1 Then                                        'jeżeli przycisk 1 wciśnięty
  Portd.6 = 1
Else
   Portd.6 = 0
End If                                                      'koniec bloku warunkowego

Loop                                                       'koniec pętli

End              

W twoim programie znalazłem kilka błędów

np

Config Pind.6 = Output   

a powinno być

Config Portd.6 = Output

z twojego programu wynika że przycisk podłączony pod pind.7 zwiera do GND jesli tak to powinno być

If Pind.7 = 0 Then                                        'jeżeli przycisk 1 wciśnięty
  Portd.6 = 1
Else
   Portd.6 = 0
End If 

A jeśli do VCC to

Config Pind.7 = Input
Portd.7 = 0
Config Pind.6 = Output  

jeszcze dobrze by było jak by programowo pind.6 podciągnąć do GND

Mam nadzieję że pomogłem

jeszcze dobrze by było jak by programowo pind.6 podciągnąć do GND

Mam nadzieję że pomogłem

Co masz na myśli ? Po Twoich radach dalej nic nie ruszyło. Ostatecznie kod wygląda tak:
$regfile = "m16def.dat"                                     'najpierw określamy typ proca
$crystal = 16000000                                         'definiujemy z jakim taktowaniem będzie pracował


Config Portd.7 = Input
Portd.7 = 1
Config Portd.6 = Output                                     'wszędzie stan spoczynkowy-0



Do                                                         'pętla nieskończona

If Pind.7 = 0 Then                                          'jeżeli przycisk 1 wciśnięty
  Portd.6 = 1
Else
   Portd.6 = 0
End If                                                      'koniec bloku warunkowego

Loop                                                       'koniec pętli

End                                                         'koniec programu

Nie mam pojęcia co może być nie tak. Schemat sprawdzałem już parę razy.

Lyserg, widzę, że nie masz zielonego pojęcia o tym co robisz, niezależnie czy to jest program czy sprzęt. Korzystasz z tej wtykanej płytki, czy sprawdziłeś miernikiem czy połączenia są poprawne? Czy nie pomyliłeś się gdzieś? Przecież co chwila ktoś na forum pisze, że te płytki mu nie stykają, pomylił się, albo linie wewnątrz tej płytki stykają się inaczej niż ktoś myślał. Czy masz pin od przycisku podciągnięty do Vcc? Jeśli nie (a nawet jeśli masz podciąganie do Vcc na Portd.7) to kod powinien wyglądać tak:

$regfile = "m16def.dat"                                     'najpierw określamy typ proca
$crystal = 16000000                                         'definiujemy z jakim taktowaniem będzie pracował


Config Portd.7 = Input
Portd.7 = 1
Config Portd.6 = Output                                     'wszędzie stan spoczynkowy-0



Do                                                         'pętla nieskończona

Set Portd.7                                              'włączenie wewnętrznego podciągania do Vcc na Portd.7  
If Pind.7 = 0 Then                                          'jeżeli przycisk 1 wciśnięty
  Portd.6 = 1
Else
   Portd.6 = 0
End If                                                      'koniec bloku warunkowego

Loop                                                       'koniec pętli

End                                                         'koniec programu

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...