请问各位大神这个中断程序问题出在哪里?无法执行到 flag=0,连接传感器是串口输出,输入7个,返回10个数据
{
SCON=0X50; //设置为工作方式1 ,允许接收
TMOD=0X20; //设置计数器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //计数器初始值设置,波特率9600
TL1=0XF3;
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1; //打开计数器
}
void Usart() interrupt 4
{
for(i=0;i<7;i++)
{
TI=0; //清除数据传送标志
SBUF=in[i];
while(!TI);
Delay1ms(1);//等特数据传送
}
Delay1ms(5);
for(i=0;i<10;i++)
{
RI=0;
out[i]=SBUF;
while(!RI);
Delay1ms(1);
}
flag=0;
}
将接受数据部分放在中断程序中,发送数据部分放主程序部分,且在主程序发送数据时,切记发送前关中断,等发送完毕再开中断
思路很中要啊~~~~~加油吧。
中断不能这么干的把。
UsartConfiguration ();
while(flag);
ES=0;
EA=0;
for(i=0;i<10;i++)
{
RI=0;
out=SBUF;
while(!RI);
Delay1ms(1);
}
ES=1;
EA=1;
void Usart() interrupt 4
{
for(i=0;i<7;i++)
{
TI=0; //清除数据传送标志
SBUF=in;
while(!TI);
Delay1ms(1);//等特数据传送
}
Delay1ms(5);
flag=0;
}
这样么?还是不行……
求教应该单片机应该如何和传感器进行串口通讯?比如这个发7字节的命令接收10字节的数据。