本帖最后由 a会飞的鱼 于 2012-11-3 23:19 编辑
最近在做公司一个产品,使用到PCF8563实现ALARM功能。下面是01H寄存器描述。
下面是我的部分代码void D8563_Alarm(void)
{
byte TempData[16];
TempData[REG_STATUS2]= 0x02;//BIT3(AF)位写0 清除报警标志
if (D8563_Write(REG_STATUS2,TempData,1)== FALSE)
return FALSE;
TempData[REG_STATUS2]= 0x06;//BIT3(AF)写1
if (D8563_Write(REG_STATUS2,TempData,1)== FALSE)
return FALSE;
TempData[0]= 0x03; //写入每天08:03报警一次
TempData[1]= 0x08;
TempData[2]= 0x80;
TempData[3]= 0x80;
D8563_Write(REG_ALARM_MIN,&TempData[0],4);
}
每次ALARM来的时候,AF位会置1,且必须软件清0,如果仅仅只是写0,就会产生一个问题----下次ALARM来的时候,AF位就不会被置1了。
如果AF位清零后,再写1,下次来ALARM的时候才会再一次被置1。
我想请教各位大虾,为什么会出现这种情况??规格书里面是没有这个描述的、
补充有关AF/TF位的描述
|