熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2020-5-4 08:19
正文摘要:幫理解一下TIME[2]是個(gè)十六進(jìn)制的存儲(chǔ)方式,那么TIME[2]/16是什么意思?結(jié)果是多少?也是十六進(jìn)制的數(shù)嗎,比如TIME[2]是0x59,那TIME[2]/16值是多少呢,另DIG_CODE[]也是存儲(chǔ)的十六進(jìn)制數(shù)的斷碼,那它的下標(biāo)也是 ... |
TIME[2]是DS1302讀取時(shí)間的小時(shí)(不全是這樣,這要看你所用的DS1302驅(qū)動(dòng)),TIME[2]/16就是小時(shí)的十位數(shù),TIME[2]%16就是小時(shí)的個(gè)位數(shù),因?yàn)樵赥IME[2]里存的是從時(shí)鐘芯片里讀來的BCD碼表示的時(shí)間。 |
csmyldl 發(fā)表于 2020-5-4 10:12 非常感謝 ![]() ![]() |
HC6800-ES-V2.0 發(fā)表于 2020-5-4 09:47 非常感謝 你的感覺是對(duì)的 ![]() ![]() |
wulin 發(fā)表于 2020-5-4 09:52 非常感謝 ,但是一個(gè)字節(jié)的高位不明白,比如0x59的高八位不存在吧 ,TIME[2]是十六進(jìn)制 然后除以 16為十進(jìn)制,這個(gè)過程是如何除的? 那得到的結(jié)果是十進(jìn)制嗎? |
TIME[2]/16即把TIME[2]中的數(shù)據(jù)右移4位得到高4位,如TIME[2]=0x59,通過TIME[2]/16后得到0x05,下標(biāo)從0開始按16進(jìn)制計(jì)數(shù),TIME[2]&0x0F得到TIME[2]中的低4位數(shù)據(jù),如TIME[2]=0x59,通過TIME[2]&0x0F運(yùn)算后得到0x09,數(shù)碼管顯示出來的結(jié)果跟預(yù)先預(yù)置的段顯碼有關(guān),一般情況下對(duì)應(yīng)顯示0至F |
用一個(gè)字節(jié)的高8位表示10進(jìn)制的十位,低8位表示10進(jìn)制的個(gè)位。 比如TIME[2]是0x59,TIME[2]/16=5,TIME[2]&0X0F=9。 樓主看懂下面算式就明白TIME[2]/16是什么意思 0x09+0x01=0x10 0000 1001 + 0000 0001 = 0001 0000 |
沒有看到全部程序,只能以我自己做過這類程序的感覺去猜了。 “時(shí)鐘/日歷包含在7個(gè)寄存器中,數(shù)據(jù)在時(shí)鐘/日歷寄存器中是二進(jìn)制編碼的十進(jìn)制格式存儲(chǔ)的,也就是常說的BCD碼存儲(chǔ)的! 讀懂這句話,就可以解決你的問題了。 TIME[2]/16是什么意思?就是取時(shí)間數(shù)據(jù),將十位的數(shù)據(jù)變成顯示碼,顯示出的當(dāng)然是十進(jìn)制的。如0x59/16=0x59/0x10=5;0x59&0x0f=9 |
Powered by 單片機(jī)教程網(wǎng)