ATmega328中中断寄存器的两种不同分配。为什么第一个不起作用?

时间:2019-08-09 06:17:56

标签: c interrupt atmega

我正在初始化Atmega328中溢出中断的寄存器。

我首先从以下初始化开始,但是没有用。

TCCR1B |= 0x05; 
TIMSK1 |= 0x01;

然后我尝试了以下代码:

TCCR1B = (TCCR1B & B11111000) | 0x05;
TIMSK1 = (TIMSK1 & B11111110) | 0x01;

前两行代码未调用ISR,但后两行代码已调用! 怎么样?

1 个答案:

答案 0 :(得分:0)

这两个代码不相等。假设TCCR1B的初始值为0xFF

TCCR1B |= 0x05; // this will result in a value of `0xFF`.

TCCR1B = (TCCR1B & B11111000) | 0x05;  // This will result in a value of '0xFD'