|
|||||||||||
| 技術(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ī) |
已用于開發(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 于 2005/11/13 19:13:00 發(fā)布:
寫的還蠻有秩序 贊一個(gè)先 |
|
| 3樓: | >>參與討論 |
| 作者: hunter01 于 2005/11/14 9:18:00 發(fā)布:
這個(gè)破爛還在用? |
|
| 4樓: | >>參與討論 |
| 作者: hylaliu 于 2005/11/14 9:30:00 發(fā)布:
只作為時(shí)鐘還是可以的 |
|
| 5樓: | >>參與討論 |
| 作者: hylaliu 于 2005/11/14 12:06:00 發(fā)布:
穿上了褲子,謝謝斑竹 |
|
| 6樓: | >>參與討論 |
| 作者: javie 于 2005/11/14 12:37:00 發(fā)布:
不過說實(shí)在的 DS12887已經(jīng)沒人用了 |
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |