找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机实时时钟显示 求帮理解啥情况

查看数: 2750 | 评论数: 7 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-5-4 08:19

正文摘要:

帮理解一下TIME[2]是个十六进制的存储方式,那么TIME[2]/16是什么意思?结果是多少?也是十六进制的数吗,比如TIME[2]是0x59,那TIME[2]/16值是多少呢,另DIG_CODE[]也是存储的十六进制数的断码,那它的下标也是 ...

回复

ID:462827 发表于 2020-5-5 21:15
TIME[2]是DS1302读取时间的小时(不全是这样,这要看你所用的DS1302驱动),TIME[2]/16就是小时的十位数,TIME[2]%16就是小时的个位数,因为在TIME[2]里存的是从时钟芯片里读来的BCD码表示的时间。
ID:90619 发表于 2020-5-5 14:27
csmyldl 发表于 2020-5-4 10:12
TIME[2]/16即把TIME[2]中的数据右移4位得到高4位,如TIME[2]=0x59,通过TIME[2]/16后得到0x05,下标从0开 ...

非常感谢,TIME[2]除以十进制的数16,就是右移4位?这个是依据啥
ID:90619 发表于 2020-5-5 14:24
HC6800-ES-V2.0 发表于 2020-5-4 09:47
没有看到全部程序,只能以我自己做过这类程序的感觉去猜了。
“时钟/日历包含在7个寄存器中,数据在时钟/ ...

非常感谢 你的感觉是对的  ,你说的16应该就是十进制的数,然后把它转成十六进制的数0x10,就是0x59/0x10 这个过程除如何细致的谢谢 ,与或倒是明白
ID:90619 发表于 2020-5-5 14:22
wulin 发表于 2020-5-4 09:52
用一个字节的高8位表示10进制的十位,低8位表示10进制的个位。
比如TIME[2]是0x59,TIME[2]/16=5,TIME[2] ...

非常感谢 ,但是一个字节的高位不明白,比如0x59的高八位不存在吧 ,TIME[2]是十六进制  然后除以 16为十进制,这个过程是如何除的? 那得到的结果是十进制吗?
ID:235200 发表于 2020-5-4 10:12
TIME[2]/16即把TIME[2]中的数据右移4位得到高4位,如TIME[2]=0x59,通过TIME[2]/16后得到0x05,下标从0开始按16进制计数,TIME[2]&0x0F得到TIME[2]中的低4位数据,如TIME[2]=0x59,通过TIME[2]&0x0F运算后得到0x09,数码管显示出来的结果跟预先预置的段显码有关,一般情况下对应显示0至F
ID:213173 发表于 2020-5-4 09:52
用一个字节的高8位表示10进制的十位,低8位表示10进制的个位。
比如TIME[2]是0x59,TIME[2]/16=5,TIME[2]&0X0F=9。
楼主看懂下面算式就明白TIME[2]/16是什么意思
0x09+0x01=0x10
0000 1001 + 0000 0001 = 0001 0000
ID:164602 发表于 2020-5-4 09:47
没有看到全部程序,只能以我自己做过这类程序的感觉去猜了。
“时钟/日历包含在7个寄存器中,数据在时钟/日历寄存器中是二进制编码的十进制格式存储的,也就是常说的BCD码存储的。”
读懂这句话,就可以解决你的问题了。

TIME[2]/16是什么意思?就是取时间数据,将十位的数据变成显示码,显示出的当然是十进制的。如0x59/16=0x59/0x10=5;0x59&0x0f=9

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

Powered by 单片机教程网

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