概述
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//-----------------------函数声明,变量定义-------------------------------------
#include
#define COUNT 10 // 定义接收缓冲区大小
unsigned char buffer[COUNT]; //定义接收缓冲区
unsigned char point; //定义接收数据个数指示变量
void UART_init(); //串口初始化函数
void COM_send(void); //串口接收函数
unsigned char CLU_checkdata(void);//计算校验位函数
//-----------------------------------------------------------------------------
// 函数名称: UART_init()串口初始化函数
// 函数功能: 在系统时钟为11.059MHZ时,设定串口波特率为9600bit/s
// 串口接收中断允许,发送中断禁止
//----------------------------------------------------------------------------
void UART_init()
{ //初始化串行口和波特率发生器
SCON =0x58; //选择串口工作方式,打开接收允许
TMOD =0x21; //定时器1工作在方式2,定时器0工作在方式1
TH1 =0xfd; //实现波特率9600(系统时钟11.0592MHZ)
TR1 =1; //启动定时器T1
ET1 =0;
ES=1; //允许串行口中断
PS=1; //设计串行口中断优先级
EA =1; //单片机中断允许
}
//---------------------------------------------------------------------
// 函数名称: com_interrup()串口接收中断处理函数
// 函数功能: 接收包括起始位'S'在内的十位数据到数据缓冲区
//----------------------------------------------------------
com_interrupt(void) interrupt 4 using 3
{
unsigned char RECEIVR_buffer;
if(RI) //处理接收中断
{
RI=0; //清除中断标志位
RECEIVR_buffer=SBUF; //接收串口数据
if(point==0) //如果还没有接收到起始位
{
if(RECEIVR_buffer=='S') //判断是否起始标志位
point++; //是准备接收下一位
else
point=0; //不是,继续等待起始位
}
else if(point>0&&point<10) //判断是否接收够十位数据
buffer[point++]=RECEIVR_buffer; //不够,把接收到的数据放入接收缓存区
else point=0; //缓冲区已满,清除缓存区内数据重新接收
}
If(TI) //处理发送中断
{
TI=0;
}
}
//-----------------------------------------------------------------------
// 函数名称: COM_send()串口发送函数
// 函数功能: 把数据缓冲区的十位数据发送出去
//-----------------------------------------------------------------------
void COM_send(void)
{
for(point=0;point<=10,TI=1;point++) //连续发送十位数据
//把缓存区的数据都发送到串口
{
SBUF=buffer[point];
最后
以上就是感性金毛为你收集整理的单片机串口通信c语言程序,【51单片机】RS232串口通讯C语言程序的全部内容,希望文章能够帮你解决单片机串口通信c语言程序,【51单片机】RS232串口通讯C语言程序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复