void md()/*秒点准确无误,不多不少,刚好亮灭60次*/
{
unsigned int d,s,i;
i=1500;/*亮点时长,晶振不同,数值不同*/
if(TIME[0]%2==1)/*单秒*/
{
d++;
if(d<i)
{
COM2_DC_L=dm[disp[9]]+0x80;
}
else
{
COM2_DC_L=dm[disp[9]];
}
}
if(TIME[0]%2==0)/*双秒*/
{
d=0;
s++;
if(s<i)
{
COM2_DC_L=dm[disp[9]]+0x80;
}
else
{
COM2_DC_L=dm[disp[9]];
}
}
if(TIME[0]%2==1)/*单秒*/
{
s=0;/*因为时序问题,清零需要放在自加后面*/
}
}
{
unsigned int d,s,i;
i=1500;/*亮点时长,晶振不同,数值不同*/
if(TIME[0]%2==1)/*单秒*/
{
d++;
if(d<i)
{
COM2_DC_L=dm[disp[9]]+0x80;
}
else
{
COM2_DC_L=dm[disp[9]];
}
}
if(TIME[0]%2==0)/*双秒*/
{
d=0;
s++;
if(s<i)
{
COM2_DC_L=dm[disp[9]]+0x80;
}
else
{
COM2_DC_L=dm[disp[9]];
}
}
if(TIME[0]%2==1)/*单秒*/
{
s=0;/*因为时序问题,清零需要放在自加后面*/
}
}
评分
用处不大
定时器作为单片机常用功能之一,你肯定得学会用
一旦你会用了,封装成一个函数,后期的代码复制就行了
而对于时钟秒闪这种东西,0.8秒一次和1秒一次,其实区别不大,给人感觉都是"1秒"闪一次,差不多就行
而你这个方法,也没感觉比定时器好到哪里去,反而是增加了代码的逻辑,让代码更复杂而已
定时器作为单片机常用功能之一,你肯定得学会用
一旦你会用了,封装成一个函数,后期的代码复制就行了
而对于时钟秒闪这种东西,0.8秒一次和1秒一次,其实区别不大,给人感觉都是"1秒"闪一次,差不多就行
而你这个方法,也没感觉比定时器好到哪里去,反而是增加了代码的逻辑,让代码更复杂而已