//////////////////////////////////////////////////UART INIT
#ifndef cry
#define cry 12 //DEFINE CRYSTAL
#endif
void uart_init(unsigned int num,unsigned int baundrate)
{
long int bnd; //CALC BAUDRATE
long int crys;
crys=cry*1000000;
bnd=crys/(baundrate*16); //BAUDRATE SUM
switch(num)
{
case 0: //UART 0 SELECTED
{
PCONP|=0X00000008; //UART0 POWER ON
PINSEL0|=0x00000050; //UART 0 PIN SELECT-P0.2=TXD/P0.3=RXT
U0LCR = 0x83; //SET REGISTER
U0DLL = bnd; //SET BAUDRATE
U0LCR = 0x03; //SET REGISTER
}
break;
case 1: //UART 1 SELECTED
{
PCONP|=0x00000010; //UART 1 POWER ON
PINSEL0|=0x40000000; //UART 1 PIN SELECT-P0.15=TXD/P0.16=RXT
PINSEL1|=0X00000001;
U1LCR = 0x83; //SET REGISTER
U1DLL = bnd; //SET BAUDRATE
U1LCR = 0x03; //SET REGISTER
}
break;
case 2: //UART 2 SELECTED
{
PCONP|=0x01000000; //UART 2 POWER ON
PINSEL0|=0x00500000; //UART 2 PIN SELECT-P0.10=TXD/P0.11=RXT
U2LCR = 0x83; //SET REGISTER
U2DLL = bnd; //SET BAUDRATE
U2LCR = 0x03; //SET REGISTER
}
break;
case 3: //UART 3 SELECTED
{
PCONP|=0x0000000A; //UART 3 POWER ON
PINSEL0|=0x00500000; //UART 3 PIN SELECT-P0.0=TXD/P0.1=RXT
U3LCR = 0x83; //SET REGISTER
U3DLL = bnd; //SET BAUDRATE
U3LCR = 0x03; //SET REGISTER
}
break;
};
};
//////////////////////////////////////////////////PUTCHAR FUNCS
void putchar_u0 (unsigned char chr) //UART0 SEND FUNC
{
while (!(U0LSR & 0x20)); //CHECK FORNO ERROR
{
U0THR = chr; //SEND CHAR
}
}
//////////////////////////////////
void putchar_u1 (unsigned char chr) //UART1 SEND FUNC
{
while (!(U1LSR & 0x20)); //CHECK FORNO ERROR
{
U1THR = chr; //SEND CHAR
}
}
//////////////////////////////////
void putchar_u2 (unsigned char chr) //UART2 SEND FUNC
{
while (!(U2LSR & 0x20)); //CHECK FORNO ERROR
{
U2THR = chr; //SEND CHAR
}
}
//////////////////////////////////
void putchar_u3 (unsigned char chr) //UART3 SEND FUNC
{
while (!(U3LSR & 0x20)); //CHECK FORNO ERROR
{
U3THR = chr; //SEND CHAR
}
}
//////////////////////////////////////////////////GETCHAR FUNCS
unsigned char getchar_u0 (void) //UART0 GET CHAR
{
unsigned char data;
while (!(U0LSR & 0x01)); //CHECK FORNO ERROR
{
data=U0RBR; //GETCHAR
return (data);
}
}
//////////////////////////////////
unsigned char getchar_u1 (void) //UART0 GET CHAR
{
unsigned char data;
while (!(U1LSR & 0x01)); //CHECK FORNO ERROR
{
data=U1RBR; //GETCHAR
return (data);
}
}
//////////////////////////////////
unsigned char getchar_u2 (void) //UART0 GET CHAR
{
unsigned char data;
while (!(U2LSR & 0x01)); //CHECK FORNO ERROR
{
data=U2RBR; //GETCHAR
return (data);
}
}
//////////////////////////////////
unsigned char getchar_u3 (void) //UART0 GET CHAR
{
unsigned char data;
while (!(U3LSR & 0x01)); //CHECK FORNO ERROR
{
data=U3RBR; //GETCHAR
return (data);
}
}
//////////////////////////////////////////////////PUT STRING FUNCS
void putstr_u0(unsigned char *data) //STRING OUT 0
{
long int i;
for(i=0;data[i];i++)
{
putchar_u0(data[i]); //ALL THE CHARS SEND ONE BY ONE TO PUTCHAR_U0 FUNC
}
}
//////////////////////////////////
void putstr_u1(unsigned char *data) //STRING OUT 1
{
long int i;
for(i=0;data[i];i++)
{
putchar_u1(data[i]); //ALL THE CHARS SEND ONE BY ONE TO PUTCHAR_U1 FUNC
}
}
//////////////////////////////////
void putstr_u2(unsigned char *data) //STRING OUT 2
{
long int i;
for(i=0;data[i];i++)
{
putchar_u2(data[i]); //ALL THE CHARS SEND ONE BY ONE TO PUTCHAR_U2 FUNC
}
}
//////////////////////////////////
void putstr_u3(unsigned char *data) //STRING OUT 3
{
long int i;
for(i=0;data[i];i++)
{
putchar_u3(data[i]); //ALL THE CHARS SEND ONE BY ONE TO PUTCHAR_U3 FUNC
}
}