Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите понять логику программы из примера для
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
smk
В нижеприведенном коде не могу понять зачем нужно:
Код
char i = 16;
и
Код
while (i && txout)
? Какой логический смысл в этом?

Код
//uart1.c
#include <LPC214x.H>

#define Fosc 12000000
#define Fpclk 60000000

unsigned int txin; // Next In Index
unsigned int txout; // Next Out Index
unsigned char *txbuf; // pointer to Tx buffer

__irq void U1_Isr(void)
{
char i = 16;

if ((U1IIR & 0x0F) == 2) // THRE Interrupt ? когда передающий буфер пуст
    {
        while (i && txout)
        {
            U1THR = txbuf[txin++];
            txout --;
            i --;
        }
    }
        VICVectAddr = 0; // Acknowledge Interrupt
}

void UART1_Send(unsigned char *buf, unsigned int len)
{
char i = 16;

if (txout == 0) // previous message send ?
    {
        txbuf = buf; // copy buffer pointer
        txout = len;
        txin = 0;
        while (i && txout)
            {
                U1THR = txbuf[txin++];
                txout --;
                i --;
            }
    }
}


Спасибо.
aaarrr
Цитата(smk @ Feb 5 2012, 23:32) *
В нижеприведенном коде не могу понять зачем нужно:
Код
char i = 16;
и
Код
while (i && txout)
? Какой логический смысл в этом?

16 - размер FIFO. Соответственно, смысл while - продолжаем грузить, пока есть данные для передачи и место в FIFO.
smk
Вы правы. Действительно не обратил на это внимания.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.