Sending a byte through UART using simple low level

...program which doesn't work

#include <avr/io.h>
#include <avr/interrupt.h>
//#define F_EXT_OSC 16000000
//#define UART_BAUDRATE 9600
//#define BAUD_PRESCALE (((F_EXT_OSC / (UART_BAUDRATE * 16))) - 1)

byte CharToSendviaUART=0x41;//Send ASCII "A"
 unsigned int UBRR0_H_L_KAVR=0x0067;// 9600baud/s; Used KAVR Calculator to set this
void setup()
{
  UCSR0B|= (1<<RXEN0) | (1<<TXEN0);
  UCSR0C|= (3<<UCSZ00);    //decimal 3 == 0b00000011 or just 11 (binary), 'UCSZ00' is the bit 1 (or said the other way is the second in a collumn if we start counting the bits from 1 not 0)  of the register 'UCSR0C', so in this function "(3<<UCSZ00)"  'UCSZ00' == 2 (decimal).So a new byte value is created by shifting left 2 times the binary number of 11 thus creating this new byte value to be 11000 (binary). 
  UBRR0L|=lowByte(UBRR0_H_L_KAVR);//
  UBRR0H|=highByte(UBRR0_H_L_KAVR);// We don't have 'sign extension' here because we declared the variable 'unisgned' (with no 'sign bit') 
}
void loop()
{

while( (UCSR0A & (1<<UDRE0) )==0  )//Do nothing until UDR is ready for more data to be written to it.Loops until TXC0 is set. 
  {}
  UDR0 = CharToSendviaUART;
  delay(5000);


}

// void MyUARTinit(unsigned int UBRR0_H_L)
// {
//  UCSR0B|= (1<<RXEN0) | (1<<TXEN0);
//  UCSR0C|= (3<<UCSZ00);    //decimal 3 == 0b00000011 or just 11 (binary), 'UCSZ00' is the bit 1 (or said the other way is the second in a collumn if we start counting the bits from 1 not 0)  of the register 'UCSR0C', so in this function "(3<<UCSZ00)"  'UCSZ00' == 2 (decimal).So a new byte value is created by shifting left 2 times the binary number of 11 thus creating this new byte value to be 11000 (binary). 
//  UBRR0L|=(unsigned char) UBRR0_H_L;//
//  UBRR0H|=(unsigned char) UBRR0_H_L>>8;// We don't have 'sign extension' here because we declared the variable 'unisgned' (with no 'sign bit')
// }


//////////////////////////////////////////////////////////////////////////////
//                                          "SIGN EXTENCIONS"
//When you shift x right by y bits (x >> y), and the highest bit in x is a 1, the behavior depends on the exact data type of x. If x is of type int, the highest bit is the sign bit, determining whether x is negative or not, as we have discussed above. In that case, the sign bit is copied into lower bits, for esoteric historical reasons:
//
//    int x = -16;     // binary: 1111111111110000
//    int y = x >> 3;  // binary: 1111111111111110
//
//This behavior, called sign extension, is often not the behavior you want. Instead, you may wish zeros to be shifted in from the left. It turns out that the right shift rules are different for unsigned int expressions, so you can use a typecast to suppress ones being copied from the left:
//
//  int x = -16;                   // binary: 1111111111110000
//    int y = (unsigned int)x >> 3;  // binary: 0001111111111110
//
//If you are careful to avoid sign extension, you can use the right-shift operator >> as a way to divide by power of 2.

I used the KAVRCalc by Keven Rosenberg v1.15 to set the UBRR0 H:L registers.
But monitoring the "Serial Monitor" in the Arduino IDE i get " y"
said in words I get a BLANK SPACE then a Y WITH TWO DOTS ABOVE.
Where I am wrong? :cry:

Ohhh, damn so not concentrated right now, sorry. :stuck_out_tongue:
DELETE IT!