AT89S8252 SPI interrompre la transmissió obtinguda a partir de

N

NOORPURI

Guest
Estic intentant SCI i la transmissió UART usant combinat interrupció.A la simulació sembla dret # 100, però en real no funciona.

/***********************************************/
# Include <AT898252.H>

unsigned char UART_RX = 0;
unsigned char SPI_RX = 0;
unsigned char SPI_RX_FLUSH = 0;
poc UART_TRANSMIT = 0;
poc SPI_TRANSMIT = 0;
poc SPI_RECV = 0;UART_SPI_ISR (void) interrompre 4
(
if (RI)
= (UART_RX SBUF; RI = 0;)

if (TI) (TI = 0; UART_TRANSMIT = 0;)
/*------------- --------------- SPI ISR PART * /
if (SCRS == 0x80) / * llegir i clar SPI situació registre * /
(
if (SPI_RECV == 1)
(
SPI_RX = SPDR;
SPI_RECV = 0;)

if (SPI_TRANSMIT == 1)
(
SPI_TRANSMIT = 0;
SPI_RX_FLUSH = SPDR;
SS = 1;) / * Flag Programari establir * /
)

)

void UART_SPI_INIT ()
(
/*--- Inicialitzar el port sèrie .----------*/

TMOD = 0x20;
PCON = PCON | 0x80;
TH1 = 0xFF; / / VELOCITAT DE TRANSMISSIÓ 57.600
TR1 = 1;
Scones = 0x50;
/*--------- Inicialitzar el port SPI ------ * /

SPCR = 0xD0 / * 11.010.000 * /

ES = 1;
EA = 1;
)

/*----------------------------------------------*/
//--------------------------------------------
/ / UART ENVIAR CHAR FUNCIÓ
//--------------------------------------------
void SEND_CHAR_UART (unsigned char SND)
(

while ((SPI_TRANSMIT) | | (SPI_RECV) | | (UART_TRANSMIT));
if (UART_TRANSMIT == 0)
(
UART_TRANSMIT = 1;
SBUF = SND;
)

)
/*-------------------------------------------*/
//--------------------------------------------
void SEND_CHAR_SPI (unsigned char SND)
(

while ((SPI_TRANSMIT) | | (SPI_RECV) | | (UART_TRANSMIT));
if (SPI_TRANSMIT == 0)
(
SPI_TRANSMIT = 1;
SPDR = SND;
)

)

//--------------------------------------------
/ / SPI recv CHAR FUNCIÓ
//--------------------------------------------
unsigned char RECV_CHAR_SPI ()
(
unsigned char RECVD = 0;

while ((SPI_TRANSMIT) | | (SPI_RECV) | | (UART_TRANSMIT));

SPDR = 0xFF;
SPI_RECV = 1;

while ((SPI_TRANSMIT) | | (SPI_RECV) | | (UART_TRANSMIT)),
if (SPI_RECV == 0)
(
RECVD = SPI_RX;
tornar RECVD;
)
)/*------------------------------------------------ -----------------------------
-------------------------------------------------- ---------------------------*/
void main (void)
(

UART_SPI_INIT ();

while (1)
(SEND_CHAR_UART(0x55); // SEND 'U' by UART SEND_CHAR_SPI (0x55); / / Enviar ', per U' SPI P1_0 = ~ P1_0;

)

)

 
Sí, tinc molt en tractar UART amb C a Keil, però mai funciona!!

 

Welcome to EDABoard.com

Sponsor

Back
Top