串口接收和发送

自己弄的程序,光有发送时能用,加上接收就不好使了,不知道问题在哪里?高手指教,程序如下:/****************数据发送*****************/vo... 自己弄的程序,光有发送时能用,加上接收就不好使了,不知道问题在哪里?高手指教,程序如下:
/**************** 数据发送 *****************/
void send(unsigned char d) //发送一个字节的数据,形参d即为待发送数据。
{
DisplayString(4, 1, "4");
SBUF=d; //将数据写入到串口缓冲
sending=1; //设置发送标志
while(sending); //等待发送完毕
}

void sendc(unsigned char * pd)
{
while((*pd)!='\0') //发送字符串,直到遇到0才结束
{ DisplayString(3, 1, "3");
send(*pd); //发送一个字符
pd++; //移动到下一个字符
}
}
下面是接收程序:
void serial() interrupt 4
{
ES = 0; DisplayString(9, 1,"9"); //关闭串行中断
RI = 0; DisplayString(9, 1,"9"); //清除串行接受标志位
buf = SBUF; DisplayString(9, 1,"8"); //从串口缓冲区取得数据
DisplayString(9, 1,"9");
ES = 1; DisplayString(9, 1,"9");//允许串口中断
}
还有一个
void uart(void) interrupt 4 //串口发送中断
{
if(RI) //收到数据
{
RI=0; //清中断请求
}
else //发送完一字节数据
{
TI=0;
sending=0; //清正在发送标志
}
展开
 我来答
做而论道
高能答主

2014-06-12 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3.1万
采纳率:82%
帮助的人:8462万
展开全部
void serial() interrupt 4

void uart(void) interrupt 4

怎么写了两个《串口中断函数》?
追问
写一个就行了嘛?能给个简单的实例吗?好像发送没问题,帮我写个接收的吧,放一个数组中就行
追答
下面的,是你写的《发送中断》,这里就应该包括了接收:

void uart(void) interrupt 4 //串口发送中断
{
if(RI) //收到数据
{
RI=0; //清中断请求

//接收部分:

buf = SBUF; DisplayString(9, 1,"8"); //从串口缓冲区取得数据

//--把你写的接收,放在此处,不就行了吗?

}
else //发送完一字节数据
{
TI=0;
sending=0; //清正在发送标志
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式