#include <reg51.h>
#define
BUFFERLEGTH 10
//-----------------------------------------------------------------
void
UART_init();
//串口初始化函数
void
COM_send(void);
//串口发送函数
char str[20]="hello\r\n";
//-------------------------------------------------------------------
void main(void)
{
unsigned char i;
UART_init();
//初始化串口
for(i = 0;i < 10 ;i++)
{
COM_send();
//首先发送一次数据作为测试用
};
while(1);
}
//-------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
// 函数名称: UART_init()串口初始化函数
// 函数功能: 在系统时钟为11.059MHZ时,设定串口波特率为9600bit/s
//
串口接收中断允许,发送中断禁止
//--------------------------------------------------------------------------------------------------
void UART_init()
{
//初始化串行口和波特率发生器
SCON
=0x50;
//选择串口工作方式1,打开接收允许
TMOD
=0x20;
//定时器1工作在方式2,定时器0工作在方式1
TH1
=0xfA;
//实现波特率9600(系统时钟11.0592MHZ)
PCON = 0x80;
TR1
=1;
//启动定时器T1
ET1 =0;
ES=1;
//允许串行口中断
PS=1;
//设计串行口中断优先级
EA
=1;
//单片机中断允许
}
//------------------------------------------------------------
void COM_send(void)
{
unsigned
char point = 0;
for(point=0;point<
20;point++)
//连续发送二十位数据
//把缓存区的数据都发送到串口
{
SBUF=str[point];
while(!TI);
TI=0;
}
}
//--------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
// 函数名称: com_interrup()串口接收中断处理函数
// 函数功能: 接收包括起始位'S'在内的十位数据到数据缓冲区
//--------------------------------------------------------------------------------------------------
void com_interrupt(void) interrupt 4 using 3
{
unsigned char
RECEIVR_buffer;
if(RI)
//处理接收中断
{
RI=0;