|
Кроме странной строчки
if (d)
все остальное похоже. Может, вторым байтом 0 идет?
Вот работающий пример:
//--------------------------------
// Начало передачи блока
void UART_StartTransBlock ()
{
// бла бла бла - подготовка буфера
// Единственная хитрость - первый байт всегда FF и передается впрямую
U0TXBUF = 0xFF; // Первый байт пилот-тона
TXCount = 0;
// Разрешим прерывание приемника
IE1 |= UTXIE0;
} // UART_StartTransBlock//--------------------------------
// Прерывание передатчика
#pragma vector = UART0TX_VECTOR
__interrupt void UART_TXInterrupt ( void )
{
// Обрабатываем и прерывание от посылки ПОСЛЕДНЕГО байта буфера
if ( TXCount >= TXBufLen ) // Блок передан полностью
{
// Запретим прерывание передатчика
IE1 &= ( ~UTXIE0 );
return;
}
U0TXBUF = TXBuf [ TXCount ];
TXCount++;
} // UART_TXInterrupt
<\pre>
Составить ответ ||| Конференция ||| Архив
Ответы
E-mail: info@telesys.ru