TCP/IP问题

ertao2008 2010-10-07 10:06:27
下面的接收数据程序程序中有条语句
for(num_packets = 0; valid_bits; num_packets++)
{
valid_bits &= valid_bits - 1;
}
这段程序我看不懂,希望老师给我解释一下,谢谢!


//****************************************************************/
//CP2200芯片接收数据函数
/****************************************************************/
UCHAR xdata * rcve_frame(void)

{
bit rx_ok;
bit skip = 0;
UINT1 cplen;
unsigned int i;
UCHAR xdata * buf;

unsigned char interrupt_read;
unsigned char valid_bits;
unsigned char num_packets;


interrupt_read = INT1;
interrupt_read = INT0; //清中断标志


if( interrupt_read & RXINT) //判断接收中断是否产生
{

valid_bits = TLBVALID; //对接收数据包进行统计
for(num_packets = 0; valid_bits; num_packets++)
{
valid_bits &= valid_bits - 1;
}


if( num_packets >= 7) //接收区超过7个数据包,停止接收
{
RXCN = RXINH;
}
}
...全文
87 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
edison1226 2010-10-08
  • 打赏
  • 举报
回复
学习中~~~
hui8899988 2010-10-08
  • 打赏
  • 举报
回复
同样学习中
smilestone322 2010-10-07
  • 打赏
  • 举报
回复
接收的 包-1,表示你已经接收到一个包
cnzdgs 2010-10-07
  • 打赏
  • 举报
回复
valid_bits &= valid_bits - 1;
这行代码是把valid_bits最右边的"1"清除,这个循环的作用是统计一下valid_bits中有多少位是1。

21,616

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧