<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MSP430單片機(jī)的PCF8563時(shí)鐘芯片C語言驅(qū)動(dòng)程序

          MSP430單片機(jī)的PCF8563時(shí)鐘芯片C語言驅(qū)動(dòng)程序

          作者: 時(shí)間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
          #define NOP _NOP();_NOP()
          #define NowSec cNowTime[0]
          #define NowMin cNowTime[1]
          #define NowHour cNowTime[2]
          #define NowDate cNowTime[3]
          #define NowMonth cNowTime[4]
          #define NowYear cNowTime[5]
          #define SetSec cSetTime[0]
          #define SetMin cSetTime[1]
          #define SetHour cSetTime[2]
          #define SetDate cSetTime[3]
          #define SetMonth cSetTime[4]
          #define SetYear cSetTime[5]
          uchar Temp_Count;
          uchar cSetTime[6];
          uchar cNowTime[6];
          void Timer_Out_Byte(uchar OutByte);
          uchar Timer_In_Byte(void);
          void ReadRealtime(void)
          {
          NOP;
          HT1381_OUTPORT &=~Timer_SCL; //Timer_SCL=0;
          NOP;
          HT1381_OUTPORT |= Timer_Rest; //Timer_Rest=1;
          Timer_Out_Byte(0xBF); //Read, Burst Mode
          for(TimeCount=0;TimeCount<6;TimeCount++)
          {
          if (TimeCount==5)
          Timer_In_Byte(); //dummy read.
          cNowTime[TimeCount]=Timer_In_Byte();
          //change BCD to uchar
          cNowTime[TimeCount]=(cNowTime[TimeCount]/0x10)*10+(cNowTime[TimeCount]%0x10);
          }
          NOP;
          HT1381_OUTPORT &=~Timer_Rest; //Timer_Rest=0;
          }
          void WriteRealtime(void)
          {
          NOP;
          HT1381_OUTPORT &=~Timer_Rest; //Timer_Rest=0; //for sure to close rest.
          NOP;
          HT1381_OUTPORT &=~Timer_SCL; //Timer_SCL=0;
          NOP;
          HT1381_OUTPORT |= Timer_Rest; //Timer_Rest=1;
          Timer_Out_Byte(0x8E); //Write,Single Mode
          Timer_Out_Byte(0x00); //Write, Protect Byte=0, Disable protect
          NOP;
          HT1381_OUTPORT &=~Timer_Rest; //Timer_Rest=0;
          NOP;
          HT1381_OUTPORT |= Timer_Rest; //Timer_Rest=1;
          Timer_Out_Byte(0x80); //Write,Single Mode
          Timer_Out_Byte(0x00); //Write, OSC enalbe, old second distroied
          NOP;
          HT1381_OUTPORT &=~Timer_Rest; //Timer_Rest=0;
          for(TimeCount=0;TimeCount<6;TimeCount++)
          {
          //change uchar to BCD
          cSetTime[TimeCount]=(cSetTime[TimeCount]/10)*0x10+(cSetTime[TimeCount]);
          }
          NOP;
          HT1381_OUTPORT |= Timer_Rest; //Timer_Rest=1;
          Timer_Out_Byte(0XBE); //Write,Burst Mode
          Timer_Out_Byte(SetSec & 0x7F); //OSC enable for sure.
          Timer_Out_Byte(SetMin);
          Timer_Out_Byte(SetHour & 0x7F); //24 Hour Mode
          Timer_Out_Byte(SetDate);
          Timer_Out_Byte(SetMonth);
          Timer_Out_Byte(0x00);
          Timer_Out_Byte(SetYear);
          Timer_Out_Byte(0x00);
          NOP;
          HT1381_OUTPORT &=~Timer_Rest; //Timer_Rest=0;
          NOP;
          HT1381_OUTPORT |= Timer_Rest; //Timer_Rest=1;
          Timer_Out_Byte(0x8E); //Write,Single Mode
          Timer_Out_Byte(0x80); //Write, Protect Byte=0, enable protect
          NOP;
          HT1381_OUTPORT &=~Timer_Rest; //Timer_Rest=0;
          }
          void Timer_Out_Byte(uchar OutByte)
          {
          uchar Timer_Count;
          for (Timer_Count=0;Timer_Count<8;Timer_Count++)
          {
          HT1381_DIRPORT |= Timer_SDA; //output
          if ((OutByte & 0x01) == 0)
          HT1381_OUTPORT &=~Timer_SDA;
          else
          HT1381_OUTPORT |= Timer_SDA;
          NOP;
          HT1381_OUTPORT |= Timer_SCL;
          NOP;
          HT1381_OUTPORT &=~Timer_SCL; //Timer_SCL=0;
          OutByte = OutByte >> 1;
          }
          }
          uchar Timer_In_Byte(void)
          {
          uchar InByte,Timer_Count;
          InByte=0x00;
          HT1381_DIRPORT &=~Timer_SDA; //Timer_SDA=1;//input
          for (Timer_Count=0;Timer_Count<8;Timer_Count++)
          {
          InByte >>= 1;
          NOP;
          HT1381_OUTPORT |= Timer_SCL;
          if(HT1381_INPORT&Timer_SDA)
          InByte |= 0x80;
          else
          InByte &= 0x7F;
          NOP;
          HT1381_OUTPORT &=~Timer_SCL; //Timer_SCL=0;
          }
          return(InByte);
          }


          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();