/* DS1202/1302 RTC example program send reading every 1000 ms original source program was written by S.HANKRA require DS1202 Library: wrds1202(int) write data to DS1202 char rdds1202(char) read data from DS1202 /RST P1.3 I/O P1.4 SCLK P1.5 */ #include c:\mc\8051io.h #include c:\mc\8051reg.h #define rdsec 0x81 #define rdmin 0x83 #define rdhour 0x85 #define rddate 0x87 #define rdmonth 0x89 #define rdyear 0x8d #define secu 0x8e #define wrdate 0x86 #define wrmonth 0x88 #define wryear 0x8c #define wrhour 0x84 #define wrmin 0x82 #define wrsec 0x80 #define unlock 0 #define lock 0x80 /* ---------------------------------------------------- */ writertc(a,b) char a,b; { int i; i = a; i <<= 8; i |= b; wrds1202(i); } /* ------------------------------------------------------- */ printdate() { printf("%02x/%02x/%02x\n",rdds1202(rddate),rdds1202(rdmonth),rdds1202(rdyear)); } /* ----------------------------------------------------------- */ printtime() { printf("%02x:%02x:%02x\n",rdds1202(rdhour),rdds1202(rdmin),rdds1202(rdsec)); } /* ----------------------------------------------------------- */ setdate() { writertc(secu,unlock); writertc(wrdate,0x08); writertc(wrmonth,0x12); writertc(wryear,0x99); writertc(secu,lock); } /* ----------------------------------------------------------- */ settime() { writertc(secu,unlock); writertc(wrhour,0x12); writertc(wrmin,0); writertc(wrsec,0); writertc(secu,lock); } /* ----------------------------------------------------------- */ main() { setdate(); settime(); serinit(9600); while(1){ printdate(); printtime(); delay(1000); } } ); while(1){ printdate(); printtime(); delay(1000); } }