Hallo,
anbei der Code. Ist für den Simulator etwas modifiziert.
Code:
$regfile = "M8def.dat"
$crystal = 16000000
Config Timer0 = Timer , Prescale = 1 'timer0 nur für Simulator ansonsten timer1 mit prescale 256
On timer0 timer_sub
DDRB = $B11111111 'zeigt die stunden von 0-5
DDRC = $B11111111 'zeigt die stunden von 6-11
DDRD = $B00011111 ' viertelstunden, pin d5-d6 zum einstellen
PortB = $B11111111
PortC = $B11111111
PortD = $B11111111 'pullups
sekundenblinker alias portd.4 'Portd.4 = PIN 6
dim sekunde as word
dim quarter as byte '0, 15, 30, 45 Minuten
dim Stunde as byte
Enable Timer0
Enable Interrupts
Do
if Stunde < 6 then
portb = lookup(Stunde , stunden_data)
portc = 255
endif
if Stunde >= 6 then
portc = lookup(Stunde , stunden_data)
portb = 255
endif
portd = lookup(quarter , quarter_data)
Loop
Timer_sub:
incr sekunde
if sekunde = 6 then 'eigentlich 900 aber zum simulieren nur mit 6
sekunde = 0
incr quarter
end if
if quarter = 4 then
quarter = 0
incr STUNDE
end if
if Stunde = 12 then
Stunde = 0
end if
toggle sekundenblinker 'Portd.4 = PIN 6
Return
Quarter_data:
Data &B11111110 'voll Portd.0 = PIN 2
Data &B11111101 'viertelnach Portd.1 = PIN 3
Data &B11111011 'halb Portd.2 = PIN 4
Data &B11110111 'viertelvor Portd.3 = PIN 5
Stunden_data: '0-5 ist portb, 6-11 ist portc
Data &B11111110 '0 PortB.0 = PIN 14
Data &B11111101 '1 PortB.1 = PIN 15
Data &B11111011 '2 PortB.2 = PIN 16
Data &B11110111 '3 PortB.3 = PIN 17
Data &B11101111 '4 PortB.4 = PIN 18
Data &B11011111 '5 PortB.5 = PIN 19
Data &B11111110 '6 PortC.0 = PIN 23
Data &B11111101 '7 PortC.1 = PIN 24
Data &B11111011 '8 PortC.2 = PIN 25
Data &B11110111 '9 PortC.3 = PIN 26
Data &B11101111 '10 PortC.4 = PIN 27
Data &B11011111 '11 PortC.5 = PIN 28
Das ganze soll eine Uhr werden mit kreisförmig angeordneten 12 LED´s für die Stundenanzeige und 4 LED´s für die Viertelstunden.
Wie gesagt, in der Schaltung tut sich bei den LED´s bis auf den Sekundenblinker nichts
Gruß
Jens
Lesezeichen