#include #define uchar unsigned char #define uint unsigned int uchar code table[]="ME-8051-G clock"; uchar code table1[]=" --:--:-- "; uchar code table2[]="ALL:00:00:-- "; uchar code table3[]=" "; uchar clk_time[3]; //秒,分,时寄存器初始值 sbit T_RST=P1^0;//ds1302-5 sbit T_IO=P1^1;//ds1302-6 sbit T_CLK=P1^2;//ds1302-7 sbit en=P3^4; sbit rw=P3^6; sbit rs=P3^5; sbit led=P2^5; sbit dula=P2^6; sbit wela=P2^7; sbit ACC0=ACC^0; sbit ACC7=ACC^7; sbit up=P3^0; sbit down=P3^1; sbit set=P3^2; sbit did=P2^3; sbit GND=P3^7; uchar num,clock_ss,clock_sg,clock_fs,clock_fg,clock_ms,clock_mg,b,clock_s,clock_g; char hour,mie,sei,c,nhour,nmie,shour,smie; /******************DS1302:写入操作(上升沿)*********************/ void write_byte(uchar da) { uchar i; ACC=da; for(i=8;i>0;i--) { T_IO=ACC0; T_CLK=0; T_CLK=1; ACC=ACC>>1; } } /******************DS1302:读取操作(下降沿)*****************/ uchar read_byte(void) { uchar i; for(i=0;i<8;i++) { ACC=ACC>>1; T_CLK = 1; T_CLK = 0; ACC7 = T_IO; } return(ACC); } /******************DS1302: 写入数据(先送地址,再写数据)***************************/ void write_1302(uchar addr,uchar da) { T_RST=0; //停止工作 T_CLK=0; T_RST=1; //重新工作 write_byte(addr); //写入地址 write_byte(da); T_RST=0; T_CLK=1; } /******************DS1302: 读 取 数据(先送地址,再读 数据)**************************/ uchar read_1302(uchar addr) { uchar temp; T_RST=0; //停止工作 T_CLK=0; T_RST=1; //重新工作 write_byte(addr); //写入地址 temp=read_byte(); T_RST=0; T_CLK=1; //停止工作 return(temp); } /***********************延时程序=a*1ms**************************************/ void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void fn() { did=0; delay(120); did=1; delay(120); did=0; delay(120); did=1; delay(120); did=0; delay(120); did=1; delay(120); did=0; delay(320); did=1; delay(...