- #include <reg51.h>
- #include<absacc.h>
- #include<intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit T_CLK=P1^3;
- sbit T_RST=P1^2;
- sbit T_IO=P1^4;
- sbit RS=P1^7;
- sbit RW=P1^6;
- sbit EN=P1^5;
- sbit ACC7=ACC^7;
- sbit ACC0=ACC^0;
- uchar datechar[]={"DATE:"};
- uchar timechar[]={"TIME:"};
- uchar datebuffer[10]={0x32,0x30,0,0,0x2d,0,0,0x2d,0,0};
- uchar timebuffer[8]= {0,0,0x3a,0,0,0x3a,0,0};
- uchar weekbuffer={0x30};
- void WriteB(uchar ucDa)
- {
- uchar i;
- ACC=ucDa;
- for(i=8;i>0;i--)
- {
- T_IO=ACC0;
- T_CLK=1;
- T_CLK=0;
- ACC=ACC>>1;
- }
- }
- uchar ReadB(void)
- {
- uchar i;
- for(i=8;i>0;i--)
- {
- ACC=ACC>>1;
- ACC7=T_IO;
- T_CLK=1;
- T_CLK=0;
- }
- return(ACC);
- }
- void v_W1302(uchar ucAddr,uchar ucDa)
- {
- T_RST=0;
- T_CLK=0;
- _nop_();_nop_();_nop_();
- T_RST=1;
- _nop_();_nop_();_nop_();
- WriteB(ucAddr);
- WriteB(ucDa);
- T_CLK=1;
- T_RST=0;
- }
- uchar uc_R1302(uchar ucAddr)
- {
- uchar ucDa=0;
- T_RST=0;T_CLK=0;
- T_RST=1;
- WriteB(ucAddr);
- ucDa=ReadB();
- T_RST=1;T_CLK=0;
- return(ucDa);
- }
- //查忙函数
- void wait()
- {
- P2=0xff;
- RS=0;
- RW=1;
- EN=1;
- EN=0;
- while(P2&0x80)
- {
- EN=0;
- EN=1;
- }
- }
- void wc51com(uchar j)
- {
- wait();
- EN=0;
- RS=0;
- RW=0;
- EN=1;
- P2=j;
- EN=0;
- }
- void wc51ddr(uchar j)
- {
- wait();
- EN=0;
- RS=1;
- RW=0;
- EN=1;
- P2=j;
- EN=0;
- }
- void init()
- {
- wc51com(0x01);
- wc51com(0x38);
- wc51com(0x0c);
- wc51com(0x06);
- }
- void delay(uint i)
- {
- uint y,j;
- for(j=0;j<i;j++){
- for(y=0;y<0xff;y--) {;}
- }
- }
- void main(void)
- {
- uchar i;
- uchar data temp;
- delay(10);
- init();
- wc51com(0x80);
- for(i=0;i<5;i++) wc51ddr(datechar );
- wc51com(0xc0);
- for(i=0;i<5;i++) wc51ddr(timechar );
- v_W1302(0x8e,0);
- v_W1302(0x8c,0x15);
- v_W1302(0x8a,0x06);
- v_W1302(0x88,0x06);
- v_W1302(0x86,0x13);
- v_W1302(0x84,0x10);
- v_W1302(0x82,0x49);
- v_W1302(0x80,0x30);
- v_W1302(0x8e,0x80);
- while(1)
- {temp=
- uc_R1302(0x8d);
- datebuffer[2]=0x30+temp/16;datebuffer[3]=0x30+temp%16;
- temp=uc_R1302(0x8b);
- weekbuffer=0x30+temp;
- temp=
- uc_R1302(0x89);
- datebuffer[5]=0x30+temp/16;datebuffer[6]=0x30+temp%16;
- temp=
- uc_R1302(0x87);
- datebuffer[8]=0x30+temp/16;datebuffer[9]=0x30+temp%16;
- temp=
- uc_R1302(0x85);
- temp=temp&0x7f;
- timebuffer[0]=0x30+temp/16;timebuffer[1]=0x30+temp%16;
- temp=
- uc_R1302(0x83);
- timebuffer[3]=0x30+temp/16;timebuffer[4]=0x30+temp%16;
- temp=
- uc_R1302(0x81);
- temp=temp&0x7f;
- timebuffer[6]=0x30+temp/16;timebuffer[7]=0x30+temp%16;
- wc51com(0x85);
- for(i=0;i<8;i++)wc51ddr(datebuffer);
- wc51com(0xc5);
- for(i=0;i<8;i++)wc51ddr(timebuffer);
- wc51ddr(0x20);
- wc51ddr(weekbuffer);
- }
- }
复制代码
|