The baudrate is set to 9600, no parity bit and 8 data bits.
I'm using timer 1 mode 2 to generate the baudrate. But what i'm not sure is, if the baud rate mismatches am i able to receive input at all? I tried to change my baudrate to something else and i could not receive any input from the serial.
I lifted this code for initializing the serial port and setting baudrate to 9600
void com_initialize (void)
{ /*------------------------------------------------
Setup TIMER1 to generate the proper baud rate.
------------------------------------------------*/
com_baudrate (9600);
/*------------------------------------------------
Clear com buffer indexes.
------------------------------------------------*/
EA = 0; /* Disable Interrupts */
t_in = 0;
t_out = 0;
t_disabled = 1;
r_in = 0;
r_out = 0;
/*------------------------------------------------
Setup serial port registers.
------------------------------------------------*/
SM0 = 0; SM1 = 1; /* serial port MODE 1 */
SM2 = 0;
REN = 1; /* enable serial receiver */
TI = 0; /* clear transmit interrupt */
RI = 0; /* clear receiver interrupt */
ES0 = 1; /* enable serial interrupts */
PS0 = 0; /* set serial interrupts to low priority */
EA = 1; /* Enable Interrupts */
}
void com_baudrate (unsigned baudrate)
{ EA = 0; /* Disable Interrupts */
/*------------------------------------------------
Clear transmit interrupt and buffer.
------------------------------------------------*/ TI = 0; /* clear transmit interrupt */ t_in = 0; /* empty transmit buffer */ t_out = 0; t_disabled = 1; /* disable transmitter */
/*------------------------------------------------
Set timer 1 up as a baud rate generator.
------------------------------------------------*/ TR1 = 0; /* stop timer 1 */ ET1 = 0; /* disable timer 1 interrupt */
PCON |= 0x80; /* 0x80=SMOD: set serial baudrate doubler */
TMOD &= ~0xF0; /* clear timer 1 mode bits */ TMOD |= 0x20; /* put timer 1 into MODE 2 */
TH1 = (unsigned char) (256 - (18432000 / (16L * 12L * baudrate))); //18432000=Crystal freq set in the project options
TR1 = 1; /* start timer 1 */
EA = 1; /* Enable Interrupts */
}
Thanks for the help.