ach ja und noch was: das programm sollte wenn möglich nicht stehen bleiben während es auf den empfang wartet
Hi Leute
Also, mein MC: ATmega32, 14.5Mhz ext. Quarz
Könnte mir jemand eine Seite sagen, wo ich nachlesen kann wie ich einen Text den ich per UART empfangen habe auswerten kann und, je nach Text, eine andere Aktion ausführen kann.
Also z.B.:
Wenn empfangener Text = "A" dann LED1 = ein
Wenn empfangener Text = "B" dann LED2 = ein
oder hat jemand einen Codeschnippsel?
Liebe Grüsse
ach ja und noch was: das programm sollte wenn möglich nicht stehen bleiben während es auf den empfang wartet
Bemühe mal die Suche nach "URXC". Da findest du genügend Beispiele.
Hallo , ich bin mir sicher das du auf diese seite glücklich wirst ,http://www.rn-wissen.de/index.php/Wi...rn_des_AVR%27s
ja danke, mir wurde geholfen
edit: Fenster zu lange offen gehabt... Ich lass es trotzdem drinCode:$regfile = "m32def.dat" $baud = 38400 $crystal = 14500000 $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 ' default use 10 for the SW stack $framesize = 40 Dim B1 As Byte Config Porta.0 = Output Config Porta.1 = Output Led1 Alias Porta.0 'Port A0 für LED1 Led2 Alias Porta.1 'Port A1 für LED2 Do B1 = Inkey() 'first UART If B1 <> 0 Then If B1 = 65 Then Set Led1 'A LED1 an If B1 = 66 Then Set Led2 'B LED2 an If B1 = 67 Then 'C beide aus Reset Led1 Reset Led2 End If End If Loop End
Wenn das Herz involviert ist, steht die Logik außen vor! \/
okay danke für den letzten code-schnippsel, hab nur ne frage;
hab den code so verändert das er mir noch immer auf dem LCD anzeigt was er nun gemacht hat, doch er zeigt mir immer nur "LED B" an, egal was ich mache. Wiso das?
hier mein Code
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 14745600
$baud = 9600
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portc.6 , E = Portc.2 , Rs = Portc.0
Dim B1 As Byte
Config Portc.0 = Output
Config Portc.1 = Output
Led1 Alias Portc.0 'Port A0 für LED1
Led2 Alias Portc.1 'Port A1 für LED2
Do
B1 = Inkey() 'first UART
If B1 <> 0 Then
If B1 = 65 Then Set Led1 'A LED1 an
Cls
Locate 1 , 1
Lcd "LED A"
If B1 = 66 Then Set Led2 'B LED2 an
Cls
Locate 1 , 1
Lcd "LED B"
If B1 = 67 Then 'C beide aus
Reset Led1
Reset Led2
Cls
Locate 1 , 1
Lcd "LED aus"
End If
End If
Loop
also ums klar zu stellen:
Ich schalte den controller aus und wieder ein und egal ob ich ihm A,B oder C sende, er zeigt immer nur LED B an
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 14745600
$baud = 9600
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portc.6 , E = Portc.2 , Rs = Portc.0
Dim B1 As Byte
Config Portc.0 = Output
Config Portc.1 = Output
Led1 Alias Portc.0 'Port A0 für LED1
Led2 Alias Portc.1 'Port A1 für LED2
Do
B1 = Inkey() 'first UART
If B1 <> 0 Then
If B1 = 65 Then
Set Led1 'A LED1 an
Cls
Locate 1 , 1
Lcd "LED A"
end if
If B1 = 66 Then
Set Led2 'B LED2 an
Cls
Locate 1 , 1
Lcd "LED B"
end if
If B1 = 67 Then 'C beide aus
Reset Led1
Reset Led2
Cls
Locate 1 , 1
Lcd "LED aus"
End If
end if
Loop
end
Wenn das Herz involviert ist, steht die Logik außen vor! \/
Hallo Barracuda_cy,
probier mal das:
GrußCode:$framesize = 32 $swstack = 32 $hwstack = 32 $crystal = 14745600 $baud = 9600 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portc.6 , E = Portc.2 , Rs = Portc.0 Dim B1 As Byte Config Portc.0 = Output Config Portc.1 = Output Led1 Alias Portc.0 Led2 Alias Portc.1 dim old_val as byte dim new_val as byte old_val = 1 new_val = 0 do b1 = inkey() if b1 <> 0 then Select case b1 case 65 set led1 if old_val <> new_val then cls : locate 1,1 : lcd "LED A" old_val = 65 case 66 set led2 if old_val <> new_val then cls : locate 1,1 : lcd "LED B" old_val = 66 case 67 reset led1 reset led2 if old_val <> new_val then cls : locate 1,1 : lcd "LED aus" old_val = 67 end select new_val = old_val end if loop end
Chris
Bin am verzweifeln ^^
das geht alles nicht, bekomme immer "Variabelnfehler", bzw wenn ich das BSP von peterfido ausprobir bekomm ich immer "LCD aus" angezeigt, egal was ich dem MC sende.
Habs auch mit eigenem Code versucht (nur LCD ausgabe, keine LED's)
Hier mein Code:
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 14745600
$baud = 9600
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portc.6 , E = Portc.2 , Rs = Portc.0
Dim B1 As Byte
B1 = Inkey() 'first UART
If B1 = 65 Then Cls : Locate 1 , 1 : Lcd "LED A"
If B1 = 66 Then Cls : Locate 1 , 1 : Lcd "LED B"
If B1 = 67 Then Cls : Locate 1 , 1 : Lcd "LED Aus"
End
Lesezeichen