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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.