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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > PIC16F877A例程---DS1302程序

          PIC16F877A例程---DS1302程序

          作者: 時間:2016-11-24 來源:網(wǎng)絡(luò) 收藏

          //檢查1302狀態(tài)

          uchar check_ds1302(void)

          {

          ds1302_write(ds1302_control_add,0x80);

          if(ds1302_read(ds1302_control_add)==0x80)

          return 1;

          return 0;

          }

          //向1302中寫入時鐘數(shù)據(jù)

          void ds1302_write_time(void)

          {

          ds1302_write(ds1302_control_add,0x00); //關(guān)閉寫保護

          ds1302_write(ds1302_sec_add,0x80); //暫停

          ds1302_write(ds1302_charger_add,0xa9); //涓流充電

          ds1302_write(ds1302_year_add,timer[1]); //年

          ds1302_write(ds1302_month_add,timer[2]); //月

          ds1302_write(ds1302_date_add,timer[3]); //日

          ds1302_write(ds1302_day_add,timer[7]); //周

          ds1302_write(ds1302_hr_add,timer[4]); //時

          ds1302_write(ds1302_min_add,timer[5]); //分

          ds1302_write(ds1302_sec_add,timer[6]); //秒

          ds1302_write(ds1302_control_add,0x80); //打開寫保護

          }

          //從1302中讀出當(dāng)前時鐘

          void ds1302_read_time(void)

          {

          timer[1]=ds1302_read(ds1302_year_add); //年

          timer[2]=ds1302_read(ds1302_month_add); //月

          timer[3]=ds1302_read(ds1302_date_add); //日

          timer[7]=ds1302_read(ds1302_day_add); //周

          timer[4]=ds1302_read(ds1302_hr_add); //時

          timer[5]=ds1302_read(ds1302_min_add); //分

          timer[6]=ds1302_read(ds1302_sec_add); //秒

          }

          //延時函數(shù)1

          void delay_us(uchar i)

          {

          for(;i;i--);

          }

          //延時函數(shù)2

          void delay(uint i)

          {

          uchar j;

          for(;i;i--)

          for(j=220;j;j--);

          }

          void timer0_init(void)

          {

          OPTION=0x07; //TMR0----256分頻

          INTCON=0XA0; //開總中斷及TMR0計數(shù)溢出斷

          TMR0=0xE8; //定時器初值

          }

          void interrupt TMR0INT()

          {

          T0IF=0;

          TMR0=0xE8;

          PORTD=0xff; //先關(guān)顯示

          PORTA=0XFF;

          PORTD=s[sel];

          switch(sel)

          {

          case 0x00: PORTA=0XFD;break;

          case 0x01: PORTA=0XFB;break;

          case 0x02: PORTA=0XF7;break;

          case 0x03: PORTA=0XEF;break;

          }

          if(++sel>3)sel=0;

          }

          //顯示數(shù)據(jù)轉(zhuǎn)換函數(shù)

          void Process(void)//(uint i)

          {

          s[3]=Table[(timer[5]&0xF0)>>4];

          s[2]=Table[(timer[5]&0x0F)]&0x7F; //初始化顯示數(shù)據(jù),并將時分之間加小數(shù)點

          s[1]=Table[(timer[6]&0xF0)>>4];

          s[0]=Table[(timer[6]&0x0F)];

          }

          //主函數(shù)

          void main(void)

          {

          uint n,m=0;

          TRISA=0x00; //設(shè)置按鍵A口為帶上拉輸入;

          PORTA=0xFF;

          TRISD=0X00;

          PORTD=0XFF;

          TRISC=0x00; //定義B口為輸出

          PORTC=0xff;

          timer[1]=0x09; //年

          timer[2]=0x08; //月

          timer[3]=0x20; //日

          timer[4]=0x12; //時

          timer[5]=0x12; //分

          timer[6]=0x00; //秒

          timer[7]=0x04; //周

          ds1302_write_time(); //寫入初始時鐘

          timer0_init(); //設(shè)定定時器0

          while(1)

          {

          ds1302_read_time(); //讀出當(dāng)前時鐘

          Process(); //顯示數(shù)據(jù)轉(zhuǎn)換

          delay(100); //每100MS讀一次

          }

          }


          上一頁 1 2 下一頁

          關(guān)鍵詞: PIC16F877ADS130

          評論


          技術(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); })();