Arduino的定时中断
之前写了一篇关于Arduino定时的帖子,Arduino函数库里面有外部中断的函数,但是关于内部中断的函数没有提及,本文拟采用Arduino 的定时中断写一个Blink的程序。
代码如下。
1 /******************************************************************************* 2 *** 3 *PROJECT CODE: 定时中断 * 4 *CREATE DATE : 2014/11/27 * 5 *CREATED BY :HGXH * 6 *FUNCTION :定时器产生中断,13号led闪烁,每隔1s * 7 *MODIFY DATE :2014/11/27 * 8 *DOCUMENT : * 9 *OTHERS :CPU = 16MHZ * 10 ********************************************************************************* 11 **/ 12 13 14 void setup(){ 15 DDRB = (1<<5);//设置D13口为输出,PB5为D13引脚16 OCR1A = 15624;//设置Timer1初值,每隔1s变化一次,周期为0.5Hz 17 TCCR1A = (0<<COM1A1) | (0<<COM1A0) | (0<<WGM11) | (0<<WGM10);//OC1A普通输出模式,CTC模式 18 TCCR1B = (0<<WGM13) | (1<<WGM12) | (1<<CS12) | (0<<CS11) | (1<<CS10);//1024分频 19 TIMSK1 = (1<<OCIE1A);//定时器1 A通道输出中断使能 20 } 21 void loop() 22 { 23 24 } 25 26 ISR(TIMER1_COMPA_vect)//中断函数 27 { 28 PORTB ^= (1<<5);//13pin输出电平交替变换 29 OCR1A = 15624;//定时器1装初值 30 }