倒计时器程序与正计时器没有本质区别,关键在于处理负进位问题,无符号字符型数据unsigned char无法表示-1的数,对于这个问题有一个技巧,如储存变量的寄存器=0x00时再次减1,此时寄存器的数是0xff,利用这个特性用于倒计时很好使。范例:
void inc_sec() //秒计算
{
sec--;
if(sec==0xff)
{
sec = 59; //秒自+1
inc_min(); //分计算
}
dis_buf[6] = sec / 10; // 秒十位
dis_buf[7] = sec % 10; // 秒个位
}
void inc_min() //分计算
{
min--;
if(min==0xff)
{
min = 59;
}
dis_buf[3] = min / 10; // 分十位
dis_buf[4] = min % 10; // 分个位
}
倒计时器程序与正计时器没有本质区别,关键在于处理负进位问题,无符号字符型数据unsigned char无法表示-1的数,对于这个问题有一个技巧,如储存变量的寄存器=0x00时再次减1,此时寄存器的数是0xff,利用这个特性用于倒计时很好使。范例:
void inc_sec() //秒计算
{
sec--;
if(sec==0xff)
{
sec = 59; //秒自+1
inc_min(); //分计算
}
dis_buf[6] = sec / 10; // 秒十位
dis_buf[7] = sec % 10; // 秒个位
}
void inc_min() //分计算
{
min--;
if(min==0xff)
{
min = 59;
}
dis_buf[3] = min / 10; // 分十位
dis_buf[4] = min % 10; // 分个位
}
1
举报