- AVR單片機C語言應用100例
- 嚴雨 廉潔編著
- 873字
- 2018-12-27 17:25:30
1.2 AT mega1 28單片機的結構
ATmega128內核采用了哈佛(Harvard)結構,如圖1.2所示。它具有獨立的數據和程序總線,程序指令通過流水線運行,在執行一條指令的同時讀取下一條指令,這種方式實現了指令的單時鐘周期運行。

圖1.2 ATmega128單片機內核的結構
ATmega128單片機的程序存儲器是可以在線編程的Flash內存,其快速訪問寄存器由32個8位通用寄存器組成,訪問時間為一個時鐘周期。因此,ATmega128單片機可以實現單時鐘周期的運算器操作。在典型的運算器操作中,兩個分別位于不同通用寄存器中的操作數被同時訪問,然后執行運算,結果再被送回到通用寄存器,整個指令執行過程僅需一個時鐘周期。
ATmega128單片機的32個通用寄存器里有6個寄存器可以聯合起來構成3個16位的X、Y、Z間接尋址寄存器,可以用來尋址數據空間以實現高效的地址運算,其中一個指針還可以作為程序存儲器查詢表的地址指針。
ATmega128單片機的算術與邏輯運算器(ALU)支持通用寄存器之間及通用寄存器和常數之間的算術與邏輯運算,ALU也可以執行單寄存器操作,當運算完成之后更新相應的狀態寄存器的內容,以反映操作結果。ATmega128單片機通過有條件或無條件的跳轉指令和調用指令來控制程序的工作流程,從而可以直接尋址整個地址空間。
ATmega128單片機的存儲器空間為線性的平面結構,其程序存儲器空間分為兩個區:引導程序區和應用程序區。其I/O存儲器空間中包含64 個可以直接尋址的地址,作為ATmega128單片機外部設備的控制寄存器、SPI和其他I/O功能的控制地址,映射到數據空間,即寄存器文件之后的地址為0x20~0x5F;另外,ATmega128 單片機在SRAM中還有可擴展的I/O空間,對應的地址為0x60~0xFF。
在ATmega128單片機響應中斷時間和進入中斷服務子程序時,其返回地址的程序計數器(PC)被保存于堆棧之中,堆棧位于通用數據SRAM中,因此其深度受限于SRAM的大小。在復位相關代碼中,首先要初始化堆棧指針SP,這個指針位于I/O空間,可以進行讀/寫訪問。ATmega128可以通過5種不同的尋址方式訪問數據SRAM。
ATmega128單片機內置一個靈活的中斷模塊,其控制寄存器位于I/O空間內,并且有一個位于狀態寄存器SREG中的全局中斷使能位。每個中斷在中斷向量表里都有獨立的中斷向量,其優先級與該中斷向量在中斷向量表的位置有關,中斷向量地址越低,其優先級越高。
- Practical Data Analysis Cookbook
- Python爬蟲開發:從入門到實戰(微課版)
- R語言編程指南
- AppInventor實踐教程:Android智能應用開發前傳
- ElasticSearch Cookbook(Second Edition)
- PHP編程基礎與實踐教程
- Clojure for Machine Learning
- Java Web從入門到精通(第3版)
- Go語言開發實戰(慕課版)
- UML2面向對象分析與設計(第2版)
- Go語言從入門到精通
- C# 7.1 and .NET Core 2.0:Modern Cross-Platform Development(Third Edition)
- C++17 By Example
- Pandas 1.x Cookbook
- Learning QGIS(Second Edition)