Witam
Niedawno postanowiłem że warto nauczyć się czegoś pożytecznego. Niewątpliwie taką rzeczą jest programowanie mikroprocesorów. Poczytałem co nieco tu i tam, szperałem na forum, no i w końcu przyszedł czas na pierwszy własny program. Założenia programu są następujące:
-Sterowanie 5 diodami oznaczonymi jako K1, K2, K3, K4, K5 pod wpływem impulsu na PB0.
-po długim naciśnięciu przycisku >lub = 2s układ ma zacząć działać a po krótkim naciśnięciu poniżej 2s mają się zmieniać efekty migania. Po kolejnym naciśnięciu przycisku >lub= 2s układ ma się wyłączyć(czyt. nie ma świecić żadna dioda)
Napisałem pewien "zarys" programu, bo do w pełni funkcjonalnego i sprawnego to jeszcze daleko, ale podczas kompilacji wyskakują 3 błędy. Nie jestem w stanie ich zlokalizować;/ Być może zbyt zawile i niezrozumiale napisałem program. Będe wdzięczny za wszelkie sugestie i poprawki.
Oto wynik mojej pracy:
Niedawno postanowiłem że warto nauczyć się czegoś pożytecznego. Niewątpliwie taką rzeczą jest programowanie mikroprocesorów. Poczytałem co nieco tu i tam, szperałem na forum, no i w końcu przyszedł czas na pierwszy własny program. Założenia programu są następujące:
-Sterowanie 5 diodami oznaczonymi jako K1, K2, K3, K4, K5 pod wpływem impulsu na PB0.
-po długim naciśnięciu przycisku >lub = 2s układ ma zacząć działać a po krótkim naciśnięciu poniżej 2s mają się zmieniać efekty migania. Po kolejnym naciśnięciu przycisku >lub= 2s układ ma się wyłączyć(czyt. nie ma świecić żadna dioda)
Napisałem pewien "zarys" programu, bo do w pełni funkcjonalnego i sprawnego to jeszcze daleko, ale podczas kompilacji wyskakują 3 błędy. Nie jestem w stanie ich zlokalizować;/ Być może zbyt zawile i niezrozumiale napisałem program. Będe wdzięczny za wszelkie sugestie i poprawki.
Oto wynik mojej pracy:
$regfile = "ATtiny2313.dat"
$crystal = 16000000 'Kwarc w Hz
Config Timer1 = Timer , Prescale = 1024
Load Timer1 , 15625
On Timer1 Sekunda
Config Pinb.0 = Input
Config Pinb.1 = Output
Config Pinb.2 = Output
Config Pinb.3 = Output
Config Pinb.4 = Output
Config Pinb.5 = Output
Config Pinb.6 = Output
Config Pinb.7 = Output
Config Portd = Output
Portb = 100000000
Portd = 00000000
Dim Licznik_1 As Byte 'Licznik czasu
Licznik_1 = 0
Dim Impuls As Byte 'Zmienna Impuls wejsciowy
Impuls = Portb.0
Dim Czas As Integer 'Zmienna Czas
Czas = 270
Dim Efekt As Byte 'Zmienna Efekt
Efekt = 1
Dim K1 As Bit 'Kanał pierwszy
K1 = Portb.7
Dim K2 As Bit 'Kanał drugi
K2 = Portb.6
Dim K3 As Bit 'Kanał trzeci
K3 = Portb.5
Dim K4 As Bit 'Kanał czwarty
K4 = Portb.4
Dim K5 As Bit 'Kanał piaty
K5 = Portb.0
Dim Dioda As Bit
Dioda = 0
Dim Licz As Byte 'zmienna zliczająca sekundy
Licz = 0
Enable Timer1
Enable Interrupts
Do
If Pinb.0 = 0 And Efekt > 1 Then 'Zmiana efektu
Efekt = Efekt + 1 And Start Timer1
End If
If Pinb.0 = 0 And Licz = 1 And Efekt = 1 Then Efekt = 2 And Stop Timer1
End If
If Pinb.0 = 0 And Licz = 1 And Efekt > 1 Then Efekt = 1 And Stop Timer1
End If
If Efekt = 1 Then 'Układ wyłączony
Portb = 00000000
Portd = 00000000
End If
If Efekt = 2 Then 'Efekt pierwszy
Set K1 , K2 , K3 , K4 , K5
End If
If Efekt = 3 Then
Set K1 , K2 'Efekt drugi
End If
Loop
Sekunda:
Load Timer1 , 15625
Incr Licznik_1
If Licznik_1 = 2 Then
Licz = 1
Licznik_1 = 0
End If
Return