51单片机——串口1通信
mark
#include <STC15.H> //52头文件
#include <UART.H>
bit busy1;
/*-------------------------------------------串口1初始化----------------------------------------------*/
void Uart1Init(void)
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xFD; //设定定时初值
TH1 = 0xFD; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
REN = 1; //不开启这个无法接受数据
ES = 1; //开启串口中断使能
EA = 1;
TI = 0;
RI = 0;
}
/*-------------------------------------------中断+接收----------------------------------------------*/
void Uart1() interrupt 4
{
if ((RI))
{
RI = 0; //清除RI位
}
if (TI)
{
TI = 0; //清除TI位
busy1 = 0; //清忙标志
}
}
/*-------------------------------------------发送----------------------------------------------*/
void PutChar(BYTE dat)
{
while (busy1)
; //等待前面的数据发送完成
busy1 = 1;
SBUF = dat; //写数据到UART2数据寄存器
}
void PutString(char *s, u8 length) //发送字符串
{
while (length != 0) //检测字符串结束标志
{
PutChar(*s++); //发送当前字符
length--;
}
}
还没有评论,来说两句吧...