Zaprogramować przycisk w Bascomie jak?

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!
ODPOWIEDZ
*zaba*
-
Posty: 3
Rejestracja: 15 gru 2008, 20:15
Lokalizacja: Pawłowice

Zaprogramować przycisk w Bascomie jak?

Post autor: *zaba* » 15 gru 2008, 20:29

witam chciałbym zaprogramować tak attiny 2313 ze jak sie raz nacisnę przycisk dioda np na (PORTD.0) zacznie świecić a gdy drugi raz sie go nacisnę zacznie mrugać a gdy trzeci to kolejna funkcje zacznie wykonywać
czy jest to możliwe ?? w bascomie
Bardzo proszę o jakieś przykłady

Ja napisałem program gdzie 2 diody mrugaja a jak sie naciśnie przycisk to jedna mruga ale niestety przycisk trzeba trzymac a mi chodzi o to ze jak sie nacisnie to odrazu zmieni oto fragment programu ktorego ja napisałem



$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


Do

If Pinb.3 = 1 Then

Portd.0 = 0
Waitms 200
Toggle Portd.0
Waitms 200
Portd = 0
Waitms 200
Toggle Portd
Waitms 200
Portd.1 = 0
Waitms 200
Toggle Portd.1
Waitms 200
Portd = 0
Waitms 200
Toggle Portd
Waitms 200


End If

If Pinb.3 = 0 Then
Portd.0 = 0
Waitms 200
Toggle Portd.0
Waitms 200
End If


Loop


End


PROSZĘ O POMOC

snow
Użytkownik
Posty: 794
Rejestracja: 16 sty 2007, 3:44
Lokalizacja: lubelskie
Kontakt:

Post autor: snow » 15 gru 2008, 21:00

Poczytaj o Select i Case

*zaba*
-
Posty: 3
Rejestracja: 15 gru 2008, 20:15
Lokalizacja: Pawłowice

Post autor: *zaba* » 15 gru 2008, 22:20

okey dzieki juz sie biore za czytanie :smile:

[ Dodano: 2008-12-16, 05:42 ]
$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 'wszędzie stan spoczynkowy-0
Config Portd = Output 'pprt d jako wyjścia
Portd = &B11111111



Do


Select Case Pinb.3
Case 0
Portd.0 = 0
Wait 1
Portd.0 = 1
End Select

Select Case Pinb.3
Case 1
Portd.1 = 0
Wait 1
Portd.1 = 1
Wait 1
Portd.1 = 0
Wait 1
Portd.1 = 1
Wait 1
Portd.1 = 0
Wait 1
Portd.1 = 1
End Select

Loop





End




Zrobiłem coś takiego ale jak to teraz zapentlic aby po nacisnieciu cały czas dioda z portud.0 mrygała przez jaka instrukcje i gdzie ja wsadzic?? :cool:

[ Dodano: 2008-12-17, 00:39 ]
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 czwarta funkcje aby wyłączyć wszystkie Jak to poprawic ??

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 



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


[ Dodano: 2008-12-18, 05:56 ]
funkcje juz działaja chciałbym teraz sterowac szybkoscia mrugania grugim przyciskiem pinb.2 tylko ze cos nie wychodzi :sad:

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 


[ Dodano: 2008-12-18, 05:57 ]
funkcje juz działaja chciałbym teraz sterowac szybkoscia mrugania grugim przyciskiem pinb.2 tylko ze cos nie wychodzi :sad:

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 

ODPOWIEDZ