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 }

 

posted @ 2014-11-27 22:46  hgxh  阅读(3291)  评论(0编辑  收藏  举报