最简单的考虑方法是将微控制器与PC进行比较,PC中装有主板。该主板上是一个微处理器(英特尔,AMD芯片),可为系统的其余部分提供智能,RAM和EEPROM存储器和接口,如串行端口(现在主要是USB端口),磁盘驱动器和显示接口。
微控制器在单个芯片中内置了所有这些或大部分功能,因此它不需要主板,许多组件(例如LED)可以直接连接到AVR。如果您尝试使用微处理器执行此操作,则砰!
AVR微型滚车有不同的封装,有些设计用于通孔安装,有些设计用于表面安装。AVR 提供 8 引脚至 100 引脚,但 64 引脚或以上的 AVR 仅是表面贴装。大多数人从 DIL(双列直插)28 针芯片开始,如 ATmega328 或 40 针 ATmega16 或 ATmega32。
PC微处理器始终至少为32位,现在通常为64位。这意味着它们可以处理 32 位或 64 位块中的数据,因为它们连接到如此宽的数据总线。AVR 要简单得多,并且处理 8 位块中的数据,因为它的数据总线是 8 位宽的,尽管现在有一个带有 32 位总线的 AVR32 和一个带有 16 位数据总线的 ATxmega 系列。
PC有一个操作系统(Windows或Linux),它运行的程序,如Word或Internet Explorer或Chrome,可以执行特定操作。像AVR这样的8位微控制器通常没有操作系统,尽管如果需要,它可以运行一个简单的操作系统,而是只运行一个程序。
就像如果你不安装任何程序,你的电脑将毫无用处一样,AVR必须安装一个程序才能使用。该程序存储在AVR内置的内存中,而不是像PC那样存储在外部磁盘驱动器上。将此程序加载到 AVR 中是使用 AVR 编程器完成的。
那么什么是程序呢?程序是一系列指令,每个指令都非常简单,用于获取和操作数据。在大多数使用AVR的应用中,例如洗衣机控制器,这意味着读取输入,检查其状态并相应地打开输出。有时您可能需要修改或操作数据,或将其传输到其他设备,例如LCD或串行端口。
一系列简单的二进制指令用于执行这些基本任务,每个指令都有一个人类可以理解的等效汇编语言指令。为 AVR 编写程序的最基本方法是使用汇编语言(尽管如果你想迂腐,你可以写二进制数)。
使用汇编语言可以让你更多地了解 AVR 的操作以及它是如何组合在一起的。它还生成非常小和快速的代码。缺点是你作为程序员必须做所有事情,包括内存管理和程序结构,这可能会变得非常乏味。
为了避免这种情况,高级语言越来越多地用于为AVR,特别是C以及Basic和Java衍生产品编写程序。高级意味着每一行C(或Basic或Java)代码都可以翻译成许多行汇编语言。
编译器还处理程序结构和内存管理,因此要容易得多。常用的例程,如延迟或数学,也可以存储在库中,并且很容易重用。C 编译器还处理占用超过一个字节(8 位)的较大数字。
在我看来,用C语言编写AVR程序就像开车一样。是的,您可以非常轻松地做到这一点,但是如果出现问题,您不知道如何解决它,也无法处理结冰的道路等棘手情况。从汇编语言开始并编写一些简单的程序可以让您了解“引擎盖下”发生的事情,以便您了解它是如何工作的并充分利用它。然后通过各种方式交换到C,但至少你知道AVR微控制器是如何组合在一起的及其局限性。