标题: 这个时间数据转成BCD码的函数我没搞懂 [打印本页]

作者: bubaijun    时间: 2021-6-1 14:10
标题: 这个时间数据转成BCD码的函数我没搞懂
void Set(uchar sel,uchar sel_1)
{
  uchar address,time;
  uchar max,min;
if(sel==1)  {address=0x84; max=23;min=0;}    //小时
if(sel==2)  {address=0x82; max=59;min=0;}    //分钟
if(sel==3)  {address=0x88; max=12;min=1;}    //月
if(sel==4)  {address=0x86; max=31;min=1;}    //日
if(sel==5)  {address=0x8a; max=7;min=1;}    //星期

  time=R1302(address+1)/16*10+R1302(address+1)%16;           //变成BCD码
  if (sel_1==1) time++;  else time--;
  if(time>max) time=min;   
  if(time<min) time=max;

  W1302(0x8e,0x00);
  W1302(address,time/10*16+time%10);                 
  W1302(0x8e,0x80);  
}


就是变成BCD码那一行的R1302,我用keil4跑的时候总显示错误


作者: daemondong    时间: 2021-6-1 17:12
time=R1302(address+1)/16*10+R1302(address+1)%16;  应该是BCD码变成16进制。
作者: 小牢头    时间: 2021-6-1 17:13
试下先读到一个变量,之后再处理
作者: glinfei    时间: 2021-6-1 20:01
  time=R1302(address+1)/16*10+R1302(address+1)%16;   应该是BCD码转十进制。
不知道R302返回的是什么类型的数?应该也是uchar的吧?如果是稍微改一下,执行会快点:
address=R1302(address+1);
time=address>>4*10+address&0x0F;
作者: she_chen    时间: 2021-6-1 23:01
看了看,这个函数是BCD码转十进制




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1