void putt(void) //字符串发送函数
{
uchar p;
setd_2();//打开发送
for(p=0;p<RD_numbel;p++)
{
while (!(UCSRA&(1<<UDRE))); //判断上次发送有没有完成
UDR=RD_ram[p];
}
while (!(UCSRA&(1<<TXC)));
delay();
clrd_2();//关闭发送
UCSRA&=0xdf;
}
SIGNAL(SIG_UART_RECV)
{
if(rx==0x55)//不是第一个数进入处理
{
RD_ram[RD_numbel]=UDR;
RD_numbel++;
TCNT1H=0;
TCNT1L=0;
}
else
{
rx=0x55;//第一个接受位
RD_numbel=0;//接受计数器清零
RD_ram[RD_numbel]=UDR;
RD_numbel++;
TCNT1H=0;
TCNT1L=0;
TIFR&=0xfb;//清溢出标志
set_t0ie1();//开定时器一中断
}
}
SIGNAL(SIG_OVERFLOW1)
{
clr_t0ie1();//关定时器中断
rx=0xaa;
putt();//把接收到的数送入串口
}
打开串口发送123456,送过来f7,第二次发送送过来FFF5123456,第三次正常123456。这是为什么? |