Forum www.nestor-electronic.pl Strona Główna www.nestor-electronic.pl
Forum sterowników procesorowych- programy BASCOM
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Proszę o sprawdzenie programu

 
Napisz nowy temat   Odpowiedz do tematu    Forum www.nestor-electronic.pl Strona Główna -> Pomoc w programowaniu BASCOM
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
p2004a
Nowy


Dołączył: 22 Kwi 2008
Posty: 8

PostWysłany: Wto Kwi 22, 2008 11:06 am    Temat postu: Proszę o sprawdzenie programu Odpowiedz z cytatem

Mam styczność z programowaniem w Bascom dopiero 3 dni więc proszę o wyrozumiałość.

Napisałem program który ma działać tak, że jak kliknę włącznik "S3" to prąd zaczyna płynąc przez "pk1out", a jak kliknę na niego jeszcze raz na włącznik "S3" to prąd przestaje płynąć przez "pk1out".

A oto kod programu:
Kod:

Config Portb = &B11011111
        Portb = &B11111111
Do
    If Pinb.5 = 0 Then If Pinb.1 = 0 Then Portb.1 = 1

    If Pinb.5 = 0 Then If Pinb.1 = 1 Then Portb.1 = 0

Loop
End
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
PiKuŚ
Zawsze na posterunku


Dołączył: 21 Sty 2008
Posty: 218
Skąd: Grudziądz

PostWysłany: Wto Kwi 22, 2008 5:14 pm    Temat postu: Odpowiedz z cytatem

Spróbuj tak:
Kod:

Config Pinb.1 = Output
Config Pinb.5 = Input
Set Portb.5

Pk1out Alias Pinb.1
S3 Alias Portb.5

do
  if S3 = 0 then toggle Pk1out
  Waitms 300
Loop
End

_________________
Nadmiar wiedzy jest równie szkodliwy jak jej brak.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
LoLu
Zawsze na posterunku


Dołączył: 13 Lis 2007
Posty: 161
Skąd: Poznań (okolice) Nowy Tomyśl

PostWysłany: Wto Kwi 22, 2008 10:12 pm    Temat postu: Odpowiedz z cytatem

Wszystko pięknie, kod Pikusia jak zwykle prosty i krótki do bólu Very Happy ale powiedzcie mi jeszcze czy w konfiguracji we-wy Można stosować zamienne Pinb5 = portb.5 itd?
_________________
Od kiedy powstało GOOGLE pytania nie maja sensu ?
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
PiKuŚ
Zawsze na posterunku


Dołączył: 21 Sty 2008
Posty: 218
Skąd: Grudziądz

PostWysłany: Sro Kwi 23, 2008 6:39 am    Temat postu: Odpowiedz z cytatem

Lolu, zapraszam do zapoznania się z helpem od bascom'a "Config Port". Jest tam wszystko ładnie wyjaśnione. Smile

Można oczywiście prościej:
Kod:

Config PortB = &B11011111

Generalnie polecenie "config portx/config pinx" ustawia rejestr DDRx, czyli kirunek działania portu. Natomiast polecenie "set portx" służy do podciągania portu pracującego jako wejście (pull-up), czyli ustawia odpowieni stan bitów w resjestrze PORTx.
_________________
Nadmiar wiedzy jest równie szkodliwy jak jej brak.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
p2004a
Nowy


Dołączył: 22 Kwi 2008
Posty: 8

PostWysłany: Sro Kwi 23, 2008 11:15 am    Temat postu: Odpowiedz z cytatem

No dobrze wszystko już rozumiem dzięki za odpowiedzi, ale nie odpowiedzieliście na moje pytanie czy taki kod jak mój będzie działał Question Chodzi mi głównie o te zagnierzdzone instrukcje warunkowe.

A tak przy okazii, pod jaką nazwą jest zapisany program na płycie, co jest na samym początku wgrany do procesora Question
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
LoLu
Zawsze na posterunku


Dołączył: 13 Lis 2007
Posty: 161
Skąd: Poznań (okolice) Nowy Tomyśl

PostWysłany: Sro Kwi 23, 2008 1:15 pm    Temat postu: Odpowiedz z cytatem

Nie nie będzie, masz tam błędy

Jeżeli sie już upierasz przy twoim kodzie to powinno to wyglądać mniej wiecej tak :

Do
If Pinb.5 = 0 Then
If Portb.1 = 0 Then Portb.1 = 1
End if
End if
If Pinb.5 = 0 Then
If Portb.1 = 1 Then Portb.1 = 0
End if
End if
Loop

Tylko zastanawiam sie po co marnować pamięć w procku, skoro można to samo tak jak zaproponował Pikuś zrobić w 2 linijkach Very Happy
Są jeszcze takie instrukcje jak else żeby skrócić całość, ale tutaj zdecydowanie toggle pasuje najlepiej
_________________
Od kiedy powstało GOOGLE pytania nie maja sensu ?
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
p2004a
Nowy


Dołączył: 22 Kwi 2008
Posty: 8

PostWysłany: Sro Kwi 23, 2008 3:29 pm    Temat postu: Odpowiedz z cytatem

Serdeczne dzięki za odpowiedź i za wyjaśnienie Very Happy Nie upieram się przy swoim kodzie tylko po prostu chciałem wiedzieć co jest nie tak, wcześniej programowałem w c++ no i tam jest całkowicie inna składnia więc miałem jak chyba każdy czasami wątpliwości Embarassed Jeszcze raz wielkie dzięki za odpowiedź Very Happy
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
PiKuŚ
Zawsze na posterunku


Dołączył: 21 Sty 2008
Posty: 218
Skąd: Grudziądz

PostWysłany: Sro Kwi 23, 2008 8:55 pm    Temat postu: Odpowiedz z cytatem

Składnia instrukcji warunkowej "if" tej z "c++" różni się tym że zamiast nawiasów "{}" określających jej początek i koniec w basomie używa się odpowiednio "then i end if". Jak więc widać są to niewielkie różnice Smile.

Jeżeli chodzi o "c" to ja osobiście samą instrukcję warunkową napisałbym tak:
Kod:
if ( Pinb.5 == 0)
  {
    Portb.1 = !Portb.1
  }


Czyli tłumacząc na Bascom'a:
Kod:
if Pinb.5 = 0 then
  Toggle Portb.1
end if

_________________
Nadmiar wiedzy jest równie szkodliwy jak jej brak.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum www.nestor-electronic.pl Strona Główna -> Pomoc w programowaniu BASCOM Wszystkie czasy w strefie CET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


Powered by phpBB © 2001, 2005 phpBB Group