热度 14
2012-3-7 16:53
2715 次阅读|
2 个评论
/*************************************************************************** **函数名 : SetAlarm **功 能 : RTC闹钟设置程序 **输入参数:ptime小时分钟闹钟配置 **返回值 :无 ***************************************************************************/ void SetAlarm(UCHAR *ptime) { UCHAR AlarmHour = 0x08,AlarmMinute = 0x10 ; AlarmHour =((*ptime/10)4)|(*ptime%10); ptime++; AlarmMinute =((*ptime/10)4)|(*ptime%10); SPI_RTC = 0; SPISend(0x20); /*设置时钟PCF2129初始化控制寄存器命令*/ SPISend(0x00); /*EXT_TEST,NULL,STOP,TSF1,POR_OVER,12_24,MI,SI; 0001001*/ SPISend(0x02); /*MSF, WDTF, TSF2,AF, ,NULL, TSIE, AIE, NULL*/ SPISend(0x00); /*PWRMIN7-5, BSTE, BF, BLF, BIE, BLIE*/ SPI_RTC = 1; DelayMs(10); SPI_RTC = 0; DelayMs(10); SPISend(0x2A); /*设置时钟PCF2129闹钟寄存器启动命令*/ DelayMs(10); SPISend(0x01); /*设置时钟PCF2129闹钟秒寄存器,固定值第1s*/ DelayMs(10); SPISend(AlarmMinute); /*设置时钟PCF2129闹钟分钟寄存器,初始时间10分*/ DelayMs(10); SPISend(AlarmHour); /*设置时钟PCF2129闹钟小时寄存器,初始时间8点*/ DelayMs(10); SPI_RTC = 1; } ------------------------------------ AlarmHour = 0x08,AlarmMinute = 0x10 这俩参数 开始没有初始化,系统分配为FF,导致高位bit8为1,则PCF2129系统认为小时和分钟不使能,闹钟仅仅进行秒判断,则每分钟都会产生一个中断,开始还以为是系自带的分钟中断没配置好。。。 教训,初始化参数啊~~~~