您当前的位置:五五电子网电子知识单片机-工控设备PIC单片机pic单片机控制时钟芯片DS1302程序 正文
pic单片机控制时钟芯片DS1302程序

pic单片机控制时钟芯片DS1302程序

点击数:7231 次   录入时间:03-04 11:38:45   整理:http://www.55dianzi.com   PIC单片机

#include<pIC.h>                        //包含单片机内部资源预定义
__CONFIG(0x1832);       
//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡

#define i_o   RB4                      //定义DS1302的数据口
#define sclk  RB0                      //定义DS1302的时钟口
#define rst   RB5                      //定义DS1302的复位口

// unsigned char time_rx;
  unsigned char time_rx @ 0x30;        //定义接收寄存器
  static volatile bit time_rx7   @ (unsigned)&time_rx*8+7;   //接收寄存器的最高位
//static volatile bit temp0     @ (unsigned)&temp*8+0;

void port_init();                      //申明引脚初始化函数
void ds1302_init();                    //申明DS1302初始化函数
void set_time();                       //申明设置时间函数
void get_time();                       //申明读取时间函数
void display();                        //申明显示函数
void time_write_1(unsigned char time_tx);    //申明写一个字节函数
unsigned char  time_read_1();          //申明读一个字节函数      
void delay();                          //申明延时函数
//定义待设置的时间:秒、分、时、日、月、星期、年、控制字
const char table[]={0x00,0x58,0x12,0x8,0x3,0x06,0x06,0x00};
//定义读取时间和日期存放表格
char table1[7];
//定义0-9的显示代码
const char table2[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; 

//----------------------------------------------
//主函数 
void main()
  {
     port_init();                     //调用引脚初始化函数
     ds1302_init();                   //调用DS1302初始化函数
     set_time();                      //调用设置时间函数
     while(1)
        {
          get_time();                 //调用取时间函数
          display();                  //调用显示函数
        }
  }

//---------------------------------------------
//DS1302初始化函数
void ds1302_init()
  {
   sclk=0;                            //拉低时钟信号
   rst =0;                            //复位DS1302
   rst=1;                             //使能DS1302
   time_write_1(0x8e);                //发控制命令
   time_write_1(0);                   //允许写DS1302
   rst=0;                             //复位
  }

//---------------------------------------------
//设置时间函数
void set_time()
  {
   int i;                             //定义循环变量
   rst=1;                             //使能DS1302
   time_write_1(0xbe);                //时钟多字节写命令
   for(i=0;i<8;i++)                   //连续写8个字节数据
     {
       time_write_1(table[i]);        //调用写一个字节函数
     }
   rst=0;                             //复位
   }

//---------------------------------------------
//读取时间函数
void get_time()
 {
   int i;                             //设置循环变量
   rst=1;                             //使能DS1302
   time_write_1(0xbf);                //发送多字节读取命令
   for(i=0;i<7;i++)                   //连续读取7个字节数据

[1] [2] [3]  下一页


本文关键字:单片机  程序  PIC单片机单片机-工控设备 - PIC单片机