chcial bym poprosic o pomoc w udoskonaleniu kodu.
zrobilem zegarek binarny (13 diod, sa one osobno podlonczone do portow mikrokontrolera. Dziala on na zegarku rtc)
Jak sie nadusi przycisk/przalacznik:
pinb.5 ma byc wyswietlana godzina
pinb.4 ma byc wyswietlana data
pinb.3 + pinb.5 dodaje godzine
pinb.3 + pinb.4 dodaje minute
pinb.2 + pinb.5 dodaje dzien
pinb.2 + pinb.4 dodaje miesiac
jak nic nie jest nacisniete to nic nie jest wyswietlane
zdjecie:
rtc led.JPG - schemat
DSC00090.JPG - zdjecie
p.s moze ktos mi powiedziec jakie najlepiej kondensatory podlaczyc do zasilania ?
zrobilem zegarek binarny (13 diod, sa one osobno podlonczone do portow mikrokontrolera. Dziala on na zegarku rtc)
Jak sie nadusi przycisk/przalacznik:
pinb.5 ma byc wyswietlana godzina
pinb.4 ma byc wyswietlana data
pinb.3 + pinb.5 dodaje godzine
pinb.3 + pinb.4 dodaje minute
pinb.2 + pinb.5 dodaje dzien
pinb.2 + pinb.4 dodaje miesiac
jak nic nie jest nacisniete to nic nie jest wyswietlane
$regfile = "m8def.dat"
$crystal = 8000000
Config Portd.6 = Output
Config Portc.5 = Output
Config Portd.5 = Output
Config Portc.4 = Output
Config Portd.4 = Output
Config Portc.3 = Output
Config Portd.3 = Output
Config Portc.2 = Output
Config Portd.2 = Output
Config Portc.1 = Output
Config Portd.1 = Output
Config Portc.0 = Output
Config Portd.0 = Output
Config Pinb.5 = Input
Config Pinb.4 = Input
Config Pinb.3 = Input
Config Pinb.2 = Input
Config Clock = Soft
Config Date = Mdy , Separator = /
Enable Interrupts
Declare Sub Wysw_czas
Declare Sub Wysw_dat
Set Portb.5
Set Portb.4
Set Portb.3
Set Portb.2
Date$ = "01/01/07"
Time$ = "00:00:00"
Do
If Pinb.5 = 1 And Pinb.4 = 1 And Pinb.3 = 1 And Pinb.2 = 1 Then
Portc.5 = 1
Portc.4 = 1
Portc.3 = 1
Portc.2 = 1
Portc.1 = 1
Portc.0 = 1
Portd.6 = 1
Portd.5 = 1
Portd.4 = 1
Portd.3 = 1
Portd.2 = 1
Portd.1 = 1
Portd.0 = 1
End If
If Pinb.3 = 0 And Pinb.5 = 0 Then
Waitms 5
If Pinb.3 = 0 And Pinb.5 = 0 Then
Incr _min
_sec = 0
Call Wysw_czas
Waitms 50
End If
End If
If Pinb.3 = 0 And Pinb.4 = 0 Then
Waitms 5
If Pinb.3 = 0 And Pinb.4 = 0then
Incr _hour
Call Wysw_czas
Waitms 50
End If
End If
If Pinb.2 = 0 And Pinb.5 = 0then
Waitms 5
If Pinb.2 = 0 And Pinb.5 = 0 Then
Incr _month
Call Wysw_dat
Waitms 50
End If
End If
If Pinb.2 = 0 And Pinb.4 = 0 Then
Waitms 5
If Pinb.2 = 0 And Pinb.4 = 0 Then
Incr _day
Call Wysw_dat
Waitms 50
End If
End If
If Pinb.5 = 0 Then
Waitms 5
If Pinb.5 = 0 Then
Call Wysw_czas
Waitms 50
End If
End If
If Pinb.4 = 0 Then
Waitms 5
If Pinb.4 = 0 Then
Call Wysw_dat
Waitms 50
End If
End If
Loop
End
Sub Wysw_czas
'GODZINA 1 cyfra'
If _hour < 10 Then
Portc.5 = 1
Portc.4 = 1
End If
If _hour => 10 And _hour < 20 Then
Portc.5 = 1
Portc.4 = 0
End If
If _hour => 20 And _hour < 25 Then
Portc.5 = 0
Portc.4 = 1
End If
'GODZINA 2 CYFRA'
If _hour = 00 Or _hour = 10 Or _hour = 20 Then
Portc.3 = 1
Portc.2 = 1
Portc.1 = 1
Portc.0 = 1
End If
If _hour = 01 Or _hour = 11 Or _hour = 21 Then
Portc.3 = 0
Portc.2 = 1
Portc.1 = 1
Portc.0 = 1
End If
If _hour = 02 Or _hour = 12 Or _hour = 22 Then
Portc.3 = 1
Portc.2 = 0
Portc.1 = 1
Portc.0 = 1
End If
If _hour = 03 Or _hour = 13 Or _hour = 23 Then
Portc.3 = 0
Portc.2 = 0
Portc.1 = 1
Portc.0 = 1
End If
If _hour = 04 Or _hour = 14 Then
Portc.3 = 1
Portc.2 = 1
Portc.1 = 0
Portc.0 = 1
End If
If _hour = 05 Or _hour = 15 Then
Portc.3 = 0
Portc.2 = 1
Portc.1 = 0
Portc.0 = 1
End If
If _hour = 06 Or _hour = 16 Then
Portc.3 = 1
Portc.2 = 0
Portc.1 = 0
Portc.0 = 1
End If
If _hour = 07 Or _hour = 17 Then
Portc.3 = 0
Portc.2 = 0
Portc.1 = 0
Portc.0 = 1
End If
If _hour = 08 Or _hour = 18 Then
Portc.3 = 1
Portc.2 = 1
Portc.1 = 1
Portc.0 = 0
End If
If _hour = 09 Or _hour = 19 Then
Portc.3 = 0
Portc.2 = 1
Portc.1 = 1
Portc.0 = 0
End If
'MINUTA 1 cyfra'
If _min < 10 Then
Portd.6 = 1
Portd.5 = 1
Portd.4 = 1
End If
If _min => 10 And _min < 20 Then
Portd.6 = 1
Portd.5 = 1
Portd.4 = 0
End If
If _min => 20 And _min < 30 Then
Portd.6 = 1
Portd.5 = 0
Portd.4 = 1
End If
If _min => 30 And _min < 40 Then
Portd.6 = 1
Portd.5 = 0
Portd.4 = 0
End If
If _min => 40 And _min < 50 Then
Portd.6 = 0
Portd.5 = 1
Portd.4 = 1
End If
If _min => 50 And _min < 60 Then
Portd.6 = 0
Portd.5 = 1
Portd.4 = 0
End If
If _min => 60 Then
Portd.6 = 0
Portd.5 = 0
Portd.4 = 1
End If
'MINUTA 2 cyfra'
If _min = 00 Or _min = 10 Or _min = 20 Or _min = 30 Or _min = 40 Or _min = 50 Or _min = 60 Then
Portd.3 = 1
Portd.2 = 1
Portd.1 = 1
Portd.0 = 1
End If
If _min = 01 Or _min = 11 Or _min = 21 Or _min = 31 Or _min = 41 Or _min = 51 Then
Portd.3 = 0
Portd.2 = 1
Portd.1 = 1
Portd.0 = 1
End If
If _min = 02 Or _min = 12 Or _min = 22 Or _min = 32 Or _min = 42 Or _min = 52 Then
Portd.3 = 1
Portd.2 = 0
Portd.1 = 1
Portd.0 = 1
End If
If _min = 03 Or _min = 13 Or _min = 23 Or _min = 33 Or _min = 43 Or _min = 53 Then
Portd.3 = 0
Portd.2 = 0
Portd.1 = 1
Portd.0 = 1
End If
If _min = 04 Or _min = 14 Or _min = 24 Or _min = 34 Or _min = 44 Or _min = 54 Then
Portd.3 = 1
Portd.2 = 1
Portd.1 = 0
Portd.0 = 1
End If
If _min = 05 Or _min = 15 Or _min = 25 Or _min = 35 Or _min = 45 Or _min = 55 Then
Portd.3 = 0
Portd.2 = 1
Portd.1 = 0
Portd.0 = 1
End If
If _min = 06 Or _min = 16 Or _min = 26 Or _min = 36 Or _min = 46 Or _min = 56 Then
Portd.3 = 1
Portd.2 = 0
Portd.1 = 0
Portd.0 = 1
End If
If _min = 07 Or _min = 17 Or _min = 27 Or _min = 37 Or _min = 47 Or _min = 57 Then
Portd.3 = 0
Portd.2 = 0
Portd.1 = 0
Portd.0 = 1
End If
If _min = 08 Or _min = 18 Or _min = 28 Or _min = 38 Or _min = 48 Or _min = 58 Then
Portd.3 = 1
Portd.2 = 1
Portd.1 = 1
Portd.0 = 0
End If
If _min = 09 Or _min = 19 Or _min = 29 Or _min = 39 Or _min = 49 Or _min = 59 Then
Portd.3 = 0
Portd.2 = 1
Portd.1 = 1
Portd.0 = 0
End If
End Sub
Sub Wysw_dat
End Subzdjecie:
rtc led.JPG - schemat
DSC00090.JPG - zdjecie
p.s moze ktos mi powiedziec jakie najlepiej kondensatory podlaczyc do zasilania ?