Code:
// đây là đoạn code bi lỗi. // USART Receiver buffer //#define RX_BUFFER_SIZE 64 char rx_buffer[RX_BUFFER_SIZE]; #if RX_BUFFER_SIZE<256 unsigned char rx_wr_index,rx_rd_index,rx_counter; #else unsigned int rx_wr_index,rx_rd_index,rx_counter; #endif // This flag is set on USART Receiver buffer overflow bit rx_buffer_overflow; //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) // SAI Ở ĐÂY // PHẢI SỬA LÀ if (++rx_counter == RX_BUFFER_SIZE+1) { rx_counter=0; rx_buffer_overflow=1; }; }; } // :D :D // MOI NGƯỜI CHÚ Ý NHÉ
Comment