8 位微控制器可以使用 32 位整数吗?(反之亦然)

Goa*_*ero 2 c embedded microcontroller

我真的很想知道数据表的关系以及这如何改变编程级别的工作方式,

据我所知,uC 中的 8 位是 ADC 的分辨率,最高可达 256 个信号可以采样的值,你走得越高,采样信号的精度就越高,但是......

这会影响代码吗?(代码上的所有内容都是 32 位的吗?)

每当我在 32 位 uC 中声明 int 时,我实际上使用的是 int32 吗?还是int8?

438*_*427 6

8 位微控制器可以使用 32 位整数吗?

简短的回答是肯定的

当说微控制器是8位的时候,就意味着内部寄存器是8位的,算术单元用8位数字进行运算。因此,在一条指令中,您只能进行 8 位数学运算。

但是,您仍然可以进行 32 位数学运算,但这需要一些指令。例如,您需要 4 个 8 位寄存器来保存单个 32 位值。此外,您必须使用 8 位运算(即多条指令)进行数学运算。

对于两个 32 位 int的ADD,您将需要四个 8 位加法指令,此外,您还需要处理来自单个加法指令的进位的指令。

所以你可以这样做,但它会很慢,因为单个 32 位添加可能需要 10-20 条指令(或更多 - 请参阅@YannVernier 的评论)。

...(反之亦然)

AFAIK 大多数 32 位 CPU 具有允许 8 位数学运算的指令,即作为单个指令。因此,进行 8 位或 32 位数学运算将同样快(就所需的指令而言)。

每当我在 32 位 uC 中声明 int 时,我实际上使用的是 int32 吗?还是int8?

使用 32 位 CPU,int通常为 32 位,因此答案是:int32

但是从 C 标准的角度来看,int在 32 位机器上有 16 位是可以的。因此,即使 32 位很常见,您仍然必须检查特定系统上的大小才能真正确定。