串口通讯c语言程序详解
1、利用串口调试助手,往单片机发送数据,单片机接收到数据再发回电脑,进行串口调试

2、#include "reg52.h"//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

3、#define uint unsigned int
#define uchar unsigned char
uchar a,flag;

4、/******************************************************************/
/* 延时函数声明 */
/******************************************************************/
/*void mdelay(uint t)
{
uchar n;
for(;t>0;t--)
for(n=0;n<125;n++)
{;}
}*/
void mdelay(uint t)
{
uchar n;
while(t--)
{
for(n=0;n<123;n++)
{;}
}
}

5、/******************************************************************/
/* 主函数 */
/******************************************************************/
void main()
{
TMOD=0x20;//设置定时器0为工作方式1
TH1=0xfd;//设置初值
TL1=0xfd;
TR1=1;//启动定时器
SM0=0;
SM1=1;//设置串口为方式1
REN=1;//接收使能
EA=1;//开总中断开关
ES=1;//打开串口中断开关

6、 while(1)//单片机发送数据
{
if(flag==1)
{
ES=0;//关闭串口中断
flag=0;//数据清零
SBUF=a;//写数据
while(!TI);//数据没有发完TI一直是1,等待数据发送结束
TI=0;//数据发送完毕要软件清零
ES=1;//打开串口中断
}
}
}

7

8、/******************************************************************/
/* 定时器0 */
/******************************************************************/
void serial() interrupt 4//单片机接收数据
{
a=SBUF;//往单片机写入一个数据
P0=a;
RI=0;//数据接收完毕软件清零
flag=1;//标志位 收到数据为1
}
9、本经验只供参考,如有不足,还请见谅,如果有什么疑问请在下边留言,及时给你解答。。。