熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
發(fā)布時(shí)間: 2019-6-17 15:13
正文摘要:char l_tmpdate[3]={0,9,12}; char l_tmpdisplay[8]; void Write_Ds1302( unsigned char address,unsigned char dat ) { RST=0; _nop_(); & ... |
|
l_tmpdate[1]=((l_tmpdate[1]+1)/16)*10 + ((l_tmpdate[1]+1)%16); //分加1 if(l_tmpdate[1]>59) l_tmpdate[1]=0; //判斷 第一行把10進(jìn)制的l_tmpdate[1]+1后,轉(zhuǎn)成16進(jìn)制格式數(shù)據(jù),結(jié)果第二行中又和10進(jìn)制數(shù)據(jù)比較,你確定要這么做?對(duì)于10進(jìn)制的60,在你的第一行處理中將變成30+12,變成了十進(jìn)制的42了,然后去和10進(jìn)制的59比,結(jié)論肯定是錯(cuò)的,與你想要的到59分后再加1變成0的結(jié)果是不一致的。要么改成if(l_tmpdate[1]>41),要么第一行不要做轉(zhuǎn)換處理,改成l_tmpdate[1]++; 另外:l_tmpdate[1]=((l_tmpdate[1]+1)/16)*10 + ((l_tmpdate[1]+1)%16); //分加1 這樣的處理不好,轉(zhuǎn)換成機(jī)器碼的時(shí)候,會(huì)多出許多代碼。 //加處理 l_tmpdate[1]++; if(l_tmpdate[1]>59) l_tmpdate[1]=0; //判斷 減處理: if (l_tmpdate[1]==0) l_tmpdate[1]=59; else l_tmpdate[1]--; 這是不是和你想要的是一樣的結(jié)果? 數(shù)據(jù)在寫入DS1302的時(shí)候,再轉(zhuǎn)換為16進(jìn)制數(shù)據(jù)即可。之前的判斷用十進(jìn)制的處理就行。 |
Powered by 單片機(jī)教程網(wǎng)