logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Zegarek binarny na Bascom: jak udoskonalić kod dla przycisków i wyświetlania?

wader_669 25 Paź 2007 11:34 1800 0
REKLAMA
  • #1 4412936
    wader_669
    Poziom 28  
    Posty: 1512
    Pomógł: 93
    Ocena: 15
    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

    $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 Sub


    zdjecie:
    rtc led.JPG - schemat
    DSC00090.JPG - zdjecie

    p.s moze ktos mi powiedziec jakie najlepiej kondensatory podlaczyc do zasilania ?
    Załączniki:
    • DSC00090.JPG (501.48 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Zegarek binarny na Bascom: jak udoskonalić kod dla przycisków i wyświetlania? rtc led.JPG (65.39 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
REKLAMA