DS1302+AT89S51单片机时钟C 程序(六位共阳数码管显示) //DS1302时钟芯片程序 #include #define uchar unsigned char #define uint unsigned int sbit CLK=P2^3; //定义口 sbit IO=P2^4; sbit RST=P2^5; sbit ACC7=ACC^7; sbit ACC0=ACC^0; uchar a[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}, //定义数码管显示码 b[8]={0x00,0x00,0x12,0x23,0x11,0x07,0x08,0xbe},//写入时钟数据 ,最后 be 突发访问 c[7],s,s1,ml1,mh1,ml2,mh2,ml3,mh3; //c 存放读
出时钟数据 void delay(uint z) // 延时 { uint i; uchar j; for(i=z;i>0;i--) for(j=200;j>0;j++); } // 显示子程序 void display(uchar mh1,uchar ml1,uchar mh2,uchar ml2,uchar mh3,uchar ml3) { uchar x,k,r; for(k=0;k> 1; } } uchar r(void) //读出1位字节 { uchar i; for(i=8; i>0; i--) { ACC = ACC >>1; ACC7 = IO; CLK = 1; CLK = 0; } return(ACC); } void W1302(uchar ucAddr, uchar ucDa) { RST = 0; CLK = 0; RST = 1; w(ucAddr); // 地址,命令 w(ucDa);