|
// это касается самого контроллера - не знаю точно как у MSP430 - это и не важно
// BUFF - регистр UART
// TXEMPTY - флаг, что сдвиговый регистр пуст или программный флаг, если у контроллера такового нет
// TXREADY - флаг, что буферный регистр пуст
char txbuffer[TXBUFFERSIZE];
int txcounter;
char* txbuffptr = &txbuffer[0];
// interrupt - по флагу TXREADY !!!
if(txcounter == 0) return; // буфер пуст и передавать нечего
BUFF = *txbuffptr++;
if(txbuffptr == &txbuffer[TXBUFFERSIZE]) txbuffptr = &txbuffer[0];
txcounter--;
//function
char put_char_to_buffer(char ch)
{
if(txcounter == TXBUFFERSIZE) return BUFFER_FULL;
if(TXEMPTY) {BUFF = ch; return;} // пишем прямо в регистр !!!
*txbuffptr++ = ch; // или в буфер
if(txbuffptr == &txbuffer[TXBUFFERSIZE]) txbuffptr = &txbuffer[0];
txcounter++;
}
// в принципе и все
// плюс отследить одинаковое количество стоп-битов (лучше поставить сразу 2)
E-mail: info@telesys.ru