首先附上DS1302的时序图和它的寄存器图,程序中写的不好的地方希望大家多多谅解,谢谢~
#include<reg52.h> //头文件预编译
#define uchar unsigned char //宏定义
#define uint unsigned int //宏定义
uint DisplayData[8]; //无符号整型数码管显示的总位数
uint code smgduan[10]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极数码管0-9的全数组
uint code READ_RTC_ADDR[7] = {
0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d}; //读寄存器的秒分钟日月周年
uint code WRITE_RTC_ADDR[7] = {
0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c}; //写寄存器的秒分钟日月周年
uint TIME[7] = {
0x50, 0x43, 0x21, 0x25, 0x07, 0x06, 0x20}; //数码管显示的时间2020年7月25日星期六21点43分50秒
sbit SCLK=P3^6; //位选时钟线
sbit IO=P3^4; //位选输出输出
sbit CE=P3^5; //位选复位
sbit LSA=P2^2; //数码管端口A
sbit LSB=P2^3; //数码管端口B
sbit LSC=P2^