PC から atmega16 にシリアルで 4 バイトのデータを送信しています。私はUARTを使用しています。1 つの手法は、データシートで指定された関数を使用することですが、ポーリングを使用するため、コードの残りの部分をブロックします。だから私はwhileループを使用しています。しかし、whileループが始まるときのコードの構造を理解できません..これで私を助けてください. thnx
#include <avr/io.h>
#define FOSC 1843200// Clock Speed
#define BAUD 9600
#define MYUBRR FOSC/16/BAUD-1
void UART_Init( unsigned int ubrr)
{
/* Set baud rate */
UBRRH = (unsigned char)(ubrr>>8);
UBRRL = (unsigned char)ubrr;
/* Enable receiver and transmitter */
UCSRB = (1<<RXEN);
/* Set frame format: 8data, 2stop bit */
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
}
int main( void )
{
int i = 0;
unsigned char my_data [4];
UART_Init ( MYUBRR );
while (1)
{
if (UCSRA & (1<<RXC))
{
my_data[i] = UDR;
}
i++;
if (i == 3)
{
/*my next code here and once thats done, its again in uart receive mode*/
i = 0;
}
}
}