最簡單的考慮方法是將微控制器與PC進行比較,PC中裝有主板。該主板上是一個微處理器(英特爾,AMD芯片),可為系統(tǒng)的其余部分提供智能,RAM和EEPROM存儲器和接口,如串行端口(現(xiàn)在主要是USB端口),磁盤驅動器和顯示接口。
微控制器在單個芯片中內(nèi)置了所有這些或大部分功能,因此它不需要主板,許多組件(例如LED)可以直接連接到AVR。如果您嘗試使用微處理器執(zhí)行此操作,則砰!
AVR微型滾車有不同的封裝,有些設計用于通孔安裝,有些設計用于表面安裝。AVR 提供 8 引腳至 100 引腳,但 64 引腳或以上的 AVR 僅是表面貼裝。大多數(shù)人從 DIL(雙列直插)28 針芯片開始,如 ATmega328 或 40 針 ATmega16 或 ATmega32。
PC微處理器始終至少為32位,現(xiàn)在通常為64位。這意味著它們可以處理 32 位或 64 位塊中的數(shù)據(jù),因為它們連接到如此寬的數(shù)據(jù)總線。AVR 要簡單得多,并且處理 8 位塊中的數(shù)據(jù),因為它的數(shù)據(jù)總線是 8 位寬的,盡管現(xiàn)在有一個帶有 32 位總線的 AVR32 和一個帶有 16 位數(shù)據(jù)總線的 ATxmega 系列。
PC有一個操作系統(tǒng)(Windows或Linux),它運行的程序,如Word或Internet Explorer或Chrome,可以執(zhí)行特定操作。像AVR這樣的8位微控制器通常沒有操作系統(tǒng),盡管如果需要,它可以運行一個簡單的操作系統(tǒng),而是只運行一個程序。
就像如果你不安裝任何程序,你的電腦將毫無用處一樣,AVR必須安裝一個程序才能使用。該程序存儲在AVR內(nèi)置的內(nèi)存中,而不是像PC那樣存儲在外部磁盤驅動器上。將此程序加載到 AVR 中是使用 AVR 編程器完成的。
那么什么是程序呢?程序是一系列指令,每個指令都非常簡單,用于獲取和操作數(shù)據(jù)。在大多數(shù)使用AVR的應用中,例如洗衣機控制器,這意味著讀取輸入,檢查其狀態(tài)并相應地打開輸出。有時您可能需要修改或操作數(shù)據(jù),或將其傳輸?shù)狡渌O備,例如LCD或串行端口。
一系列簡單的二進制指令用于執(zhí)行這些基本任務,每個指令都有一個人類可以理解的等效匯編語言指令。為 AVR 編寫程序的最基本方法是使用匯編語言(盡管如果你想迂腐,你可以寫二進制數(shù))。
使用匯編語言可以讓你更多地了解 AVR 的操作以及它是如何組合在一起的。它還生成非常小和快速的代碼。缺點是你作為程序員必須做所有事情,包括內(nèi)存管理和程序結構,這可能會變得非常乏味。
為了避免這種情況,高級語言越來越多地用于為AVR,特別是C以及Basic和Java衍生產(chǎn)品編寫程序。高級意味著每一行C(或Basic或Java)代碼都可以翻譯成許多行匯編語言。
編譯器還處理程序結構和內(nèi)存管理,因此要容易得多。常用的例程,如延遲或數(shù)學,也可以存儲在庫中,并且很容易重用。C 編譯器還處理占用超過一個字節(jié)(8 位)的較大數(shù)字。
在我看來,用C語言編寫AVR程序就像開車一樣。是的,您可以非常輕松地做到這一點,但是如果出現(xiàn)問題,您不知道如何解決它,也無法處理結冰的道路等棘手情況。從匯編語言開始并編寫一些簡單的程序可以讓您了解“引擎蓋下”發(fā)生的事情,以便您了解它是如何工作的并充分利用它。然后通過各種方式交換到C,但至少你知道AVR微控制器是如何組合在一起的及其局限性。