51单片机串口通信c语言编程

急求51单片机与串口通信源程序,将数据送入LabVIEW进行处理... 急求51单片机与串口通信源程序,将数据送入LabVIEW进行处理 展开
 我来答
匿名用户
推荐于2017-05-23
展开全部
#include <REG52.H>
#define uchar unsigned char
#define uint unsigned int

sbit ring=P3^7;
sbit CASE1=P2^0;
sbit CASE2=P2^1;
sbit CASE3=P2^2;
sbit CASE4=P2^3;

uchar se=0,re=0;
uchar temp=0;

void wait(uint cnt)
{
while(--cnt);
}

//串口发送程序
void send(uchar se)
{
SBUF=se; //发送数据
while(TI == 0);
TI = 0;
}
//串口接收程序
uchar receive(void)
{
re=SBUF; //接收数据
while(RI==0);
RI=0;
return re;
}
//串口初始化
void sinti(void)
{
SCON = 0x50;
TMOD |= 0x20;
TH1 = 0xFD;
TR1 = 1;
EA = 1;
ES = 1;
}
void delay(int cnt)
{
while(--cnt);
}

//主程序
int main (void)
{
int i;
sinti(); //串口初始化程序
ring=1;
while(1)
{
while (1)
{
if(CASE1==0)
{
send('a');
ring=0;
break;
}
if(CASE2==0)
{
send('b');
ring=0;
break;
}
if(CASE3==0)
{
send('c');
ring=0;
break;
}
if(CASE4==0)
{
send('d');
ring=0;
break;
}
}
if(ring==0)
{
wait(60000);
ring=1;
}
for(i=0;i<10000;i++);
}
}
//串口中断程序
void UART_SER (void) interrupt 4 //串行中断服务程序
{

if(RI) //判断是接收中断产生
{
RI=0; //标志位清零
temp=SBUF;
}
if(TI) //如果是发送标志位,清零
TI=0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shylong123
2013-08-10 · 超过14用户采纳过TA的回答
知道答主
回答量:33
采纳率:0%
帮助的人:39.8万
展开全部

这个程序你看一下!里面还有个仿真程序,proteus,如果你没有这个软件,到网上下载一个,很好用的仿真软件

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-10
展开全部
www.61ic.com有例子
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式