[AVR单片机] PCF8563小时报警如何设置

[复制链接]
5783|6
 楼主| selfstudy 发表于 2011-7-27 10:42 | 显示全部楼层 |阅读模式
在atmega16中用中断0来扑捉时钟中断,用低电平有效的方式。PCF8563的报警条件设置:
Write_Abyte(CTRL_BUF2,0x02);//开启中断

Write_Abyte(HOUR_AE_BUF,Int_To_BCD(10));//给时钟设置10点报警
可是程序无法扑捉中断啊。。
//增加中断0来记录报警次数;低电平有效
ISR(INT0_vect)
{

int_time++;


Write_Abyte(CTRL_BUF2,0x02);//清除中断
Write_Abyte(HOUR_AE_BUF,Int_To_BCD(11));//下次中断时间
}


仿真显示了 hour的 AE=1了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| selfstudy 发表于 2011-7-27 10:47 | 显示全部楼层
  1. //增加中断0来记录报警次数;低电平有效
  2. ISR(INT0_vect)
  3. {

  4. int_time++;
  5.        
  6.                 Write_Abyte(CTRL_BUF2,0x02);//清除中断
  7. Write_Abyte(HOUR_AE_BUF,Int_To_BCD(11));
  8. }
  9. void Interrupt_init()
  10. {
  11.         DDRD&=~(_BV(PD2)|_BV(PD3));//2个中断口为输入口

  12.         GICR|=_BV(7)|_BV(6);//开启中断0,1
  13.         MCUCR|=_BV(3) ;//INT1下降沿触发,INT0低电平中断
  14.         GIFR|=_BV(7)|_BV(6);//清除中断标志
  15.         SREG|=_BV(7);//开启中断

  16. }
  17. int main(void)
  18. {uchar i;
  19.         LCD_Init();
  20.         PCF8563_Init();
  21.         TWBR = 0X0F;                //设置TWI波特率  
  22.         TWSR &= 0XFC;                //设置TWI预分频 为 1
  23. ///中断设置       
  24. Interrupt_init();
  25. //报警设置
  26.         Write_Abyte(HOUR_AE_BUF,Int_To_BCD(10));

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| selfstudy 发表于 2011-7-27 11:36 | 显示全部楼层
等待中。。。。。
 楼主| selfstudy 发表于 2011-7-27 12:58 | 显示全部楼层
仿真时发现 AF未被置1.很是奇怪。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
xianrenly 发表于 2014-10-30 10:22 | 显示全部楼层
你好,我现在在做个项目,也遇到和你同样的问题。时钟12:51,闹钟16:53响后,设置闹钟为16:54,不会闹了,后面再设置16:56也不会闹。但如果刚开始闹钟16:53响后,设置16:55,就没有问题。可以正常报警。
SD10A 发表于 2014-10-30 12:31 | 显示全部楼层
在中断中不需要专门对中断标志清0,需要清除可以使用GIFR
guangyong_xia 发表于 2016-1-15 21:15 | 显示全部楼层
我也是遇到同样的问题,真不知怎么回事?看来很多初学者都有遇到。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

84

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部