Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

przycisk na 4 funkcje

*zaba*
-
-
Posty:6
Rejestracja:17 gru 2008, o 06:56
Lokalizacja:Pawłowice
przycisk na 4 funkcje

Postautor: *zaba* » 17 gru 2008, o 07:01

NAPISAŁEM TAKI PROGRAM

jak nacisnę raz to jedna dioda świeci
jak drugi raz to druga świeci
---> i tu jest moje pytanie dodałem trzecią funkcje case 3 ze obie diody świeca i nic dlaczego jak trzeba poprawić kod ??
----> a takze chciałbym dodac 4 funkcje ze diody nieśwecą



Kod: Zaznacz cały

e$regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował Config Portb = Input 'port b jako wejścia Portb = &B11111111 Config Portd = Output 'pprt d jako wyjścia Portd = &B11111111 Dim Tryb As Byte Do While Pinb.3 = 0 Wait 1 Incr Tryb Wend Select Case Tryb: Case 0: Portd.0 = 0 Portd.1 = 1 ' Case 1: Portd.0 = 1 Portd.1 = 0 Case 3: Portd.0 = 0 Portd.1 = 0 Case Else: Tryb = 0 End Select loop end

tg3a
-
-
Posty:243
Rejestracja:26 maja 2008, o 19:46
Lokalizacja:Warszawa

Postautor: tg3a » 17 gru 2008, o 08:36

Witam,
Wprawdzie nie znam Bascom'a, ale wygląda na to, że błąd jest dość prosty, i pewnie w końcu sam na to byś wpadł. Moja podpowiedź: naciśnij przycisk czwarty raz. Jak przemyślisz sobie zachowanie się programu, to sądzę, że sam wpadniesz na to, jak dodać czwartą funkcję.
Ale oczywiście taki prosty program będzie ograniczony w swym działaniu tylko do przełączania funkcji w założonej kolejności.
Pozdrawiam, i życzę sukcesów.

*zaba*
-
-
Posty:6
Rejestracja:17 gru 2008, o 06:56
Lokalizacja:Pawłowice

Postautor: *zaba* » 17 gru 2008, o 14:39

a wiem jak wprowadzic 4 funkcje {case 4} ale oto chodzi ze mi trzecia nie działa {case 3} i własnie niewiem dlaczego :609:



Dzieki wszystkim za odpowiedz :637:

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty:2653
Rejestracja:24 sty 2005, o 00:39
Lokalizacja:Winny gród

Postautor: pajaczek » 17 gru 2008, o 15:27

No przecież to jest banał.

Case 0, świeci pierwsza.
Case 1, świeci druga.
Case else, włącza się tryb=0,
Case 3... do tego nigdy nie dochodzi bo case else wyzerowuje tryb...

Zjadłeś case 2 ;)

*zaba*
-
-
Posty:6
Rejestracja:17 gru 2008, o 06:56
Lokalizacja:Pawłowice

Postautor: *zaba* » 17 gru 2008, o 15:38

oooo Wielkie dzieki :601: działa

*zaba*
-
-
Posty:6
Rejestracja:17 gru 2008, o 06:56
Lokalizacja:Pawłowice

Postautor: *zaba* » 17 gru 2008, o 20:37

Mógłby ktos zajrzec na programik co mogłoby byc zle chodzi o to zeby zmieniac szybkośc drugim przyciskiem pinb.2

Kod: Zaznacz cały

$regfile = "attiny2313.dat" 'najpierw określamy typ proca $crystal = 1000000 'definiujemy z jakim taktowaniem będzie pracował Config Portb = Input 'port b jako wejścia Portb = &B11111111 Config Portd = Output 'pprt d jako wyjścia Portd = &B11111111 Dim Tryb As Byte Dim Szybkosc As Byte Do While Pinb.3 = 0 Waitms 800 Incr Szybkosc Wend Do While Pinb.2 = 0 Waitms 800 Incr Tryb Wend Select Case Tryb: Case 0: Portd.0 = 0 Portd.1 = 1 ' Case 1: Portd.0 = 1 Portd.1 = 0 Case 2: Portd.0 = 0 Portd.1 = 0 Case 3: Portd.0 = 0 Portd.1 = 0 Select Case Szybkosc: Case 0: Wait 1 ' Case 1: Waitms 300 Case 2: Waitms 200 Case 3: Waitms 100 Case 4: Waitms 50 Case Else: Szybkosc = 0 End Select Portd.0 = 1 Portd.1 = 1 Select Case Szybkosc: Case 0: Wait 1 ' Case 1: Waitms 300 Case 2: Waitms 200 Case 3: Waitms 100 Case 4: Waitms 50 Case Else: Szybkosc = 0 End Select Case 4: Portd.0 = 0 Waitms 200 Portd.0 = 1 Portd.1 = 0 Waitms 200 Portd.1 = 1 Waitms 200 Case 5: Portd.0 = 0 Waitms 100 Portd.0 = 1 Waitms 100 Portd.1 = 0 Waitms 100 Portd.1 = 1 Waitms 100 Case 6: Portd.0 = 0 Waitms 70 Portd.0 = 1 Waitms 70 Portd.1 = 0 Waitms 70 Portd.1 = 1 Waitms 70 Case Else: Tryb = 0 End Select Loop Loop End

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty:2653
Rejestracja:24 sty 2005, o 00:39
Lokalizacja:Winny gród

Postautor: pajaczek » 18 gru 2008, o 11:10

Ale w tym kodzie wszystko jest źle.

- Po co kopiujesz "do" i to jeszcze tak dziwnie.
- Stan b.2 można zmienić tylko po wcześniejszej zmianie b.3 (nie wcześniej niż 800ms po zmianie) i... tylko raz, bo później wchodzi w drugiego do...loopa, z którego nie wychodzi.
- Casy... już w ogóle pomieszane... umieszczanie casa w casie zwykle jest złym pomysłem (chyba że się BARDZO DOBRZE WIE, co się robi).

Rada... usuń to, i napisz spokojnie od początku.
Rada 2... dowiedz się jak działa debuger w programie (takie śledzenie wykonania linia po linii).

*zaba*
-
-
Posty:6
Rejestracja:17 gru 2008, o 06:56
Lokalizacja:Pawłowice

Postautor: *zaba* » 18 gru 2008, o 12:43

okey biore sie do roboty dzieki za rady :)

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 20 gości