都是单片机读取DS1302的内部数据,而不是DS1302向单片机发送信号,比如要想知道实时的小时数,单片机就会启动与DS1302的通信并读取DS1302的内部寄存器的数据,例如:hh = read_clock(0x85);//读小时寄存器;如果加入if(read_clock(0x83) != hh){***转入控制程***};就可以实现你说的功能;只能帮这些,不能帮助完整程序。
把小时当做一个变量存起来,当下一次读取1302发现读取的小时和上次保存的值不同时,就发一个脉冲。