我用2407的SCI写了一个串口通信的程序,调试时上位机用地串口助手,现在的问题是,我定义了一个数组长度为100,但是只能发送一部分数据,然后就不动了。我采用中断接收,查询发送的方式。是这种情况,后来都改用中断来实现还是这个问题。我把发送的程序帖出来,大家看看是哪有问题啊。 while(1) { if(flag) { for( k=0;k<100;k++) { SCITXBUF=receive[k]; while((SCICTL2&0x80)==0) {}; } flag=0; } 其中flag是发送标志位,为1则启动发送,把100个数据发送完之后,使其为0,停止发送。但是我看了一上,每次都只能接收不到20个数据,就接不到数据了。停止运行后,它总是停在if (flag)这一句。查看变量值时,发现flag=0;可这是在哪变的啊?程序应该始终在for循环里面啊,怎么会把flag的值给变了呢,想了好久也不解,请大家指点。谢谢! |