Цитата(Кonstantin @ Aug 12 2005, 08:30)
В том то и дело, что теоретически все должно работать. Хочу узнать
практически кто-нить пробовал? Может быть кроме URSEL еще есть нюансы?
void Set_USART()
{
//UDR-USART I/O Data Register
//UCSRA=0x00;//(7)-USART Receive Complete Flag
//(6)-USART Transmit Complete Flag
//(5)-USART Data Register Empty Flag
//(4)-Frame Error
//(3)-Data OverRun
//(2)-Parity Error
//(1)-Double USART Transmission Speed
//(0)-Multi-Processor Communication Mode
UCSRB=0x18;//(7)-RX Complete Interrupt Enable
//(6)-TX Complete Interrupt Enable
//(5)-Data Register Empty Interrupt Enable
//(4)-Receiver Enable
//(3)-Transmitter Enable
//(2)-(UCSZ2):Character Size(with UCSZ1:0)
//(1)-Receive Data Bit 8
//(0)-Transmit Data Bit 8
UCSRC=0x86;//(7)(URSEL)-Register Select(=1 if write to UCSRC)
//(6)-Mode Select
//(5,4)-Parity Mode
//(3)-Stop Bit Select
//(2,1)-(UCSZ1:0)-Character Size
//(0)-Clock Polarity
UBRRH=0x00;//Baud Rate Registers(8->4bit(3:0),(7)-URSEL)
UBRRL=12;//(38,4kHz/0,16%)Baud Rate Registers(8bit)
}
void TransmitDataUart(char D)
{
while(!(UCSRA&0x20));//wait Data Register Empty
UDR=D;
}
попробуй у меня это работает в IARе и в WinAVR