Forum: Mikrocontroller und Digitale Elektronik SPI-Ausgabe AT89S8252


von Stefan (Gast)


Lesenswert?

Hallo zusammen,

ich möchte mit der SPI Funktion meines at89s8252
am mosi Pin (P1.5) seriell ein Byte ausgeben, das
ganze soll zu test- und verständnisszwecken
fortlaufend geschehen(immer das selbe Byte)
ich mache das ganze ohne interrupt, stattdessen im
polling-betrieb.

Mein beigefügtes Programm funktioniert nicht ganz,
wennn ich das ganze im debugmodus laufen lasse
(Keil) dann wird die SPI Funktion zwar initialisiert, und
nach 45 mal klicken wird auch das spif interrupt flag gesetzt
obwohl das spdr data register nie beschrieben wurde, was ja
falsch ist....welcher programmteil funktioniert da bei mir nicht?
wieso bekomm ich mein byte nicht ins spdr register geschrieben?

vielen dank für eure Hilfe

(hoffe mal das ralf das liest, der hat mir schon viel weitergeholfen:)

hier mein programm:
$nomod51

#include <AT898252.H>



transmit_completed BIT SPIF_        /* SPI Interrupt Flag 0x80 */
data_to_send DATA 10111101b        ; zu sendendes byte


org 0000h


clr transmit_completed
clr WCOL_                    /* SPI Write Collision Flag */
mov p1,00h

mov SPCR,#01011011b  ;Initialisierung des SPI Port

loop: mov spdr,data_to_send
     jnb transmit_completed,$
     clr transmit_completed
     call loop

;writing to the spi data register(spdr)of the master cpu starts
;the spi clock generator and the data written shifts out of the
;mosi pin

end

von Peter D. (peda)


Lesenswert?

Du weißt schon, daß Du Dich soeben mitten in ein Wespennest gesetzt hast
?

Haufenweise neue Threads für die gleiche Frage, das gehört sich einfach
nicht.


Aber Du solltest zuerst mal die 8051 Hardwarebeschreibung und
Instructionset durchlesen:

"mov p1,00h" macht erstmal nicht das was Du erwartest und wenn, dann
wäre es falsch.

Lies Dir mal speziell die Portbeschreibung durch. Die meisten
Zusatzfunktionen sind UND-verknüpft, d.h. eine 0 zu setzen, sperrt
diese.

Und die anderen Antworten hast Du Dir ja noch nicht mal durchgelesen
und den "call"-Fehler immer noch drin gelassen.

Wirst Dir wohl auch diese nicht durchlesen, da mache ich jetzt lieber
Schluß.


Peter

von Stefan (Gast)


Lesenswert?

die hab ich sehr wohl durchgelesen.

ENTSCHULDIGE VIELMALS DASS ICH MICH ALS ANFÄNGER NOCH NICHT SO GUT AUS
KENNE!!!!!!!!!!!!!!

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.