AVR 微控制器内部架构深度解析
1. 程序计数器(PC)
程序计数器(PC)可以看作是由微控制器主时钟驱动的二进制计数器,每一个时钟脉冲它就会继续向上计数。当执行跳转或分支指令,或者调用或返回子例程时,会向 PC 加载一个新的计数值。这个计数值用于寻址内存,从而使微控制器从该内存地址获取一条指令并执行它。
不同型号的 AVR 微控制器,其程序计数器的宽度不同:
| 微控制器型号 | 程序计数器宽度 | 可寻址指令数量 | 可寻址字节数 |
| ---- | ---- | ---- | ---- |
| ATtiny13(A) | 9 位 | 512 条 16 位宽指令 | 1024 字节(1K) |
| ATtiny25 | 10 位 | 1024 条指令 | 2048 字节(2K) |
| ATtiny45 | 11 位 | 2048 条 16 位宽指令 | 4096 字节(4K) |
| ATtiny85 | 12 位 | 4096 条 16 位宽指令 | 8192 字节(8K) |
在调试时,对于 32 位指令,执行一步调试操作后,PC 会增加 2。打开第 2 章的 led_blink_asm 项目并在调试器中运行,会发现主程序中的指令都是单周期指令,每执行一条指令,程序计数器就会增加 1。当在主循环底部执行 RJMP 指令时,程序计数器会加载循环标签下 SBI 指令的地址,然后从循环顶部再次开始执行。
2. 微控制器总线
微控制器或微处理器上的总线是一组电线。例如,8 位总线就是由 8 根电线组成。一般的微控制器有地址总线、数据总线和控制总线。地址总线的宽度取决于微控
超级会员免费看
订阅专栏 解锁全文
2296

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



