LPC900单片机串行口通用收发程序
时间:2025-04-20
时间:2025-04-20
/*
程序名称:
LPC900单片机串行口通用收发程序
作者:
21ICBBS LPC900,2005年6月
参数说明:
TXD = P1.0
RXD = P1.1
默认采用片内RC振荡器(7.3728MHz)
采用独立的波特率发生器
波特率:9600(缺省值)
起始位:1
数据位:8
停止位:1
使用方法:
1、根据具体的LPC900单片机型号,包含相应的头文件:<REG9xx.H>
2、包含本文件,并设置CPU主频CCLK和波特率BauRate
3、在主程序的初始化阶段调用函数Uart900_Init()
4、在串行口中断服务程序里,接收数据的处理框架已经写好,只需添加具体的应用代码;如果不需要接收处理任何数据,则不必理会这段程序
5、发送单个字符时,使用函数Uart900_SendChar();发送字符串时,使用函数Uart900_SendString()
*/
#ifndef _UART900_H_
#define _UART900_H_
//参数配置
#define CCLK 7372800L //定义CPU主频(Hz)
#define BaudRate 9600L //定义波特率(bps)
//定义发送中断辅助标志(仅用于发送)
static volatile bit _TI_;
//串行口初始化
extern void Uart900_Init()
{
EA = 0;
_TI_ = 1;
P1M1 &= 0xFC; //TXD和RXD都设置成准双向IO
P1M2 &= 0xFC;
SCON = 0x50; //串口方式1
BRGCON = 0x00; //关闭波特率发生器
BRGR1 = (unsigned char)( ( CCLK / BaudRate - 16 ) >> 8 ); //波特率设置
BRGR0 = (unsigned char)( CCLK / BaudRate - 16 );
BRGCON = 0x03; //打开波特率发生器
ES = 1; //允许串行口中断
EA = 1; //允许中断
}
//串行口中断服务程序
static void Uart900_INTSVC() interrupt 4
{
unsigned char c;
if ( RI )
{
c = SBUF;
RI = 0;
//在这里添加其他代码
}
if ( TI )
{
TI = 0;
_TI_ = 1;
}
}
//通过串行口发送单个字节
//c是被发送的字节数据,c=0x00~0xFF
extern void Uart900_SendChar(unsigned char c)
{
for (;;)
{
if ( _TI_ )
{
_TI_ = 0;
break;
}
}
SBUF = c;
}
//通过串行口发送字符串
//s是被发送的字符串
//字符串末尾的'\0'不会被发送出去
extern void Uart900_Se
ndString(unsigned char *s)
{
unsigned char c;
for (;;)
{
c = *s;
if ( c == '\0' ) break;
s++;
Uart900_SendChar(c);
}
}
#endif
下一篇:实验室制溴苯和硝基苯