#define CR_INTEGER_PRINTF
#include "UART.h"
#include "PLL_CONFIG.h"
#include "PRINT.h"
char a[4];
void UART0_INIT(int baud_rate)
{
unsigned int k;
k = SET(baud_rate);
PCONP |= 1<<3; //power to UART0
PCLKSEL0 |= 0x40; //pclk = cclk
PINSEL0 |= 0x00000050;
U0IER |= (1<<1) | (1<<0); //Enabling the TX and RX interrupts
U0LCR = 0x83;
U0DLM = (k/256);
U0DLL = (k%256);
U0LCR = 0x03;
U0FCR |= (1<<6) | (1<<0); //Setting the RX Trigger level to 4
}
void send_data(char a)
{
while(!((U0LSR)&0x20));
U0THR = a;
}
void get_data()
{
while(U0IIR & 0x04) { //Checking if 'Trigger level reached' interrupt flag is set
a[0]=U0RBR; //Reading 1st RX Byte from U0RBR
a[1]=U0RBR; //Reading 2nd RX Byte from U0RBR
a[2]=U0RBR; //Reading 3rd RX Byte from U0RBR
a[3]=U0RBR; //Reading 4th RX Byte from U0RBR
for(char i=0;i<4;i++) {
printf("\n\rChars u entered are %c",a);
}
}
}
int main(void)
{
PLL_Config(6,1,12);
UART0_INIT(9600);
while(1)
{
get_data();
delay(300);
}
} |