mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Uart 2 Mal abfragen


Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe folgendes Problem ich will den Uart im Programmverlauf zweimal 
Abfragen, sodaß ich wenn ich im PC die erste Zahl eingebe ins erste 
Unterprogramm komme und beim 2 Mal ins weitere. Bei meinem Programm 
springt er ins erste und dann wieder zurück.

Vielen Dank im vorraus !!!

Jürgen


.include "4433def.inc"
.def temp = r16
.def data = r17
.def send = r18
.def ver = r19
.def tes = r21
.def qc = r22
; .equ quartz = 3686400 ; für Standard STK500
.equ quartz = 4000000 ; für 4 MHz
.equ baud = 9600 ; Baudrate




rjmp reset ; Reset Handler
reti ; IRQ0 Handler
reti ; IRQ1 Handler
reti ; Timer1 Capture Handler
reti ; Timer1 compare Handler
reti ; Timer1 Overflow Handler
reti ; Timer0 Overflow Handler
reti ; SPI Transfer Complete Handler
rjmp receive ; UART RX Complete Handler : RXCIE
reti ; UDR Empty Handler
reti ; UART TX Complete Handler
reti ; ADC Conversion Complete Interrupt Handler
reti ; EEPROM Ready Handler
reti ; Analog Comparator Handler

reset:
    ldi temp, RAMEND
    out SP, temp ; set stack pointer

    sbi UCSRB, RXCIE ; enable receive completed interrupt
    sbi UCSRB, TXEN ; enable transmit
    sbi UCSRB, RXEN ; enable receive
    ldi temp, quartz / (baud * 16) - 1
    out UBRR, temp ; BAUD Rate 9600

    sei ; interrupts generell aktivieren

main:
    loop:
        rjmp loop


;--------------------------------------------------
receive:

    out DDRB, r20
    ldi ver, $38

    in data, UDR

    cp data,ver
    breq version

    ldi send, 13 ; CR
    rcall transmit
    ldi send, 10 ; LF
    rcall transmit
    ldi send, 'A'
    rcall transmit

reti


;--------------------------------------------------
transmit:
  sbis UCSRA,UDRE ; Warten, bis UDR bereit ist
    rjmp transmit
    out UDR, send
reti

version:
    ldi send, 'B'
    rcall transmit

   ldi qc, $37
    in tes, UDR

    cp tes,qc
    breq well
reti

well:



    ldi send, 'l'
    rcall transmit
    mov send, data
    rcall transmit
reti

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.