接收多个字节时,只有第一个字节是对的,下面是接收字节子函数
//接收一个字符
void PGetChar()
{
unsigned char rch,ii,j;
for(j=0;j<4;j++) //接收4个字节
{
TIMER0_ENABLE;
F_TM=0;
ii=0;
rch=0;
while(!F_TM); //等过起始位,时间到了,进入定时器0中断以后,F_TM置1,执行下一条语句
while(ii<8) //
{
rch>>=1; //一开始接收时,rch=0,右移1位还是0.
if(BT_REC) //根据接收端口的值来判断是0还是1,如果接收到1进入if,0则跳过
{
rch|=0x80;//将最高位置1,如果是0,则跳过不与0x80相或。
}
ii++; //最后将得到的数据存入rch中。rch即为接收到了字节
F_TM=0;
while(!F_TM);//等待,
}
F_TM=0;
while(!F_TM)
{
if(BT_REC)
{
break;
}
}
TIMER0_DISABLE; //停止timer0
recode[j]=rch;
rch=0;
}
}
求高手指教
|