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

          新聞中心

          ds1302的avr C程序

          作者: 時間:2016-11-10 來源:網(wǎng)絡(luò) 收藏
          下面是DS1302的AVR單片機C程序,這個程序結(jié)構(gòu)很不錯。但是站長沒有調(diào)試這個AVR單片機的程序。
          #defineds1302_rst PC0
          #defineds1302_io PC1
          #defineds1302_sclk PC2
          #define set_ds1302_rst_ddr() DDRC|=1<#define set_ds1302_rst() PORTC|=1<#define clr_ds1302_rst() PORTC&=~(1<#define set_ds1302_io_ddr() DDRC|=1<#define set_ds1302_io() PORTC|=1<#define clr_ds1302_io() PORTC&=~(1<#define clr_ds1302_io_ddr() DDRC&=~(1<#define in_ds1302_io() PINC&(1<#define set_ds1302_sclk_ddr() DDRC|=1<#define set_ds1302_sclk() PORTC|=1<#define clr_ds1302_sclk() PORTC&=~(1<
          #defineds1302_sec_reg 0x80
          #defineds1302_min_reg 0x82
          #defineds1302_hr_reg 0x84
          #defineds1302_date_reg 0x86
          #defineds1302_month_reg 0x88
          #defineds1302_day_reg 0x8a
          #defineds1302_year_reg 0x8c
          #defineds1302_control_reg 0x8e
          #defineds1302_charger_reg 0x90
          #defineds1302_clkburst_reg 0xbe
          voidds1302_write(uchar reg,uchar data)
          {
          uchar i=0;
          set_ds1302_io_ddr();
          asm("nop");
          asm("nop");
          clr_ds1302_rst();
          asm("nop");
          asm("nop");
          clr_ds1302_sclk();
          asm("nop");
          asm("nop");
          set_ds1302_rst();
          asm("nop");
          asm("nop");
          for(i=8;i>0;i--)
          {
          if(reg&0x01) set_ds1302_io();
          else clr_ds1302_io();
          asm("nop");
          asm("nop");
          set_ds1302_sclk();
          asm("nop");
          asm("nop");
          clr_ds1302_sclk();
          asm("nop");
          asm("nop");
          reg>>=1;
          }
          for(i=8;i>0;i--)
          {
          if(data&0x01) set_ds1302_io();
          else clr_ds1302_io();
          asm("nop");
          asm("nop");
          set_ds1302_sclk();
          asm("nop");
          asm("nop");
          clr_ds1302_sclk();
          asm("nop");
          asm("nop");
          data>>=1;
          }
          clr_ds1302_rst();
          asm("nop");
          asm("nop");
          clr_ds1302_io_ddr();
          asm("nop");
          asm("nop");
          }
          uchards1302_read(uchar reg)
          {
          uchar data=0;
          uchar i=0;
          reg+=1;//讀標志
          set_ds1302_io_ddr();
          asm("nop");
          asm("nop");
          clr_ds1302_rst();
          asm("nop");
          asm("nop");
          clr_ds1302_sclk();
          asm("nop");
          asm("nop");
          set_ds1302_rst();
          asm("nop");
          asm("nop");
          for(i=8;i>0;i--)
          {

          if(reg&0x01) set_ds1302_io();
          else clr_ds1302_io();
          asm("nop");
          asm("nop");
          set_ds1302_sclk();
          asm("nop");
          asm("nop");
          clr_ds1302_sclk();
          asm("nop");
          asm("nop");
          reg>>=1;
          }
          clr_ds1302_io_ddr();
          asm("nop");
          asm("nop");
          for(i=8;i>0;i--)
          {
          data>>=1;
          if(in_ds1302_io()) data|=0x80;
          asm("nop");
          asm("nop");
          set_ds1302_sclk();
          asm("nop");
          asm("nop");
          clr_ds1302_sclk();
          asm("nop");
          asm("nop");
          }
          clr_ds1302_rst();
          asm("nop");
          asm("nop");
          return(data);
          }
          uchar check_ds1302(void)
          {
          ds1302_write(ds1302_control_reg,0x80);
          if(ds1302_read(ds1302_control_reg)==0x80) return 1;
          return 0;
          }
          voidds1302_read_time(void)
          {
          year=ds1302_read(ds1302_year_reg); //年
          month=ds1302_read(ds1302_month_reg);//月
          day=ds1302_read(ds1302_date_reg); //日
          week=ds1302_read(ds1302_day_reg); //周
          hour=ds1302_read(ds1302_hr_reg); //時
          minute=ds1302_read(ds1302_min_reg); //分
          second=ds1302_read(ds1302_sec_reg); //秒
          }
          voidds1302_write_time(void)
          {
          ds1302_write(ds1302_control_reg,0x00); //關(guān)閉寫保護
          ds1302_write(ds1302_sec_reg,0x80); //暫停
          ds1302_write(ds1302_charger_reg,0xa9); //涓流充電
          ds1302_write(ds1302_year_reg,year); //年
          ds1302_write(ds1302_month_reg,month); //月
          ds1302_write(ds1302_date_reg,day); //日
          ds1302_write(ds1302_day_reg,week); //周
          ds1302_write(ds1302_hr_reg,hour); //時
          ds1302_write(ds1302_min_reg,minute); //分
          ds1302_write(ds1302_sec_reg,second); //秒
          ds1302_write(ds1302_control_reg,0x80); //打開寫保護
          }


          關(guān)鍵詞: ds1302avrC程

          評論


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