/***************************************************************************
**函数名 : 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系统认为小时和分钟不使能,闹钟仅仅进行秒判断,则每分钟都会产生一个中断,开始还以为是系自带的分钟中断没配置好。。。
教训,初始化参数啊~~~~
用户1561304 2013-5-9 18:43
用户377235 2012-12-10 10:33
用户1696769 2012-4-5 09:43