-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: Über UART empfangener Text auswerten in einer If-Schlaufe

  1. #1

    Über UART empfangener Text auswerten in einer If-Schlaufe

    Anzeige

    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

  2. #2
    ach ja und noch was: das programm sollte wenn möglich nicht stehen bleiben während es auf den empfang wartet

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Bemühe mal die Suche nach "URXC". Da findest du genügend Beispiele.

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    04.08.2007
    Ort
    Bregenz
    Alter
    41
    Beiträge
    72
    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

  5. #5
    ja danke, mir wurde geholfen

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    46
    Beiträge
    765
    Code:
    $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
    edit: Fenster zu lange offen gehabt... Ich lass es trotzdem drin
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  7. #7
    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

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    46
    Beiträge
    765
    $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! \/

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    24
    Beiträge
    1.544
    Hallo Barracuda_cy,

    probier mal das:
    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
    Gruß
    Chris

  10. #10
    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

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •