
串口接收和发送
自己弄的程序,光有发送时能用,加上接收就不好使了,不知道问题在哪里?高手指教,程序如下:/****************数据发送*****************/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; //清正在发送标志
} 展开
/**************** 数据发送 *****************/
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; //清正在发送标志
} 展开
1个回答
展开全部
void serial() interrupt 4
void uart(void) 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; //清正在发送标志
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询