音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁 | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

C51讀寫DS12887程序[原創(chuàng)]

作者:hylaliu 欄目:單片機(jī)
C51讀寫DS12887程序[原創(chuàng)]
已用于開發(fā)的無線電子衡器上
包括RTC.h及RTC.c

/////////////////////////////////////////
// 接口 RTC.h
////////////////////////////////////////

#include <reg52.h>
//*******DS12887 *******

#define YEAR_IN_RTC            0
#define MONTH_IN_RTC           1
#define DAY_IN_RTC             2
#define HOUR_IN_RTC            3
#define MINUTE_IN_RTC          4
#define SECOND_IN_RTC          5
#define SECOND_ALARM_IN_RTC 6
#define MINUTE_ALARM_IN_RTC 7
#define HOUR_ALARM_IN_RTC    8
#define RTC_SECONDS           XBYTE[0xfe00]
#define RTC_SECONDS_ALARM    XBYTE[0xfe01]
#define RTC_MINUTES           XBYTE[0xfe02]
#define RTC_MINUTES_ALARM   XBYTE[0xfe03]
#define RTC_HOURS             XBYTE[0xfe04]
#define RTC_HOURS_ALARM     XBYTE[0xfe05]
#define RTC_DAYS              XBYTE[0xfe07]
#define RTC_MONTHS            XBYTE[0xfe08]                 
#define RTC_YEARS             XBYTE[0xfe09]
#define DSA                   XBYTE[0xfe0a]              //DS12887 register A
#define DSB                   XBYTE[0xfe0b]
#define DSC                   XBYTE[0xfe0c]
#define DSD                   XBYTE[0xfe0d]

sbit RTC_CS=P2^0;

bit Init_RTC(void);
bit Second_Interrupt(void);
unsigned CHAR Read_RTC(unsigned CHAR);
void Write_RTC(unsigned CHAR,unsigned CHAR);


/////////////////////////////////////////
// 實(shí)現(xiàn)部分 RTC.C
////////////////////////////////////////
#include <reg52.h>
#include<absacc.h>
#include<RTC.h>

unsigned CHAR Read_RTC(unsigned CHAR option)
{
  
  SWITCH(option)
  {
    case YEAR_IN_RTC:return(RTC_YEARS);break;
    case MONTH_IN_RTC:return(RTC_MONTHS);break;
    case DAY_IN_RTC:return(RTC_DAYS);break;
    case HOUR_IN_RTC:return(RTC_HOURS);break;
    case MINUTE_IN_RTC:return(RTC_MINUTES);break;
    case SECOND_IN_RTC:return(RTC_SECONDS);break;
  }
}

void Write_RTC(unsigned CHAR option,unsigned CHAR j)
{
  SWITCH(option)
  {
    case YEAR_IN_RTC:RTC_YEARS=j;break;
    case MONTH_IN_RTC:RTC_MONTHS=j;break;
    case DAY_IN_RTC:RTC_DAYS=j;break;
    case HOUR_IN_RTC:RTC_HOURS=j;break;
    case MINUTE_IN_RTC:RTC_MINUTES=j;break;
    case SECOND_IN_RTC:RTC_SECONDS=j;break;
    case SECOND_ALARM_IN_RTC:RTC_SECONDS_ALARM=j;break;
    case MINUTE_ALARM_IN_RTC:RTC_MINUTES_ALARM=j;break;
    case HOUR_ALARM_IN_RTC:RTC_HOURS_ALARM=j;break;

  }
}


bit Second_Interrupt(void)
{
    if( (DSC&0x20)==0x20 )return(1);
    return(0);
}


/*  initialize DS12887  */
bit Init_RTC(void)
{
    DSA=0x20;
    DSB=0x72;                                  //SET=0,*IE=disenable,SQW=disenable ,BCD,NO DSE
    DSC=0x00;
    ACC=DSD;

    //every second interrupt
    Write_RTC(HOUR_ALARM_IN_RTC,0xff);
    Write_RTC(MINUTE_ALARM_IN_RTC,0xff);
    Write_RTC(SECOND_ALARM_IN_RTC,0xff);
    //if(ACC&0x80)return(0); //when low bat return 0
    //return(1);
     /* DSB=0x82;                                   //set SET=1
  RTC_HOURS=0x23;
  RTC_MINUTES=0x12;
  RTC_SECONDS=0x30;
  DSB=0x02;
   */
  return(1);    
}



2樓: >>參與討論
javie
寫的還蠻有秩序
贊一個(gè)先

3樓: >>參與討論
hunter01
這個(gè)破爛還在用?
 
4樓: >>參與討論
hylaliu
只作為時(shí)鐘還是可以的
 
5樓: >>參與討論
hylaliu
穿上了褲子,謝謝斑竹
 
6樓: >>參與討論
javie
不過說實(shí)在的
DS12887已經(jīng)沒人用了

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請(qǐng)推薦一塊CPU,要求片內(nèi)RAM 1K,flash 20K,2 channel D/a
汽車電子兄幫助。鐵電FM25L256怎么讀寫入的數(shù)據(jù)都是0XFF。
P89V51RD2的ISP應(yīng)該寫在片內(nèi)FLASH的什么地址?
匯編調(diào)用C函數(shù)問題
有沒有條碼模塊可以嵌入到產(chǎn)品的?
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)