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

📄 1302.c

📁 arm7 lpc2214下DS1302实时时钟驱动源码
💻 C
字号:
/////////////////////////////////////////////////////////////////////////////////////////////////////
//实时时钟模块           时钟芯片型号:DS1302                                                      //
/////////////////////////////////////////////////////////////////////////////////////////////////////
#include "config.h"                                                                                //
#define  DELAY 50                                                                                  //
/////////////////////////////////////////////////////////////////////////////////////////////////////
//延时                                                                                             //
/////////////////////////////////////////////////////////////////////////////////////////////////////
void RTDelay(uint8 uByte)                                                                          //
{for(;uByte>0;)uByte--;				     														   //
}          																						   //
/////////////////////////////////////////////////////////////////////////////////////////////////////
//从DS1302读数据                                                                                   //
/////////////////////////////////////////////////////////////////////////////////////////////////////
unsigned char Read13(unsigned char ad)                                                             //
{unsigned char i,da;                                                                               //
                                                                                                   //
 IO1CLR=1<<21;                                 //clear p1.21                                                                           //CLK
 IO1SET=1<<23;                                 //set p1.23                                                                             //CS
 IO1DIR=IO1DIR|(1<<22);                        //set p1.22 output                                                                        //设置为输出口
 da=ad|0x01;                                                                                       //
 for(i=0;i<8;i++)                                                                                  //
   {if(da&0x01)	                                                                                   //
         IO1SET=1<<22;                                                                             //
    else                                                                                           //
         IO1CLR=1<<22;                                                                             //
    da=da>>1;                                                                                      //
    IO1SET=1<<21;                                                                                  //
    RTDelay(DELAY);                                                                                //
    IO1CLR=1<<21;                                                                                  //
    RTDelay(DELAY);                                                                                //
   }                                                                                               //
 da=0;                                                                                             //
 IO1DIR=IO1DIR&(~(1<<22));                                                                         //设置为输入口
 for(i=0;i<8;i++)                                                                                  //
   {da=da>>1;                                                                                      //
    if(IO1PIN&(1<<22))da=da|0x80;                                                                  //
    IO1SET=1<<21;                                                                                  //
    RTDelay(DELAY);                                                                                //
    IO1CLR=1<<21;                                                                                  //
    RTDelay(DELAY);                                                                                //
   }                                                                                               //
 IO1CLR=1<<23;                                                                                     //
 return da;                                                                                        //
}                                                                                                  //
/////////////////////////////////////////////////////////////////////////////////////////////////////
//向DS1302写数据                                                                                   //
/////////////////////////////////////////////////////////////////////////////////////////////////////
void Write13(unsigned char ad,unsigned char da)                                                    //
{unsigned char i,temp;                                                                             //
 IO1CLR=1<<21;                                                                                     //CLK
 IO1SET=1<<23;                                                                                     //CS
 IO1DIR=IO1DIR|(1<<22);                                                                            //设置为输出口
 temp=ad;                                                                                          //
 for(i=0;i<8;i++)                                                                                  //
   {if(temp&0x01)                                                                                  //
         IO1SET=1<<22;                                                                             //
    else                                                                                           //
         IO1CLR=1<<22;                                                                             //
    temp=temp>>1;                                                                                  //
    RTDelay(DELAY);                                                                                //   
    IO1SET=1<<21;                                                                                  //
    RTDelay(DELAY);                                                                                //
    IO1CLR=1<<21;                                                                                  //
   }                                                                                               //
 temp=da;                                                                                          //
 for(i=0;i<8;i++)                                                                                  //
   {if(temp&0x01)                                                                                  //
         IO1SET=1<<22;                                                                             //
    else                                                                                           //
         IO1CLR=1<<22;                                                                             //
    temp=temp>>1;                                                                                  //
    IO1SET=1<<21;                                                                                  //
    RTDelay(DELAY);                                                                                //
    IO1CLR=1<<21;                                                                                  //
    RTDelay(DELAY);                                                                                //
   }                                                                                               //
 IO1CLR=1<<23;                                                                                     //
}                                    

⌨️ 快捷键说明

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