[an error occurred while processing this directive]
|
обявление:
__no_init volatile __io union
{
unsigned char UCR;
struct
{
unsigned char TXB8_:1;
unsigned char RXB8_:1;
unsigned char CHR9_:1;
unsigned char TXEN_:1;
unsigned char RXEN_:1;
unsigned char UDRIE_:1;
unsigned char TXCIE_:1;
unsigned char RXCIE_:1;
};
}@0x0A;//UCSRB
фрагмент использования в реальной программе:
#pragma vector=UDRE_vect
__interrupt void UDRE_handler (void)
{
if (ptr_UART_data >= ptr_UART_char)// not complete
UDR = *ptr_UART_data--;
else
{
UDRIE_ = 0;// transmition is done
TXCIE_ = 1;
}
}
Опрос можно и сделать так:
if (TXCIE_ && !UDRIE_)
a--;
Одно НО. обявление оформляется в виде одельного файла, который включется во все файлы проекта. Ни вкоем случае не ставить extern. Иначе ругани от компилятора не переслушать. Памяти то на порты не выделяется.
E-mail: info@telesys.ru