Код: Выделить всё
while (1)
{
UDR = 'a';
};
Потом. Допустим приняли слово. Проанализировали, и надо тоже слово отправить. Как? Скоро быренько слеплю модельку для этого дела, уже МАХ232 купил, т што буду екскрементировать
Код: Выделить всё
while (1)
{
UDR = 'a';
};
Еще быстрей это делается в VMLAB или PROTEUS - примры идут в составе этих программ. только разбирайся да учись.Дмитрий О писал(а):Скоро быренько слеплю модельку для этого дела, уже МАХ232 купил, т што буду екскрементировать
Код: Выделить всё
// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
{
rx_buffer[rx_wr_index]=data;
if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
{
rx_counter=0;
rx_buffer_overflow=1;
};
};
}Ес-но подразумеваем что тебе нужна обработка именно этого прерыванияДмитрий О писал(а):Ой, еще вот такой вопрос. Есть код:Я в Си не силен, и поэтому осмелюсь спосить, а куда нужно впихнуть код обработки прерывания?Код: Выделить всё
rx_buffer_overflow=1; }; }; Вот здесь.... }
Код: Выделить всё
#include <stdio>
static int uart_putchar(char c, FILE *stream);
static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL,
_FDEV_SETUP_WRITE);
static int
uart_putchar(char c, FILE *stream)
{
if (c == '\n')
uart_putchar('\r', stream);
loop_until_bit_is_set(UCSRA, UDRE);
UDR = c;
return 0;
}
int
main(void)
{
init_uart();
stdout = &mystdout;
printf("Hello, world!\n");
return 0;
}