当前位置:首页 > 单片机 > 单片机
[导读]如下程序实现的是开发板从PC端口接受一个字符,并把该字符加1后发送会PC端口。(在本开发板测试成功)对于不同的主频要设置好UBRDIV0的值,在技术文档中有这个值的计算公式。#define ULCON0 (*(volatile unsigned *)

如下程序实现的是开发板从PC端口接受一个字符,并把该字符加1后发送会PC端口。(在本开发板测试成功)对于不同的主频要设置好UBRDIV0的值,在技术文档中有这个值的计算公式。

#define ULCON0 (*(volatile unsigned *)0x50000000) //UART 0 Line control
#define UCON0 (*(volatile unsigned *)0x50000004) //UART 0 Control
#define UFCON0 (*(volatile unsigned *)0x50000008) //UART 0 FIFO control
#define UMCON0 (*(volatile unsigned *)0x5000000c) //UART 0 Modem control
#define UTRSTAT0 (*(volatile unsigned *)0x50000010) //UART 0 Tx/Rx status
#define UBRDIV0 (*(volatile unsigned *)0x50000028) //UART 0 Baud rate divisor

#define UTXH0 (*(volatile unsigned char *)0x50000020) //UART 0 Transmission Hold
#define URXH0 (*(volatile unsigned char *)0x50000024) //UART 0 Receive buffer

#define GPHCON (*(volatile unsigned *)0x56000070)
#define GPHDAT (*(volatile unsigned *)0x56000074)
#define GPHUP (*(volatile unsigned *)0x56000078)

int Main()
{
unsigned long TXH0READY = 0x2;
unsigned long RXH0READY = 0x1;
//init uart
GPHCON |= 0xa0;
GPHUP |= 0x0c;//PULLUP is enable;
//init uart controllor
ULCON0 = 0x03;
UCON0 = 0x245;
UFCON0 = 0x00;
UMCON0 = 0x00;
UBRDIV0= 26;

while(1)
{
while(!(UTRSTAT0 & RXH0READY));
c = URXH0;

while(!(UTRSTAT0 & TXH0READY));//wait
UTXH0 = c+1;
}
while(1);
return(0);
}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭