临时寄存器TEMP
8位总线一次只能读写取8位数据,所以读写16位寄存器时、使用8位的临时寄存器TEMP来保存另一半的8位数据。
一个定时器只有1个临时寄存器TEMP,所以读写其他16位寄存器时,临时寄存器TEMP将被修改成当前的16位寄存器的高字节或低字节。
所以读取16位寄存器的过程中需要禁止中断,避免中断处理过程中有读写其他16位寄存器的操作,
这会修改临时寄存器TEMP的当前值,导致中断返回后临时寄存器TEMP已被修改。
读写低字节、将触发16位的读写。
--> 为了简化问题,在中断中不要读写16位寄存器
读16位定时器的步骤:
in r18,SREG ; 保存全局中断标志
cli ; 禁止全局中断
in r16,TCNT1L ;

本文介绍了Atmega16在读写16位寄存器时,由于8位总线限制,需要通过临时寄存器TEMP辅助完成。详细解析了读写16位定时器的步骤,强调不能单独读写高字节,必须配合低字节操作。并通过测试代码和结果说明了只写高字节或读高字节不会生效的情况。
最低0.47元/天 解锁文章
2907

被折叠的 条评论
为什么被折叠?



