PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programm für LED-Schaltung mit Mega8



RAM
01.06.2005, 14:01
Hallo Leute,

ich bräuchte mal eure Hilfe bei nem kleinen Porgramm.
Ich habe eine Schaltung mit einem Mega8 aufgebaut. Dabei hängen an den Pins PC0, PC1, PC2, PC3, PC4 und PC5 jeweils eine LED (nicht direkt, sondern über einen uln2803). Wenn Jetzt am Pin PD2 ein High-Signal anliegt, sollen die 6 LED´s mit 200 ms Abstand nacheinander eingeschaltet (also PC0....PC5 nacheinander auf High) werden. Wenn kein High-Signal mehr anliegt, sollen die LED´s mit der gleichen Pause in entgegengesetzter Richtung (also erst PC5 auf Null, dann PC4 auf Null usw.) wieder ausgeschaltet werden.
Ich hoffe, mir kann dabei jemand weiterhelfen.

Danke schon mal,

RAM

x-ryder
01.06.2005, 14:22
was willst du denn jetzt von uns?
ich nehme an, nen programm, aber mit was programmierst du denn?
hast du nen programmer?

RAM
01.06.2005, 14:28
Naja, war wieder mal so in Gedanken, dass ich die Hälfte vergessen hab.
Programmieren würde ich das ganze in Bascom über ISP, aber da ich vom programmieren noch nicht so viel Ahnung hab, weiß ich nicht, wie ich den Spass programmieren soll.

avrflo
01.06.2005, 14:47
Hallo,
meinst du so?



if pind.2=1 then

portc.0=1
waitms 200
portc.1=1
waitms 200
portc.2=1
waitms 200
portc.3=1
waitms 200
portc.4=1
waitms 200
portc.5=1
waitms 200

if pind.2=0 then
portc.5=1
waitms 200
portc.4=1
waitms 200
portc.3=1
waitms 200
portc.2=1
waitms 200
portc.1=1
waitms 200
portc.0=1
waitms 200


Gruß
Florian

RAM
01.06.2005, 15:57
Ja genau, sowas hab ich gemeint.

Danke!

RAM
01.06.2005, 16:18
Habs jetzt mal versucht, aber die LED´s schalten sich der Reihe nach ein, wenn ich sie an 5V anschließe, auch, wenn Pin D2 kein High-Signal bekommt.

Habs jetzt mal so programmiert:



$regfile = "m8def.dat"
$crystal = 3686411

Ddrc = &B11111111
Portd = &B00000000


Do

If Pind.2 = 1 Then
Portc.0 = 1
waitms 200
portc.1=1
waitms 200
portc.2=1
waitms 200
portc.3=1
waitms 200
portc.4=1
waitms 200
portc.5=1
Waitms 200

End If


If Pind.2 = 0 Then
portc.5=1
waitms 200
portc.4=1
waitms 200
portc.3=1
waitms 200
portc.2=1
waitms 200
portc.1=1
waitms 200
portc.0=1
waitms 200

End If

Loop

m.artmann
01.06.2005, 18:12
Du mußt auch in einer der beiden "IF" Abfragen die Pins wieder auf 0 stetzen.
In obigem Programm werden sie immer auf 1 gesetzt.

Gruß
m.artmann

RAM
01.06.2005, 18:22
Oh mann, bin ich eine Pfeife, naja, bin heute irgendwie durch den Wind.
Danke, jetzt haut es auf jeden Fall hin!