Witajcie.
Mam kilka w chyba podstawowych pytań związanych z niektórymi rzeczami w BASCOMie.
1. Pętla DO LOOP. Czy musi być użyta zawsze w programie i co powinno być objęte ta pętla ?
2. WachDog wbudowany w ATMEGA 8. Jak jest ustawiony fabrycznie i w jaki sposób objawia się jego działanie kiedy jest uruchomiony tzn kiedy się włącza i co robi ?
3. Które polecenie skoku lepiej używać GOTO czy GOSUB przy założeniu że nie potrzebuje powrócić po wykonaniu skoku ?
4. Czy wielokrotne skoki GOSUB w różne miejsca programu bez powrotów mogą w którymś momencie spowodować błędne działanie programu ? Chodzi o odkładanie na stosie adresu powrotu który nie będzie wykorzystywany.
5. Dlaczego czasami po dłuższym działaniu poniższego programu kiedy stan na lini PIND.1 się nie zmienia program potrafi mi wyskoczyć do etykiety Starter ? Programik jest przykładowy ale sposób jego działania jest podobny jak programu głównego który sobie skleciłem.
Pozdrawiam i z góry dziękuję za każde info.
Mam kilka w chyba podstawowych pytań związanych z niektórymi rzeczami w BASCOMie.
1. Pętla DO LOOP. Czy musi być użyta zawsze w programie i co powinno być objęte ta pętla ?
2. WachDog wbudowany w ATMEGA 8. Jak jest ustawiony fabrycznie i w jaki sposób objawia się jego działanie kiedy jest uruchomiony tzn kiedy się włącza i co robi ?
3. Które polecenie skoku lepiej używać GOTO czy GOSUB przy założeniu że nie potrzebuje powrócić po wykonaniu skoku ?
4. Czy wielokrotne skoki GOSUB w różne miejsca programu bez powrotów mogą w którymś momencie spowodować błędne działanie programu ? Chodzi o odkładanie na stosie adresu powrotu który nie będzie wykorzystywany.
5. Dlaczego czasami po dłuższym działaniu poniższego programu kiedy stan na lini PIND.1 się nie zmienia program potrafi mi wyskoczyć do etykiety Starter ? Programik jest przykładowy ale sposób jego działania jest podobny jak programu głównego który sobie skleciłem.
$regfile = "m8def.dat"
$crystal = 12000000
Config Pind.1 = Input
Linia Alias Pind.1
Dim zmienna As String * 10
Enable Interrupts
Do
Starter:
Cls
Gosub Obsluga_lcd
Dalej:
Wait 5
zmienna="Dalej_1"
Gosub Sprawdzenie
Dalej_1:
Wait 5
zmienna="Dalej"
Gosub Sprawdzenie
Loop
End
Obsluga_lcd:
Lcd "Poczatek"
Return
Sprawdzenie:
If Linia = 1 Then
Lcd "jest"
Gosub Dalej
Else
Lcd "nie ma"
Select Case zmienna
Case "Dalej_1" : Gosub Dalej_1
Case "Dalej" : Gosub Dalej
End Select
End if
Return
Pozdrawiam i z góry dziękuję za każde info.