Så här har jag skrivit
Kod: Markera allt
int main()
{
DDRB = 0xFF;
USART_Init( MYUBRR );
PORTB = 0b11111111;
while( 1 )
{
}
}
SIGNAL(SIG_UART_RECV)
{
unsigned char data = UDR;
if (data == '1' )
{
if( PORTB == 0b11111111 )
PORTB = 0b11111101;
else
PORTB = 0b11111111;
return 0;
}
return 0;
}
void USART_Init( unsigned int ubrr )
{
sbi(SREG,7); // Global interupt flag set
// interupt flag for USART send and receive
sbi(UCSRB, 7);
sbi(UCSRB, 6);
// Set baudrate
UBRRL = 0x33; //set baud rate lo
UBRRH = 0x00; //set baud rate hi // 9600
// enable receiver and transmitter
UCSRB = (1<<RXEN)|(1<<TXEN);
// Frame format 8 data, 2 stopbits
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
// set RXC and TXC flags
}
unsigned char USART_Receive( void )
{
// Wait for data to be received
while ( !(UCSRA & (1<<RXC)) );
//Get and return received data from buffer */
return UDR;
}
void USART_Transmit( unsigned char data )
{
// wait for emtpy send buffer
while( !(UCSRA & (1<<UDRE)) );
// put the data in the buffer, witch sends it
UDR = data;
}
Dessutom verkar jag inte kunna deklarera en SIGNAL funktion för usart Receive, då får jag ett felmeddelande från kompliatorn att det finns två
