单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 442|回复: 0
打印 上一主题 下一主题
收起左侧

AVR单片机定时器做的门铃程序+电路

[复制链接]
跳转到指定楼层
楼主




#define F_CPU  1000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#define INT8U   unsigned char
#define INT16U  unsigned int

#define DoorBell() (PORTD ^= 0x01)          /

#define Key_DOWN() ((PINB & 0x80) == 0x00)

volatile INT16U soundDelay;                 //两个不同取值分别对应于"叮","咚"

int main()
{
        DDRB = 0;      PORTB = 0xff;
        
        DDRD = 0xff;  
        
        TCCR1B = 0x01;

        TCNT1 = -700;
        
        sei();
        
        while(1)
        {
                if( Key_DOWN() )
                {
                        TIMSK = _BV(TOIE1);
                        
                        soundDelay = -700;
                        
                        _delay_ms(400);
                        
                        soundDelay = -1000;
                        
                        _delay_ms(600);
                        
                        TIMSK = 0x00;
                }
               
        }
        
}


ISR ( TIMER1_OVF_vect )
{
        
        DoorBell();
               
                TCNT1 = soundDelay;
               
}


评分

参与人数 6黑币 +70 收起 理由
站着说话不腰疼 + 8
钻牛尖滴刘尖尖 + 10
刀刀见红 + 15 很给力!
Sawardeakar + 12
shuisheng + 15 赞一个!
Trump1438 + 10 赞一个!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51Hei单片机16群 联系QQ:125739409;技术交流QQ群7344883

Powered by 单片机教程网

快速回复 返回顶部 返回列表