Napisałem program w którym po naciśnięciu przycisku S1 następuje załaczenie przekaźnika na czas 1 minuty
Tym samym przyciskiem można również przed upływem minuty wyłączyć przekaźnik
Problem jest taki że chciałbym aby timer0 zaczął odliczać dopiero po naciśnięciu i puszczeniu przycisku
W tej chwili timer cały czas pracuje i powoduje to losowy czas wyłączenia
Kod: Zaznacz cały
$regfile = "attiny2313.dat"
$crystal = 4000000
Config Portb = 255
Portb = 255
Config Portd = &B1111100
Portd = &B1111111
Config Timer0 = Timer , Prescale = 64
On Timer0 Minutnik
Dim Sekunda As Byte
Dim Minuta As Byte
S1 Alias Pind.2
Enable Interrupts
Enable Timer0
Load Timer0 = 250
'///////////////////////////////////////////////////////////
Do 'program główny w którym po naciśnięciu S1
Debounce S1 , 0 , Przekaznik , Sub 'przenosi nas do podprogramu "przekaznik"
Loop
End
'///////////////////////////////////////////////////////////
Minutnik: 'ten podprogram ma na celu wyłaczyć przekaźnik
Load Timer0 = 250 'po upływie 1 minuty
Incr Sekunda
If Sekunda = 250 Then
Incr Minuta
If Minuta = 60 Then
Set Portb.1
Minuta = 0
End If
End If
Return
'//////////////////////////////////////////////////////////
Przekaznik:
Bitwait S1 , Set 'Jeżeli został naciśnięty przycisk S1 to czekać aż zostanie puszczony
Toggle Portb.1 ' i następnie zmieniony stan na wyjściu B1
Return 'powrót do programu