单片机使用内部中断计算时间的问题……
我用clock[3]记录由中断信号计算而来的时分秒 初值为{0,0,0}
我将显示时间的功能放在一个函数中
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键就返回主菜单 }}
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 重新选择功能