首页 技术文章 setp AVR起步教程-1、ALU
|
|
AVR起步教程-1、ALU |
|
|
作者: Administrator
|
|
2007-11-14 |
|

AVR的ALU和其他CPU的ALU功能是一样的,它连接着寄存器、程序空间(FLASH),内部的SRAM和一些内部的功能模块。另外,ALU还能连接外部扩展的RAM. 我们必须通过查看AVR的DataSheet去了解那些指令是通过ALU执行的。比如,你得通过ALU给寄存器加载立即数,或者通过ALU往I/O端口写数据。 程序计数器是通过ALU与程序空间相连。它一般只是当指令被执行时被影响,或者在执行jmp(rjmp)、子程序被调用时被改变,当然,如果你使用了基于程序空间的指令的时候,它也将被改变,比如lpm。 重点要说明的是AVR的寄存器,AVR总共有32个寄存器,但是在这些寄存器里还是有些不同。 比如,低位的寄存器(0..15)是无法进行立即数操作的,就是说,诸如ldi、andi等指令是不支持低位的寄存器, ldi r0, 0x55 这样的程序是不合法的,只能这样实现 ldi r16,0x55 mov r0,r16 可以参看AVR官方的DATASHEET,以便知道那些指令可用于0..15寄存器。 虽然如此,AVR的ALU功能还是不错的,一般的51只有8个寄存器(准确的来说是4组寄存器,每组8个)。而AVR有32个,而且AVR的26..31寄存器还可以当做指针来用,可以直接寻址、操作数组等。 另外,在AVR寄存器中,r0和r1还做为乘法指令的运算结果的存放寄存器,r0存放低位,r1存放高位。而在AVRGCC中,r1还作为0数值, 比如 tmp = 0; 编译的结果是 mov r24,r1 内部的功能模块,不同的AVR型号会有所不同,具体看参看相应的官方数据手册!
|
|
最近更新 ( 2007-11-18 )
|
|