Silabs (UART)

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
HeyHey
Родился
Сообщения: 2
Зарегистрирован: Вт сен 01, 2015 15:10:11

Silabs (UART)

Сообщение HeyHey »

В коде необходимо реализовать передачу 8 байт и получить их обратно. МК Silabs C8051f320. Однако, иногда приходят не все символы. В чем проблема?

(out) ff aa aa aa
(in) ff aa aa aa

(out) ff 11 aa aa
(in) 11 aa aa

Код программы:

#include "C8051F320.h"

sbit LED1=P2^2;
sbit LED2=P2^3;
unsigned char i;
unsigned char Buffer_RX[8];
int Counter = 0; //инициализация счетчика байтов

void PCA_Init()
{
PCA0MD &= ~0x40;
PCA0MD = 0x00;
}
void Timer_Init()
{
TCON = 0x40;
TMOD = 0x20;
CKCON = 0x08;
TH1 = 0xCC;
}

void UART_Init()
{
SCON0 = 0x90;
}

void Port_IO_Init()
{

P0MDOUT = 0x10;
P2MDOUT = 0x0C;
P0SKIP = 0xCF;
P1SKIP = 0xFF;
P2SKIP = 0x03;
XBR0 = 0x01;
XBR1 = 0x40;
}

void Oscillator_Init()
{
CLKSEL = 0x10;
OSCICN = 0x83;
}

void Interrupts_Init()
{
IE = 0x90;
}

void Init_Device(void)
{
Timer_Init();
UART_Init();
Port_IO_Init();
Oscillator_Init();
Interrupts_Init();
PCA_Init();
}


void main(void)
{
Init_Device();
while(1)
{
}

}
void UART0_Interrupt (void) interrupt 4
{
if (RI0==1)
{
RI0=0;
if (Counter<8)
{
Buffer_RX[Counter]=SBUF0;
SBUF0=Buffer_RX[Counter];
Counter++;
}
else
Counter = 0;
}
if (TI0==1)
{
TI0=0;
}
}
Реклама
Ответить

Вернуться в «Разные вопросы по МК»