Цитата(The Fresh @ Apr 12 2007, 05:19)

Что за бит, в таблице служебных регистров из даташита микрухи никакого упоминания. Может в проге косяк, я ее немного правил т.к. под старый компилятор были заточены некоторые функции.
$0C ($2C) UDR UART I/O Data Register 40
$0B ($2B) USR RXC TXC UDRE FE OR - - - 40
$0A ($2A) UCR RXCIE TXCIE UDRIE RXEN TXEN CHR9 RXB8 TXB8 41
$09 ($29) UBRR UART Baud Rate Register 43
$08 ($28) ACSR ACD - ACO ACI ACIE ACIC ACIS1 ACIS0 44
const char szATZ[] PROGMEM = "bla bla bla";
void UART_Init(void)
/* initialize uart */
{
/* enable RxD/TxD and ints */
UCR =(1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
/* set baud rate */
UBRR = (unsigned char)UART_BAUD_SELECT; //=7
}
void UART_outstr(char* psz)
{
unsigned char i = 0;
while(1)
{
char c = psz[i];
if(!c)
break;
UDR=c;
loop_until_bit_is_set(USR, UDRE);
i++;
}
}
А почему вы думаете, что за концом psz будут нули.
вот например код отправки блока
typedef usigned char BYTE;
typedef unsigned int WORD;
void UART0_txdata(const void *buf, const WORD n)
{
WORD i;
for(i=0;i<n;i++)
{
while(!(UCSR0A &(1<<UDRE)));
UDR0 = (BYTE) (( (BYTE *) buf)[i]);
}
}