du hast mich falsch verstanden mit dem Editieren ;)
Du sollst nur Editieren wenn du den letzen Beitrag selber geschrieben hast und nicht wenn ich z.B den letzen Beitrag geschrieben habe.
Druckbare Version
du hast mich falsch verstanden mit dem Editieren ;)
Du sollst nur Editieren wenn du den letzen Beitrag selber geschrieben hast und nicht wenn ich z.B den letzen Beitrag geschrieben habe.
habe einen code im netz gefunden und an den mega8 angepasst
sowie an die ports 3- 5 in deinem fall.
Code:'code gefunden bei http://www.amhamberg.de
'an mega8 portb.3 bis .5 angepasst mit 8mhz
'internen takt,geändert am 28.01.2007
$regfile = "m8def.dat"
$crystal = 8000000
Ddrb = &B11111111
Portb = &B00000000
Dim A As Integer
Dim B As Integer
Dim C As Integer
Dim X As Integer
Dim Y As Integer
Dim Onoff1 As Bit
Dim Onoff2 As Bit
Declare Sub Dimmen(byval Led1 As Integer , Byval Led2 As Integer)
Do
Do
A = Rnd(3) + 3
B = Rnd(3) + 3
If A <> B Then Exit Do
Loop
If Portb.a = 1 And Portb.b = 1 Then
C = 3
While C = A Or C = B
Incr C
Wend
If Portb.c = 1 Then
Call Dimmen(a , B)
Else
Call Dimmen(a , C)
End If
Else
Call Dimmen(a , B)
End If
Loop
End
Sub Dimmen(byval Led1 As Integer , Byval Led2 As Integer)
If Portb.led1 = 0 Then
Onoff1 = 1
Else
Onoff1 = 0
End If
If Portb.led2 = 0 Then
Onoff2 = 1
Else
Onoff2 = 0
End If
For X = 0 To 500
For Y = 1 To 500
If X > Y Then
Portb.led1 = Onoff1
Portb.led2 = Onoff2
Else
Portb.led1 = Not Onoff1
Portb.led2 = Not Onoff2
End If
Next
Next
Portb.led1 = Onoff1
Portb.led2 = Onoff2
Waitms 500
End Sub
also bei mir funktioniert der code nicht. wie siehts bei dir aus?
EDIT: es funktioniert doch, hab es nochmal von der hp runtergeladen.
Das kommt dem Ergebnis doch schon relativ nahe, blos leider verstehe ich in dem Programm rein gar nichts :roll:
Irgentwie sehe ich da nich einen Timer oder ähnliches.
Jetzt sind blos immer 2 LEDs an und eine Dimmt sich aus (Abwechselnd), was ja irgentwie blöde ist, da dann ja viel zu oft alle 3 aufeinmal an sind (RGB = weiss) und man nie die einzelfarben Rot, Grün und Blau hat.
als bei mir läuft der code so wie ich ihn einstellte.habe es mit 16 mhz sowie mit interne 8 und 4 mhz laufen lassen.
hast schon recht aber war ja ein vorschlag,mit dem weiss ist das halt so in dem fall.timer hat er nicht benutzt läuft alles software-mässig ab.
bin auch noch am probieren eine art regenbogenverlauf zuerstellen.
also in der art vor und zurück.aber in bascom das zu prgrammieren wird
aufwendig.in assembler würde das besser und einfacher laufen,kann aber
kein assembler und programmiere mit bascom erst seit ein paar wochen.
wie du meinem autor-namen entnehmen kannst mache ich bei schönem wetter andere sachen.naja man kann nicht alles können.aber ich bleibe am ball.wenn du etwas gefunden hast kannst du es mir ja per e-mail schicken oder hier einstellen.
ja mache ich, ich bin schon die ganze zeit am probieren.
ich habs geschafft!!!! =D>
Ist zwar mehr als kompliziert gecodet, aber immerhin erfüllt es voll und ganz seinen zweck.
Code:$regfile = "m8def.dat"
$crystal = 8000000 'Interner 8mhz Quarz
'#####Ausgänge#####
Config Portb = Output
Gruen Alias Portb.2 'Grüne LED an Portb.5
Rot Alias Portb.1 'Rote LED an Portb.4
Blau Alias Portb.0 'Blaue LED an Portb.3
'#####Deklarationen#####
Dim Helligkeit As Byte 'Helligkkeitswert
'###Hilfsbits und -bytes###
Dim Ro1 As Bit
Dim Bl1 As Bit
Dim Gr1 As Bit
Dim Reverse As Bit
Dim Zler1 As Byte
Dim Zler2 As Byte
Dim Halb As Byte
Dim Ganz As Byte
'#####Timer#####
Enable Interrupts
Enable Timer0
On Timer0 Int_timer0
Config Timer0 = Timer , Prescale = 256
Enable Timer1
On Timer1 Int_timer1
Config Timer1 = Timer , Prescale = 8
Const Timervorgabe = 32203
Helligkeit = 5
'#####Hauptschleife#####
Do
Loop
'#####Hauptschleife Ende#####
'#####Timer0 isr#####
Int_timer0:
If Ro1 = 1 Then
Toggle Rot
If Rot = 1 Then
Timer0 = 256 - Helligkeit
Else
Timer0 = Helligkeit
End If
End If
If Bl1 = 1 Then
Toggle Blau
If Blau = 1 Then
Timer0 = 256 - Helligkeit
Else
Timer0 = Helligkeit
End If
End If
If Gr1 = 1 Then
Toggle Gruen
If Gruen = 1 Then
Timer0 = 256 - Helligkeit
Else
Timer0 = Helligkeit
End If
End If
Return
'#####Timer1 isr#####
Int_timer1:
Timer1 = Timervorgabe 'Timervorgabewert von RNAVR berechnet
If Helligkeit = 250 Then
Set Reverse
Incr Zler1
End If
If Helligkeit = 1 Then
Reset Reverse
Incr Zler2
End If
'####Moodlight####
'###rot###
If Zler2 = 0 Then Set Ro1
If Zler1 = 1 Then Reset Ro1
If Zler1 = 2 Then Set Ro1
If Zler2 = 3 Then Set Ro1
If Zler1 = 4 Then Reset Ro1
If Zler2 = 2 Then Reset Ro1
'###Gruen###
If Zler2 = 0 Then Set Gr1
If Zler1 = 2 Then Reset Gr1
If Zler1 = 3 Then Set Gr1
If Zler2 = 3 Then Reset Gr1
If Zler2 = 4 Then Set Gr1
'###Blau###
If Zler2 = 1 Then Reset Bl1
If Zler2 = 0 Then Set Bl1
If Zler2 = 2 Then Set Bl1
If Zler1 = 3 Then Reset Bl1
If Zler1 = 4 Then Set Bl1
'//////////////////////////////////////////////
If Zler1 > 4 Then Zler1 = 0
If Zler2 > 4 Then Zler2 = 0
If Reverse = 1 Then Decr Helligkeit
If Reverse = 0 Then Incr Helligkeit
Return
End