串口初始化


#define rGPACON    (*(volatile unsigned long *) 0x7F008000)
#define rGPAPUD   (*(volatile unsigned long *) 0x7F008008)
#define rULCON0    (*(volatile unsigned long *) 0x7F005000) 
#define rUCON0     (*(volatile unsigned long *) 0x7F005004)
#define rUFCON0    (*(volatile unsigned long *) 0x7F005008)
#define rUMCON0    (*(volatile unsigned long *) 0x7F00500C)
#define rUBRDIV0   (*(volatile unsigned long *) 0x7F005028)
#define rUDIVSLOT0 (*(volatile unsigned long *) 0x7F00502C)
#define rUTXH0     (*(volatile unsigned long *) 0x7F005020)
#define rURXH0     (*(volatile unsigned long *) 0x7F005024)
#define rUTRSTAT0  (*(volatile unsigned long *) 0x7F005010)
#define uINT  unsigned int


void Uart_Init(void)
{
  
    rGPACON = (rGPACON & ~(0xff<<0)) | (0x22<<0);    // GPA0->RXD0, GPA1->TXD0
    rGPAPUD = (rGPAPUD & ~(0xf<<0)) | (0x1<<0);        // RXD0: Pull-down, TXD0: pull up/down disable

    rULCON0 = 0x03;                    // Normal Mode, No Parity, 1 Stop Bit, 8 Bit Data


    

rUCON0 = 0x805;                    // PCLK divide, Polling Mode



    rUFCON0 = 0x00;                    // Disable FIFO
    rUMCON0 = 0x00;                    // Disable Auto Flow Control


    rUBRDIV0 = 35;                     // Baud rate

    rUDIVSLOT0 = 0x80;                 //aSlotTable[DivSlot];


}


void WrUTXH0(char data)
{
rUTXH0 = data; 
}


uINT RdURXH0()
{
char data;
data = rURXH0;
return data;
}


void Uart_SendByte(char data)
{
    while(!(rUTRSTAT0 & 0x2));   //Wait until THR is empty.
    WrUTXH0(data);
}


void Uart_SendString(char *pt)
{
    while(*pt)
    Uart_SendByte(*pt++);
}


//=====================================================================
char Uart_GetCh(void)
{
         
     while(!(rUTRSTAT0 & 0x1)); //Receive data ready
     return RdURXH0();
   
}


char Uart_GetKey(void)
{
        if(rUTRSTAT0 & 0x1)    //Receive data ready
            return RdURXH0();
        return 0;    
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值