- AVR單片機C語言程序設計實例精粹
- 張軍 宋濤編著
- 669字
- 2018-12-29 14:05:40
1.5 ATmega 16 單片機的存儲器組織
ATmega 16單片機的存儲器分為獨立尋址的Flash程序存儲器、片內SRAM數據存儲器和EEPROM 3部分,均采用線性編址,其結構如圖1-3所示。

圖1-3 ATmega 16單片機的存儲器組織
1.程序存儲器Flash
ATmega 16單片機具有16KB(8KB)的在線可編程Flash用以存放指令代碼。因為所有的AVR指令都是16位或者32位的,故Flash組成8KB×16位的形式。Flash存儲器被分為兩個區(qū):引導(Boot)程序區(qū)和應用程序區(qū)。
ATmega 16的程序計數器PC為13位,因此可以尋址整個8KB的Flash空間。因為ATmega 16單片機的程序計數器PC是13位寬,故可尋址8KB的Flash空間。Flash存儲器至少可以擦寫10000次。
2.數據存儲器SRAM
ATmega 16具有1120B的片內SRAM,由通用寄存器組(R0~R31)、I/O寄存器和數據存儲器SRAM組成。
ATmega 16單片機的SRAM采用線性編制。最低地址段0x0000~0x0001F是寄存器組,依次設置為R0~R31共32個8位通用寄存器。其中最后6個寄存器R26~R31組成X、Y、Z 3個16位的寄存器,用于存放間接尋址的地址指針,如圖1-4所示。

圖1-4 ATmega 16單片機的X、Y、Z寄存器結構
從0x0020~0x005F設置為I/O寄存器,I/O寄存器支持專用的I/O指令訪問和SRAM地址訪問。當用IN和OUT指令訪問I/O寄存器時,地址單元為0x00~0x3F;而把I/O寄存器視做普通SRAM訪問時,地址單元則為0x0020~0x005F。
I/O空間中保留的位應改寫為“1”,而保留的地址單元一般不應該對其進行操作,否則會對程序的執(zhí)行產生難以預測的影響。表1-2是ATmega 16單片機的寄存器映射表。
表1-2 ATmega 16單片機的I/O空間

(續(xù)表)

直接給用戶使用的SRAM單元為0x006F~0x045F共1024字節(jié),這部分SRAM單元用于存放在程序執(zhí)行過程中定義的各種變量。
3.數據存儲器EEPROM
ATmega 16單片機具有512字節(jié)的EEPROM,可以通過對相關的寄存器進行操作來實現對EEPROM按字節(jié)進行讀寫。EEPROM的擦寫次數在100000次以上。