[Atmel] 用AtmelStudio6.2跑mega16例程(41) 循环报警灯

[复制链接]
 楼主| ddllxxrr 发表于 2014-10-28 20:59 | 显示全部楼层 |阅读模式
本例用了2个定时器中断和1个外部中断,T0控制灯旋转,T1定时器溢出中断控制着声音输出。

proteus仿真:

Studio6.2编译截图:

程序清单:
  1. /*
  2. * GccApplication4.c
  3. *
  4. * Created: 2014-10-28 20:22:56
  5. *  Author: Administrator
  6. */

  7. #define F_CPU 1000000UL
  8. #include <avr/io.h>
  9. #include <avr/interrupt.h>
  10. #include <util/delay.h>
  11. #include <stdint.h>

  12. #define SPK()(PORTD^= _BV(PD7))

  13. volatile uint8_t FRQ = 0x00;
  14. uint8_t ON_OFF = 0;
  15. uint8_t Pattern = 0xE0;


  16. int main(void)
  17. {
  18.     DDRC = 0xFF;
  19.         DDRD = ~_BV(PD2);PORTD=_BV(PD2);
  20.         TCCR0 = 0x05;
  21.         TCNT0 = 256 - F_CPU/1024.0*0.1;
  22.         TCCR1B = 0x01;
  23.         MCUCR = 0x02;
  24.         GICR = 0x40;
  25.         sei();
  26.         while(1)
  27.         {
  28.            FRQ++;
  29.            _delay_ms(1);       
  30.         }
  31.         }
  32.        
  33. ISR(INT0_vect)
  34. {
  35.         ON_OFF = !ON_OFF;
  36.         if(ON_OFF)
  37.         {
  38.                 TIMSK |=0x05;
  39.                 Pattern = 0x80;
  40.         }
  41.         else
  42.         {
  43.                 TIMSK = 0x00;
  44.                 PORTC = 0x00;
  45.                 PORTD &=~_BV(PD7);
  46.         }
  47.         }       

  48. ISR(TIMER0_OVF_vect)
  49. {
  50.         TCNT0 = 256-F_CPU/1024.0*0.1;
  51.         if(Pattern&0x80) Pattern=(Pattern<<1)|0x01;
  52.         else Pattern<<= 1;
  53.         PORTC= Pattern;
  54. }

  55. ISR(TIMER1_OVF_vect)
  56. {
  57.         TCNT1 = 0xFE00+FRQ;
  58.         SPK();
  59. }


本帖子中包含更多资源

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

×
jiang390625 发表于 2014-10-29 15:51 | 显示全部楼层
不错,收藏一下。
jiang390625 发表于 2014-10-29 15:51 | 显示全部楼层
希望楼主多分享例程。
okyouwin 发表于 2014-10-29 16:23 | 显示全部楼层
能用吗?感觉一般吧。
elecsnail 发表于 2014-10-30 16:23 | 显示全部楼层
感谢楼分享!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2403

主题

6994

帖子

68

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2403

主题

6994

帖子

68

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