版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目 錄</b></p><p><b> 一 概述1</b></p><p><b> 1課題背景1</b></p><p> 2 課題設(shè)計的任務(wù)與意義1</p><p> 二 系統(tǒng)的硬件結(jié)構(gòu)功能與特點(diǎn)2</p>&
2、lt;p> 1系統(tǒng)設(shè)計思想成及其結(jié)構(gòu)2</p><p> 2 系統(tǒng)主要特點(diǎn)2</p><p> 三 ATmege128的結(jié)構(gòu)及性能4</p><p> 1 AVR單片機(jī)ATmega128的性能特點(diǎn)4</p><p> 2 ATmega128的硬件結(jié)構(gòu)8</p><p> 3 主要的控制器1
3、0</p><p> 四 外部存儲器的結(jié)構(gòu)與應(yīng)用12</p><p> 1 外部存儲器擴(kuò)展的原理12</p><p> ?。?)外部存儲器接口12</p><p> (2)地址鎖存要求12</p><p> 2 與外部存儲器相關(guān)的寄存器13</p><p> 3 外部存儲器應(yīng)
4、用的軟件實(shí)現(xiàn)15</p><p> ?。?)存儲器的擴(kuò)展15</p><p> (2)實(shí)驗調(diào)試程序16</p><p> 4 外部擴(kuò)展存儲器全部空間的利用技巧17</p><p> 五 并行I/O口的原理與應(yīng)用19</p><p> 1 擴(kuò)展并行I/O口的原理及意義19</p><
5、;p> 2 外部并行I/O口電路的設(shè)計與應(yīng)用19</p><p> ?。?)外部并行I/O口電路調(diào)試實(shí)驗20</p><p> ?。?)8255外接鍵盤實(shí)驗22</p><p> 六 外部鍵盤與LED、LCD電路的設(shè)計與應(yīng)用25</p><p> 1、8279的性能特點(diǎn)與工作原理25</p><p&g
6、t; 2 LED顯示電路實(shí)驗26</p><p> 3 LCD顯示電路設(shè)計及軟件實(shí)現(xiàn)28</p><p> 七 A/D、D/A轉(zhuǎn)換接口擴(kuò)展29</p><p> 1 A/D轉(zhuǎn)換電路設(shè)計與軟件實(shí)現(xiàn)29</p><p> (1) A/D轉(zhuǎn)換器的主要參數(shù):29</p><p> ?。?)ADC0809的特
7、性29</p><p> ?。?)A/D轉(zhuǎn)換的使用實(shí)例30</p><p> 2 D/A轉(zhuǎn)換電路的設(shè)計與軟件實(shí)現(xiàn)31</p><p> ?。?)D/A轉(zhuǎn)換基本原理:31</p><p> (2)D/A轉(zhuǎn)換的主要性能指標(biāo)31</p><p> ?。?)D/A轉(zhuǎn)換軟件實(shí)現(xiàn)32</p><
8、;p> 八 SPI、USART、FPGA接口的應(yīng)用33</p><p> 1 SPI的電路設(shè)計與軟件實(shí)現(xiàn)33</p><p> (1) SPI的通信說明:33</p><p> (2) SPI的寄存器:33</p><p> (3)SPI的軟件實(shí)現(xiàn)35</p><p> 2 USART接口電
9、路與通信36</p><p> ?。?)USART接口電路的特點(diǎn)36</p><p> ?。?)USART口的通信實(shí)驗37</p><p> 3 FPGA接口電路與通信38</p><p> ?。?)FPGA的功能與結(jié)構(gòu)38</p><p> ?。?)FPGA 接口實(shí)驗軟件實(shí)現(xiàn)38</p>
10、<p><b> 結(jié)束語41</b></p><p><b> 參考文獻(xiàn)42</b></p><p><b> 致謝43</b></p><p><b> 附錄 144</b></p><p> 程序一 8255擴(kuò)展接鍵盤實(shí)驗
11、44</p><p> 程序二 LED顯示接口實(shí)驗46</p><p> 程序三 鍵盤顯示綜合實(shí)驗51</p><p> 程序四 LCD 顯示8 字循環(huán)顯示60</p><p> 程序五 A/D轉(zhuǎn)換實(shí)驗63</p><p> 程序六 D/A轉(zhuǎn)換實(shí)驗64</p><p><
12、;b> 一 概述</b></p><p><b> 1課題背景</b></p><p> 單片機(jī)就是由一塊芯片組成的微機(jī)系統(tǒng)。片內(nèi)包括了CPU、程序存儲器、數(shù)據(jù)存儲器、定時/計數(shù)器及I/O口。單片機(jī)技術(shù)作為計算機(jī)技術(shù)的一個分支,廣泛的應(yīng)用在工業(yè)控制、儀器儀表、機(jī)電一體化產(chǎn)品、家用電器等各個領(lǐng)域。從應(yīng)用領(lǐng)域來說單片機(jī)主要用于控制,所以也叫做微控
13、制器(Microcomputer)。從單片機(jī)呈現(xiàn)給用戶的供應(yīng)狀態(tài)看,單片機(jī)僅是一塊集成電路芯片,它的所有功能部件都集成在一塊芯片上,所以稱之為單片機(jī)(Sing-Chip Microcomputer)。雖然單片機(jī)的機(jī)構(gòu)和指令系統(tǒng)與通用微型計算機(jī)是有差別的,但基本的功能模塊和基本的工作原來是一樣的。</p><p> 自從單片機(jī)問世以來,單片機(jī)技術(shù)已經(jīng)發(fā)展成為計算機(jī)技術(shù)中的一個非常有活力的分支,它有自己的特征、規(guī)范
14、、發(fā)展道路和應(yīng)用環(huán)境。世界上各大芯片制造公司都推出了自己的單片機(jī),從4位發(fā)展到8位、16位到32位,功能、性能在不斷提高;單片機(jī)發(fā)展到現(xiàn)在,單片機(jī)產(chǎn)品多達(dá)50多個系列,300多種型號。為了適應(yīng)不同的需要,各種單片機(jī)都有自己的特點(diǎn),有的側(cè)重與運(yùn)算,有的側(cè)重與速度,有的側(cè)重與組建網(wǎng)絡(luò)等。</p><p> 隨著單片機(jī)技術(shù)的發(fā)展,現(xiàn)在容量大、速度快、高性能、低功耗的單片機(jī)已經(jīng)成為主流。AVR單片機(jī)是ATMEL公司19
15、97年推出的全新配置精簡指令集(RISC)單片機(jī)系列。片內(nèi)存儲器采用FLASH存儲器,可以反復(fù)修改上千次,便于新產(chǎn)品的開發(fā);程序高度機(jī)密 ,避免加密處理。</p><p> AVR單片機(jī)打破了舊的設(shè)計格局。廢除了機(jī)器周期,拋棄了復(fù)雜指令計算機(jī)追求指令完備的做法,采用精簡指令集。以字為長度單位,將內(nèi)容豐富的操作數(shù)與操作碼安排在一個字之中。取指周期短,又可預(yù)取指令,實(shí)現(xiàn)流水線作業(yè)。故可高速執(zhí)行指令;并且這種速度的升
16、躍,是以高可靠性為后盾的。</p><p> AVR單片機(jī)硬件結(jié)構(gòu)采用8位機(jī)與16位機(jī)的折中策略,即采用局部寄存器堆和單體高速輸入/輸出的方案。這樣即提高了指令執(zhí)行速度,克服了瓶頸現(xiàn)象;增強(qiáng)了功能,又減少了對外設(shè)管理的開銷。相對簡化了硬件結(jié)構(gòu)、降低了成本,故AVR單片機(jī)在速度、性能、成本方面取得了優(yōu)化平衡,是一種高性價比的單片機(jī)。</p><p> 2 課題設(shè)計的任務(wù)與意義</p
17、><p> 本課題立足于設(shè)計一個功能全面,資源豐富的AVR系統(tǒng)用戶板,以 ATMEL 公司的ATMEGA128高檔8位單片機(jī)為核心,功能全面,外部資源配置齊全的用戶板系統(tǒng)。本課題解決了外部資源配置不全的問題。用于對高年級學(xué)生進(jìn)行高檔8位機(jī)的技能訓(xùn)練,要求完成本課題的系統(tǒng)設(shè)計。利用嵌入式ATmega128開發(fā)用戶板,不僅可以進(jìn)行初級入門的學(xué)習(xí),也可以進(jìn)行更高層次的學(xué)習(xí)和訓(xùn)練,或作為產(chǎn)品設(shè)計開發(fā)的前期開發(fā)應(yīng)用,非常適合
18、高等院校和電子工程技術(shù)人員使用。</p><p> 由于這個系統(tǒng)十分龐大,需要擴(kuò)展大量的外部電路,還需要編寫大量的調(diào)試和應(yīng)用程序,在這樣短的時間內(nèi)需要多人合作才能完成,所以我們同組三人進(jìn)行了明確的任務(wù)分工:硬件由吳韜同學(xué)完成,軟件(匯編和C語言)由我和包漢舉同學(xué)完成。</p><p> 二 系統(tǒng)的硬件結(jié)構(gòu)功能與特點(diǎn)</p><p> 1系統(tǒng)設(shè)計思想成及其結(jié)構(gòu)&
19、lt;/p><p> 本系統(tǒng)是一個以 ATMEL 公司的高檔8位單片機(jī)ATMEGA128為核心的高檔單片機(jī)用戶使用系統(tǒng),功能全面,外部資源配置齊全,包括 64K RAM、LCD顯示電路、鍵盤控制電路、PIO口、A/D、D/A與LED顯示電路擴(kuò)展,以及FPGA接口、SPI接口與UART接口等。</p><p> 本系統(tǒng)采用模塊化設(shè)計思想,在各個模塊用三總線結(jié)構(gòu)實(shí)現(xiàn),(即通過數(shù)據(jù)總線、地址總線
20、和控制總線來連接)。外圍芯片均通過三總線結(jié)構(gòu)相連,由三總線進(jìn)行控制。這樣的電路條理清晰,資源分配方便合理。并且便于局部的修改。在系統(tǒng)擴(kuò)展和配置設(shè)計時,遵循以下原則:</p><p> (1) 盡可能選擇典型大眾化的電路,并符合單片機(jī)的常規(guī)用法。為硬件系統(tǒng)的標(biāo)準(zhǔn)化、模塊化奠定良好的基礎(chǔ)。</p><p> (2) 系統(tǒng)的擴(kuò)展與外圍設(shè)備配置的水平應(yīng)充分滿足應(yīng)用系統(tǒng)當(dāng)前的功能要求,并留有適當(dāng)
21、余地,便于以后進(jìn)行功能的擴(kuò)充。</p><p> (3) 硬件結(jié)構(gòu)的設(shè)計應(yīng)考慮應(yīng)用軟件方案的實(shí)現(xiàn)。軟件能夠?qū)崿F(xiàn)的功能盡可能由軟件實(shí)現(xiàn),以簡化硬件結(jié)構(gòu),提高可靠性。但必須注意,由軟件實(shí)現(xiàn)的硬件功能,其響應(yīng)時間要比直接用硬件來的長。因此,某些功能選擇以軟件代硬件實(shí)現(xiàn)時,應(yīng)綜合考慮系統(tǒng)響應(yīng)速度,實(shí)時要求等相關(guān)的技術(shù)指針。</p><p> (4) 整個系統(tǒng)中相關(guān)的器件要盡可能做到性能匹配。如
22、果系統(tǒng)中相關(guān)的器件性能差異很大,系統(tǒng)綜合性能將降低,甚至不能正常工作。</p><p> (5) 可靠性及抗干擾設(shè)計是硬件設(shè)計中不可忽視的一部分,它包括芯片,器件選擇,去耦濾波,印刷電路板布線,信道隔離等。如果設(shè)計中只注重功能實(shí)現(xiàn),而忽視可靠性及抗干擾設(shè)計,到頭來只能是事倍功半,甚至?xí)斐上到y(tǒng)崩潰,前功盡棄。</p><p> (6) 單片機(jī)外接電路較多時,必須考慮其驅(qū)動能力。驅(qū)動能力
23、不足時,系統(tǒng)工作不可靠。解決的辦法是增加驅(qū)動能力,增強(qiáng)總線驅(qū)動器或者減少芯片功耗,降低總線負(fù)載。</p><p><b> 2 系統(tǒng)主要特點(diǎn)</b></p><p> 在體現(xiàn)上述硬件設(shè)計思想時,本系統(tǒng)具有以下幾大主要特點(diǎn):</p><p> (1) 本系統(tǒng)采用模塊化設(shè)計思想,在各個模塊用三總線結(jié)構(gòu)采用標(biāo)準(zhǔn)的三總線結(jié)構(gòu)。這樣的電路條理清晰,
24、資源分配方便合理。并且便于局部的修改。</p><p> (2) 大量采用性能非常良好的外圍芯片。如 RAMTRON公司的新型鐵電內(nèi)存—FM24C256,具有掉電資料不丟失,可承受超過一百億次擦寫操作,資料保存時間長等特點(diǎn)。還有片外數(shù)據(jù)存儲器BR62256F,LCD液晶顯示器WGM12864M等。系統(tǒng)的核心—ATMEGA128本身就是一款非常先進(jìn)的高檔單片機(jī)。這些先進(jìn)的配置為用戶緊跟先進(jìn)水平,提高專業(yè)技能提供了
25、良好的外部條件。</p><p> (3) 提供了豐富的用戶自定義擴(kuò)展I/O口。本系統(tǒng)外部資源非常豐富,很容易滿足很多設(shè)計和用戶的需求。為了使用戶能夠滿足更高的動手需求和設(shè)計需要,以及對以后擴(kuò)展升級的需要,我們設(shè)定了許多用戶自定義I/O口。包括定時/計數(shù)脈沖自定義擴(kuò)展口,中斷自定義擴(kuò)展口,8255芯片自定義擴(kuò)展口等。這些正體現(xiàn)了系統(tǒng)用戶板的設(shè)計思想,給予了用戶很大的自我發(fā)揮空間。</p><
26、p> 三 ATmege128的結(jié)構(gòu)及性能</p><p> 1 AVR單片機(jī)ATmega128的性能特點(diǎn)</p><p> 高性能、低功耗的AVR® 8 位微處理器</p><p> ? 先進(jìn)的RISC 結(jié)構(gòu)</p><p> – 133 條指令– 大多數(shù)可以在一個時鐘周期內(nèi)完成</p><p&g
27、t; – 32 x 8 通用工作寄存器+ 外設(shè)控制寄存器</p><p><b> – 全靜態(tài)工作</b></p><p> – 工作于16 MHz 時性能高達(dá)16 MIPS</p><p> – 只需兩個時鐘周期的硬件乘法器</p><p> ? 非易失性的程序和數(shù)據(jù)存儲器</p><p&
28、gt; – 128K 字節(jié)的系統(tǒng)內(nèi)可編程Flash</p><p> 壽命: 10,000 次寫/ 擦除周期</p><p> – 具有獨(dú)立鎖定位、可選擇的啟動代碼區(qū)</p><p> 通過片內(nèi)的啟動程序?qū)崿F(xiàn)系統(tǒng)內(nèi)編程</p><p> 真正的讀- 修改- 寫操作</p><p> – 4K字節(jié)的EEPRO
29、M</p><p> 壽命: 100,000 次寫/ 擦除周期</p><p> – 4K 字節(jié)的內(nèi)部SRAM</p><p> – 多達(dá)64K 字節(jié)的優(yōu)化的外部存儲器空間</p><p> – 可以對鎖定位進(jìn)行編程以實(shí)現(xiàn)軟件加密</p><p> – 可以通過SPI 實(shí)現(xiàn)系統(tǒng)內(nèi)編程</p>&
30、lt;p> ? JTAG 接口( 與IEEE 1149.1 標(biāo)準(zhǔn)兼容)</p><p> – 遵循JTAG 標(biāo)準(zhǔn)的邊界掃描功能</p><p> – 支持?jǐn)U展的片內(nèi)調(diào)試</p><p> – 通過JTAG 接口實(shí)現(xiàn)對Flash, EEPROM, 熔絲位和鎖定位的編程</p><p><b> ? 外設(shè)特點(diǎn)</b
31、></p><p> – 兩個具有獨(dú)立的預(yù)分頻器和比較器功能的8 位定時器/ 計數(shù)器</p><p> – 兩個具有預(yù)分頻器、比較功能和捕捉功能的16 位定時器/ 計數(shù)器</p><p> – 具有獨(dú)立預(yù)分頻器的實(shí)時時鐘計數(shù)器</p><p> – 兩路8 位PWM</p><p> – 6路分辨率可編
32、程(2 到16 位)的PWM</p><p><b> – 輸出比較調(diào)制器</b></p><p> – 8路10 位ADC</p><p><b> 8個單端通道</b></p><p><b> 7個差分通道</b></p><p> 2個
33、具有可編程增益(1x, 10x, 或200x)的差分通道</p><p> – 面向字節(jié)的兩線接口</p><p> – 兩個可編程的串行USART</p><p> – 可工作于主機(jī)/ 從機(jī)模式的SPI 串行接口</p><p> – 具有獨(dú)立片內(nèi)振蕩器的可編程看門狗定時器</p><p><b>
34、 – 片內(nèi)模擬比較器</b></p><p> ? 特殊的處理器特點(diǎn)</p><p> – 上電復(fù)位以及可編程的掉電檢測</p><p> – 片內(nèi)經(jīng)過標(biāo)定的RC 振蕩器</p><p> – 片內(nèi)/ 片外中斷源</p><p> – 6種睡眠模式: 空閑模式、ADC 噪聲抑制模式、省電模式、掉
35、電模式、Standby 模式以及</p><p> 擴(kuò)展的Standby 模式</p><p> – 可以通過軟件進(jìn)行選擇的時鐘頻率</p><p> – 通過熔絲位可以選擇ATmega103 兼容模式</p><p> – 全局上拉禁止功能</p><p><b> ? I/O 和封裝</b
36、></p><p> – 53個可編程I/O 口線</p><p> – 64引腳TQFP 與64 引腳MLF 封裝</p><p><b> ? 工作電壓</b></p><p> – 2.7 - 5.5V ATmega128L</p><p> – 4.5 - 5.5V ATm
37、ega128</p><p><b> ? 速度等級</b></p><p> – 0 - 8 MHz ATmega128L</p><p> – 0 - 16 MHz ATmega128</p><p> ATmega128 的外部結(jié)構(gòu)</p><p> ATmega128為基于AVR
38、 RISC結(jié)構(gòu)的8位低功耗CMOS微處理器。由于其先進(jìn)的指令集以及單周期指令執(zhí)行時間, ATmega128 的數(shù)據(jù)吞吐率高達(dá)1 MIPS/MHz,從而可以緩減系統(tǒng)在功耗和處理速度之間的矛盾。</p><p> Atmega128結(jié)構(gòu)框圖</p><p> AVR 內(nèi)核具有豐富的指令集和32 個通用工作寄存器。所有的寄存器都直接與算邏單元(ALU) 相連接,使得一條指令可以在一個時鐘周期
39、內(nèi)同時訪問兩個獨(dú)立的寄存器。這種結(jié)構(gòu)大大提高了代碼效率,并且具有比普通的復(fù)雜指令集微處理器高10 倍的數(shù)據(jù)吞吐率。</p><p> ATmega128 具有如下特點(diǎn):128K 字節(jié)的系統(tǒng)內(nèi)可編程Flash( 具有在寫的過程中還可以讀的能力,即RWW)、4K 字節(jié)的EEPROM、4K 字節(jié)的SRAM、53 個通用I/O 口線、32個通用工作寄存器、實(shí)時時鐘RTC、4 個靈活的具有比較模式和PWM 功能的定時器/
40、 計數(shù)器(T/C)、兩個USART、面向字節(jié)的兩線接口TWI、8 通道10 位ADC( 具有可選的可編程增益)、具有片內(nèi)振蕩器的可編程看門狗定時器、SPI 串行端口、與IEEE 1149.1 規(guī)范兼容的JTAG 測試接口( 此接口同時還可以用于片上調(diào)試),以及六種可以通過軟件選擇的省電模式。</p><p> 空閑模式時CPU 停止工作,而SRAM、T/C、SPI 端口以及中斷系統(tǒng)繼續(xù)工作;掉電模式時晶體振蕩器
41、停止振蕩,所有功能除了中斷和硬件復(fù)位之外都停止工作,寄存器的內(nèi)容則一直保持;省電模式時異步定時器繼續(xù)運(yùn)行,以允許用戶維持時間基準(zhǔn),器件的其他部分則處于睡眠狀態(tài); ADC 噪聲抑制模式時CPU 和所有的I/O 模塊停止運(yùn)行,而異步定時器和ADC 繼續(xù)工作,以減少ADC 轉(zhuǎn)換時的開關(guān)噪聲; Standby 模式時振蕩器工作而其他部分睡眠,使得器件只消耗極少的電流,同時具有快速啟動能力;擴(kuò)展Standby 模式則允許振蕩器異步定時器繼續(xù)工作。
42、</p><p> Atmega128的封裝與引腳如下:</p><p> ATmega128是以Atmel 的高密度非易失性內(nèi)存技術(shù)生產(chǎn)的。片內(nèi)ISP Flash 可以通過SPI 接口、通用編程器,或引導(dǎo)程序多次編程。引導(dǎo)程序可以使用任何接口來下載應(yīng)用程序到應(yīng)用Flash存儲器。在更新應(yīng)用Flash存儲器時引導(dǎo)Flash區(qū)的程序繼續(xù)運(yùn)行,實(shí)現(xiàn)RWW操作。通過將8 位RISC CPU
43、與系統(tǒng)內(nèi)可編程的Flash 集成在一個芯片內(nèi), ATmega128 為許多嵌入式控制應(yīng)用提供了靈活而低成本的方案。ATmega128 AVR有整套的開發(fā)工具,包括C編譯器,宏匯編,程序調(diào)試器/ 仿真器和評估板。</p><p><b> 引腳說明 </b></p><p> VCC 數(shù)字電路的電源。</p><p><b> G
44、ND 地。</b></p><p> 端口A(PA7..PA0) 端口A 為8 位雙向I/O 口,并具有可編程的內(nèi)部上拉電阻。其輸出緩沖器具有對稱的驅(qū)動特性,可以輸出和吸收大電流。作為輸入使用時,若內(nèi)部上拉電阻使能,則端口被外部電路拉低時將輸出電流。復(fù)位發(fā)生時端口A 為三態(tài)。端口A 也可以用做其他不同的特殊功能,請參見P 68。</p><p> 端口B(PB7..PB0)
45、 端口B 為8 位雙向I/O 口,并具有可編程的內(nèi)部上拉電阻。其輸出緩沖器具有對稱的驅(qū)動特性,可以輸出和吸收大電流。作為輸入使用時,若內(nèi)部上拉電阻使能,則端口被外部電路拉低時將輸出電流。復(fù)位發(fā)生時端口B 為三態(tài)。端口B 也可以用做其他不同的特殊功能,請參見P 69。端口C(PC7..PC0) 端口C 為8 位雙向I/O 口,并具有可編程的內(nèi)部上拉電阻。其輸出緩沖器具有對稱的驅(qū)動特性,可以輸出和吸收大電流。作為輸入使用時,若內(nèi)部上拉電阻使
46、能,則端口被外部電路拉低時將輸出電流。復(fù)位發(fā)生時端口C 為三態(tài)。端口C 也可以用做其他不同的特殊功能,請參見P 72。在ATmega103 兼容模式下,端口C 只能作為輸出,而且在復(fù)位發(fā)生時不是三態(tài)。</p><p> 端口D(PD7..PD0) 端口D 為8 位雙向I/O 口,并具有可編程的內(nèi)部上拉電阻。其輸出緩沖器具有對稱的驅(qū)動特性,可以輸出和吸收大電流。作為輸入使用時,若內(nèi)部上拉電阻使能,則端口被外部電路
47、拉低時將輸出電流。復(fù)位發(fā)生時端口D 為三態(tài)。端口D 也可以用做其他不同的特殊功能,請參見P 73。</p><p> 端口E(PE7..PE0) 端口E 為8 位雙向I/O 口,并具有可編程的內(nèi)部上拉電阻。其輸出緩沖器具有對稱的驅(qū)動特性,可以輸出和吸收大電流。作為輸入使用時,若內(nèi)部上拉電阻使能,則端口被外部電路拉低時將輸出電流。復(fù)位發(fā)生時端口E 為三態(tài)。</p><p> 端口E 也可
48、以用做其他不同的特殊功能,請參見P 75。</p><p> 端口F(PF7..PF0) 端口F 為ADC 的模擬輸入引腳。</p><p> 如果不作為ADC 的模擬輸入,端口F 可以作為8 位雙向I/O 口,并具有可編程的內(nèi)部上拉電阻。其輸出緩沖器具有對稱的驅(qū)動特性,可以輸出和吸收大電流。作為輸入使用時,若內(nèi)部上拉電阻使能,則端口被外部電路拉低時將輸出電流。復(fù)位發(fā)生時端口F 為三態(tài)
49、。如果使能了JTAG 接口,則復(fù)位發(fā)生時引腳PF7(TDI)、PF5(TMS) 和PF4(TCK) 的上拉電阻使能。端口F 也可以作為JTAG 接口。在ATmega103 兼容模式下,端口F 只能作為輸入引腳。</p><p> 端口G(PG4..PG0) 端口G 為5 位雙向I/O 口,并具有可編程的內(nèi)部上拉電阻。其輸出緩沖器具有對稱的驅(qū)動特性,可以輸出和吸收大電流。作為輸入使用時,若內(nèi)部上拉電阻使能,則端口
50、被外部電路拉低時將輸出電流。復(fù)位發(fā)生時端口G 為三態(tài)。端口G 也可以用做其他不同的特殊功能。在ATmega103 兼容模式下,端口G 只能作為外部存儲器的所存信號以及32 kHz 振蕩器的輸入,并且在復(fù)位時這些引腳初始化為PG0 = 1, PG1 = 1 以及PG2 = 0。PG3 和PG4 是振蕩器引腳。</p><p> RESET 復(fù)位輸入引腳。超過最小門限時間的低電平將引起系統(tǒng)復(fù)位。門限時間在P 47T
51、able 19說明。低于此時間的脈沖不能保證可靠復(fù)位。</p><p> XTAL1 反向振蕩器放大器及片內(nèi)時鐘操作電路的輸入。</p><p> XTAL2 反向振蕩器放大器的輸出。</p><p> AVCC AVCC為端口F以及ADC轉(zhuǎn)換器的電源,需要與VCC相連接,即使沒有使用ADC也應(yīng)該如</p><p> 此。使用ADC
52、時應(yīng)該通過一個低通濾波器與VCC 連接。</p><p> AREF AREF 為ADC 的模擬基準(zhǔn)輸入引腳。</p><p> PEN PEN是SPI串行下載的使能引腳。在上電復(fù)位時保持PEN為低電平將使器件進(jìn)入SPI串行</p><p> 下載模式。在正常工作過程中PEN 引腳沒有其他功能。</p><p> 2 ATmega12
53、8的硬件結(jié)構(gòu)</p><p> CPU 的主要任務(wù)是保證程序的正確執(zhí)行。因此它必須能夠訪問存儲器,執(zhí)行運(yùn)算,控制外設(shè)以及處理中斷。</p><p><b> ?。?)結(jié)構(gòu)綜述:</b></p><p> 為了得到最大程度的性能以及并行性, AVR 采用了Harvard 結(jié)構(gòu),具有獨(dú)立的數(shù)據(jù)和程序總線。程序存儲器的指令通過一級流水線運(yùn)行。CP
54、U 在執(zhí)行一條指令的同時讀取下一條指令( 在本文稱為預(yù)取)。這個概念實(shí)現(xiàn)了指令的單時鐘周期運(yùn)行。程序存儲器為可以快速訪問寄存器文件包括32個8位通用工作寄存器,而且都可以在一個時鐘周期內(nèi)訪問。從而實(shí)現(xiàn)單時鐘周期的ALU 操作。</p><p> 在典型的ALU 操作過程中,兩個位于寄存器文件中的操作數(shù)同時被訪問,然后執(zhí)行相應(yīng)的運(yùn)算,結(jié)果再被送回寄存器文件。整個過程僅需要一個寄存器文件里有6 個寄存器可以用作3
55、個16 位的間接地址寄存器指針以尋址數(shù)據(jù)空間,實(shí)現(xiàn)高效的地址運(yùn)算。其中一個指針還可以作為程序存儲器查詢表的地址指針。這些附加ALU支持寄存器之間以及寄存器</p><p> AVR 結(jié)構(gòu)的方框圖</p><p> 和常數(shù)之間的算術(shù)和邏輯運(yùn)算。ALU也可以執(zhí)行單寄存器程序流程通過有/ 無條件的跳轉(zhuǎn)指令和調(diào)用指令來控制,從而直接尋址整個地址空間。大多數(shù)指令長度為16 位,亦即每個程序存儲器
56、地址都包含一條16 位或32 位的指令。程序存儲器空間分為兩個區(qū):引導(dǎo)程序區(qū)和應(yīng)用程序區(qū)。這兩個區(qū)都有專門的鎖定位以實(shí)現(xiàn)讀和讀/ 寫保護(hù)。用于寫應(yīng)用程序區(qū)的SPM 指令必須位于引導(dǎo)程序區(qū)。</p><p> 在中斷和調(diào)用子程序時返回地址程序計數(shù)器(PC) 保存于堆棧之中。堆棧位于通用數(shù)據(jù)SRAM,故此其深度僅受限于SRAM 的大小。在復(fù)位例程里用戶首先要初始化堆棧指針</p><p>
57、 SP。這個指針位于I/O 空間,可以進(jìn)行讀寫訪問。數(shù)據(jù)SRAM 可以通過5 種不同的尋址模</p><p><b> 式進(jìn)行訪問。</b></p><p> AVR 存儲器空間為線性的平面結(jié)構(gòu)。</p><p> AVR 具有一個靈活的中斷模塊??刂萍拇嫫魑挥贗/O 空間。狀態(tài)寄存器里有全局中斷使能</p><p&g
58、t; 位。在程序存儲器起始處有一個中斷向量表,每一個中斷在此都有獨(dú)立的中斷向量。各個</p><p> 中斷的優(yōu)先級與其在中斷向量表的位置有關(guān),中斷向量地址越低,優(yōu)先級越高。</p><p> I/O存儲器空間包含64 個可以直接尋址的地址。映射到數(shù)據(jù)空間即為寄存器文件之后的地址$20 - $5F。此外,ATmega128 在SRAM 里還有擴(kuò)展的I/O 空間,位于地址$60 - $
59、FF。</p><p> 但是只能使用ST/STS/STD 和LD/LDS/LDD 指令。</p><p><b> 3 主要的控制器</b></p><p> (1)算邏輯單元ALU</p><p> ALU 與32 個通用工作寄存器直接相連。寄存器與寄存器之間、寄存器與立即數(shù)之間的ALU 運(yùn)算只需要一個時鐘周
60、期。ALU 操作分為3 類:算術(shù)、邏輯和位操作。此外還提供了支持無/ 有符號數(shù)和分?jǐn)?shù)乘法的乘法器。具體請參見指令集。</p><p> ?。?)狀態(tài)寄存器SREG</p><p> 狀態(tài)寄存器包含了最近執(zhí)行的算術(shù)指令的結(jié)果信息。這些信息可以用來改變程序流程以實(shí)現(xiàn)條件操作。狀態(tài)寄存器的內(nèi)容只有在ALU 運(yùn)算結(jié)束后才會更新。這樣,在多數(shù)情況下就不需要專門的比較指令了,從而使系統(tǒng)運(yùn)行更快速,代
61、碼效率更高。</p><p> 在進(jìn)入中斷例程時狀態(tài)寄存器不會自動保存;中斷返回時也不會自動恢復(fù)。這些工作需要軟件來處理。</p><p> AVR 中斷寄存器– SREG – 定義如下:</p><p> ? Bit 7 – I: 全局中斷使能</p><p> 置位時使能全局中斷。單獨(dú)的中斷使能由其他獨(dú)立的控制寄存器控制。如果I
62、清零,則不</p><p> 論單獨(dú)中斷標(biāo)志置位與否,都不會產(chǎn)生中斷。任意一個中斷發(fā)生后I 清零,而執(zhí)行RETI</p><p> 指令后置位以使能中斷。I 也可以通過SEI 和CLI 指令來置位和清零。</p><p> ? Bit 6 – T: 位拷貝存儲</p><p> 位拷貝指令BLD 和BST 利用T 作為目的或源地址。B
63、ST 把寄存器的某一位拷貝到T,而</p><p> BLD 把T 拷貝到寄存器的某一位。</p><p> ? Bit 5 – H: 半進(jìn)位標(biāo)志</p><p> 半進(jìn)位標(biāo)志H 表示算術(shù)操作發(fā)生了半進(jìn)位。此標(biāo)志對于BCD 運(yùn)算非常有用。</p><p> ? Bit 4 – S: 符號位, S = N ⊕ V</p>
64、<p> S 為負(fù)數(shù)標(biāo)志N 與2 的補(bǔ)碼溢出標(biāo)志V 的異或。</p><p> ? Bit 3 – V: 2 的補(bǔ)碼溢出標(biāo)志</p><p> 支持2 的補(bǔ)碼運(yùn)算。</p><p> ? Bit 2 – N: 負(fù)數(shù)標(biāo)志</p><p> 表明算術(shù)或邏輯操作結(jié)果為負(fù)。</p><p> ? Bit
65、1 – Z: 零標(biāo)志</p><p> 表明算術(shù)或邏輯操作結(jié)果為零。</p><p> ? Bit 0 – C: 進(jìn)位標(biāo)志</p><p> 表明算術(shù)或邏輯操作發(fā)生了進(jìn)位。</p><p> 四 外部存儲器的結(jié)構(gòu)與應(yīng)用</p><p> 1 外部存儲器擴(kuò)展的原理</p><p> ?。?/p>
66、1)外部存儲器接口</p><p> ATMmega128比AT90S8535多了很多的功能,內(nèi)存更大,資源更加豐富。并且ATMmega128與AT90S8535不同,它允許進(jìn)行片外數(shù)據(jù)存儲器的擴(kuò)展,有八位的數(shù)據(jù)總線,16位的外部地址總線,以及有ALE、RD、WR等組成的控制總線,還有片外尋址的指令,這樣一來就可以對它進(jìn)行大量的片外資源的擴(kuò)展。</p><p><b> 接口
67、包括:</b></p><p> 與外部存儲器打交道有:AD7:0:多工的地址總線和數(shù)據(jù)總線。A15:8:高位地址總線( 位數(shù)可配置)。ALE:地址鎖存使能。RD:讀鎖存信號。WR:寫使能信號。</p><p> 外部存儲器接口控制位于3 個寄存器當(dāng)中, MCU 控制寄存器– MCUCR、外部存儲器控制寄存器A – XMCRA,以及外部存儲器控制寄存器B – XMCRB。&
68、lt;/p><p> 使能XMEM 接口后, XMEM 接口數(shù)據(jù)方向寄存器按照接口要求配置。XMEM 接口將自動檢測當(dāng)前訪問的是內(nèi)部存儲器還是外部存儲器。如果訪問的是外部存儲器, XMEM 接口輸出地址,數(shù)據(jù)和控制信號。當(dāng)ALE 產(chǎn)生由高電平到低電平的變化時, AD7:0 出現(xiàn)有效的地址。數(shù)據(jù)傳輸過程中ALE 保持為低。使能XMEM接口之后,即使訪問內(nèi)部存儲器也會在地址線,數(shù)據(jù)線和ALE引腳產(chǎn)生動作,但是RD 和W
69、R 信號不會發(fā)生變化。禁止外部存儲器接口之后,相關(guān)引腳就可以使用正常的引腳數(shù)據(jù)方向設(shè)置了。要注意的是,XMEM 接口禁止后內(nèi)部SRAM 地址以上的存儲器不會映射為內(nèi)部SRAM。圖一說明了如何利用一個8 位鎖存器將外部SRAM 連接到AVR。</p><p> ?。?)地址鎖存要求 </p><p> 由于XRAM 接口的工作速度很高,當(dāng)系統(tǒng)的工作條件高于8 MHz /4V 和4 MHz
70、/3V</p><p> 時要注意小心選擇地址鎖存器。此時典型的老式74HC 系列鎖存器已經(jīng)無法滿足要求了。XRAM接口與74AHC系列的鎖存器相兼容。當(dāng)然,其他滿足時序要求的鎖存器也是可以使用的。地址鎖存器的主要參數(shù)為:</p><p> ? D到Q 的傳輸延遲(tPD)。</p><p> ? 在G 拉低之前的數(shù)據(jù)建立時間(tSU)。</p>
71、<p> ? G拉低之后的數(shù)據(jù)( 地址) 保持時間(tTH)。</p><p> XRAM接口的設(shè)計出發(fā)點(diǎn)是保證G拉低之后地址信號保持時間最少為th = 5 ns。具體請參考Tables 137~Tables 144“ 外部數(shù)據(jù)存儲器時序” 中的參數(shù)tLAXX_LD/tLLAXX_ST。計算外部器件的訪問時間要求時必須考慮D 到Q 的傳輸延遲tPD。而G 拉低之前的數(shù)據(jù)建立時間tSU決不能大于地址
72、有效到ALE拉低的時間(tAVLLC)減去PCB的線路延遲時間(與負(fù)載電容有關(guān))。</p><p> 2 與外部存儲器相關(guān)的寄存器</p><p> ?。?)MCU 控制寄存器- MCUCR</p><p> ? Bit 7 – SRE: 外部SRAM/XMEM 使能</p><p> SRE 為"1“ 時外部存儲器接口使能。
73、,引腳AD7:0,A15:8,ALE,WR和RD 工作于第二功</p><p> 能,且自動按照要求配置端口方向寄存器。SRE 清零將使外部SRAM 無效,相關(guān)端口可</p><p> 以當(dāng)作普通I/O 口使用。</p><p> ? Bit 6 – SRW10: 等待狀態(tài)選擇位</p><p> 在常規(guī)模式下,該位與寄存器XMCRA
74、中的SRW11位組合使用。對于ATmega103兼容模式,SRW10寫"1“將使能等待狀態(tài),并如Figure 14所示在讀/寫過程中</p><p><b> 插入一個時鐘周期。</b></p><p> ?。?)外部存儲器控制寄存器A -XMCRA</p><p> ? Bit 7 – Res: 保留</p>&l
75、t;p> 保留位,讀操作返回值為零。在寫數(shù)據(jù)時要寫入0 以保證與未來產(chǎn)品的兼容。</p><p> ? Bit 6..4 – SRL2, SRL1, SRL0: 等待狀態(tài)存儲器區(qū)限制</p><p> 對于不同的外部存儲器地址可以配置不同的等待狀態(tài)。外部存儲器地址空間可以分為兩個區(qū),而且可以具有獨(dú)立的等待狀態(tài)設(shè)置位。SRL2, SRL1 和SRL0 用來對存儲器地址空間進(jìn)行分區(qū)
76、,如Table 3 和Figure 11 所示。SRL2,SRL1 和SRL0 的缺省值為0,即整個外部存儲器地址空間為一個大區(qū)。此時等待狀態(tài)通過SRW11 和SRW10 設(shè)置。</p><p> SRL2..0 不同設(shè)置對應(yīng)的分區(qū)限制</p><p> ? Bit 1 和MCUCR 的Bit 6 – SRW11, SRW10: </p><p> 高地址存儲
77、器區(qū)等待狀態(tài)選擇位SRW11 和SRW10 用來控制外部存儲器高地址區(qū)等待狀態(tài)的數(shù)目,如Table 4 所示。</p><p> ? Bit 3..2 – SRW01, SRW00: </p><p> 低地址存儲器區(qū)等待狀態(tài)選擇位SRW01 和SRW00 用來控制外部存儲器低地址區(qū)等待狀態(tài)的數(shù)目,如Table 4 所示。</p><p><b>
78、等待狀態(tài)</b></p><p> Note: 1. n = 0 或1 ( 低/ 高地址存儲器區(qū))</p><p> 更進(jìn)一步的信息請參見Figures 13~Figures 16,以了解SRW 如何影響時序</p><p> Bit 0 – Res: 保留</p><p> 保留位,讀操作返回值為零。在寫數(shù)據(jù)時要寫入0
79、以保證與未來產(chǎn)品的兼容。</p><p> 外部存儲器控制寄存器B -XMCRB</p><p> Bit 7– XMBK: 外部存儲器總線保持功能使能</p><p> XMBK寫"1“將使能AD7:0口線上的總線保持功能。當(dāng)此功能使能后AD7:0將保持最后的數(shù)據(jù)不變,即使XMEM 接口將這些口線設(shè)置為三態(tài)。XMBK 為零時總線保持功能禁止。XMB
80、K不受SRE的限制。因此即使禁止了XMEM接口,只要XMBK為"1“,總線保持功能這樣有效。</p><p> Bit 6..4 – Res: 保留</p><p> 保留位,讀操作返回值為零。在寫數(shù)據(jù)時要寫入0 以保證與未來產(chǎn)品的兼容。</p><p> Bit 2..0 – XMM2, XMM1, XMM0: 外部存儲器高位地址屏蔽</p&
81、gt;<p> 在缺省條件下,使能外部存儲器之后所有的端口C 引腳都被用作高位地址。如果系統(tǒng)不需要全部的60KB 外部存儲器地址空間,端口C 的某些引腳可以釋放,用作普通的I/O,如Table 5 所示。另外,如P 32“ 完全使用外部的64KB 存儲器” 說明的那樣,可以利用XMMn 來訪問外部存儲器所有64KB 的位置。</p><p> 使能外部存儲器時將端口C 的引腳釋放,作為普通口線使
82、用</p><p> 3 外部存儲器應(yīng)用的軟件實(shí)現(xiàn)</p><p><b> ?。?)存儲器的擴(kuò)展</b></p><p> 外部存儲器的擴(kuò)展采用三總線結(jié)構(gòu),擴(kuò)展64K數(shù)據(jù)存儲器,需要兩片62256芯片;由于Atmega128只有16位數(shù)據(jù)總線,只能進(jìn)行64K尋址,考慮到地址總線上還要進(jìn)行其他的擴(kuò)展和尋址工作,所以用PB口接一個3-8譯碼器
83、來提供片選信號。所以實(shí)際上就把地址總線擴(kuò)展到19位。</p><p> 擴(kuò)展的存儲器芯片選用的是62256芯片,它是一個32K×8的CMOS SRAM芯片。它共有28條引出線,包括15根地址線、8根資料線以及3根控制信號線,它們的含義分別為:</p><p> A0~A14——15根地址信號線。一個存儲芯片上地址線的多少決定了該芯片有多少個存儲單元。15根地址信號線上的地址信
84、號編碼最大為215,即32K。也就是說,芯片的15根地址線上的信號經(jīng)過芯片的內(nèi)部譯碼,可以決定選中62256芯片上32K存儲單元中的哪一個。在與系統(tǒng)連接時,這15根地址線通常接到系統(tǒng)地址總線的低15位上,以便CPU能夠?qū)ぶ沸酒系拿總€單元。</p><p> 因為選用兩片片外存儲器需要對他們進(jìn)行統(tǒng)一編址,這時他們共用3-8譯碼器來提供的一個片選信號,然后用還沒有被使用的A15地址線與片選信號組合為兩個新的數(shù)據(jù)存
85、儲器的片選信號,只要3-8譯碼器提供的片選信號有效時,當(dāng)A15為0時選中存儲器1,當(dāng)A15為1時選中存儲器2,這樣當(dāng)片選信號有效時,兩片存儲器就可以統(tǒng)一尋址了,他們共同的尋址空間是0-64K。</p><p> D0~D7——8根雙向資料線。對SRAM芯片來講,資料線的根數(shù)決定了芯片上每個存儲單元的二進(jìn)制位數(shù),8根資料線說明62256芯片的每個存儲單元中可存儲8位二進(jìn)制數(shù),即每個存儲單元有8位。使用時,這8根資
86、料線與系統(tǒng)的數(shù)據(jù)總線相連。當(dāng)CPU存取芯片上的某個存儲單元時,讀出和寫入的數(shù)據(jù)都通過這8根資料線傳送。輸出允許信號。只有當(dāng)為低電平時,CPU才能夠從芯片中讀出資料。寫允許信號。當(dāng)/WE為低電平時,允許資料寫入芯片;而當(dāng)WE/=1,/OE=0時,允許資料從該芯片讀出。</p><p><b> ?。?)實(shí)驗調(diào)試程序</b></p><p><b> 程序說明
87、:</b></p><p> 片外存儲器的功能就是存儲數(shù)據(jù),只要能夠快速、準(zhǔn)確、方便的把數(shù)據(jù)寫入、讀出,并且資源占有少,就是一個成功的片外存儲器擴(kuò)展。在這里我們只要是檢驗存儲器擴(kuò)展是否成功,就是要檢驗是否能夠正確的寫入、讀出數(shù)據(jù),操作是否便捷,同時看是否影響到其它的工作。</p><p> 把PORT B作為輸出,PORT D 作為輸出,在監(jiān)控方式讀寫RAM時,可以進(jìn)入實(shí)驗
88、機(jī)對話窗口,把0x55寫入片外存儲器3000單元,然后讀出地址3000里的數(shù)據(jù), 把該數(shù)輸送到D口的二極管上顯示出對應(yīng)的0x55二進(jìn)制數(shù);再執(zhí)行把0xAA寫入片外存儲器3000單元,然后讀出地址3000里的數(shù)據(jù),把該數(shù)輸送到D口的二極管上顯示出對應(yīng)的0xAA二進(jìn)制數(shù)。</p><p> 讀寫數(shù)據(jù)的選用,本例采用的0x55(01010101)與0xAA(10101010),一般選用這兩個操作數(shù)就可以查出數(shù)據(jù)總線的
89、短路、斷路等,在實(shí)際調(diào)試用戶電路時十分有效。</p><p> 在執(zhí)行下列程序時,對實(shí)驗箱數(shù)據(jù)進(jìn)行讀寫,如果PORT D口的發(fā)光二極管閃爍,則表示RAM正常工作。 </p><p> #INCLUDE<128DEF.INC></p><p> #INCLUDE<IOM128V.H></p><p> EQU R
90、AMEND=$10FF ;堆棧指針值</p><p><b> ORG $0000</b></p><p><b> IMP RESET</b></p><p><b> ORG $0046</b></p><p><b> R
91、ESET:</b></p><p> LDI R16,HIGH(RAMEND) ;設(shè)置堆棧指針高位</p><p> OUS SPH,R16</p><p> LDI R16,LOW(RAMEND) ;設(shè)置堆棧指針低位</p><p> OUS SPL,R16</p&g
92、t;<p> SSS XMCRB,R16</p><p><b> SER R16</b></p><p> OUS DDRB,R16 ;PORS B為輸出</p><p> OUS DDRD,R16 ;PORS D 為輸出</p><p&g
93、t; OUS PORTB,0X10</p><p> LDI R24,0X55;把55存到片外存儲器的3000的單元的上</p><p> LDI HIGH(Z),0X30</p><p> LDI LOW(Z),0X00</p><p><b> SS Z,R24</b></p><p&
94、gt; LD R25,Z ;讀出地址3000里的數(shù)據(jù) </p><p> OUS PORSD,,R25 ;把該數(shù)輸送到D口的二極管上</p><p> CALL DELAY </p><p> LDI R24,0XAA</p><p> LD
95、I HIGH(Z),0X30</p><p> LDI LOW(Z),0X00</p><p> SS Z,R24 ;把AA存到片外存儲器的3000單元的上</p><p> LD R25,Z ;讀出地址3000里的數(shù)據(jù)</p><p> OUS PORSD,
96、,R25 ;把該數(shù)輸送到D口的二極管上 </p><p> CALL DELAY</p><p><b> RET</b></p><p> DELAY: ;延時子程序</p><p> LDI R1,0XFF</p><
97、p><b> DELAY1:</b></p><p> LDI R2,0XFF</p><p><b> DELAY2:</b></p><p><b> SUBI R2,1</b></p><p> BRCC DELAY1</p><p&g
98、t;<b> SUBI R1,1</b></p><p> BRCC DELAY1</p><p><b> RET</b></p><p> 4 外部擴(kuò)展存儲器全部空間的利用技巧</p><p> ?。?)外部擴(kuò)展32K存儲器</p><p> 在外部擴(kuò)展32K容
99、量存儲器芯片時,此時不需要連接使用最高位地址線,可以將Portc口的PC7釋放,作為 外部存儲器映射到內(nèi)部存儲器之后,當(dāng)訪問頭4,352 字節(jié)時,外部存儲器沒有定址。就好像外部存儲器的頭4,352 字節(jié)不可訪問( 地址0x0000 ~ 0x10FF)。但當(dāng)外部存儲器小于64 KB 時,例如為32 KB,則通過從0x8000~0x90FF 的定址,很容易對其進(jìn)行訪問。由于外部存儲器地址位A15 沒有與外部存儲器相連接,地址0x8000~
100、0x90FF 將作為外部存儲器的0x0000 ~ 0x10FF。不推薦對0x90FF 向上尋址,因為這些位置已經(jīng)被訪問。對于應(yīng)用程序,這32 KB 外部存儲器為從0x1100~0x90FF 的32KB 地址空間,如Figure 17所示。存儲器配置B參見ATmega103兼容模式,配置A參見非ATmega103 兼容模式。</p><p> 當(dāng)器件設(shè)置為ATmega103 兼容模式。內(nèi)部地址空間為4,096 字
101、節(jié)。這意味著外部存儲器的頭4,096 字節(jié)可通過地址0x8000~0x8FFF 訪問。對應(yīng)用程序,外部32 KB 存儲器是地址為0x1000~0x8FFF 的線性空間。</p><p> ?。?)擴(kuò)展64K存儲器</p><p> 外部存儲器映射到內(nèi)部存儲器之后,因此在缺省條件下MCU 只能訪問60KB 的外部存儲器( 地址0x0000 ~ 0x10FF 為內(nèi)部存儲器所保留)。然而,可以
102、利用屏蔽高位地址的方法來訪問整個64KB 的外部存儲器。通過設(shè)置端口C 輸出0x00,并釋放最高位,存儲器接口就可以訪問地址0x0000 - 0x1FFF 了</p><p> 五 并行I/O口的原理與應(yīng)用</p><p> 1 擴(kuò)展并行I/O口的原理及意義</p><p> 單片機(jī)應(yīng)用系統(tǒng)中的I/O口擴(kuò)展方法與單片機(jī)的I/O口擴(kuò)展性能有關(guān)。在ATMEGE12
103、8應(yīng)用系統(tǒng)中,擴(kuò)展的I/O口采取與數(shù)據(jù)存儲器相同的尋址方法。所有擴(kuò)展的I/O口或通過擴(kuò)展I/O口連接的外圍設(shè)備均與片外數(shù)據(jù)存儲器統(tǒng)一編址。任何擴(kuò)展I/O口,根據(jù)地址線的選擇方式不同,占用一個片外RAM地址。利用串行口的移位寄存器工作方式,也可以擴(kuò)展I/O口,這時擴(kuò)展的I/O口不占用片外RAM地址。</p><p> 在單片機(jī)應(yīng)用系統(tǒng)中,I/O口的擴(kuò)展不是目的,而是為外部通道及設(shè)備提供一個輸入、輸出的通道。因此,
104、I/O口的擴(kuò)展總是為了實(shí)現(xiàn)某一測控及管理功能而進(jìn)行的。例如鍵盤、顯示器、驅(qū)動器開關(guān)控制、開關(guān)量測等。這樣,在I/O口擴(kuò)展時,必須考慮與之相關(guān)的外部硬件電路特性,如驅(qū)動、電平、干擾等。根據(jù)選擇不同的I/O口擴(kuò)展芯片或外部設(shè)備時擴(kuò)展I/O的操作方法不同,因而應(yīng)用程序也有不同,如地址、初始化狀態(tài)設(shè)置、工作方式選擇等。 </p><p> 2 外部并行I/O口電路的設(shè)計與應(yīng)用</p><p>
105、 單片機(jī)的資源是十分有限的,雖然ATMEGE128是一款資源豐富的單片機(jī),有56個I/O口,但是在比較大的系統(tǒng)中應(yīng)用還是不夠的。所以還必須對進(jìn)行擴(kuò)展。在擴(kuò)展的I/O口是應(yīng)當(dāng)注意合理的利用資源,一方面,要考慮I/O口上的運(yùn)行速度上的要求,另一方面,要考慮擴(kuò)展的I/O口所占用的資源。</p><p> 通常擴(kuò)展的I/O口有兩種方法,一種是:直接把I/O芯片接在I/O口上;另一種是用三總線的方法掛到總線上,這樣擴(kuò)展的
106、I/O地址和片外存儲器地址統(tǒng)一編址,這樣就可以用訪問片外存儲器的方式來訪問擴(kuò)展的I/O口。</p><p> 比較上面兩種擴(kuò)展I/O口的方法,可以看出第一種方法,單片機(jī)的I/O只能與擴(kuò)展的I/O口大交道,不能進(jìn)行其它的用途,造成了大量的資源浪費(fèi),并且在訪問片外擴(kuò)展I/O口時先需要選地址,然后才能交換數(shù)據(jù),這樣至少需要兩條以上的指令才能完成,,所以第一種方法造成了運(yùn)行速度成倍的下降;而用三總線方法總線上還可以掛其
107、他擴(kuò)展的芯片,包括片外存儲器等,這樣就充分節(jié)約了單片機(jī)的資源,并且對其訪問只要一條片外尋址指令就可以了,訪問速度也比較高。所以從多個方面考慮,第二種方法要比第一種方法要好的多。所以我們擴(kuò)展的I/O用的是第二種方法。</p><p> Atmega128單片機(jī)應(yīng)用系統(tǒng)中I/O口擴(kuò)展芯片和TTL、CMOS鎖存器、緩沖器電路芯片兩大類。通用的I/O芯片選用INTEL公司的芯片,其借口最簡捷可靠,最典型的就是8255。
108、</p><p> 這些實(shí)驗為了熟悉I/O口的使用方法,在此基礎(chǔ)之上對8255的控制使用,以Atmega128為代表的AVR單片機(jī),與其他類型的單片機(jī)的輸入輸出接口在大體上是一樣的主要的區(qū)是:Atmega128比51系列單片機(jī)多了數(shù)據(jù)寄存器、數(shù)據(jù)方向積存器、輸入腳地址積存器,所以在利用Atmega128的I/O口進(jìn)行數(shù)據(jù)傳輸時就需要多一些工作。以PC0為例說明在第二功能的時候,在I/O口內(nèi)部電路及工作原理:&l
109、t;/p><p> 當(dāng)方向寄存器DDRC的第0位置位(DDC0=1)是,PC0口定義為輸出。由PC0口的內(nèi)部工作原理可見,DDC0的Q端為1,MOS管上截止;同時PORTC0的三態(tài)門打開。PC0引腳的輸出電平取決于C口的數(shù)據(jù)寄存器PORTC口的第0位(PORTC0)的輸出Q端值,既:DDC0=0(PC0定義為輸出),PORTC0=1時,PC0輸出高電平;PORTC0=0時,PC0輸出低電平。</p>
110、<p> 當(dāng)DDC0=0時,PC0定義為輸入。PORTC0=0時(上拉MOS管上截止),PC0口做三態(tài)輸入;PORTC0=1時(上拉MOS激活),PC0口作帶上拉電阻輸入。后一種輸入方式可省去鍵盤、開關(guān)、繼電器等接口電路的上拉電阻。</p><p> DDC0是可讀的,用指令I(lǐng)N R16,DDRC,再看R16的第0位;PORTC0輸出Q也是可讀的,用只指令I(lǐng)N R16,PORTC,再看R16的第0位
111、,讀的是鎖存器(PORTC);PIN0是可讀的,用指令I(lǐng)N R16,DDRC,再看R16的第0位,讀的是引腳電平;DDC0,PORTC0都是可寫的(可定義輸入輸出和確定輸出電平的高低);但PINC是不可寫的(引腳電平的高低是外部客觀存在的)。</p><p> 其他的I/O口的在不考慮第二功能的時候,I/O樓的基本輸入輸出的功能是一樣的??删幊掏ㄓ媒涌谛酒?255是一個比較通用的I/O芯片,它不僅使用方便:操作
112、簡單,并且與單片機(jī)連接比較方便。8255有三個八位I/O口,有三種工作方式。每一個I/O口的都占用了三個寄存器地址,可以對寄存器進(jìn)行操作。</p><p> ?。?)外部并行I/O口電路調(diào)試實(shí)驗 </p><p><b> 第一個實(shí)驗:</b></p><p> 采用的是方式0,PA,PB位輸出,PB口為輸入。8255 A口接8個LE
113、D發(fā)光二極管,做跑馬燈實(shí)驗,首先讓最高位的發(fā)光二極管點(diǎn)亮,延時1秒,然后讓第七位的發(fā)光二極管點(diǎn)亮,延時1秒,讓第六位的發(fā)光二極管點(diǎn)亮,如此輪流發(fā)光。如此就可以檢驗Atmega128與8255的連接是否有問題。</p><p> D8255 EQU $ 8100 ;8255 狀態(tài)/命令口地址</p><p> D8255A EQU $ 8200 ;8255
114、PA口地址</p><p> D8255B EQU $ ;8255 PB 口地址</p><p> D8255C EQU $ ;8255 PC 口地址</p><p><b> ORG $0000</b></p><p><b> JMP START</b></p><p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)絡(luò)用戶管理系統(tǒng)畢業(yè)論文
- 用戶信息管理系統(tǒng)畢業(yè)論文
- 數(shù)字電視用戶管理系統(tǒng)畢業(yè)論文
- 留言板系統(tǒng)(畢業(yè)論文)
- 電路板設(shè)計畢業(yè)論文
- 基于avr單片機(jī)的led自適應(yīng)調(diào)光系統(tǒng)設(shè)計【畢業(yè)論文】
- 黃金白銀開戶系統(tǒng)的設(shè)計與實(shí)現(xiàn)——用戶界面【畢業(yè)論文】
- 留言板管理系統(tǒng)畢業(yè)論文
- 黃金白銀開戶系統(tǒng)——用戶管理的設(shè)計與實(shí)現(xiàn)【畢業(yè)論文】
- 畢業(yè)論文(設(shè)計)基于.net畢業(yè)論文管理系統(tǒng)
- 電自化畢業(yè)論文--用戶注冊登錄系統(tǒng)的設(shè)計與開發(fā)
- 基于avr單片機(jī)液晶模塊界面設(shè)計【畢業(yè)論文】
- 空調(diào)系統(tǒng)設(shè)計畢業(yè)論文
- 書店系統(tǒng)設(shè)計畢業(yè)論文
- 空調(diào)系統(tǒng)設(shè)計畢業(yè)論文
- 畢業(yè)論文選題系統(tǒng)設(shè)計與實(shí)現(xiàn)-畢業(yè)論文
- 基于web的在線用戶資費(fèi)管理系統(tǒng)的設(shè)計與實(shí)現(xiàn)【畢業(yè)論文】
- 中小企業(yè)倉庫管理系統(tǒng)—用戶體驗設(shè)計與編碼【畢業(yè)論文】
- 畢業(yè)論文——畢業(yè)論文管理系統(tǒng)
- 淺談移動用戶界面設(shè)計-畢業(yè)論文
評論
0/150
提交評論