设计思路:我想用Mega64 T1的比较匹配中断,产生固定的定时间隔。比如1ms或是10ms。 设置T1的工作模式(WGMn3:0 = 4) 设置OCR1A = 2000;打开了匹配中断 TIMSK |= (1<<OCIE1A);附上源码
#include <iom64v.h> #include <macros.h>
#pragma interrupt_handler isr_timer1:15 unsigned int counter;
void main() { counter = 300; TCCR1B |= (1<<WGM12); OCR1A = 2000; DDRB = 0xF0; SEI(); TIMSK |= (1<<OCIE1A); TCCR1B |= 1<<CS10; while(1); }
void isr_timer1() { if(counter != 0) { counter--; } else { counter = 300; PORTB ^= 1<<PB7; } }
但是接在PB7的LED并没有按照600ms闪烁一次。不知道是什么原因,还望高手指点。 |