Witam trochę raczkuje w programowaniu uC ale do rzeczy
chce zrobić wyłącznik czasowy do mojej naświetlarki program napisałem ale nie spełnia moich oczekiwań a mianowicie
założenia
-dwa niezależne programy pierwszy 16 sekund drugi 2 min 25 sec (działa)
-edycja czasu każdego programu (działa) ale nie zapamiętuje po przejściu do innego programu
-odzyskanie trochę miejsca w pamięci bo program zajmuje 99% pamięci
a chce jeszcze upchnąć termometr na 1-wire i trzeci program
proszę o pomoc w poprawieniu programu /pewnie jest sporo błędów
chce zrobić wyłącznik czasowy do mojej naświetlarki program napisałem ale nie spełnia moich oczekiwań a mianowicie
założenia
-dwa niezależne programy pierwszy 16 sekund drugi 2 min 25 sec (działa)
-edycja czasu każdego programu (działa) ale nie zapamiętuje po przejściu do innego programu
-odzyskanie trochę miejsca w pamięci bo program zajmuje 99% pamięci
a chce jeszcze upchnąć termometr na 1-wire i trzeci program
proszę o pomoc w poprawieniu programu /pewnie jest sporo błędów
$regfile = "Attiny2313.dat"
$crystal = 4000000
Dim Sek As Byte
Dim Mint As Byte 'deklaracja zmiennych
Dim Przezutnik As Bit
Dim Pp As Bit
Dim Kto As Bit
Dim P1 As Byte
Dim P2 As Byte
Config Portb = &B11111111
Portb = &B11111100
Config Portd = &B1000000
Portd = &B1111111
Cursor Off
Enable Interrupts : Enable Timer1 'konfiguracja tajmera
Config Timer1 = Timer , Prescale = 64
On Timer1 Czas 'wlaczenie tajmera
Cls
Locate 1 , 1 'pozycja tekstu na wyswitlaczu
Lcd "Naswietlarka UV"
Locate 2 , 4 'pozycja tekstu na wyswitlaczu
Lcd " by DroX"
Wait 2
Cls
Mint = 0 : Sek = 0 'stna poczatkowy zegara
Stop Timer1 'zatrzymanie tajmera
' Cls
Do
Debounce Pind.0 , 0 , S , Sub 'badanie przyciskow
Debounce Pind.1 , 0 , G , Sub 'badanie przyciskow
Debounce Pind.1 , 0 , G , Sub 'badanie przyciskow
Debounce Pind.2 , 0 , Zwieksz , Sub 'badanie przyciskow
Debounce Pind.3 , 0 , Zmniejsz , Sub 'badanie przyciskow
Debounce Pind.4 , 0 , Przelacznik , Sub 'badanie przyciskow
Debounce Pind.5 , 0 , Programy , Sub
Locate 1 , 7 'pozycja tekstu na wyswitlaczu
Lcd Sek ; ":" ; Mint 'wyswitlanie wartosci zmiennych sek , mint
Waitms 100 'czekanie
' Cls
Loop
End
Czas:
Timer1 = Timer1 + 3036 'co sekunde
Sound Portd.6 , 50 , 500 ' pikanie przy odliczaniu
Decr Sek 'zmniejszanie ! wartosci zmiennej sek
If Sek = 0 Then 'jesli sek 0 to idz dalej
Sek = 60 ' i zmnien wartosc na 60
Decr Mint ' i zwiększ wartość licznika mint
If Mint = 255 Then
Toggle Portb.0 ' przelacznik rartosci 1 lub 0 dla pinu b0
Stop Timer1
Mint = 0 : Sek = 0 ' i jesli skonczy odliczanie to wyzeruj wartosci zmiennich mint i sek
Lowerline
Lcd "PIECZATKA Gotowa"
Wait 2
End If : End If ': End If
Return
S:
Cls 'etyketka S
Sek = 16
Mint = 0
P1 = 0
Sound Portd.6 , 50 , 500
Locate 2 , 4
Lcd "PROGRAM 1"
'Wait 2
Return
G:
Cls 'etyketka G
Sek = 25
Mint = 2
P2 = 0
Sound Portd.6 , 50 , 500
Locate 2 , 4
Lcd "PROGRAM 2"
'Wait 2
Return
Programy: 'etyketka wybor programu
' wyznaczenie do kturego programu (1 lub 2 ) mamy dodac lub odjac wartosc
Toggle Kto
Toggle Pp
If Pp = 1 Then
Locate 1 , 1
Lcd "2"
Else
Locate 1 , 1
Lcd "1"
End If
Return
Star:
Start Timer1 'etykeita start tajmerka
Set Portb.0
Sound Portd.6 , 50 , 500
Return
Sto:
Stop Timer1 'etyketa stop tajmerka
Reset Portb.0
Sound Portd.6 , 50 , 500
Return
Zwieksz: 'etykieta zwikrzajaca wartoc zmiennych prsyciskiem
Sound Portd.6 , 50 , 300
If Pp = 1 Then
Incr Sek
If Sek = 60 Then
Sek = 0
Incr Mint
If Mint = 60 Then
Mint = 0
End If : End If : End If
Return
Zmniejsz:
Sound Portd.6 , 50 , 900 'etykieta zmniejszajaca wartoc zmiennych prsyciskiem
If Pp = 1 Then
Decr Sek
If Sek = 0 Then
Sek = 60
Decr Mint
If Mint = 60 Then
Mint = 0
End If : End If : End If
Return
Przelacznik: 'etykieta przelaczanik start stop jednym przyciskiem
Toggle Przezutnik
If Przezutnik = 0 Then
Gosub Star
Else
Gosub Sto
End If
Return