Hallo,
Ich habe eine Basic-Programm zur Ansteuerung geschrieben.
Hier ist es:
Code:
$regfile = "2313def.dat"
$crystal = 4000000
Dim Temp_ziffer As Byte
Dim Bcd_aus As Byte
Dim Ausgang As Byte
Dim Sek_blink As Bit
Dim A_sekunde As Byte
Dim A_minute As Byte
Dim A_stunde As Byte
Dim B_sekunde As Byte
Dim B_minute As Byte
Config Portb = Output
Config Portd = Output
'Ddrd = &B0111100
'Portd = &B1000011
Data &B0000000
Segment_a Alias Portb.0
Segment_b Alias Portb.1
Segment_c Alias Portb.2
Segment_d Alias Portb.3
Segment_e Alias Portb.4
Segment_f Alias Portb.5
Segment_g Alias Portb.6
Dezimalpunkt Alias Portb.7
Ziffer_1 Alias Portd.0
Ziffer_2 Alias Portd.1
Ziffer_3 Alias Portd.2
Ziffer_4 Alias Portd.3
Ziffer_5 Alias Portd.4
Ziffer_6 Alias Portd.5
Ziffer_7 Alias Portd.6
Ziffer_8 Alias Portd.7
Const Load_timer1 = 62755
On Timer0 7segment
Config Timer0 = Timer , Prescale = 256
Enable Timer0
Sekunde_plus:
Load Timer1 , Load_timer1
Incr _sekunde
Return
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
On Timer1 Sekunde_plus
Config Timer1 = Timer , Prescale = 64
Enable Timer1
Enable Interrupts
Load Timer1 , Load_timer1
Do
If A_sekunde = 9 then
A_sekunde = 0
B_sekunde + 1
Incr A_sekunde
Incr B_sekunde
End If
'++++++++++++++++++++++++++++++++++
If B_sekunde = 6 then
A_sekunde = 0
B_sekunde = 0
Incr B_sekunde
Incr A_sekunde
End If'++++++++++++++++++++++++++++++++++
If A_minute = 9 then
A_minute = 0
B_minute + 1
Incr B_minute
Incr A_minute
End If'++++++++++++++++++++++++++++++++++
If B_minute = 6 then
A_minute = 0
B_minute = 0
A_stunde + 1
Incr B_minute
Incr A_stunde
Incr A_minute
End If'++++++++++++++++++++++++++++++++++
If A_stunde = 9then
A_sekunde = 0
B_sekunde = 0
A_minute = 0
B_minute = 0
A_sekunde = 0
B_sekunde = 0
Incr B_minute
Incr A_minute
Incr B_sekunde
Incr A_sekunde
Incr A_stunde
End If
End
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
7segment:
If Temp_ziffer = 8 Then Temp_ziffer = 0 '
Incr Temp_ziffer
Portb = &B11111111
Select Case Bcd_aus
Case 1 : Ausgang = Lookup(1 , Segmentfolge)
Case 2 : Ausgang = Lookup(2 , Segmentfolge)
Case 3 : Ausgang = Lookup(3 , Segmentfolge)
Case 4 : Ausgang = Lookup(4 , Segmentfolge)
Case 5 : Ausgang = Lookup(5 , Segmentfolge)
Case 6 : Ausgang = Lookup(6 , Segmentfolge)
Case 7 : Ausgang = Lookup(7 , Segmentfolge)
Case 8 : Ausgang = Lookup(8 , Segmentfolge)
Case 9 : Ausgang = Lookup(9 , Segmentfolge)
Case 0 And Temp_ziffer = 1 : Ausgang = Lookup(10 , Segmentfolge)
Case 0 And Temp_ziffer > 1 : Ausgang = Lookup(0 , Segmentfolge)
End Select
Segment_a = Not Ausgang.0 'Segment A
Segment_b = Not Ausgang.1 'Segment B
Segment_c = Not Ausgang.2 'Segment C
Segment_d = Not Ausgang.3 'Segment D
Segment_e = Not Ausgang.4 'Segment E
Segment_f = Not Ausgang.5 'Segment F
Segment_g = Not Ausgang.6 'Segment G
Return
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Segmentfolge:
Data &B0111111
Data &B0000110
Data &B1011011
Data &B1001111
Data &B1100110
Data &B1101101
Data &B1111101
Data &B0000111
Data &B1111111
Data &B1101111
Data &B0000000
Data &B1011100
Data &B1000000
Data &B0001000
Data &B0000001
Data &B1110100
Data &B1111000
Wenn Fehler drinstecken,dann seit so nett und postet sie.
Lesezeichen