使用C和汇编语言探索ATtiny微控制器
定时器项目中的寄存器使用
在轮询定时器项目中,TIFR被直接使用,不过在ATtiny13(A)和ATtiny25/45/85中其定义名称不同。为了让代码同时适用于这两类ATtiny设备,使用了 .ifndef 指令。在 timer0_uni_int_asm 项目中,没有直接使用TIFR,而是使用了TIMSK。对于ATtiny13(A),该寄存器名为TIMSK0,而对于ATtiny25/45/85则名为TIMSK。同样使用了 .ifndef 代码,不过这次是针对TIMSK寄存器而非TIFR寄存器,这在代码清单顶部可以看到。
当在代码的TIMSK寄存器中设置OCIE0A位时,它对ATtiny13(A)和ATtiny25/35/85设备都有效,尽管该位在这两类ATtiny设备的寄存器中位置不同,这在数据手册中可以看到。这是因为在Microchip Studio中为所选设备的头文件中进行了正确定义。
中断向量表处理
未使用的向量表条目已从代码中移除。定时器0比较匹配A中断向量通过在ATtiny包含文件中为该地址定义的名称 OC0Aaddr 包含在代码中。如前所述,该名称与 .org 指令一起使用,为定时器0比较匹配A中断向量设置正确的地址。在ATtiny13(A)包含文件中, OC0Aaddr 被定义为 0x0006 ,而在ATtiny25/45/85文件中则为 0x000A ,从而使向
C与汇编探索ATtiny微控制器
超级会员免费看
订阅专栏 解锁全文
52

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



