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

📄 ds1302.h

📁 上载的程序可以用于PIC单片机,也可以用于430单片机,本人原创,到至今还没有发现哪位网友想出这种办法,希望站长能多加分.
💻 H
字号:

#define  uchar unsigned char
#define  uint  unsigned int

#define  XF_MCU    0       //定义用哪一种单片机,1时,用于PIC; 0时,用于MSP430;

#if      XF_MCU==0
//文件名:DS1302.h
#include<msp430x14x.h>

#define  DS13_CLK    BIT0
#define  DS13_IO    BIT1
#define  DS13_RST    BIT2

#define  DS13_DIR  P6DIR
#define  DS13_OUT  P6OUT 
#define  DS13_IN   P6IN 

#define  DS13_CLK_H  DS13_OUT|=DS13_CLK    //*实时时钟-时钟线引脚 */
#define  DS13_CLK_L  DS13_OUT&=~DS13_CLK    //*实时时钟-时钟线引脚 */

#define  DS13_IO_H   DS13_OUT|=DS13_IO     //*实时时钟-数据线输出H */
#define  DS13_IO_L   DS13_OUT&=~DS13_IO     //*实时时钟-数据线输出L */
#define  DS13_IO_DA   DS13_IN&DS13_IO       //实时时钟-数据输入

#define  DS_RST_H    DS13_OUT|=DS13_RST     //*实时时钟-复位线引脚 */
#define  DS_RST_L    DS13_OUT&=~DS13_RST     //*实时时钟-复位线引脚 */

#define  DS13_IO_IN   DS13_DIR&=~DS13_IO      //定义数据线方向为入;DS13_IO_IN=0
#define  DS13_IO_OUT  DS13_DIR|=DS13_IO      //定义数据线方向为出;DS13_IO_OUT=1

#else
//文件名:DS1302.h
#include<PIC.h>
extern uchar pa_out;
extern uchar pb_out;
extern uchar pc_out;
extern uchar pd_out;
extern uchar pe_out;

#define  DS13_TEMP     pc_out

#define ds1302clk     0x01          //clk所属管脚位;
#define ds1302io      0x02          //io所属管脚位;
#define ds1302rst     0x04          //rst所属管脚位;

#define  DS13_CLK_0    ~ds1302clk
#define  DS13_CLK_1    ds1302clk

#define  DS13_IO_0     ~ds1302io   
#define  DS13_IO_1     ds1302io
  
#define  DS13_RST_0    ~ds1302rst 
#define  DS13_RST_1    ds1302rst

#define  DS13_DIR  TRISC
#define  DS13_OUT  PORTC 

#define  DS13_CLK_H  DS13_OUT=(DS13_TEMP|=DS13_CLK_1)   //*实时时钟-时钟线引脚 */
#define  DS13_CLK_L  DS13_OUT=(DS13_TEMP&=DS13_CLK_0)   //*实时时钟-时钟线引脚 */

#define  DS13_IO_H   DS13_OUT=(DS13_TEMP|=DS13_IO_1)     //*实时时钟-数据线输出H */
#define  DS13_IO_L   DS13_OUT=(DS13_TEMP&=DS13_IO_0)     //*实时时钟-数据线输出L */

#define  DS13_IO_DA  DS13_OUT&DS13_IO_1                  //实时时钟-数据输入(判断该脚是否为高电平)
                                                         //(if(DS13_IO_DA))

#define  DS_RST_H    DS13_OUT=(DS13_TEMP|=DS13_RST_1)    //*实时时钟-复位线引脚 */
#define  DS_RST_L    DS13_OUT=(DS13_TEMP&=DS13_RST_0)     //*实时时钟-复位线引脚 */

#define  DS13_IO_IN   DS13_DIR|=DS13_IO_1      //定义数据线方向为入;DS13_IO_IN=0
#define  DS13_IO_OUT  DS13_DIR&=DS13_IO_0      //定义数据线方向为出;DS13_IO_OUT=1

#define  DS13_TRIS    DS13_DIR&=0Xf8;          //定义三根输出线;0b11111000
#endif 


extern uchar ds_emp[7];     //时钟数组寄存器;

//....................DS1302.C...............
void w_byte(uchar dat);                  //往DS1302写入1Byte数据 (内部函数)
uchar r_byte(void);                      //从DS1302读取1Byte数据 (内部函数)
void write_byte(uchar addr, uchar dat);  //指定地址往DS1302写入1Byte数据 (内部函数) 
uchar read_byte(uchar addr);             //指定地址往DS1302读1Byte数据 (内部函数)
void write_ds1302(uchar *p);             // 设置ds1302日期和时间 
void read_ds1302(uchar *p);              //读ds1302当前日期和时间
void DS1302_INIT(void);                   //DS1302初始化
void DS1302_DATA(void);                   //设置1302日期;
//....................DS1302.C...............











⌨️ 快捷键说明

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