Chinaunix首页 | 论坛 | 博客
  • 博客访问: 139338
  • 博文数量: 49
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 515
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-08 10:33
文章分类

全部博文(49)

文章存档

2010年(2)

2009年(30)

2008年(17)

我的朋友

分类: C/C++

2009-07-26 20:19:48

    本实验的目的是实现在linux上的minicom上,输入一个数字或字母字符,把输入的数字或字母加一之后再输出到minicom上,这个实验主要关键的部分就是设置串口的几个寄存器,其初始化如下:
#define  PCLK   50000000
#define  UART_CLK  PCLK
#define UART_BAUD_RATE  115200
#define UART_BRD  ((UART_CLK/(UART_BAUD_RATE * 16))-1)
 
void Uart0_init()
{
  GPHCON  |= 0xa0;
  GPHUP  = 0x0c;
  ULCON0 = 0x03;  //8位数据位宽度
  UCON0 = 0x05;   //选择PCLK时钟,数据接收和发送都采用中断方式或查询方式
  UFCON0 = 0x00;  //不使用FIFO
  UMCON0 = 0x00;  //不使用流控
  UBRDIV0 = UART_BRD; //设置波特率
}
其接收和发送通过UTRSTAT0的状态寄存器来读取UTXH0和URXH0寄存器。
//发送一个字符
void putc(unsigned char c)
{
  while(!(UTRSTAT0 & 0x04));//当发送器为空时
  UTXH0 = c;
}
 
//接收一个字符
unsigned char getc(void)
{
  while(!(UTRSTAT0 & 0x01));//接收到数据时
  return URXH0;
}
 
   其完整的程序如下附件:
文件: uart.rar
大小: 17KB
下载: 下载
   有了以上实验的基础,就可以利用Uart0来实现printf,scanf函数的功能啦,实现这两个函数,非常有利于调试程序的运行,其具体的实现方式见其程序。
文件: stdio.rar
大小: 83KB
下载: 下载
  
阅读(635) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~