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

          新聞中心

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

          PIC16F877A例程---DS1302程序

          作者: 時(shí)間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
          #include //調(diào)用頭文件

          //#include

          本文引用地址:http://www.ex-cimer.com/article/201611/321021.htm

          __CONFIG(0x3F32); //芯片配置字

          //__CONFIG(HS&UNPROTECT&PWRTEN&BORDIS&WDTDIS);//芯片配置字

          //__CONFIG(0x3FFD&0x3FFF&0x3FF7&0x3FBF&0x3FFB);//芯片配置字

          #define uchar unsigned char

          #define uint unsigned int

          //聯(lián)接DS1302的端口定義

          #define ds1302_rst RC2 //定義1302的RST接在PC4

          #define ds1302_io RC1 //定義1302的IO接在PC3

          #define ds1302_sclk RC0 //定義1302的時(shí)鐘接在PC2

          #define set_ds1302_rst_ddr() TRISC2=0 //復(fù)位端置為輸出

          #define set_ds1302_rst() ds1302_rst=1 //復(fù)位端置1

          #define clr_ds1302_rst() ds1302_rst=0 //復(fù)位端清0

          #define set_ds1302_io_ddr() TRISC1=0 //數(shù)據(jù)端置為輸出

          #define set_ds1302_io() ds1302_io=1 //數(shù)據(jù)端置1

          #define clr_ds1302_io() ds1302_io=0 //數(shù)據(jù)端清0

          #define clr_ds1302_io_ddr() TRISC1=1 //數(shù)據(jù)端置為輸入

          #define in_ds1302_io() PORTC&0X02 //數(shù)據(jù)端輸入數(shù)據(jù)

          #define set_ds1302_sclk_ddr() TRISC0=0 //時(shí)鐘端置為輸出

          #define set_ds1302_sclk() ds1302_sclk=1 //時(shí)鐘端置1

          #define clr_ds1302_sclk() ds1302_sclk=0 //時(shí)鐘端清0

          #define ds1302_sec_add 0x80 //秒數(shù)據(jù)地址

          #define ds1302_min_add 0x82 //分?jǐn)?shù)據(jù)地址

          #define ds1302_hr_add 0x84 //時(shí)數(shù)據(jù)地址

          #define ds1302_date_add 0x86 //日數(shù)據(jù)地址

          #define ds1302_month_add 0x88 //月數(shù)據(jù)地址

          #define ds1302_day_add 0x8a //星期數(shù)據(jù)地址

          #define ds1302_year_add 0x8c //年數(shù)據(jù)地址

          #define ds1302_control_add 0x8e //控制數(shù)據(jù)地址

          #define ds1302_charger_add 0x90

          #define ds1302_clkburst_add 0xbe

          uchar timer[8]; //時(shí)鐘數(shù)據(jù)

          //共陰數(shù)碼管0-F顯示代碼

          uchar Table[]={0xc0,0xf9,0xa4,0xb0,0x99,

          0x92,0x82,0xf8,0x80,0x90,0xff};

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

          uchar s[4];

          //定義掃描計(jì)數(shù)器

          uchar sel=0;

          uchar temp_pa=0xFF;

          //寫入1302數(shù)據(jù)函數(shù):

          //入口:add為寫入地址碼,data為寫入數(shù)據(jù)

          //返回:無

          void ds1302_write(uchar add,uchar data)

          {

          uchar i=0;

          set_ds1302_io_ddr(); //配置IO為輸出

          NOP();NOP();

          clr_ds1302_rst(); //清復(fù)位,停止所有操作

          NOP();NOP();

          clr_ds1302_sclk(); //清時(shí)鐘,準(zhǔn)備操作

          NOP();NOP();

          set_ds1302_rst(); //置復(fù)位,開始操作

          NOP();NOP();

          for(i=8;i>0;i--) //此循環(huán)寫入控制碼

          {

          if(add&0x01)

          set_ds1302_io(); //當(dāng)前位為1,置數(shù)據(jù)位

          else

          clr_ds1302_io(); //當(dāng)前位為0,清數(shù)據(jù)位

          NOP();NOP();

          set_ds1302_sclk(); //產(chǎn)生時(shí)鐘脈沖,寫入數(shù)據(jù)

          NOP();NOP();

          clr_ds1302_sclk();

          NOP();NOP();

          add>>=1; //移位,準(zhǔn)備寫入下1位

          }

          for(i=8;i>0;i--) //此循環(huán)寫入數(shù)據(jù)碼

          {

          if(data&0x01)

          set_ds1302_io();

          else

          clr_ds1302_io();

          NOP();NOP();

          set_ds1302_sclk();

          NOP();NOP();

          clr_ds1302_sclk();

          NOP();NOP();

          data>>=1;

          }

          clr_ds1302_rst();

          NOP();NOP();

          clr_ds1302_io_ddr(); //清輸出狀態(tài)

          NOP();NOP();

          }

          //從1302中讀出數(shù)據(jù):

          //入口:add為讀數(shù)據(jù)所在地址

          //返回:讀出的數(shù)據(jù)data

          uchar ds1302_read(uchar add)

          {

          uchar data=0;

          uchar i=0;

          add+=1; //讀標(biāo)志

          set_ds1302_io_ddr(); //端口輸出

          NOP();NOP();

          clr_ds1302_rst(); //清復(fù)位

          NOP();NOP();

          clr_ds1302_sclk(); //清時(shí)鐘

          NOP();NOP();

          set_ds1302_rst(); //置復(fù)位

          NOP();NOP();

          for(i=8;i>0;i--) //此循環(huán)寫入地址碼

          {

          if(add&0x01)

          {set_ds1302_io();}

          else

          {clr_ds1302_io();}

          NOP();NOP();

          set_ds1302_sclk();

          NOP();NOP();

          clr_ds1302_sclk();

          NOP();NOP();

          add>>=1;

          }

          clr_ds1302_io_ddr(); //端口輸入

          NOP();NOP();

          for(i=8;i>0;i--) //此循環(huán)讀出1302的數(shù)據(jù)

          {

          data>>=1;

          if(in_ds1302_io())

          {data|=0x80;}

          NOP();NOP();

          set_ds1302_sclk();

          NOP();NOP();

          clr_ds1302_sclk();

          NOP();NOP();

          }

          clr_ds1302_rst();

          NOP();NOP();

          return(data);

          }


          上一頁 1 2 下一頁

          關(guān)鍵詞: PIC16F877ADS130

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