Gast
#115452
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