⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.c.svn-base

📁 realtek的8186芯片ADSL路由AP源代码
💻 SVN-BASE
字号:
/*#include "loader.h"*/
#include "board.h"
#include "uart.h"


void put_cc( char c )
{
	if(c=='\n')
		putchar('\r');
    /* While !THRE, loop */
    while ( 0 == (UART_LSR & 0x20) );

    UART_THR = c;

}

void putchar( char c )
{
	if(c=='\n')
		putchar('\r');
    /* While !THRE, loop */
    while ( 0 == (UART_LSR & 0x20) );

    UART_THR = c;

}

void puts( char *string )
{
    int index = 0;

    while ( 0 != string[ index ] )
    {
		putchar( string[ index++ ] );
    }
    return;
}

void puthex(unsigned long hex)
{
int	i;
char	c;

	for (i=0;i<8;i++)
	{
		c = hex >> 28;
		c += '0';
		if (c > '9')
			c += ('A' - '9' - 1);
		putchar(c);
		hex <<= 4;
	}
}


int getch( char *ch )
{

    if ( 1 == (UART_LSR & 0x01) )
    {
    	return UART_RBR;
    }
    else
    	return 0;
}

char poll_cc( void )
{
    return (UART_LSR & 0x01 );
}

int getchar( void)
{
	while ( 1 != (UART_LSR & 0x01) );
	
	return( UART_RBR );
}

int getcc( void)
{
	if ( 1 == (UART_LSR & 0x01) )
		return( UART_RBR );
	return 0;
}


void initUart(unsigned int baud_rate)
{
    unsigned short divisor;
	int i;
	
    /* DLAB Set, 8 bit word, no parity, 1 stop bit */
    UART_LCR = 0x83;

    /* Set Baud Rate to 9600 bps */
    divisor = (CLOCKGEN_FREQ / ( 16 * baud_rate )) - 1;
    UART_DLM = (divisor >> 8) & 0x00FF;
    UART_DLL = divisor & 0x00FF;

    /* Clear DLAB Bit */
    UART_LCR = 0x03;

	UART_FCR = 0x06;
	for(i=0;i<1000;i++);
	UART_FCR = 0x01;
    
    UART_IER = 0x00;
    UART_MCR = 0x03;
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -