void led_disp()
{ uchar cant1,cant2;
if(b==0)
{
cant1=0;cant2=0;
clock_ms=clk_time[0]/ 16; clock_mg=clk_time[0]%16;
clock_fs=clk_time[1]/ 16; clock_fg=clk_time[1]%16;
mie=clock_fs*10+ clock_fg;
clock_ss=clk_time[2]/ 16; clock_sg=clk_time[2]%16;//BCD*to*10
hour=clock_ss*10+ clock_sg; //用16求商和余进行"高4位"和"低4位"分离
}
if(b==1)
{
cant1++;
cant2=0;
clock_ss=hour/ 10; clock_sg=hour%10;
clock_fs=mie/ 10; clock_fg=mie%10;
clock_ms=sei/10; clock_mg=sei%10;
}
if(b==2)
{ cant1=0;
cant2++;
clock_ss=hour/ 10; clock_sg=hour%10;
clock_fs=mie/ 10; clock_fg=mie%10;
clock_ms=sei/10; clock_mg=sei%10;
}
if(cant1<=3)
{
P2=0;
P0=ledmap[clock_ss];
delay(1);
P0=0X00;
P2=1;
P0=ledmap[clock_sg];//时个位
delay(1);P0=0X00;}
if(cant1==5)
cant1=0;
P2=2;
P0=ledmap[10];//显示"-"数组里的 0x40
delay(1);
P0=0X00;
if(cant2<=3)
{
P2=3;
P0=ledmap[clock_fs];//分十位
delay(1);
P0=0X00;
P2=4;
P0=ledmap[clock_fg];//时个位
delay(1);P0=0X00;
}
if(cant2==5)
cant2=0;
P2=5;
P0=ledmap[10];//显示"-"数组里的 0x40
delay(1);
P0=0X00;
P2=6;
P0=ledmap[clock_ms];//秒十位
delay(1);
P0=0X00;
P2=7;
P0=ledmap[clock_mg];
delay(1);P0=0X00;
闪烁变量cant1 cant2分别是什么含义,为什么要讨论小于等于3和等于5两种情况,希望c语言高手们帮帮忙,给予详细解答,我愿多多追加悬赏。急!!!
b是按键按下次数,前面部分程序是:int hour,mie,sei;
uchar clk_time[3]; //秒,分,时寄存器初始值
code uchar ledmap[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x40};
这是用时钟芯片ds1302做的,望高手给予帮助。
//数码管段码
这是别人的一个程序,我理解不了cant1 cant2具体含义以及后面程序对其取值范围的讨论,再次说明一下这是一个时钟显示程序。