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 

przyciski i ledy

 
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ść
Jacor
Lekko zaangażowany


Dołączył: 24 Sty 2008
Posty: 42
Skąd: MAŁOPOLSKA

PostWysłany: Nie Lis 29, 2009 8:45 pm    Temat postu: przyciski i ledy Odpowiedz z cytatem

witam panowie
tworze taki programik który po prosty włancza i wyłancza dwie diody
oprócz tego ma jeszcze zwiększać lub zmniejszać czas migania tych dwóch ledów i z tym właśnie mam problem

poniżej moje wypociny

na tym etapie program ciała w miare poprawnie oprócz oczywiście zmiany czasu migania

jest to mój pierwszy program więc zdaje sobie sprawe że może być napisany całkiem źle
dlatego mam prośbę do bardziej doświadczonych jak to napisać żeby działało


Kod:

'===================================================================
'PROGRAM DO STEROWANIA LEDAMI
'===================================================================


 $regfile = "m8def.dat"                                     'informuje kompilator o pliku
      'dyrektyw mikrokontrolera
$crystal = 8000000                                          'informuje kompilator
      'o częstotliwości oscylatora
      'taktującego mikrokontroler

Portb = &B00000001
Config Lcd = 16 * 2
Config Portb.0 = Output
Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portd.4 , E = Portd.3 , Rs = Portd.2



Rem ================= konfiguracja portow ===========================

Config Pinc.0 = Input
Config Pinc.1 = Input
Config Pinc.2 = Input
Config Pinb.3 = Input
Config Pinb.4 = Input
Config Pinb.5 = Input


Config Pind.0 = Output
Config Pinb.2 = Output


'Pk1 Alias Portb.1
Pk2 Alias Portb.2
Pk3 Alias Portd.0


S1 Alias Pinb.3
S2 Alias Pinb.4
S3 Alias Pinb.5
S4 Alias Pinc.0
S5 Alias Pinc.1
S6 Alias Pinc.2


Set Portc.0
Set Portc.1
Set Portc.2
Set Portb.3
Set Portb.4
Set Portb.5


Rem ================= MENI WYBORU ===========================

Pr7:
 Cls
 Do
  Lcd "   STEROWANIE "
  Lowerline
  Lcd "KLIK 1/2/3/4/5/6   "
 Do

 Debounce S1 , 0 , Pr1 , Sub
 Debounce S2 , 0 , Pr2 , Sub
 Debounce S3 , 0 , Pr3 , Sub
 Debounce S4 , 0 , Pr4 , Sub
 Debounce S5 , 0 , Pr5 , Sub
 Debounce S6 , 0 , Pr6 , Sub

 Loop
  Loop

End


Rem ================PODPROGRAMY=====================================



Pr1:

 Cls
 Lcd "WLANCZA LEDY"
 Lowerline
 Lcd "OBIE STRONY S1 "

  Do

    Pk2 = 1
     Pk3 = 1
      Loop Until S2 = 0 Or S3 = 0 Or S4 = 0 Or S5 = 0 Or S6 = 0
      Pk2 = 0
      Pk3 = 0
      Return

Pr2:

 Cls
 Lcd "MIGAJA LEDY"
 Lowerline
 Lcd "OBIE STRONY S2"

  Do
    Toggle Pk2
      Toggle Pk3
     Wait 1
       Loop Until S1 = 0 Or S3 = 0 Or S4 = 0 Or S5 = 0 Or S6 = 0
      Pk2 = 0
      Pk3 = 0
      Return

Pr3:

 Cls
 Lcd "MIGAJA LEDY"
 Lowerline
 Lcd "NA PRZEMIAN S3"

  Do
    Toggle Pk2
     Wait 1
      Toggle Pk3
      Loop Until S1 = 0 Or S2 = 0 Or S4 = 0 Or S5 = 0 Or S6 = 0
      Pk2 = 0
      Pk3 = 0
      Return

Pr4:

 Cls
 Lcd "ZWIEKSZA MIGANIE"
 Lowerline
 Lcd "S4"

  Do
   'TU NIEWIEM JAK ZROBIĆ ŻEBY ZWIĘKSZAĆ MIGANIE
   '=============================================
      Loop Until S1 = 0 Or S2 = 0 Or S3 = 0 Or S5 = 0 Or S6 = 0
      Pk2 = 0
      Pk3 = 0
      Return

Pr5:

 Cls
 Lcd "ZMNIEJSZA MIGANIE"
 Lowerline
 Lcd "S5"


   Do
   'TU NIEWIEM JAK ZROBIĆ ŻEBY ZMNIEJSZYĆ MIGANIE
   '=============================================
      Loop Until S1 = 0 Or S2 = 0 Or S3 = 0 Or S4 = 0 Or S6 = 0
      Pk2 = 0
      Pk3 = 0
      Return

Pr6:

 Cls
 Lcd "GASI LEDY"
 Lowerline
 Lcd "S6"
  Pk2 = 0
  Pk3 = 0
 Gosub Pr7

_________________
prosze nie krzyczeć dopiero się uczę
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
SunRiv
Zawsze na posterunku


Dołączył: 11 Lut 2009
Posty: 321
Skąd: Opole

PostWysłany: Nie Lis 29, 2009 9:38 pm    Temat postu: Odpowiedz z cytatem

nio dobra to moze tak

poco ci w podprogramach (Sub)
instrukcja pętli Do

skoro niekończysz jej loopem bo petlę główna do ... loop zakładasz w programie głównym
w którym niepotrzebnie zapętlasz 2 razy

wystarczy na początku programu 1 x Do i na końcu Loop tez jeden raz

resztę pętli realizujesz na pętlach warunkowych
for i If poczytaj o nich w polskim helpie do baskoma
zwłaszcza przyda ciu się pętla warunkowa If

i wtedy ci wyjdzie

uzyj też timera i preskalera ułatwi ci to sprawę np tak

Kod:

If Pinb.0 = 0 Then
   Config Timer1 = Timer , Prescale = 1024
   Portd.0 = 1
   portd.1 = 0
End If

If Pinb.1 = 0 Then
   Config Timer1 = Timer , Prescale = 8
   Portd.0 = 0
   Portd.1 = 1
End If

_________________
Subaru Libero SDX-SR 94"
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Odwiedź stronę autora
Jacor
Lekko zaangażowany


Dołączył: 24 Sty 2008
Posty: 42
Skąd: MAŁOPOLSKA

PostWysłany: Pon Lis 30, 2009 10:59 am    Temat postu: Odpowiedz z cytatem

ok na razie dzięki
będe walczył Smile
_________________
prosze nie krzyczeć dopiero się uczę
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
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