打印
[AVR单片机]

PCF8563小时报警如何设置

[复制链接]
4273|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在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了。

PCF8563无法捕捉中断.jpg (340.44 KB )

PCF8563无法捕捉中断.jpg

相关帖子

沙发
selfstudy|  楼主 | 2011-7-27 10:47 | 只看该作者
//增加中断0来记录报警次数;低电平有效
ISR(INT0_vect)
{

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

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

}
int main(void)
{uchar i;
        LCD_Init();
        PCF8563_Init();
        TWBR = 0X0F;                //设置TWI波特率  
        TWSR &= 0XFC;                //设置TWI预分频 为 1
///中断设置       
Interrupt_init();
//报警设置
        Write_Abyte(HOUR_AE_BUF,Int_To_BCD(10));

PCF8563电路.jpg (104.8 KB )

PCF8563电路.jpg

atmega16电路.jpg (83.78 KB )

atmega16电路.jpg

8563部分程序.jpg (80.1 KB )

8563部分程序.jpg

使用特权

评论回复
板凳
selfstudy|  楼主 | 2011-7-27 11:36 | 只看该作者
等待中。。。。。

使用特权

评论回复
地板
selfstudy|  楼主 | 2011-7-27 12:58 | 只看该作者
仿真时发现 AF未被置1.很是奇怪。

PCF8563的仿真结果,AF未被置1.jpg (163.07 KB )

PCF8563的仿真结果,AF未被置1.jpg

使用特权

评论回复
5
xianrenly| | 2014-10-30 10:22 | 只看该作者
你好,我现在在做个项目,也遇到和你同样的问题。时钟12:51,闹钟16:53响后,设置闹钟为16:54,不会闹了,后面再设置16:56也不会闹。但如果刚开始闹钟16:53响后,设置16:55,就没有问题。可以正常报警。

使用特权

评论回复
6
SD10A| | 2014-10-30 12:31 | 只看该作者
在中断中不需要专门对中断标志清0,需要清除可以使用GIFR

使用特权

评论回复
7
guangyong_xia| | 2016-1-15 21:15 | 只看该作者
我也是遇到同样的问题,真不知怎么回事?看来很多初学者都有遇到。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

84

帖子

2

粉丝