您好, 登录| 注册|
论坛导航
您好, 登录| 注册|
子站:
论坛首页    单片机MCU/嵌入式
  •  发帖
  • 收藏

单片机与pc串口通信程序及电路图
阅读: 412 |  回复: 1 楼层直达

2018/12/26 10:14:43
1
clockwork_planet
电源币:14 | 积分:31 主题帖:102 | 回复帖:50
LV5
营长

QQ截图20160321155901   免费送!!!基于罗姆1700V碳化硅的AC/DC 免费试用

QQ截图20160321155901   号外!号外!罗姆碳化硅功率管评估板免费试用



单片机与pc串口通信程序及电路图


#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

};

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++;

}

}

来源:网络,如侵,删


2018/12/26 12:48:12
2
gxg1122
电源币:893 | 积分:12 主题帖:153 | 回复帖:1369
LV9
军长
看看。
客服热线
服务时间:周一至周五9:00-18:00
微信关注
免费技术研讨会
获取一手干货分享

互联网违法不良信息举报

Reporting Internet Illegal and Bad Information
editor@netbroad.com
022-58392381