unsigned char i_dec,j_dec,k_dec,i,j,k;
//先将DS1302的BCD码换为十进制数.
//buf_clocK[2]-------BCD时
//buf_clock[1]-------BCD分
//buf_clock[0]-------BCD秒
i_dec=((buf_clock[2]&0xf0)>>4)*10 + buf_clock[2]&0x0f;
j_dec=((buf_clock[1]&0xf0)>>4)*10 + buf_clock[1]&0x0f;
k_dec=((buf_clock[0]&0xf0)>>4)*10 + buf_clock[0]&0x0f;
//再将十进制化为十六进制
i=(i_dec/16)<<4+i_dec%16;
j=(j_dec/16)<<4+j_dec%16;
k=(k_dec/16)<<4+k_dec%16;
if((ram_canshu[6]!=0) || (ram_canshu[7]!=0) ) //如定时有效,即不 是"00:00"
{
if((ram_canshu[6]==i ) && (ram_canshu[7]==j ) //时间到则标志位置"1"
flag_ds_ss=0x01;
}
ram_canshu[6]---设置的时间"时",内存中初始值为0,按一下增键则
if(ram_canshu[6]<23) ram_canshu[6]++;
ram_canshu[7]---设置的时间"分",内存中初始值为0,按一下增键则
if(ram_canshu[7]<59) ram_canshu[7]++;
这其中的数制转换有问题,请赐教哪里错了. |