极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15058|回复: 4

arduino环境下,怎么设个中断子程序

[复制链接]
发表于 2012-9-6 18:01:24 | 显示全部楼层 |阅读模式
比如我想 发生计数器0溢出中断,执行一段子程序,然后跳回中断前的程序继续
回复

使用道具 举报

发表于 2012-9-6 21:55:20 | 显示全部楼层
#include <avr/io.h>      
#include <avr/interrupt.h>   

void loop(){
  //你的主程序
}

void setup(){
  timer();
}
void timer(){
  TCCR2A = 0x00;
  TCCR2B = 0x07;
  TIMSK2  =_BV(TOIE2) | 0x00;
  TCNT2 = 0x00;
  TCCR2A = 0x01;
  sei();
}
ISR(TIMER2_OVF_vect){
  TCNT2 = 0x00;
  //你的中断程序:
}

//手头正好有Timer2的程序,就发上来了。
//其实不太建议用timer0,会干扰delay()等一系列Arduino函数的效果。
回复 支持 反对

使用道具 举报

发表于 2012-9-6 22:00:40 | 显示全部楼层
本帖最后由 id9502 于 2012-9-6 22:22 编辑

其实鉴于Timer0,Timer2同属八位计时器,功能上有很多重合,上面的代码中只要把所有的"2”改为"0"就可以操作Timer0了。上面的代码用的是16MHz,1024预分频,最好不要在中断程序里写太多太复杂的代码。
回复 支持 反对

使用道具 举报

发表于 2012-10-31 17:59:47 | 显示全部楼层
这个mark一下~
回复 支持 反对

使用道具 举报

发表于 2013-6-30 07:51:56 | 显示全部楼层

#include <avr/io.h>      
#include <avr/interrupt.h>  这两个头文件是从哪搞的啊?
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-6 14:26 , Processed in 0.038984 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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