標(biāo)題: 單片機(jī)DS1302的程序中加一位,程序是什么意思,看不懂呀,求大神賜教 [打印本頁]

作者: 123456789hyy    時(shí)間: 2021-4-14 16:22
標(biāo)題: 單片機(jī)DS1302的程序中加一位,程序是什么意思,看不懂呀,求大神賜教
void set_ds1302time(uchar num,uchar *shi,uchar dat)//調(diào)時(shí)
{
          if(num == 1)
    {
            *shi+=0x01;//*shi是什么意思
                if((*shi & 0x0f) >= 0x0a
                        *shi = (*shi & 0xf0) + 0x10;
                if(*shi >= dat)
                        *shi = 0;
    }
    else
    {
                if(*shi == 0x00)
                        *shi = dat;
                if((*shi & 0x0f) == 0x00)
                        *shi = (*shi | 0x0a) - 0x10;
                *shi -=0x01 ;
    }  
}


作者: ANT1987    時(shí)間: 2021-4-14 16:41
*shi+=0x01;
*shi指向的內(nèi)容加0x01后保存到*shi中
作者: xunzhaod    時(shí)間: 2021-4-14 16:55
void set_ds1302time(uchar num,uchar *shi,uchar dat)//調(diào)時(shí)
{
          if(num == 1) 參數(shù)是1的情況下
    {
            *shi+=0x01;//*shi是什么意思  沒進(jìn)來一次*shi累加一次,就是時(shí)間加一小時(shí)
                if((*shi & 0x0f) >= 0x0a  //大于等于10小時(shí)的話
                        *shi = (*shi & 0xf0) + 0x10; 16小時(shí)起算
                if(*shi >= dat)
                        *shi = 0;
    }
    else
    {
                if(*shi == 0x00)
                        *shi = dat;
                if((*shi & 0x0f) == 0x00)
                        *shi = (*shi | 0x0a) - 0x10;
                *shi -=0x01 ;
    }  
}
參數(shù)是指針,char*shi,然后*shi+=0x01中的*shi是取指針的值。你可以看看c語言指針
作者: datouyuan    時(shí)間: 2021-4-14 17:07
函數(shù)體的*shi和shi[0]等效。可以把函數(shù)體中所有*shi替換為shi[0]。
*shi+=0x01;//*shi是什么意思
shi[0]++;
上句和下句等效。

作者: 123456789hyy    時(shí)間: 2021-4-14 21:07
xunzhaod 發(fā)表于 2021-4-14 16:55
void set_ds1302time(uchar num,uchar *shi,uchar dat)//調(diào)時(shí)
{
          if(num == 1) 參數(shù)是1的情況下 ...

可以解析一下后面的程序嗎
作者: man1234567    時(shí)間: 2021-4-15 11:22
看圖應(yīng)該是10進(jìn)制(常人用的)和16進(jìn)制(1302內(nèi)部用的)轉(zhuǎn)換的炫技寫法,建議在本壇找個(gè)簡(jiǎn)單的一樣用。不過想燒腦或徹底搞明白&|等運(yùn)算技術(shù),這個(gè)例子不錯(cuò)的。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1