Zaloguj się, aby zobaczyć kod
Na początek możesz poeksperymetować kodem ,który zamieszczam poniżej.
Na podstawie tego kodu mam pracujące urządzenie.Dodatkowo uzupełniłem kod o ustawienie godzin , mimut i dni. Program załącza niezależnie 4 wyjścia.Pozdrawiam
Fusebit A997 ustawiony na oscylator wewnętrzny 8Mhz , 0100
$regfile = "m8def.dat" ' DYREKTYWY DLA KOMPILATORA
$crystal = 8000000 'OSCYLATOR 8MHZ
Config Lcd = 16 * 2 'KONFIGURACJA TYPU WYSWIETLACZA
Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.6 , E = Portd.1 , Rs = Portd.0 'LCD
Config Clock = Soft 'KONFIGURACJA ZEGARA RTC
Config Date = Dmy , Separator = . 'KONFIGURACJA SPOSOBU FORMATOWANIA DATY
Config Pinc.3 = Output 'LINIA PC3 JAKO WYJŚCIE
Set Portc.3 'DOŁĄCZENIE DO LINI PC3 REZYSTORA PODCIĄGAJĄCEGO
Config Pinc.2 = Output 'LINIA PC2 JAKO WYJŚCIE
Set Portc.2 'J.W
Config Pinc.1 = Output 'LINIA PC1 JAKO WYJŚCIE
Set Portc.1 'J.W
Config Pinc.0 = Output 'LINIA PC0 JAKO WYJŚCIE
Set Portc.0 'JW
Config Pinb.4 = Input 'LINIA PB4 JAKO WEJŚCIE
Config Pinb.2 = Input 'LINIA PB2 JAKO WEJŚCIE
Config Pinb.1 = Input
Config Pinb.0 = Input 'wolna linia
Config Pind.7 = Input 'wolna linia
Config Pinc.5 = Input 'wolna linia
Config Pinc.4 = Input 'wolna linia
Config Pind.5 = Input 'wolna linia
S1 Alias Pinb.4 'przypisanie nazwie Pinb.4 nazwy S1
S2 Alias Pinb.2 ' przypisanie nazwie Pinb.2 nazwy S2
S3 Alias Pinb.1
Set Portb.4 'dołączenie do linii PB4 rezystora podciągającego
Set Portb.2 'dołączenie do linii PB2 rezystora podciągającego
Set Portb.1
Set Portb.3
Set Portb.0
Set Portb.7
Set Portb.5
Set Portb.4
Set Portb.5
Enable Interrupts 'zezwalaj na przerwania
Date$ = "01.00.00" 'OD TEJ DATY LICZY WPRZÓD
Time$ = "23.59.00" 'POCZĄTKOWY CZAS PO WŁĄCZENIU STEROWNIKA
Cls
Cursor Off
Lcd "PROJEKT-XI2010"
Lowerline
Lcd "ZBYSZEK"
Wait 3
Cls
Do 'PĘTLA GŁÓWNA
If S1 = 0 Then ' zmiana minut
Incr _min
If _min = 60 Then
_min = 0
End If
End If
If S2 = 0 Then 'zmiana godzin
Incr _hour
If _hour = 24 Then
_hour = 0
End If
End If
If S3 = 0 Then 'zmiana dni
Incr _day
If _day = 31 Then
_day = 0
End If
End If
Cls 'CZYŚĆ LCD
Lcd Time$ 'POBIERZ AKTUALNY CZAS
Locate 1 , 10 'W PIERWSZEJ LINII NA 10 MIEJSCU NAPISZ..
Lcd "GODZINA"
Lowerline 'W DRUGIEJ LINII
Lcd Date$ 'POBIERZ AKTUALNĄ DATĘ
If Portc.0 = 0 Then 'JEŚLI PORTC.0 JEST NA NISKIM POZIOMIE
Lowerline 'W DRUGIEJ LINII
Locate 2 , 10 'NA 10 MIEJSCU
Lcd "PK1" 'NAPISZ PK1
End If 'KONIEC PROCEDURY
If Portc.1 = 0 Then
Lowerline
Locate 2 , 10
Lcd "PK2" 'NAPISZ..
End If
If Portc.2 = 0 Then
Lowerline
Locate 2 , 10
Lcd "PK3" 'NAPISZ..
End If
If Portc.3 = 0 Then
Lowerline
Locate 2 , 10
Lcd "PK4" 'NAPISZ..
End If
Waitms 100 'ODCZEKAJ CHWILĘ
If _hour = 0 Then 'PO WŁĄCZECZENIU STEROWNIKA O 0 GODZ
If _min = 0 Then '0 MINUCIE
If _sec = 0 Then '0 SEKUNDZIE
Reset Portc.0 'WŁĄCZ PORTC.3
Else 'W PRZECIWNYM RAZIE
If Pinc.3 = 0 Then 'JEŻELI PORTC3 MA NISKI POZIOM TO:
If _hour = 0 Then
If _min = 0 Then 'PO 3 SEKUNDZIE
If _sec = 3 Then
Set Portc.0 'WYŁĄCZ PORTC.1
End If
End If
End If 'ZAKOŃCZENIE WARUNKÓW
End If
End If
End If
End If
If _hour = 0 Then
If _min = 1 Then
If _sec = 0 Then
Reset Portc.1
Else
If Pinc.1 = 0 Then
If _hour = 0 Then
If _min = 1 Then
If _sec = 30 Then
Set Portc.1
End If
End If
End If
End If
End If
End If
End If
If _hour = 1 Then 'PO 0 GODZINIE
If _min = 2 Then 'PO 1MINUCIE
If _hour = 0 Then 'PO WŁĄCZECZENIU STEROWNIKA O 0 GODZ.
If _min = 2 Then '1 MINUCIE
If _sec = 0 Then '0 SEKUNDZIE
Reset Portc.2 'WŁĄCZ PORTC.1
Else 'W PRZECIWNYM RAZIE
If Pinc.2 = 0 Then 'JEŻELI PORTC.1 MA NISKI POZIOM TO:
If _sec = 30 Then 'PO 30 SEKUNDZIE
Set Portc.2 'WYŁĄCZ PORTC.1
End If 'ZAKOŃCZENIE WARUNKÓW IF
End If
End If
End If
End If
End If
End If
If _hour = 0 Then
If _min = 3 Then
If _sec = 0 Then
Reset Portc.3
Else
If Pinc.3 = 0 Then
If _hour = 0 Then
If _min = 3 Then
If _sec = 33 Then
Set Portc.3
End If
End If
End If
End If
End If
End If
End If
Loop
End