⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer.c

📁 利用DS3102时钟芯片跟12864液晶制作简单的多功能万年历
💻 C
字号:
//寄存器宏定义



//位寻址寄存器定义

sbit ACC_7 = ACC^7;

//管脚定义

sbit SCLK = P3^5;                   // DS1302时钟信号         7脚

sbit DIO= P3^6;                      // DS1302数据信号         6脚

sbit RST = P3^7;                        // DS1302片选                 5脚


//地址、数据发送子程序

void Write1302 ( unsigned char addr,dat )     

{

       unsigned char i,temp;

       RST=0;                         //CE引脚为低,数据传送中止

       SCLK=0;                    //清零时钟总线

       RST = 1;                      //CE引脚为高,逻辑控制有效

       //发送地址

       for ( i=8; i>0; i-- ) //循环8次移位

       {     

              SCLK = 0;

              temp = addr;

              DIO = (bit)(temp&0x01);          //每次传输低字节

              addr >>= 1;                //右移一位

              SCLK = 1;

       }

       

//发送数据

       for ( i=8; i>0; i-- ) 

       {     

              SCLK = 0;

              temp = dat;

              DIO = (bit)(temp&0x01);          

              dat >>= 1;                   

              SCLK = 1;

       }

       RST = 0;         

}


//数据读取子程序

unsigned char Read1302 ( unsigned char addr )

{

       unsigned char i,temp,dat1,dat2;

       RST=0;           

       SCLK=0;             

       RST = 1; 

       //发送地址

       for ( i=8; i>0; i-- )                      //循环8次移位

       {     

              SCLK = 0;

              temp = addr;

              DIO = (bit)(temp&0x01);          //每次传输低字节

              addr >>= 1;                              //右移一位

              SCLK = 1;

       }

       //读取数据

       for ( i=8; i>0; i-- ) 

       {

              ACC_7=DIO;

              SCLK = 0;

             ACC>>=1;

              SCLK = 1;

       }     

       RST=0;

       dat1=ACC;

       dat2=dat1/16;                           //数据进制转换

       dat1=dat1%16;                         //十六进制转十进制

       dat1=dat1+dat2*10;

       return (dat1);

}


//初始化DS1302

void Initial(void)    

{ 	#include"at89x52.h"


       Write1302 (WRITE_PROTECT,0X00);         //禁止写保护

       Write1302 (WRITE_SECOND,0x56);          //秒位初始化

       Write1302 (WRITE_MINUTE,0x34);        //分钟初始化

       Write1302 (WRITE_HOUR,0x12);                    //小时初始化

       Write1302 (WRITE_PROTECT,0x80);                 //允许写保护

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -