探索ATtiny微控制器的C和汇编语言编程
1. ATtiny代码执行分析
在之前的代码中,当开关闭合时,循环仍需7个时钟周期执行,因此循环的时序保持不变。唯一的变化是,循环顶部的 SBIC 指令现在会跳过紧随其后的 CBI 指令,而 SBIS 指令不会跳过紧随其后的 SBI 指令。代码会在引脚 PB3 上设置一个内部上拉电阻。当连接到 PB3 的开关断开时,读取到逻辑电平1;当开关闭合时,在 PB3 引脚上读取到逻辑电平0。
代码从上到下执行所需的总时钟周期数为:循环上方的6个周期加上循环内的7个周期,总计13个周期。在 ATtiny25/45/85 上,从代码顶部到循环底部执行需要13微秒;在 ATtiny13(A) 上,使用默认时钟频率时需要10.833微秒。
如果 SBIC 或 SBIS 指令后面跟随一个双字或32位宽的指令,并且测试条件为真(即跳过后面的指令),则需要3个时钟周期来执行。例如:
sbis PINB, PINB3 ; 3 clock cycles, if skip over next instruction
lds r1, 0x60 ; 32-bit instruction
如果开关断
ATtiny微控制器编程与延迟计算
超级会员免费看
订阅专栏 解锁全文
1万+

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



