Program w Bascom AVR

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
Zablokowany
DEDE
-
Posty: 7
Rejestracja: 26 paź 2006, 17:23
Lokalizacja: z Daleka

Program w Bascom AVR

Post autor: DEDE » 28 paź 2006, 10:34

Napisałem sobie taki prosty programik po wciśnięciu przycisku S1 program musi przeskoczyć do podprogramu X. Wszystko w porządku sie z kompilowało.W grałem program do Attiny2313 i uruchomiłem.Nie zdąrzyłem wcisnąć przycisku S1 a już program wykonał wszystkie operacje, powrócił do pętli Do Loop i powtarza się sytuacja.Przycisk S1 nie wpływa na pracę programu. Pytanko co jest źle??? Pozdro

$crystal = 4000000
'Ustawienie wejść na pinie PD0'
Config Pind.0 = Input
'Ustawienie wyjść na pinach PD4 i PD5'
Config Pind.5 = Output
Config Pind.6 = Output
'konfiguracja wyświetlacza LCD'
Config Lcd = 16 * 2
Config Debounce = 15
'Przypisanie nazw odpowiednim pinom'
S1 Alias Pind.0
D1 Alias Pind.5
D2 Alias Pind.6
Do
Set D1
Set D2
Cls
Lcd "Uzyj przycisku"
Bitwait S1 , Reset
Debounce S1 , 0 , X , Sub
Loop
End

X:
Cls
Lcd "X:"
Reset D1
Reset D2
Return

ZbeeGin

Post autor: ZbeeGin » 28 paź 2006, 10:45

DEDE pisze:'Ustawienie wejść na pinie PD0'
Config Pind.0 = Input
No tak, tylko jak chcesz zwierać port do masy to musisz włączyć wewnętrzne podciąganie do Vcc lub zamontować je na zewnątrz. Najprościej zamień ten fragment na:

Kod: Zaznacz cały

'Ustawienie wejść na pinie PD0' 
Config Pind.0 = Input
Set Pind.0
ps. Kody programów zamykamy w tagi [/i]

DEDE
-
Posty: 7
Rejestracja: 26 paź 2006, 17:23
Lokalizacja: z Daleka

Post autor: DEDE » 28 paź 2006, 10:59

Wielki dzięki ustawienie set pomogło.Ale mam jeszcze pytanko dlaczego po porwocie z podprogramu do pętli jak wciskam jeszcze raz S1 to nie ma skoku do podprogramu.
Sorki że tak zawracam głowę takim pierdołami.Pozdro

ZbeeGin

Post autor: ZbeeGin » 28 paź 2006, 11:09

DEDE pisze:Bitwait S1 , Reset
Debounce S1 , 0 , X , Sub
Spróbuj zmienić:

Kod: Zaznacz cały

Bitwait S1 , Reset 
Debounce S1 , 0 , X , Sub
Bitwait S1, Set
Bo jeśli przycisk będzie naciśnięty przy ponownym wywołaniu polecenia Debounce może ono nie zadziałać właściwie.
Ostatnio zmieniony 28 paź 2006, 11:50 przez ZbeeGin, łącznie zmieniany 1 raz.

DEDE
-
Posty: 7
Rejestracja: 26 paź 2006, 17:23
Lokalizacja: z Daleka

Post autor: DEDE » 28 paź 2006, 11:20

niestety nie pomogło. narazie wielki dzięki.

ZbeeGin

Post autor: ZbeeGin » 28 paź 2006, 11:48

Spójrz na kod jaki napisał Luciano: http://www.mcselec.com/index2.php?optio ... ce+problem
Chyba też będziesz musiał zrezygnować z DEBOUNCE. :cry:

DEDE
-
Posty: 7
Rejestracja: 26 paź 2006, 17:23
Lokalizacja: z Daleka

Post autor: DEDE » 28 paź 2006, 12:17

Witam jeszcze raz!!!
Chciałem uniknąć instrukcji if then a wykorzystać Debounce. Niestety debounce sie nie sprawdziło. Dzięki if then otrzymałem to co chciałem otrzymać.Nic nie przeszkadzam tobie ZbeeGin i wielkie dzięki za pomoc.Miłego weekendu.Pozdrawiam

Zablokowany