上位机和51单片机串口通信程序超详细
时间:10-02
整理:3721RD
点击:
上位机和51单片机串口通信程序超详细
#include
#define uchar unsigned char
#define uint unsigned int
uchar flag,a,i;
uchar code table[]="I get:";
void init()//串口初始化
{
TMOD=0x20;
TH1=0xFd; //波特率9600
TL1=0xFd;
TR1=1; //开波特率
REN=1; //允许串口接收数据
SM0=0;//串口工作方式1,8位数据传送
SM1=1;
EA=1;//开总中断
ES=1; //串口中断开
}
void main()
{
init(); //串口初始化
while(1)//如果WHILE(1)打分号就不返回数据给电脑
{
if(a==1) P1=0x7f;
if(a==2) P1=0xff;
if(flag==1) //如果接收完成 电脑开始接收数据
{
ES=0; // 应为 开始 接收数据 所以 需关闭 发送中断 ES
for(i=0;i<6;i++)
{
SBUF=table; //单片机发送table【1】给电脑
while(!TI); //发送等待 如果 没有发送 完成TI会一直处于1直到发送完成
TI=0; //软件清零 同RI
}
SBUF=a; //发送
while(!TI); //发送等待
TI=0;ES=1; //软件清零 打开接送中断
flag=0; // 标志位清零
}
}
}
void ser() interrupt 4
{
//如果不需要返回数据就直接把控制硬件程序写在这里
a=SBUF; //发送数据 a给单片机 sbuf 的书功能寄存器
RI=0; //接收中段标志位 但接受完成后 必须 软件 清零
flag=1; //接收完成标志位
}
#include
#define uchar unsigned char
#define uint unsigned int
uchar flag,a,i;
uchar code table[]="I get:";
void init()//串口初始化
{
TMOD=0x20;
TH1=0xFd; //波特率9600
TL1=0xFd;
TR1=1; //开波特率
REN=1; //允许串口接收数据
SM0=0;//串口工作方式1,8位数据传送
SM1=1;
EA=1;//开总中断
ES=1; //串口中断开
}
void main()
{
init(); //串口初始化
while(1)//如果WHILE(1)打分号就不返回数据给电脑
{
if(a==1) P1=0x7f;
if(a==2) P1=0xff;
if(flag==1) //如果接收完成 电脑开始接收数据
{
ES=0; // 应为 开始 接收数据 所以 需关闭 发送中断 ES
for(i=0;i<6;i++)
{
SBUF=table; //单片机发送table【1】给电脑
while(!TI); //发送等待 如果 没有发送 完成TI会一直处于1直到发送完成
TI=0; //软件清零 同RI
}
SBUF=a; //发送
while(!TI); //发送等待
TI=0;ES=1; //软件清零 打开接送中断
flag=0; // 标志位清零
}
}
}
void ser() interrupt 4
{
//如果不需要返回数据就直接把控制硬件程序写在这里
a=SBUF; //发送数据 a给单片机 sbuf 的书功能寄存器
RI=0; //接收中段标志位 但接受完成后 必须 软件 清零
flag=1; //接收完成标志位
}
、。完全看不出哪里详细了
我也完全没看出来哪里详细了
谢谢分享,看看
谢谢小编的分享,希望能够学习
文章与标题不符合啊
不是很详细啊。
没有硬件说明,连线说明,学习了
感谢小编,这正是我所需要的
谢谢!
谢谢!
、。完全看不出哪里详细了
、。完全看不出哪里详细了
谢谢小编的分享,希望能够学习
、。完全看不出哪里详细了