Forum: Mikrocontroller und Digitale Elektronik ATmega88 und UART


von Daniel (Gast)


Lesenswert?

Hallo Leute,

ich kann keine Daten schicken,hier ist der Code , was mache ich
falsch!!!


.include "m88def.inc"

.def temp = R16
.equ CLOCK = 10000000
.equ BAUD = 9600
.equ UBRRVAL = CLOCK/(BAUD*16)-1
.cseg
.org 0x000
      rjmp main


main:    ldi r16, LOW(RAMEND)  ;Stack Pointer to top of RAM
    out SPL, r16
    ldi r16, HIGH(RAMEND)
    out SPH, r16


;     Baudrate setup
          ldi temp, LOW(UBRRVAL)
          sts UBRR0L, temp
          ldi temp, HIGH(UBRRVAL)
          sts UBRR0H, temp

;     Frame-Format: 8 Bit
          ldi temp, 0x06
           sts UCSR0C, temp
    ldi temp,0x98
          sts UCSR0B,temp   ; Interrupt by Receive / RX (Receive) and TX
(Transmit) activate

      ldi r21,0x20



LogoATMEL:  ldi ZL,LOW(2*logo)  ; gleich nachdem Einshalten "Test"
anzeigen
      ldi ZH,HIGH(2*logo)
      ldi r17,0x04
      ldi temp, 10
      rcall serout
ok:      lpm r16,z
      adiw ZL,1
      rcall serout
      dec r17
      cpse r17,r20
      ldi temp, 10
          rcall serout
          ldi temp, 13
           rcall serout
loop:

rjmp loop


serout: lds r18,UCSR0A
    cpse r18,r21  ;Warten bis UDR für das nächste Byte bereit ist
    rjmp serout
         out UDR0,temp  ;Daten anzeigen
         ret
logo:
.db"Test",0


Gibt es andere Befehle oder was ist falsch, ich habe schon alles
probiert , und nichts kommt an(Ich benutze den Hyper Terminal)!


danke

von Andi (Gast)


Lesenswert?

Hallo Daniel

Versuchs mal mit:

serout:
   lds r18,UCSR0A
   sbrs r18,5     ;Warten bis UDR für das nächste Byte bereit
   rjmp serout
   sts UDR0,temp  ;Daten anzeigen
   ret

UDR0 kann nicht mit 'out' beschrieben werden. Bei den Mega X8 muss
man höllisch aufpassen ob die Register nun mit I/O oder sts/lds
anzuspechen sind.

Gruss Andi

von Guillermo B. (benites)


Angehängte Dateien:

Lesenswert?

hi,

anbei mei asm-cod
Gruß

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.