AVR之最简单外部中断、定时器0、定时器1程序

 AVR之最简单外部中断、定时器0、定时器1程序
2010-08-30 11:39:15
标签: avr  休闲  定时器  外部中断  职场
原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 http://maoge.blog.51cto.com/2068224/385102
程序太简单啦,就不说啦,自己看吧
ATMEGA16用ICCAVR编译器
1、外部中断
#include<iom16v.h> 
#include <AVRdef.h> 
unsigned  char temp=0x80; 
void main() 
{     
    DDRA=0xff; 
    GICR|=0x40; //使能外部INT0 
    MCUCR|=0x01; //INT0下降沿触发 
    SEI(); //总中断 
     while(1); 

#pragma interrupt_handler int0_isr:iv_INT0 
void int0_isr( void

    PORTA=temp; 
    temp=temp>>7|temp<<1; 

 
2、定时器0--普通模式
#include<iom16v.h> 
#include <AVRdef.h> 
unsigned  char count; 
void main() 

     //TCCR0=0; 
  TCNT0=12; 
   //OCR0=244; 
  TCCR0=0x05; 
  TIMSK=0x01; 
  SEI(); 
  DDRA=0xff; 
  PORTA=0; 
   while(1); 

#pragma interrupt_handler Timer0:iv_TIMER0_OVF 
void Timer0() 

     TCNT0=12; 
     count++; 
     if(count==2) 
    { 
      PORTA=~PORTA; 
    count=0; 
    } 
}
3、定时器0--匹配模式
#include<iom16v.h> 
#include <AVRdef.h> 
void main() 

     //TCCR0=0; 
  TCNT0=12; //设置计数初值,计数244后清零申请中断 
  OCR0=244; //从0计数到244,匹配申请中断 
  TCCR0=0x0d; //CTC模式,1024预分频 
  TIMSK=0x02; //使能输出比较匹配中断 
  SEI(); 
  DDRA=0xff; 
  PORTA=0; 
   while(1); 

#pragma interrupt_handler Timer0:iv_TIMER0_COMP 
void Timer0() 

     count++; 
     if(count==2) 
    { 
      PORTA=~PORTA; 
    count=0; 
    } 
}
4、定时器1
#include<iom16v.h> 
#include<AVRdef.h> 
void main() 

    TCCR1A=0; //WGM11、10清零 
  TCCR1B=0; 
  TCNT1H=0x0b; 
  TCNT1L=0xdb; 
  TCCR1B=2; //WGM13、12清零,为普通模式,时钟选择CS02~00:8预分频 
    TIMSK=0x04; 
  SEI(); 
  DDRA=0xff; 
  PORTA=0; 
   while(1); 

#pragma interrupt_handler timer1:iv_TIMER1_OVF 
void timer1() 

     TCNT1H=0x0b; 
    TCNT1L=0xdb; 
    PORTA=~PORTA; 

本文出自 “依旧安静” 博客,请务必保留此出处http://maoge.blog.51cto.com/2068224/385102

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值