找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2680|回復: 7
打印 上一主題 下一主題
收起左側(cè)

單片機實時時鐘顯示 求幫理解啥情況

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:90619 發(fā)表于 2020-5-4 08:19 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
幫理解一下TIME[2]是個十六進制的存儲方式,那么TIME[2]/16是什么意思?結(jié)果是多少?也是十六進制的數(shù)嗎,比如TIME[2]是0x59,那TIME[2]/16值是多少呢,另DIG_CODE[]也是存儲的十六進制數(shù)的斷碼,那它的下標也是十六進制數(shù)嗎

TIME[2]是十六進制數(shù) &0x0F倒是能理解是獲得低四位的數(shù),那么就是DIG_CODE[TIME[2]&0X0F]括號里也是個十六進制的數(shù)了,數(shù)碼管顯示出來的是十進制數(shù)還是十六進制數(shù)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:164602 發(fā)表于 2020-5-4 09:47 | 只看該作者
沒有看到全部程序,只能以我自己做過這類程序的感覺去猜了。
“時鐘/日歷包含在7個寄存器中,數(shù)據(jù)在時鐘/日歷寄存器中是二進制編碼的十進制格式存儲的,也就是常說的BCD碼存儲的。”
讀懂這句話,就可以解決你的問題了。

TIME[2]/16是什么意思?就是取時間數(shù)據(jù),將十位的數(shù)據(jù)變成顯示碼,顯示出的當然是十進制的。如0x59/16=0x59/0x10=5;0x59&0x0f=9
回復

使用道具 舉報

板凳
ID:213173 發(fā)表于 2020-5-4 09:52 | 只看該作者
用一個字節(jié)的高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:235200 發(fā)表于 2020-5-4 10:12 | 只看該作者
TIME[2]/16即把TIME[2]中的數(shù)據(jù)右移4位得到高4位,如TIME[2]=0x59,通過TIME[2]/16后得到0x05,下標從0開始按16進制計數(shù),TIME[2]&0x0F得到TIME[2]中的低4位數(shù)據(jù),如TIME[2]=0x59,通過TIME[2]&0x0F運算后得到0x09,數(shù)碼管顯示出來的結(jié)果跟預先預置的段顯碼有關,一般情況下對應顯示0至F
回復

使用道具 舉報

5#
ID:90619 發(fā)表于 2020-5-5 14:22 | 只看該作者
wulin 發(fā)表于 2020-5-4 09:52
用一個字節(jié)的高8位表示10進制的十位,低8位表示10進制的個位。
比如TIME[2]是0x59,TIME[2]/16=5,TIME[2] ...

非常感謝 ,但是一個字節(jié)的高位不明白,比如0x59的高八位不存在吧 ,TIME[2]是十六進制  然后除以 16為十進制,這個過程是如何除的? 那得到的結(jié)果是十進制嗎?
回復

使用道具 舉報

6#
ID:90619 發(fā)表于 2020-5-5 14:24 | 只看該作者
HC6800-ES-V2.0 發(fā)表于 2020-5-4 09:47
沒有看到全部程序,只能以我自己做過這類程序的感覺去猜了。
“時鐘/日歷包含在7個寄存器中,數(shù)據(jù)在時鐘/ ...

非常感謝 你的感覺是對的  ,你說的16應該就是十進制的數(shù),然后把它轉(zhuǎn)成十六進制的數(shù)0x10,就是0x59/0x10 這個過程除如何細致的謝謝 ,與或倒是明白
回復

使用道具 舉報

7#
ID:90619 發(fā)表于 2020-5-5 14:27 | 只看該作者
csmyldl 發(fā)表于 2020-5-4 10:12
TIME[2]/16即把TIME[2]中的數(shù)據(jù)右移4位得到高4位,如TIME[2]=0x59,通過TIME[2]/16后得到0x05,下標從0開 ...

非常感謝,TIME[2]除以十進制的數(shù)16,就是右移4位?這個是依據(jù)啥
回復

使用道具 舉報

8#
ID:462827 發(fā)表于 2020-5-5 21:15 | 只看該作者
TIME[2]是DS1302讀取時間的小時(不全是這樣,這要看你所用的DS1302驅(qū)動),TIME[2]/16就是小時的十位數(shù),TIME[2]%16就是小時的個位數(shù),因為在TIME[2]里存的是從時鐘芯片里讀來的BCD碼表示的時間。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表