我正在初始化Atmega328中溢出中断的寄存器。
我首先从以下初始化开始,但没有成功。
TCCR1B |= 0x05;
TIMSK1 |= 0x01;
然后我尝试了以下代码:
TCCR1B = (TCCR1B & B11111000) | 0x05;
TIMSK1 = (TIMSK1 & B11111110) | 0x01;
前两行代码未调用ISR,但后两行代码已调用!
怎么样?它是否必须与“读取”,“修改”,“写入”等相关联?
最佳答案
这两段代码不相等。假设TCCR1B
的初始值为0xFF
TCCR1B |= 0x05; // this will result in a value of `0xFF`.
TCCR1B = (TCCR1B & B11111000) | 0x05; // This will result in a value of '0xFD'