找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1898|回复: 4
打印 上一主题 下一主题
收起左侧

这个时间数据转成BCD码的函数我没搞懂

[复制链接]
跳转到指定楼层
楼主
ID:925373 发表于 2021-6-1 14:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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跑的时候总显示错误

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:827243 发表于 2021-6-1 17:12 | 只看该作者
time=R1302(address+1)/16*10+R1302(address+1)%16;  应该是BCD码变成16进制。
回复

使用道具 举报

板凳
ID:861234 发表于 2021-6-1 17:13 | 只看该作者
试下先读到一个变量,之后再处理
回复

使用道具 举报

地板
ID:844772 发表于 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;
回复

使用道具 举报

5#
ID:931059 发表于 2021-6-1 23:01 | 只看该作者
看了看,这个函数是BCD码转十进制
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表