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;/*因为时序问题,清零需要放在自加后面*/
}
}
评分
-
发表于 2024-3-8 16:52|为啥不用定时器?checkmgcmn('post_1194427')
-
发表于 2024-3-9 10:53|为啥不用定时器?这是在函数内计数了。只是不用另外设置定时器checkmgcmn('post_1194492')
-
发表于 2024-3-9 22:42|用处不大定时器作为单片机常用功能之一,你肯定得学会用一旦你会用了,封装成一个函数,后期的代码复制就行了而对于时钟秒闪这种东西,0.8秒一次和1秒一次,其实区别不大,给人感觉都是"1秒"闪一次,差不多就行而你这个方法,也没感觉比定时器好到哪里去,反而是增加了代码的逻辑,让代码更复杂而已checkmgcmn('post_1194569')
-
发表于 2024-3-10 06:41|这是在函数内计数了。只是不用另外设置定时器用定时器设定一个时长,通常0.5s。当TIME[0]发生变化即触发闪秒。checkmgcmn('post_1194587')
-
发表于 2024-3-10 11:26|用处不大定时器作为单片机常用功能之一,你肯定得学会用一旦你会用了,封装成一个函数,后期的代码复制就 ...哦。好吧checkmgcmn('post_1194613')