diff --git a/UART/uart.c b/UART/uart.c deleted file mode 100644 index d2eaa22..0000000 --- a/UART/uart.c +++ /dev/null @@ -1,119 +0,0 @@ -#include -#include -#include - -#define F_CPU 16000000 -#define SIZE_BUF 8 - -// кольцевой буфер -volatile unsigned char usartTxBuf[SIZE_BUF]; -unsigned char txBufTail = 0; // указатель хвоста буфера -unsigned char txBufHead = 0; // указатель головы буфера -volatile unsigned char txCount = 0; // счетчик символов - -uint8_t receive = 0; -uint8_t rx_data = 0; -volatile uint8_t rx_flag = 0; - -void UARTInit(void) { - UCSR1B=0; UCSR1C=0; // Обнулим регистры статуса и контроля - UBRR0H = 0; // Старшие биты регистра скорости - UBRR0L = 103; // Скорость передачи данных 9600 - UCSR0B = (1< 0){ // если буфер не пустой - sym = cycleBuf[head]; // считываем символ из буфера - count--; // уменьшаем счетчик символов - head++; // увеличиваем индекс головы - if (head == SIZE_BUF) head = 0; - } - return sym; -} - -// загрузка строк -void USART_SendStr(unsigned char * data) -{ - unsigned char sym; - while(*data){ // пока не считан символ конца строки - sym = *data++; - USART_PutChar(sym); - } -} -// unsigned char UARTGet() { -// while(!rx_flag); //пока значение флага не станет равно "1" -// rx_flag = 0; -// return rx_data; //возвращет состояние переменной rx_data -// } - -int main(void) { - sei(); - UARTInit(); - DDRL = 0b11111111; // Определим порт "L" на выход - while(1) { - receive = UARTGet(); - receive++; - UARTSend(receive); - } -} - -// обработчик прерывания по завершению передачи -ISR(USART_TXC_vect) { - if (txCount > 0){ // если буфер не пустой - UDR0 = usartTxBuf[txBufHead]; // записываем в UDR символ из буфера - txCount--; // уменьшаем счетчик символов - txBufHead++; // увеличиваем индекс головы буфера - if (txBufHead == SIZE_BUF) - txBufHead = 0; - } - else { - UCSR0B &= ~(0<