Forum: Mikrocontroller und Digitale Elektronik Uart 2 Mal abfragen


von Jürgen (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.