Układ żyrandola


Napisałem swój pierwszy program w bascomie dla układu "żyrandola" działanie proste:
załączamy światło świeci się jedna żarówka, gasimy, załączamy drugi raz światło - świeci się druga żarówka itd.
Chciałbym użyć mikrokontrolera Attiny13 ze względów na rozmiar, a u mieścić go chciałem w oprawie lampy
PB0 - wyjście do przekaźnika 1
Pb1 - wyjście do przekaźnika 2
Pb2 - wyjście, dioda led
Pb3 - wejście, panuje na nim stan wysoki do póki jest napięcie na przewodach
Pb4 - wejście, microswitch podpięty do Vcc

$regfile = "attiny13.dat"
$crystal = 10000000
Config Portb.0 = Output                                     'Ustawiamy port PB0 na wyjście
Bulb1 Alias Portb.0                                         'Nazywamy go Bulb1
Reset Bulb1                                                 'ustawiamy 0 na tym porcie
 
Config Portb.1 = Output
Bulb2 Alias Portb.1
Reset Bulb2
 
Config Portb.2 = Output
Led Alias Portb.2
Set Led                                                     'ustawiamy stan wysoki na tym wyjściu
 
Config Portb.3 = Input                                      'ustawiamy wejście na port PB3
Reset Portb.3                                               'Podpinamy PB3 do GND
Napiecie Alias Pinb.3                                       'odczyt stanu na tym porcie nazywamy Napiecie
 
 
Config Portb.4 = Input
Reset Portb.4
Klawisz Alias Pinb.4
 
Config Debounce = 30                                        'ustawiamy czas dla funkcji drgania styków
                                                                      'tworzymy zmienną jako bajt
Dim Zmienna As Byte
 
Debounce Klawisz , 1 , Sw , Sub                             'funkcja zapobiegająca drganiom styków
 
If Napiecie = 1 Then                                        'jeżeli napiecie =1 wtedy
  Readeeprom Zmienna , 1                                    'przeczytaj zawartość zeminnej o adresie 1
  If Sw Then                                                'jeśli na porcie PB4 pojawi się 1 to wtedy
   Writeeeprom Incr Zmienna , 1                             'zapisz do eepromu zmienną powiększoną o 1, do adresu 1
  End If
  Readeeprom Zmienna , 1                                    'przeczytaj zawartość adresu 1
  Select Case Zmienna                                       'jesli mamy zmienną
  Case 1 : Set Bulb1 And Reset Bulb2 And Writeeeprom Incr Zmienna , 1       'i jest ona rówa 1 to daj stan wysoki na Bulb1 i niski na bulb 2 i zapisz zmienną powiekszoną o 1
  Case 2 : Reset Bulb1 And Set Bulb2 And Writeeeprom Incr Zmienna , 1
  Case 3 : Set Bulb1 And Set Bulb2 And Writeeeprom Incr Zmienna , 1
  Case Else Set Bulb1 And Set Bulb2 And Writeeeprom Incr Zmienna , 1       'i nie ma ona żadnej wartości to daj stan wysoki na dwóch wyjściach
  End Select
End If
Prosiłbym o sprawdzenie kodu czy jest poprawny, zastosowałem w nim funkcje Debounce nie wiem czy poprawnie




Portret użytkownika gosc

Bascom

Proponuje poczytać Programowanie mikrokontrolerow AVR w jezyku Bascom - Marcin Wiazania

Portret użytkownika showluke

Bascom

Oczywiście wezmę się lekteruę jednak po zakończeniu roku szkolnego :)
Prosiłbym o wytykanie błędów, gdyż chce skończyć swoj projekt jak najszybciej i go (darmowo) udostępnić gdyż myślę, że przyda się wielu.