您的位置 首页 技术

51单片机与PC串口通讯程序

#includereg51.h>#defineBUFFERLEGTH10//———————————————————–

#include

#define BUFFERLEGTH 10
//—————————————————————–
void UART_init(); //串口初始化函数
void COM_send(void); //串口发送函数
char str[20];
char j;
//——————————————————————-
void main(void)
{
unsigned char i;
UART_init();
j=0; //初始化串口
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;str[point]!=/0;point++) //接连发送二十位数据 //把缓存区的数据都发送到串口
{
SBUF=str[point];
while(!TI);
TI=0;
//str[point]=/0;
}

}
//————————————————————–
//————————————————————————————————–
// 函数称号: com_interrup()串口接纳中止处理函数
// 函数功用: 接纳包含开始位S在内的十位数据到数据缓冲区
//————————————————————————————————–
void com_interrupt(void) interrupt 4 using 3
{
unsigned char RECEIVR_buffer;
bit flag=1;
if(RI) //处理接纳中止
{
RI=0; //铲除中止标志位
RECEIVR_buffer=SBUF; //接纳串口数据
str[j]=SBUF;
if (RECEIVR_buffer == $)
{ ES=0;
str[j]=/0;
SCON =0x40; //接纳不答应
COM_send(); //发送数据
ES=1;
j=0;
flag=0;
SCON=0x50; //接纳答应
}
if(flag)
j++;
}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/jishu/263598.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部