我用clock[3]记录由中断信号计算而来的时分秒 初值为{0,0,0}
我将显示时间的功能放在一个函数中
- C/C++ code
void clock3(){ uint temp1[6]; uint i; while(1)//内部无限循环 { temp1[0]=clock[0]/10;//分别记录数码管每位显示的数字 temp1[1]=clock[0]%10; temp1[2]=clock[1]/10; temp1[3]=clock[1]%10; temp1[4]=clock[2]/10; temp1[5]=clock[2]%10; for(i=0;i<6;i++)//将数字显示在数码管上 { wela=1; P0=weixuan[i]; wela=0; P0=0xff; dula=1; P0=table[temp1[i]]; dula=0; delay(20);//稳定在20ms-10ms数码管显示的比较清晰 //delay(800);←调试用的 可以无视 } if(b2==0) { yanchi10ms(); if(b2==0) { dula=1; P0=0; dula=0; break; } }//如果按下B2键就返回主菜单 }}
下面是主函数main相关命令
- C/C++ code
loopmain: while(1) { if(b1==0) { yanchi10ms(); if(b1==0) goto loop1;}//显示时间 if(b2==0) { yanchi10ms(); if(b2==0) goto loop2;}//数字测试 } loop1: clock3(); goto loopmain;//当从显示时间函数中退出就返回loopmain 重新选择功能
现在的问题就在于在函数中按下B2键可以返回主菜单 但是clock[3]被清零 再次进入clock3()函数又会从0开始计时 这让我很疑惑啊
求各位大神指点
------解决方案--------------------
没有看到clock[3]赋值的语句
------解决方案--------------------
我的猜想是这样的
你没有加按键延时,你在函数clock3()该循环中,按B2,意图跳出clock3()。
但事实上,程序在跳出clock3()的同时,又进入了loop2,而loop2又对其clock[3]这个数组进行了初始化!