现在写了个单片机倒计时小程序,时间传送格式为12-34-56,对应时分秒。但是串口助手那边返回来是正常d12-34-56,单片机数码管上面就只是从54秒倒计时,这是为什么?其他模块的功能没有问题。如果直接对hou、min、sec赋值都是正常倒计时的,就是通过串口传输不行。屎山就屎山吧,能跑就行。希望能够得到解答,谢谢大家。
代码如下
void uart() interrupt 4 //串口通信中断函数(先不要动)
{
RI = 0; //清除接收中断标志位
rec_data[12]=SBUF; //存储接收到的数据
SBUF=rec_data[12]; //将接收到的数据放入到发送寄存器,检查是否正常接收
while(!TI); //等待发送数据完成
TI=0; //清除发送完成标志位
}
void Select()//提取出时分秒
{
char str[8] = rec_data; //要分割的字符串
const char del[2] = "-"; //分隔符
char *p; //用于存储子串首地址
p = strtok(str, del); //第一次调用strtok,传入要分割的字符串和分隔符
hou = atoi(p); //将第一个子串转换为整数并存入变量a中
p = strtok(NULL, del); //再次调用strtok,传入NULL和分隔符,继续切割字符串
min = atoi(p); //将第二个子串转换为整数并存入中
p = strtok(NULL, del); //再次调用strtok,传入NULL和分隔符,继续切割字符串
sec = atoi(p); //将第三个子串转换为整数并存入变量c中*/
}
void main()
{
UartInit(0XFA);
Timer0Init();
Select();
hou = u[0];
min = u[1];
sec = u[2];
while(1)
{
datapros();
DigDisplay();
}
}