Gast
#13755
welche bits muss ich setzen im UART Control register,wenn ich dauern 1
Byte senden will.
d.h.ich hol mir ein analogen wert mach eine AD wandlund.
dann hole ich mit den AD-Byte und geb ihn uber das UART aus.dann mach
ich die nachste AD wandlung usw..
IST das Programm richtig.
Wie ist es mit den Start und Stopbits bei UART.
Wird nur ein startbit und am ende 1 stopbit angehangt,wenn die bytes nur
schnell genug rauskommen.denn wenn nur ein byte rauskommt und danach
nichts geht der pegel auf high und bleibt dort.wenn jedoch die ganze
zeit bytes rauskommen,und das programm schnell genug ablauft muste nur 1
startbit+1databyte+1stopbit kommen?
.include "8535def.inc" ;Definitionsdatei einbinden,
.def temp =r19
.def hexl =r20
.def hexh =r21
ldi temp,4000000/(9600*16)-1 ;Baudrate einstellen
out UBRR,temp
adc:
ldi temp,$00
out ADMUX,temp ;Kanal 0 vom ADC auswählen
sbi ADCSR,ADSC ;Singlemode ein
rcall fertig ;Warten bis Wandlung beendet
in hexl,ADCL ;lowbyte auslesen
in hexh,ADCH ;hibyte auslesen
sts $60,hexl ;low byte speichern
sts $68,hexh ;high byte speichern
;---------------------------------------------------
;werte aus den speicher holen und im port B rausgeben
;---------------------------------------------------
lds r16,$60
rcall serout
lds r16,$68
rcall serout
rjmp adc ;die nächsten Wandlungen
fertig:
sbis ADCSR,ADIF ;Warten bis Wandlung,ADCSR:ADC Control and Status
Register
rjmp fertig ;beendet
ret
serout:
sbis UCSRA,UDRE ;warten bis UDR fur das nachste Byte
bereit ist
rjmp serout
out UDR,temp
ret