2015-03-13 68 views
0

所以我必須做interrups一個小任務,我需要知道什麼做的這行代碼的意思是:Arduino的中斷編程

TCCR1A = 0; 
TCCR1B = 0; 
TCCR1B |= (1 << CS12); 

回答

1

TCCR1A和TCCR1B是應對定時器#1 Arduino的宏。這就是這些行正在做的:

TCCR1A = 0; // Clear all bits of TCCR1A register 
TCCR1B = 0; // Clear all bits of TCCR1B register 
TCCR1B |= (1 << CS12); // ORs the current value of TCCR1B with 0b00000100, 
         // and stores the result back in TCCR1B 

這是最後一行如何做它的魔力:

  1. CS12是位#TCCR1B寄存器的2,所以它有2
  2. 整數1的值爲0b00000001
  3. <<運算符是一個邏輯左移操作,它取左操作數,並將它的位向左移動右操作數指示的位數。在這種情況下,這意味着0b00000001變爲0b000000100。
  4. |=運算符取左操作數的值,或將其與右操作數的值進行或運算,並將結果指定回左操作數位置。

這段代碼的結果是TCCR1A與所有位結束了清晰,TCCR1B將所有比特位清除execpt 2.

這裏是解釋這些東西的TCCRx寄存器一些更多的信息作業實際完成:

http://letsmakerobots.com/content/arduino-101-timers-and-interrupts

+0

那麼這條線呢? TIMSK1 =(1 << TOIE1); – user218649 2015-03-13 09:03:27

+0

它在計數器溢出時啓用中斷: 定時器溢出中斷使能 - > TOIE – 2015-03-13 15:14:16