本帖最后由 ningling_21 于 2012-3-1 15:50 编辑
代码如下:
while(1)
{
if(flag_rece_end==1) //接收一帧完成?
{
flag_rece_end=0;
Time[0]=rece_buff[7];//假设数据都合法
//年月,星期,日,时分秒
Time[1]=rece_buff[6];
Time[2]=rece_buff[5];
Time[3]=rece_buff[4];;//日期
Time[4]=rece_buff[3];;//星期
Time[5]=rece_buff[2];;
Time[6]=rece_buff[1];
I2C_Puts(0xa2,0x02,7,Time);//更新RTC时间
}
}
/////////////////////////////////////////////////////////////////////////////////////////////
void Init_uart(void) interrupt 4
{
EA=0;
if(RI==1)
{
rece_buff[rece_cnt]=SBUF;
rece_cnt++; //接收个数加1
if(rece_cnt==(rece_buff[0])) //接收完成?
{
flag_rece_end=1; //接收一帧完成标志
}
else
{
flag_uart=1;
}
RI=0;
LED1=~LED1;
}
else if(TI==1)
{
TI=0;
flag_send=0; //发送完成
}
EA=1;
}
MCU=STC89C58;
问题:上位机发送数据串:如:08 01 02 03 04 05 06 07(第一字节代表数据串长度)
单片机总收不完一帧,导致MCU系统上时间无法更新... |