Nabend zusammen,
folgendes Programm:
Code:$regfile = "m8def.dat" $framesize = 48 $swstack = 64 $hwstack = 64 $crystal = 8000000 $baud = 9600 Dim Empfangen As String * 3 Dim X As Bit , Y As Bit , Z As Bit Dim Ansteuerung As Byte , Wecksound As Byte Dim Ansteuerung2 As Integer X = 0 Y = 0 Z = 0 Wecker = 0 Config Portb = Output Config Portc = Output Config Portd.4 = Output Config Portd.3 = Output Summer Alias Portd.4 Pc Alias Portd.3 On Urxc Onrxd Enable Urxc Enable Interrupts Do If Len(empfangen) > 2 Then Ansteuerung2 = Val(empfangen) Select Case Ansteuerung2 Case 400 Pc = 1 Empfangen = "" Case 401 Pc = 0 Empfangen = "" Case Is < 256 Gosub Ansteuern End Select End If Loop End Ansteuern: Ansteuerung = Ansteuerung2 Portb = Ansteuerung Gosub Stehlampe Gosub Leuchtkugel Gosub Lichterkette Empfangen = "" Return Lichterkette: If Portb.4 = 1 Then : If X = 0 Then : Portc = &B00000000 : Portc.1 = 1 : X = 1 : Waitms 500 : Portc = &B00000000 : End If : End If If Portb.4 = 0 Then : If X = 1 Then : Portc = &B00000000 : Portc.0 = 1 : X = 0 : Waitms 500 : Portc = &B00000000 : End If : End If Return Stehlampe: If Portb.6 = 1 Then : If Y = 0 Then : Portc = &B00000000 : Portc.3 = 1 : Y = 1 : Waitms 500 : Portc = &B00000000 : End If : End If If Portb.6 = 0 Then : If Y = 1 Then : Portc = &B00000000 : Portc.2 = 1 : Y = 0 : Waitms 500 : Portc = &B00000000 : End If : End If Return Leuchtkugel: If Portb.7 = 1 Then : If Z = 0 Then : Portc = &B00000000 : Portc.5 = 1 : Z = 1 : Waitms 500 : Portc = &B00000000 : End If : End If If Portb.7 = 0 Then : If Z = 1 Then : Portc = &B00000000 : Portc.4 = 1 : Z = 0 : Waitms 500 : Portc = &B00000000 : End If : End If Return Onrxd: Empfangen = Empfangen + Chr(udr) Return
Problem ist: Der Portb wird nicht richtig gesetzt. Nachdem die
"Ansteuern" Schleife ausgeführt wurde, messe ich jeden Port von b durch
aber keiner ist "1". Deshalb funktionieren auch die Schleifen
Lichterkette, Leuchtkugel und Stehlampe nicht. Ist da irgendwas falsch?
(Der µC läuft über (Mhz Interner Takt)







Zitieren

Lesezeichen