关于时钟芯片PCF2129的问题

2019-07-16 00:53发布

刚接触pcf2129芯片,使用c8051f340单片机与其进行SPI通信,所编写的读写程序如下,但是不能使用网上也找不到相关资料,求大神指导指导,弄了好几天了,一点进度都没有。

/***********PCF2129的初始化************/
void Init_PCF2129()
{
  NSS = 0;
  SPISend(0x20);     /*设置时钟PCF2129初始化控制寄存器命令*/
  SPISend(0x00);    /*EXT_TEST,NULL,STOP,TSF1,POR_OVER,12_24,MI,SI; 0001001*/
  SPISend(0x04);    /*MSF, WDTF, TSF2,AF, ,NULL, TSIE, AIE, NULL*/
  SPISend(0xe0);    /*PWRMIN7-5, BSTE, BF, BLF, BIE, BLIE*/
  NSS = 1;

}
/********向PCF2129写一字节数据*********/
void SPISend(uchar date)
{   
    NSS = 0;
        SPI0DAT = date;
        while(!SPIF);//等待发送完数据
        SPIF = 0;
        _nop_();
        NSS = 1;       
}

/*******向PCF2129写入设置时间***********/
void set_time(void)
{
   NSS = 0;
   SPISend(0x32);          /*发送命令字00110010*/
   SPISend(0x00);         /*设置时钟PCF2129控制寄存器Timestp_ctl,初始时间0秒*/
   SPISend(0x01);   /*设置时钟PCF2129秒寄存器,初始时间0秒*/

   SPISend(0x30);   /*设置时钟PCF2129分钟寄存器,初始时间30分钟*/

   SPISend(0x11);   /*设置时钟PCF2129小时寄存器,初始时间11时*/

   SPISend(0x26);   /*设置时钟PCF2129日寄存器,初始时间26日*/

   SPISend(0x04);   /*设置时钟PCF2129星期寄存器,初始时间星期四*/

   SPISend(0x04);   /*设置时钟PCF2129月寄存器,初始时间4月*/

   SPISend(0x13);   /*设置时钟PCF2129年寄存器,初始时间13时*/
   NSS = 1;

}
/*******从PCF2129读一个字节的BCD码*********/
uchar read_byte()
{
   SPI0DAT=0;
   NSS = 0;
   while(!SPIF);//等待发送完数据
         SPIF = 0;
   NSS = 1;
   _nop_();       
   _nop_();
   _nop_();
   _nop_();
   return SPI0DAT;

}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。