串口编程

一:概述

  关于串口的理论说起来还是有一大堆,但是编程却很简单在这里就不多说了。基本上每个程序都用到了串口调试。

二:相关寄储器设置

  ULCONn线性控制寄储器主要用来配置奇偶校验模式,停止位,字长

  UCONn控制寄储器,这里面的东西我看起来就有点陌生。

  UFCONn这里面的东西也不是很明白。

  UMCONn不太懂。

  

  UTRSTATn发送/接收状态寄储器,很有用,编程就是判断这个寄储器的相应位来发送数据。

  UTXHn发送保持寄储器,URXHn接收保持寄储器。

  UBRDIV波特率除数寄储器。

三:编程示例

//***************************************************************************
void uart_init(int mclk,int baud)
{
 rULCON0 = 0x3;
 rUCON0  = 0x345;
 rUFCON0 = 0xf7;
 rUMCON0 = 0;
 rUBRDIV0= ((int)(mclk/16.0/baud+0.5)-1);
}
void wr_uart(char dat)
{
 if('\n'==dat)
 {
  while(!(rUTRSTAT0 & 0x2));
  Delay(10);
  rUTXH0 = '\r';
 }
 while(!(rUTRSTAT0 & 0x2));
 Delay(10);
 rUTXH0 = dat; 
}
void send_string(char *fm)
{
 while(*fm)
  wr_uart(*fm++);
}
void uart_printf(char *fm,...)
{
 va_list ap;
 char string[256];
 va_start(ap,fm);
 vsprintf(string,fm,ap);
 send_string(string);
 va_end(ap);
}

你可能感兴趣的:(编程)