




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
AVR單片機原理及其在機電系統控制電路中的應用2025/6/922AVR單片機原理與應用2.1單片機電路開發過程2.2AVR單片機概述2.3Atmega128硬件體系結構2.4基于Atmega128的電路系統設計2025/6/932.1單片機電路開發過程明確系統設計硬件電路編寫程序調試和仿真下載程序軟硬件聯調功能優化程序優化2025/6/94明確系統系統要求:利用AVR單片機來控制一個紅色LED和綠色LED。電路加電后,兩個LED均點亮,1s后熄滅,然后點亮綠色的LED,1s以后,綠色的LED熄滅,然后紅色的LED點亮1s。最后紅色的LED和綠色的LED以1Hz左右的頻率閃爍。需要考慮的元器件:AVR單片機一片、DC/DC轉換模塊、發光二極管若干、電容若干、電阻若干、晶振一個、按鈕一個等。2.1單片機電路開發過程2025/6/95設計硬件電路2.1單片機電路開發過程2025/6/96編寫程序2.1單片機電路開發過程2025/6/97調試和仿真編譯項目2.1單片機電路開發過程2025/6/98程序下載下載程序2.1單片機電路開發過程返回2025/6/992.2AVR單片機概述ATMEL公司是世界上高級半導體產品設計、制造和行銷的領先者,產品包括了微處理器、可編程邏輯器件、非易失性存儲器、安全芯片、混合信號及RF射頻集成電路。1997年,由ATMEL公司挪威設計中心的A先生與V先生利用ATMEL公司的Flash新技術,共同研發出RISC精簡指令集的高速8位單片機,簡稱AVR。相對于出現較早也較為成熟的51系列單片機,AVR系列單片機片內資源更為豐富,接口也更為強大,同時由于其價格低等優勢,在很多場合可以替代51系列單片機。2025/6/9102.2AVR單片機概述AVR單片機特點---速度快AVR微處理器
以更快的速度運行程序-MIPS/MHzAVRRISC–速度優先5個并行數據總線32個累加器單時鐘周期8,16,24,32和64-bit算術操作增強的RISC指令集線性地址映射為速度而設計2時鐘周期的硬件乘法器嵌入式高速存儲器MIPS即MillionInstructionPerSecond的簡寫--計算機每秒種執行的百萬指令數。是衡量計算機速度的指標。2025/6/9112.2AVR單片機概述AVR單片機特點---片上資源豐富AVR微處理器
減小PCB尺寸AVR–ALLINSIDE高集成度 Flash程序存儲器
EEPROM數據存儲器 CPU
外部存儲器接口 PWM SRAM數據存儲器 TWI 8-bit定時器
硬件乘法器 SPI 16-bit定時器
中斷處理 U(S)ART 實時時鐘
上電復位 10-bitADC 輸入捕捉
看門狗定時器 掉電檢測 輸出比較
片內振蕩器 模擬比較器 上拉電阻2025/6/9122.2AVR單片機概述AVR單片機特點---代碼更少AVR微處理器
減小你的程序代碼AVRRISC–為最小代碼而設計5個并行數據總線32個累加器4個數據/堆棧指針8,16,24,32和64-bit算術操作增強的RISC指令集線性地址影射適應ANSIC和匯編相比付出代價極小指令集由編譯專家建構和調整2025/6/913傳統的折衷方式適合于
ANSIC速度傳統CISC傳統RISC代碼效率速度2.2AVR單片機概述AVR單片機特點---代碼更少2025/6/914AVR微處理器
降低系統功耗每一個電子都被考慮在內:單時鐘周期執行5個并行數據總線6種MCU睡眠模式最小幅度振蕩器0泄漏輸入1.8–6.0V工作電壓2.2AVR單片機概述AVR單片機特點---功耗更低2025/6/9152.2AVR單片機概述AVR單片機特點---可選擇型號種類多MEGAAVR ATmegaxxx (16KB-128KB)針對需要大程序容量的復雜應用ClassicAVR AT90Sxxxx (1KB-8KB)針對需要大吞吐量,低功耗和中等程序容量的應用TinyAVR ATtinyxx (1KB-2KB)針對需要低價格的低端8位MCU市場2025/6/9162.2AVR單片機概述AVR單片機特點---可選擇型號種類多存儲器大小性能(1KB-2KB)(1KB-8KB)(16KB-128KB)完全兼容2025/6/917低功耗mega8新產品已淘汰主流產品未來產品90S231390S2323/43tiny2890S8535mega161tiny1590S4433mega128mega890S8515tiny26mega32mega8515mega8535tiny13mega169mega162mega64tiny2313mega256mega1690S1200tiny11/12mega329CANAVRmega1032.2AVR單片機概述AVR單片機產品更新換代2025/6/918AVR的中低檔Tiny與AT90S系列產品2.2AVR單片機概述2025/6/919AVR的中高檔Mega系列產品2.2AVR單片機概述2025/6/920ATtiny10/11/12特點2.2AVR單片機概述2025/6/921ATtiny10/11/12特點2.2AVR單片機概述2025/6/922ATtiny10/11/12特點2.2AVR單片機概述2025/6/923ATtiny10/11/12特點2.2AVR單片機概述2025/6/924AT90S1200單片機特點2.2AVR單片機概述2025/6/925AT90S1200單片機特點2.2AVR單片機概述2025/6/926AT90S8515單片機特點2025/6/927AT90S8515單片機特點2.2AVR單片機概述2025/6/928AT90S8515單片機特點2.2AVR單片機概述2025/6/929ATmega8單片機特點2.2AVR單片機概述2025/6/9302.2AVR單片機概述ATmega8單片機特點2025/6/9312.2AVR單片機概述ATmega8單片機特點2025/6/932引腳配置2.2AVR單片機概述ATmega8單片機特點返回2025/6/9332.3Atmega128硬件體系結構Atmega128芯片特性Atmega128引腳配置及說明Atmega128的存儲器組織Atmega128的重要寄存器介紹Atmega128基本配置電路2025/6/934Atmega128的I/O端口2.3Atmega128硬件體系結構Atmega128的中斷處理Atmega128的定時/計數器Atmega128的USARTAtmega128的TWI(I2C)2025/6/9352.3Atmega128硬件體系結構Atmega128芯片特性高性能、低功耗的AVR8位微處理器先進的RISC結構–133條指令–大多數可以在一個時鐘周期內完成–32x8通用工作寄存器+外設控制寄存器–全靜態工作–工作于16MHz時性能高達16MIPS–只需兩個時鐘周期的硬件乘法器2025/6/9362.3Atmega128硬件體系結構Atmega128芯片特性非易失性的程序和數據存儲器–128K字節的系統內可編程Flash
壽命:10,000次寫/擦除周期–4K字節的EEPROM
壽命:100,000次寫/擦除周期–4K字節的內部SRAM–多達64K字節的優化的外部存儲器空間–可以對鎖定位進行編程以實現軟件加密–可以通過SPI實現系統內編程2025/6/9372.3Atmega128硬件體系結構Atmega128芯片特性JTAG接口(與IEEE1149.1標準兼容)–遵循JTAG標準的邊界掃描功能–支持擴展的片內調試–通過JTAG接口實現對Flash,EEPROM,熔絲位和鎖定位的編程2025/6/9382.3Atmega128硬件體系結構Atmega128芯片特性外設特點–兩個具有獨立的預分頻器和比較器功能的8位定時器/計數器–兩個具有預分頻器、比較功能和捕捉功能的16位定時器/計數器–具有獨立預分頻器的實時時鐘計數器–兩路8位PWM–輸出比較調制器–6路分辨率可編程(2到16位)的PWM2025/6/9392.3Atmega128硬件體系結構Atmega128芯片特性外設特點–8路10位ADC8個單端通道,7個差分通道,2個具有可編程增益(1x,10x,或200x)的差分通道–面向字節的兩線接口–兩個可編程的串行USART–可工作于主機/從機模式的SPI串行接口–具有獨立片內振蕩器的可編程看門狗定時器–片內模擬比較器2025/6/9402.3Atmega128硬件體系結構Atmega128芯片特性特殊的處理器特點–上電復位以及可編程的掉電檢測–片內經過標定的RC振蕩器–片內/片外中斷源–6種睡眠模式:空閑模式、ADC噪聲抑制模式、省電模式、掉電模式、Standby2025/6/9412.3Atmega128硬件體系結構Atmega128芯片特性模式以及擴展的Standby模式–可以通過軟件進行選擇的時鐘頻率–通過熔絲位可以選擇ATmega103兼容模式–全局上拉禁止功能
I/O和封裝–53個可編程I/O口線–64引腳TQFP與64引腳MLF封裝2025/6/9422.3Atmega128硬件體系結構Atmega128芯片特性工作電壓–2.7-5.5VATmega128L–4.5-5.5VATmega128速度等級–0-8MHzATmega128L–0-16MHzATmega1282025/6/9432.3Atmega128硬件體系結構Atmega128芯片特性返回2025/6/944Atmega128引腳配置及說明2025/6/9452.3Atmega128硬件體系結構Atmega128引腳配置及說明VCC――數字電路的電源。GND――地。端口A(PA7..PA0)――端口A為8位雙向I/O口,并具有可編程的內部上拉電阻。其輸出緩沖器具有對稱的驅動特性,可以輸出和吸收大電流。作為輸入使用時,若內部上拉電阻使能,則端口被外部電路拉低時將輸出電流。復位發生時端口A為三態。端口B(PB7..PB0)――端口B為8位雙向I/O口,并具有可編程的內部上拉電阻。其輸出緩沖器具有對稱的驅動特性,可以輸出和吸收大電流。作為輸入使用時,若內部上拉電阻使能,則端口被外部電路拉低時將輸出電流。復位發生時端口B為三態。2025/6/9462.3Atmega128硬件體系結構Atmega128引腳配置及說明端口C(PC7..PC0)――端口C為8位雙向I/O口,并具有可編程的內部上拉電阻。其輸出緩沖器具有對稱的驅動特性,可以輸出和吸收大電流。作為輸入使用時,若內部上拉電阻使能,則端口被外部電路拉低時將輸出電流。復位發生時端口C為三態。端口D(PD7..PD0)――端口D為8位雙向I/O口,并具有可編程的內部上拉電阻。其輸出緩沖器具有對稱的驅動特性,可以輸出和吸收大電流。作為輸入使用時,若內部上拉電阻使能,則端口被外部電路拉低時將輸出電流。復位發生時端口D為三態。2025/6/9472.3Atmega128硬件體系結構Atmega128引腳配置及說明端口F(PF7..PF0)――端口F為ADC的模擬輸入引腳。如果不作為ADC的模擬輸入,端口F可以作為8位雙向I/O口,并具有可編程的內部上拉電阻。其輸出緩沖器具有對稱的驅動特性,可以輸出和吸收大電流。作為輸入使用時,若內部上拉電阻使能,則端口被外部電路拉低時將輸出電流。復位發生時端口F為三態。如果使能了JTAG接口,則復位發生時引腳PF7(TDI)、PF5(TMS)和PF4(TCK)的上拉電阻使能。端口F也可以作為JTAG接口。端口G(PG4..PG0)――端口G為5位雙向I/O口,并具有可編程的內部上拉電阻。其輸出緩沖器具有對稱的驅動特性,可以輸出和吸收大電流。作為輸入使用時,若內部上拉電阻使能,則端口被外部電路拉低時將輸出電流。復位發生時端口G為三態。2025/6/9482.3Atmega128硬件體系結構Atmega128引腳配置及說明RESET――復位輸入引腳。超過最小門限時間的低電平將引起系統復位。低于門限時間的脈沖不能保證可靠復位。XTAL1――反向振蕩器放大器及片內時鐘操作電路的輸入。XTAL2――反向振蕩器放大器的輸出。AVCC――AVCC為端口F以及ADC轉換器的電源,需要與VCC相連接,即使沒有使用ADC也應該如此。使用ADC時應該通過一個低通濾波器與VCC連接。AREF――AREF為ADC的模擬基準輸入引腳。PEN――PEN是SPI串行下載的使能引腳。在上電復位時保持PEN為低電平將使器件進入SPI串行下載模式。在正常工作過程中PEN引腳沒有其他功能。返回2025/6/9492.3Atmega128硬件體系結構Atmega128基本配置電路Atmega128單片機復位電路時鐘電路下載電路電源2025/6/950Atmega128基本配置電路電源模塊
任何電路控制系統,首要解決的問題是電源問題。對于單片機控制系統而言,電源系統的穩定性決定著控制系統的穩定性,也是系統能否可靠工作的前提條件。如何設計一個單片機控制系統的電源?這是我們設計過程中首要解決的問題。2025/6/951Atmega128基本配置電路復位電路復位電路可以由簡單的RC電路構成,但在對穩定性有較高要求的應用場合,一般要采用專用的復位芯片(如MAX809/810等)。這里給出常見的RC復位電路,可以滿足一般應用的需要。系統上電復位:在系統上電時,通過電阻R1向電容C1充電,當C1兩端的電壓未達到高電平的門限電壓時,Reset端輸出為低電平,系統處于復位狀態;當C1兩端的電壓達到高電平的門限電壓時,Reset端輸出為高電平,系統進入正常工作狀態。
手動復位:當按下復位按鈕S1時,C1兩端的電荷被放掉,Reset端輸出為低電平,系統進入復位狀態,再重復以上的充電過程,系統進入正常工作狀態。2025/6/952Atmega128基本配置電路復位電路MAX809是一種單一功能的微處理器復位芯片,用于監控微控制器和其他邏輯系統的電源電壓。它可以在上電、掉電和節電情況下向微控制器提供復位信號。當電源電壓低于預設的門檻電壓時,器件會發出復位信號,直到在一段時間內電源電壓又恢復到高于門檻電壓為止。從圖中可以看出,MAX809是低電平有效的復位器件,而同類的MAX810是高電平有效的復位輸出。MAX809復位電路2025/6/953Atmega128基本配置電路上電復位:當電源電壓低于上電復位門限(VPOT)時,MCU復位。外部復位:當引腳RESET上的低電平持續時間大于最小脈沖寬度時MCU復位。看門狗復位:當看門狗使能并且看門狗定時器超時時復位發生。掉電檢測復位:當掉電檢測復位功能使能,且電源電壓低于掉電檢測復位門限(VBOT)時MCU即復位。JTAGAVR復位:當復位寄存器為1時MCU即復位。ATmega128有5個復位源:2025/6/954Atmega128基本配置電路ATmega128復位邏輯2025/6/955Atmega128基本配置電路ATmega128復位特性2025/6/956Atmega128基本配置電路上電復位時序MCU啟動過程,RESET連接到VCC2025/6/957Atmega128基本配置電路上電復位時序MCU啟動過程,RESET由外電路控制2025/6/958Atmega128基本配置電路外部復位時序工作過程中發生外部復位2025/6/959看門狗定時器溢出時將產生持續時間為1個CK周期的復位脈沖。在脈沖的下降沿,延時定時器開始對tTOUT
記數。Atmega128基本配置電路看門狗復位時序2025/6/960Atmega128基本配置電路看門狗定時器
看門狗定時器的設定可以調解看門狗復位的時間間隔。看門狗定時器由獨立的1Mhz片內振蕩器驅動。不同供電電壓,振蕩器頻率不同。通過設置看門狗定時器的預分頻器可以調節看門狗復位的時間間隔。看門狗復位指令WDR用來復位看門狗定時器。此外,禁止看門狗定時器或發生復位時定時器也被復位。復位時間有8個選項。如果沒有及時復位定時器,一旦時間超過復位周期,ATmega128就復位,并執行復位向量指向的程序。2025/6/961看門狗定時器預分頻器選項Atmega128基本配置電路看門狗定時器2025/6/962Atmega128基本配置電路看門狗定時器
要實現看門狗定時器的功能,必須了解看門狗定時器控制寄存器-WDTCR。Bits7..5–Res:保留保留位,讀操作返回值為零。2025/6/963Atmega128基本配置電路看門狗定時器Bit4–WDCE:看門狗修改使能清零WDE時必須先置位WDCE,否則不能禁止看門狗。一旦置位,硬件將在緊接的4個時鐘周期之后將其清零。
要實現看門狗定時器的功能,必須了解看門狗定時器控制寄存器-WDTCR。2025/6/964Atmega128基本配置電路看門狗定時器Bit3–WDE:看門狗使能WDE為"1"時,看門狗使能,否則看門狗將被禁止。只有在WDCE為"1"時WDE才能清零。以下為關閉看門狗的步驟:1.在同一個指令內對WDCE和WDE寫"1",即使WDE已經為"1"。2.在緊接的4個時鐘周期之內對WDE寫"0"。2025/6/965Atmega128基本配置電路看門狗定時器Bits2..0–WDP2,WDP1,WDP0:看門狗定時器預分頻器2,1,和02025/6/966Atmega128基本配置電路軟件設置看門狗定時器2025/6/967Atmega128基本配置電路時鐘電路所謂時鐘,實際上就是以一個特定頻率連續不斷出現的方波。單片機在每一個方波的上升沿執行指令。一條指令如果能在一個時鐘周期(即方波的一個周期)內執行完,成為“單周期指令”,否則稱為“多周期指令”。2025/6/968Atmega128基本配置電路時鐘電路
應當注意的是,這里所說的“一個指令”,指的是一條匯編語句,而不是C語句。一條C語句可能會被編譯成若干條匯編語句,而不同的C編譯器編譯的結果可能是不同的,即便是同一個C編譯器,在不同條件下對同一條C語句進行編譯的結果也可能是不同的。這就意味著,無法預知一條C語句將占用多少個時鐘周期(即運行多長時間)。這就是用C語言對單片機進行編程的缺點,在某些對時序要求極高的情況下,人們通常采用匯編語言或者將C語言與匯編語言混合使用。但對于初學者而言,用C語言對單片機進行編程簡單易學,且足以滿足大部分的需要。2025/6/969Atmega128基本配置電路時鐘電路2025/6/970Atmega128基本配置電路時鐘電路2025/6/971Atmega128基本配置電路時鐘電路程序內部顯示時鐘軟件設置時鐘頻率2025/6/972芯片有如下幾種通過熔絲位選擇的時鐘源Atmega128基本配置電路時鐘電路2025/6/973Atmega128基本配置電路時鐘電路AVR系列單片機在仿真調試之前,首先必須對AVR的熔絲位和鎖定位進行配置。如果配置不當,則可能造成單片機不能正常工作,嚴重時可能導致單片機死鎖。因此,對單片機熔絲位和鎖定位的正確配置顯得尤為重要。
熔絲位是對單片機具體功能和工作模式的限定,其正確配置與否直接影響到單片機能否正常工作;鎖定位是對單片機的程序和數據進行加密,以防止單片機中的程序和數據被讀出或寫入。在進行配置時,一般先配置熔絲位,再配置鎖定位。2025/6/974ATmega128的熔絲位共有3個字節:熔絲位擴展字節、熔絲位高字節和熔絲位低字節。Atmega128基本配置電路時鐘電路軟件設置熔絲位2025/6/975Atmega128基本配置電路下載電路當RESET位低電平時,可以通過串行SPI總線對Flash及EEPROM進行編程。串行接口包括SCK、MOSI(輸入)及MISO(輸出)。RESET為低之后,應在執行編程/擦除操作之前執行編程允許指令。不是所有的器件都使用SPI引腳專用于內部SPI接口。注意,在串行載入的說明中,MOSI與MISO分別描述連續數據的輸入與輸出。在ATmega128中,這些引腳映射為PDI與PDO。SPI串行編程及JTAG編程2025/6/976Atmega128基本配置電路下載電路Atmega128SPI串行編程引腳映射盡管SPI編程接口重用SPII/O模塊,但其中有一點不同:MOSI/MISO引腳映射到SPII/O模塊的PB2與PB3在編程接口并不使用。而PE0與PE1用來傳遞數據.2025/6/977Atmega128基本配置電路下載電路通過JTAG接口進行編程需要控制4個JTAG專用引腳:TCK、TMS、TDI及TDO。reset及時鐘引腳不用控制。JTAG(JointTestActionGroup;聯合測試行動小組)是一種國際標準測試協議(IEEE1149.1兼容),主要用于芯片內部測試。現在多數的高級器件都支持JTAG協議,如MCU、DSP、FPGA器件等。JTAG編程方式是在線編程,傳統生產流程中先對芯片進行預編程現再裝到板上因此而改變,簡化的流程為先固定器件到電路板上,再用JTAG編程,從而大大加快工程進度。2025/6/978Atmega128基本配置電路下載電路返回2025/6/9792.3Atmega128硬件體系結構Atmega128的CPU內核結構2025/6/980CPU的主要任務是保證程序的正確執行。因此它必須能夠訪問存儲器,執行運算,控制外設以及處理中斷。為了得到最大程度的性能以及并行性,AVR采用了Harvard結構,具有獨立的數據和程序總線。程序存儲器的指令通過一級流水線運行。CPU在執行一條指令的同時讀取下一條指令(在本文稱為預取)。這個概念實現了指令的單時鐘周期運行。程序存儲器為可以在線編程的FLASH。快速訪問寄存器文件包括32個8位通用工作寄存器,而且都可以在一個時鐘周期內訪問。從而實現單時鐘周期的ALU操作。在典型的ALU操作過程中,兩個位于寄存器文件中的操作數同時被訪問,然后執行相應的運算,結果再被送回寄存器文件。整個過程僅需要一個時鐘周期。Atmega128的CPU內核結構2025/6/9812.3Atmega128硬件體系結構Atmega128的存儲器組織Flash程序存儲器SRAM數據存儲器
EEPROM數據存儲器2025/6/982Flash程序存儲器Atmega128的存儲器組織ATmega128具有128K字節的在線編程Flash。因為所有的AVR指令為16位或32位,故爾FLASH組織成64Kx16的形式。考慮到軟件安全性,Flash程序存儲器分為兩個區:引導程序區和應用程序區。Flash存儲器至少可以擦寫10,000次。ATmega128的程序計數器PC為16位,因此可以尋址64K的程序存儲器。
可利用SPI或JTAG接口實現對Flash的串行下載。2025/6/983Flash程序存儲器Atmega128的存儲器組織
一般而言,C程序中的變量可以選擇存放在SRAM或者EEPROM中,而常量可以選擇放在SRAM或者Flash中。標準C的變量類型一般都適用于單片機的C語言,如char、float、double、unsignedint等。CodeVisionAVRC編譯器中的數據類型如下表所示。2025/6/984
AVR單片機中的Flash本來是用作程序存儲空間的,但可以利用其存儲容量大的特點,在剩余足夠空間的前提下,將一些在使用中沒有必要改變的數值或者字符串等存放在Flash中。當然,也可以將其存放在SRAM中,但Flash比SRAM的空間大好幾倍;此外這些數值或字符串在使用過程中沒有必要改動,存放在Flash中會比存放在SRAM更合適。CodeVisionAVRC編譯器對于用戶沒有指定只能保存在Flash中的字符串,在啟動時將字符串從程序存儲區復制到數據存儲區。Char*ptr_to_sram=”thisisplacedinSRAM”;上面例子中沒有指定字符串只存儲于Flash,因此啟動時會將該字符串復制到數據存儲空間。Charflash*ptr_to_flash=”thisisplacedinFlash”;在上例中,用戶使用了flash關鍵字,因此字符串只存儲于Flash空間。Flash程序存儲器Atmega128的存儲器組織2025/6/985Flash程序存儲器Atmega128的存儲器組織2025/6/986Atmega128的存儲器組織SRAM數據存儲器
ATmega128支持兩種不同的SRAM配置普通模式兼容模式2025/6/987EEPROM數據存儲器Atmega128的存儲器組織ATmega128包含4K字節的EEPROM。它是作為一個獨立的數據空間而存在的,可以按字節讀寫。EEPROM的壽命至少為100,000次(擦除)。EEPROM的訪問由地址寄存器,數據寄存器和控制寄存器決定。EEPROM的訪問寄存器位于I/O空間。當執行EEPROM讀操作時,CPU會停止工作4個周期,然后再執行后續指令;當執行EEPROM寫操作時,CPU會停止工作2個周期,然后再執行后續指令。2025/6/988
CodeVisionAVRC編譯器中,可以用eeprom關鍵字將全局變量分配至EEPROM中,如:
eeprominta;也可以在定義時對變量初始化,如:eeprominta=1;CodeVisionAVRC編譯器中還可以將數組、字符串、結構體分配至EEPROM中,如:eepromchara[4]={0,1,2,3};//數組Chareeprom*ptr_to_eeprom=”thisisplacedinEEPROM”;//字符串Eepromstructa{charb;intc;chare[15];}f;在CodeVisionAVRC編譯器中可以直接訪問EEPROM中的全局變量,與訪問SRAM中的數據方式相同。EEPROM數據存儲器Atmega128的存儲器組織2025/6/989EEPROM數據存儲器Atmega128的存儲器組織EEPROM地址寄存器-EEARH和EEARL90EEPROM數據存儲器Bits15..12–Res:保留保留位,讀操作返回值為零。在寫數據時要寫入0以保證與未來產品的兼容。Bits11..0–EEAR11..0:EEPROM地址EEARH和EEARL指定了4K字節的EEPROM空間。EEPROM的地址是線性的,從0到4096。EEAR的初始值沒有定義。在訪問EEPROM之前必須為其賦予正確的數據。2025/6/991EEPROM數據存儲器EEPROM數據寄存器-EEDRBits7..0–EEDR7.0:EEPROM數據對于EEPROM寫操作,EEDR是需要寫到EEAR單元的數據;對于EEPROM讀操作,EEDR是從地址EEAR讀取的數據。2025/6/992EEPROM數據存儲器EEPROM控制寄存器-EECRBits7..4–Res:保留保留位,讀操作返回值為零。Bit3–EERIE:EEPROM就緒中斷使能若SREG的I為"1",則置位EERIE使能EEPROM就緒中斷。清零EERIE則禁止此中斷。當EEWE清零時EEPROM就緒中斷即可發生。Bit2–EEMWE:EEPROM主機寫使能EEMWE決定設置EEWE為"1"是否可以啟動EEPROM寫操作。當EEMWE為"1"時,在4個時鐘周期內置位EEWE將把數據寫入EEPROM的指定地址;若EEMWE為"0",則EEWE不起作用。EEMWE置位后4個周期,硬件對其清零。2025/6/993EEPROM數據存儲器EEPROM控制寄存器-EECRBit1–EEWE:EEPROM寫使能當EEPROM數據和地址設置好之后,需置位EEWE以便將數據寫入EEPROM。此時EEMWE必須置位,否則EEPROM寫操作將不會發生。Bit0–EERE:EEPROM讀使能當EEPROM地址設置好之后,需置位EERE以便將數據讀入EEAR。EEPROM數據的讀取只需要一條指令,且無需等待。讀取EEPROM時CPU要停止4個時鐘周期。用戶在讀取EEPROM時應該檢測EEWE。如果一個寫操作正在進行,就無法讀取EEPROM,也無法改變寄存器EEAR。2025/6/994voidEEPROMwrite(intlocation,unsignedchardatabyte){ unsignedcharsavedSREG; EEAR=location;//setaddress EEDR=databyte;//setdata savedSREG=SREG;//keepsettingsoitcanberestored CLI(); //disableinterrupts EECR|=BIT(EEMWE); //set"writeenable"bit EECR|=BIT(EEWE);//set"write"bit SREG=savedSREG;//restoreSREG EEAR=0;}EEPROM數據存儲器向EEPROM中寫數據程序2025/6/995unsignedcharEEPROMread(intlocation){ EEAR=location;//setaddress EECR|=BIT(EERE);//set"readenable"bit EEAR=0; return(EEDR);}EEPROM數據存儲器從EEPROM中讀數據程序2025/6/996EEPROM數據存儲器返回2025/6/9972.3Atmega128硬件體系結構Atmega128的重要寄存器介紹MCU控制寄存器-MCUCRBit7–SRE:外部SRAM/XMEM使能SRE為"1"時外部存儲器接口使能。引腳AD7:0,A15:8,ALE,WR和RD工作于第二功能,且自動按照要求配置端口方向寄存器。SRE清零將使外部SRAM無效,相關端口可以當作普通I/O口使用。Bit6–SRW10:等待狀態選擇位對于ATmega103兼容模式,SRW10寫"1“將使能等待狀態,在讀/寫過程中插入一個時鐘周期。2025/6/9982.3Atmega128硬件體系結構Atmega128的重要寄存器介紹MCU控制寄存器-MCUCRBit5–SE:睡眠使能為了使MCU在執行SLEEP指令后進入睡眠模式,SE必須置位。為了確保進入睡眠模式是程序員的有意行為,建議僅在SLEEP指令的前一條指令置位SE。一旦喚醒立即清除SE。Bits4..2–SM2..0:睡眠模式選擇位2025/6/9992.3Atmega128硬件體系結構Atmega128的重要寄存器介紹MCU控制寄存器-MCUCR睡眠模式選擇2025/6/9100MCU控制寄存器包含了電源管理的控制位。睡眠模式可以使應用程序關閉MCU中沒有使用的模塊,從而降低功耗。AVR具有不同的睡眠模式,允許用戶根據自己的應用要求實施剪裁。進入睡眠模式的條件是置位寄存器MCUCR的SE,然后執行SLEEP指令。具體哪一種模式(空閑模式、ADC噪聲抑制模式、掉電模式、省電模式、Standby模式和擴展Standby模式)由MCUCR的SM2、SM1和SM0決定。Atmega128的重要寄存器介紹MCU控制寄存器-MCUCR2025/6/9101Atmega128的重要寄存器介紹MCU控制寄存器-MCUCRBit1–IVSEL:中斷向量選擇當IVSEL為"0“時,中斷向量位于Flash存儲器的起始地址;當IVSEL為"1“時,中斷向量轉移到Boot區的起始地址。實際的Boot區起始地址由熔絲位BOOTSZ確定。Bit0–IVCE:中斷向量修改使能改變IVSEL時IVCE必須置位。在IVCE或IVSEL寫操作之后4個時鐘周期,IVCE被硬件清零。如前面所述,置位IVCE將禁止中斷。2025/6/9102Atmega128的重要寄存器介紹MCU控制和狀態寄存器-MCUCSRBit7–JTD:JTAG接口禁用當這一位為‘0’,且JTAG使能熔絲位JTAGEN被編程時JTAG接口使能;否則JTAG接口功能禁止。若JTAG接口未與其他JTAG電路連接,JTD位應置為‘1’,以避免JTAG接口TDO引腳的靜態電流。Bit4–JTRF:JTAG復位標志若復位是由JTAG復位寄存器不為'0’且執行了的AVR_RESET指令引發的,JTRF置位。通過寫入'0’或上電復位的方法可以將其清零。2025/6/9103Atmega128的重要寄存器介紹MCU控制和狀態寄存器-MCUCSRBit3–WDRF:看門狗復位標志看門狗復位發生時置位。上電復位將使其清零,也可以通過寫”0”來清除。Bit2–BORF:掉電檢測復位標志掉電檢測復位發生時置位。上電復位將使其清零,也可以通過寫”0”來清除。Bit1–EXTRF:外部復位標志外部復位發生時置位。上電復位將使其清零,也可以通過寫”0”來清除。Bit0–PORF:上電復位標志上電復位發生時置位。只能通過寫”0”來清除。2025/6/9104Atmega128的重要寄存器介紹狀態寄存器-SREG狀態寄存器包含了最近執行的算術指令的結果信息。這些信息可以用來改變程序流程以實現條件操作。狀態寄存器的內容只有在ALU運算結束后才會更新。這樣,在多數情況下就不需要專門的比較指令了,從而使系統運行更快速,代碼效率更高。在進入中斷例程時狀態寄存器不會自動保存;中斷返回時也不會自動恢復。這些工作需要軟件來處理。2025/6/9105Atmega128的重要寄存器介紹狀態寄存器-SREG?Bit7–I:全局中斷使能置位時使能全局中斷。單獨的中斷使能由其他獨立的控制寄存器控制。如果I清零,則不論單獨中斷標志置位與否,都不會產生中斷。任意一個中斷發生后I清零,而執行RETI指令后置位以使能中斷。I也可以通過SEI和CLI指令來置位和清零。?Bit6–T:位拷貝存儲位拷貝指令BLD和BST利用T作為目的或源地址。BST把寄存器的某一位拷貝到T,而BLD把T拷貝到寄存器的某一位。2025/6/9106Atmega128的重要寄存器介紹狀態寄存器-SREG?Bit5–H:半進位標志半進位標志H表示算術操作發生了半進位。此標志對于BCD運算非常有用。?Bit4–S:符號位,S=N⊕VS為負數標志N與2的補碼溢出標志V的異或。?Bit3–V:2的補碼溢出標志支持2的補碼運算。2025/6/9107Atmega128的重要寄存器介紹狀態寄存器-SREG?Bit2–N:負數標志表明算術或邏輯操作結果為負。?Bit1–Z:零標志表明算術或邏輯操作結果為零。?Bit0–C:進位標志表明算術或邏輯操作發生了進位。返回2025/6/9108Atmega128的I/O端口2025/6/9109作為通用數字I/O使用時,所有AVRI/O端口都具有真正的讀-修改-寫功能。輸出緩沖器具有對稱的驅動能力,可以輸出或吸收大電流,直接驅動LED。所有的端口引腳都具有與電壓無關的上拉電阻。每個端口都有三個I/O存儲器地址:數據寄存器–PORTx數據方向寄存器–DDRx端口輸入引腳–PINx數據寄存器和數據方向寄存器為讀/寫寄存器,而端口輸入引腳為只讀寄存器。當寄存器SFIOR的上拉禁止位PUD置位時所有端口的全部引腳的上拉電阻都被禁止。Atmega128的I/O端口2025/6/9110端口A數據寄存器-PORTAAtmega128的I/O端口端口A數據方向寄存器-DDRA端口A輸入引腳地址-PINA2025/6/9111端口G數據寄存器-PORTGAtmega128的I/O端口端口G數據方向寄存器-DDRG端口G輸入引腳地址-PING2025/6/9112Atmega128的I/O端口特殊功能IO寄存器-SFIOR?Bit2–PUD:禁止上拉電阻置位時,即使將寄存器DDxn和PORTxn配置為使能上拉電阻({DDxn,PORTxn}=0b01),I/O端口的上拉電阻也被禁止。2025/6/9113Atmega128的I/O端口端口引腳配置不論如何配置DDxn,都可以通過讀取PINxn寄存器來獲得引腳電平。如果有引腳未被使用,建議給這些引腳賦予一個確定電平。2025/6/9114Atmega128的I/O端口端口引腳配置最簡單的保證未用引腳具有確定電平的方法是使能內部上拉電阻。但要注意的是復位時上拉電阻將被禁用。如果復位時的功耗也有嚴格要求則建議使用外部上拉或下拉電阻。不推薦直接將未用引腳與VCC或GND連接,因為這樣可能會在引腳偶然作為輸出時出現沖擊電流。2025/6/9115Atmega128的I/O端口端口A的第二功能2025/6/9116Atmega128的I/O端口端口B的第二功能2025/6/9117Atmega128的I/O端口端口C的第二功能端口引腳第二功能PC7 A15(為外部存儲器接口的地址高字節)PC6 A14(為外部存儲器接口的地址高字節)PC5 A13(為外部存儲器接口的地址高字節)PC4 A12(為外部存儲器接口的地址高字節)PC3 A11(為外部存儲器接口的地址高字節)PC2 A10(為外部存儲器接口的地址高字節)PC1 A9(為外部存儲器接口的地址高字節)PC0 A8(為外部存儲器接口的地址高字節)2025/6/9118Atmega128的I/O端口端口D的第二功能2025/6/9119Atmega128的I/O端口端口E的第二功能2025/6/9120Atmega128的I/O端口端口F的第二功能2025/6/9121Atmega128的I/O端口端口G的第二功能2025/6/9122Atmega128的I/O端口利用I/O端口實現八段數碼管輸出顯示由八段LED構成各LED陰極或陽極并在一起,稱為“位選線”:共陰、共陽其余8個引腳各自引出,稱為“段選線”,各段可以分別控制2025/6/9123Atmega128的I/O端口數字0123456789共陰極0x3F0x060x5B0x4F0x660x6D0x7D0x070x7F0x6F共陽極0xC00xF90xA40xB00x990x920x820xF80x800x90共陰極、共陽極數碼管段碼表2025/6/9124Atmega128的I/O端口利用I/O端口點亮四個7段數碼管返回2025/6/9125Atmega128的中斷處理2.3Atmega128硬件體系結構在程序運行期間,發生非預期的緊急事件通常是為了避免查詢方式的程序設計用得最多的是外部中斷與定時器中斷外部中斷:按鍵程序定時器中斷:定時與循環掃描等應用場合中斷服務程序中斷發生時,主程序暫停,跳轉到中斷服務程序,稱為“響應中斷”執行完畢后返回主程序繼續運行中斷的概念2025/6/9126Atmega128的中斷處理中斷屬于一種對事件的實時處理過程。中斷源可能隨時停止單片機當前正在處理的工作,轉而去處理中斷事件,待中斷時間處理完畢之后,再返回原來工作的斷點處,繼續原來的工作。對于單片機的中斷系統,需要了解這幾個概念:中斷源、中斷信號、中斷向量、中斷優先級、中斷嵌套、中斷控制(屏蔽)、中斷響應條件、中斷響應過程(中斷服務程序)。如何很好的理解中斷概念?2025/6/9127Atmega128的中斷處理中斷源的理解中斷源是指能夠向單片機發出中斷請求信號的部件和設備。對于單片機來講,往往存在多個中斷源。中斷源一般可分為內部中斷源和外部中斷源。單片機內部集成的許多功能模塊,如定時器、串行通訊口、模/數轉換器等,它們在正常工作時往往無需CPU參與,而當處于某種狀態或達到某個規定值需要程序控制時,會通過發出中斷請求信號通知CPU。這一類的中斷源位于單片機內部,稱作內部中斷源。內部中斷源在中斷條件成立時,一般通過片內硬件會自動產生中斷請求信號,無須用戶介入,使用方便。內部中斷是CPU管理片內資源的一種高效的途徑。系統中的外部設備也可以用作中斷源,這時要求它們能夠產生一個中斷信號(通常是高(低)電平或者電平跳變的上升(下降)沿),送到單片機的外部中斷請求引腳供CPU檢測。這些中斷源位于單片機外部,稱為外部中斷源。通常用作外部中斷源的有輸入輸出設備、控制對象、以及故障源等。2025/6/9128Atmega128的中斷處理中斷信號的理解中斷信號是指內部或外部中斷源產生的中斷申請信號,這個中斷信號往往是電信號的某種變化形式,通常有以下幾種類型:脈沖的上升沿或下降沿(上升沿觸發型或下降沿觸發型)高電平或低電平(電平觸發型)電平的變化(狀態變化觸發型)對于單片機來講,不同的中斷源,產生什么類型的中斷信號能夠觸發申請中斷,取決于芯片內部的硬件結構,而且通常也可以通過用戶的軟件來設定。單片機的硬件系統會自動對這些中斷信號進行檢測。一旦檢測到規定的信號出現,將會把相應的中斷標志位置“1”(在I/O空間的控制或狀態寄存器中),通知CPU進行處理。2025/6/9129Atmega128的中斷處理中斷向量的理解中斷源發出的請求信號被CPU檢測到之后,如果單片機的中斷控制系統允許響應中斷,CPU會自動轉移,執行一個固定的程序空間地址中的指令。這個固定的地址稱作中斷入口地址,也叫做中斷向量。中斷入口地址往往是由單片機內部硬件決定的。一個單片機有若干個中斷源,每個中斷源都有著自己的中斷向量。這些中斷向量一般在程序存儲空間中占用一個連續的地址空間段,稱為中斷向量區。由于一個中斷向量通常僅占幾個字節或一條指令的長度,所以在中斷向量區一般不放置中斷服務程序的。中斷服務程序一般放置在程序存儲器的其它地方,而在中斷向量處放置一條跳轉到中斷服務程序的指令。這樣,CPU響應中斷后,首先自動轉向執行中斷向量中的轉移指令,再跳轉執行中斷服務程序。2025/6/9130Atmega128的中斷處理中斷優先級的理解單片機系統一般有多個中斷源,當某一時刻同時有多個中斷產生時,單片機該如何處理呢?這就有了中斷優先級的概念。通常,單片機可以接收若干個中斷源發出的中斷請求。但在同一時刻,MCU只能響應這些中斷請求中的其中一個。為了避免MCU同時響應多個中斷請求帶來的混亂,在單片機中為每一個中斷源賦予一個特定的中斷優先級。一旦有多個中斷請求信號,MCU先響應中斷優先級高的中斷請求,然后再逐次響應優先級次一級的中斷。中斷優先級也反映了各個中斷源的重要程度,同時也是分析中斷嵌套的基礎。2025/6/9131Atmega128的中斷處理中斷優先級的理解對于中斷優先級的確定,通常是由單片機的硬件結構規定的。一般的確定規則方式為兩種:某中斷對應的中斷向量地址越小,其中斷優先級越高(硬件確定方式)。通過軟件對中斷控制寄存器的設定,改變中斷的優先級(用戶軟件可設置方式,注意:AVR不支持)。實際上,MCU在兩種情況下需要對中斷的優先級進行判斷:第一種情況為同時有兩(多)個中斷源申請中斷。在這種情況下,MCU首先響應中斷優先級最高的那個中斷,而將其它的中斷掛起。待優先級最高的中斷服務程序執行完成返回后,再順序響應優先級較低的中斷。第二種情況是當MCU正處于響應一個中斷的過程中。如已經響應了某個中斷,正在執行為其服務的中斷程序時,此時又產生一個其它的中斷申請,這種情況也稱作中斷嵌套。2025/6/9132Atmega128的中斷處理中斷嵌套的理解對于中斷嵌套的處理,不同的單片機處理的方式是不同的,應根據所使用單片機的特點正確實現中斷嵌套的處理。按照通常的規則,當MCU正在響應一個中斷B的過程中,又產生一個其它的中斷A申請時,如果這個新產生中斷A的優先級比正在響應的中斷B優先級高的話,就應該暫停當前的中斷B的處理,轉入響應高優先級的中斷A,待高優先級中斷A處理完成后,再返回原來的中斷B的處理過程。如果新產生中斷A的優先級比正在處理中斷B的優先級低(或相同),則應在處理完當前的中斷B后,再響應那個后產生的中斷A申請(如果中斷A條件還成立的話)。2025/6/9133Atmega128的中斷處理中斷嵌套的理解一些單片機(如8051結構)的硬件能夠自動實現中斷嵌套的處理,既單片機內部的硬件電路能夠識別中斷的優先級,并根據優先級的高低,自動完成對高優先級中斷的優先響應,實現中斷的嵌套處理。而另一類的單片機,如我們正在學習的AVR單片機,其硬件系統不支持自動實現中斷嵌套的處理。如果在系統設計中,必須使用中斷嵌套處理,則需要由用戶編寫相應的程序,通過軟件設置來實現中斷嵌套的功能。2025/6/9134Atmega128的中斷處理中斷控制(屏蔽)的理解單片機擁有眾多中斷源,但在某一具體設計中通常并不需要使用所有的中斷源,或者在系統軟件運行的某些關鍵階段不允許中斷打斷現行程序的運行,這就需要一套軟件可控制的中斷屏蔽/允許系統。在單片機的I/O寄存器中,通常存在一些特殊的標志位用于控制開放或關閉(屏蔽)MCU對中斷響應處理,這些標志稱為中斷屏蔽標志位或中斷允許控制位。用戶程序可以改變這些標志位的設置,在需要的時候允許MCU響應中斷,而在不需要的時候則將中斷請求信號屏蔽(注意:不是取消),此時盡管產生了中斷請求信號,MCU也不會響應中斷請求。2025/6/9135Atmega128的中斷處理中斷控制(屏蔽)的理解從對中斷源的控制角度講,中斷源還可分成2類:非屏蔽中斷。非屏蔽中斷是指MCU對中斷源產生的中斷請求信號是不能屏蔽的,也就是說一旦發生中斷請求,MCU肯定響應該中斷。在單片機中,外部RESET引腳產生的復位信號,就是一個非屏蔽的中斷。可屏蔽中斷。可屏蔽中斷是指用戶程序可以通過中斷屏蔽控制標志對中斷源產生的中斷請求信號進行控制,既允許或禁止MCU對該中斷的響應。在用戶程序中,可以預先執行一條允許中斷的指令,這樣一旦發生中斷請求,MCU就能夠響應中斷。反之,用戶程序也可以預先執行一條中斷禁止(屏蔽)指令,使MCU不響應中斷請求。因此,可屏蔽中斷的中斷請求能否可以被MCU響應,最終是由用戶程序來控制的。在單片機中,大多數的中斷都是可屏蔽的中斷。2025/6/9136Atmega128的中斷處理中斷響應條件的理解在單片機中,對應每一個中斷源都有一個相應的中斷標志位,該中斷標志位將占據中斷控制寄存器中的一位。當單片機檢測到某一中斷源產生符合條件的中斷信號時,其硬件會自動將該中斷源對應的中斷標志位置“1”,這就意味著有中斷信號產生了,向MCU申請中斷。但中斷標志位的置“1”,并不代表MCU一定響應該中斷。為了合理控制中斷響應,在單片機內部還有相關的用于中斷控制的中斷允許標志位。最重要的一個中斷允許標志位是全局中斷允許標志位。當該標志位為“0”,表示禁止MCU響應所有的可屏蔽中斷的響應。此時不管有否中斷產生,MCU不會響應任何的中斷請求。只有全局中斷允許標志位為“1”,才允許單片機響應中斷。2025/6/9137Atmega128的中斷處理中斷響應條件的理解MCU響應中斷請求的第二個條件是每個中斷源所具有的各自獨立的中斷允許標志位。當某個中斷允許標志位為“0”時,表示MCU不響應該中斷的中斷申請。從上面的中斷響應條件看出,只有當全局中斷允許標志位為“1”(由用戶軟件設置),中斷A允許標志位為“1”(由用戶軟件設置),中斷A標志位為“1”(符合中斷條件時由硬件自動設置或由用戶軟件設置)時,MCU才會響應中斷A的請求信號(如果有多個中斷請求信號同時存在的情況下,還要根據中斷A的優先級來確定)。用戶程序對可屏蔽中斷的控制,一般是通過設置相應的中斷控制寄存器來實現的。除了設置中斷的響應條件,用戶程序還需要通過中斷控制器來設置中斷的其他特性,如:中斷觸發信號的類型、中斷的優先級、中斷信號產生的條件等等。2025/6/9138Atmega128的中斷處理中斷響應過程(中斷服務程序)的理解當所有的中斷響應條件都滿足了之后,就要進入中斷響應過程進行相應處理了。單片機響應中斷后,首先要把當前指令的下一條指令的地址送入堆棧(保護斷點),然后根據中斷標記,將相應的中斷入口地址送入程序指針,程序轉到中斷入口處繼續執行(中斷服務程序),中斷程序執行完后,單片機再把堆棧中保存的地址取出,程序從剛才的中斷處繼續向下執行。需要注意的是,單片機硬件所做的保護工作只是保護了程序的一個指令地址,如果中斷響應過程中修改了一些寄存器和變量的值,就需要在中斷響應程序里面自己加以保護。2025/6/9139Atmega128的中斷處理中斷響應時間的理解AVR中斷響應時間最少為4個時鐘周期。4個時鐘周期后,程序跳轉到實際的中斷處理例程。在這4個時鐘期間,PC自動入棧。在通常情況下,中斷向量為一個跳轉指令,此跳轉要花3個時鐘周期。如果中斷在一個多周期指令執行期間發生,則在此多周期指令執行完后MCU才會執行中斷程序。若中斷發生時MCU處于睡眠模式,中斷響應時間增加到8個時鐘周期。增加的時鐘周期是由于喚醒啟動時間引入的。中斷返回亦需4個時鐘。在此期間PC(兩個字節)將被彈出棧,堆棧指針加二,狀態寄存器SREG的I置位。AVR退出中斷后總是回到主程序并執行一條指令才可以去執行其他被掛起的中斷。2025/6/9140Atmega128的中斷處理AVR有35個外部及內部中斷源。每個中斷和復位在程序空間都有一個獨立的中斷向量。所有的中斷事件都有自己的使能位。當使能位置位,且狀態寄存器的全局中斷使能位I也置位的情況下,中斷可以發生。2025/6/9141Atmega128的中斷處理2025/6/9142Atmega128的中斷處理2025/6/9143Atmega128的中斷處理Atmega128的外部中斷源外部中斷通過引腳INT7:0觸發。只要使能了中斷,即使引腳INT7:0配置為輸出,只要電平發生了合適的變化,中斷也會觸發。這個特點可以用來產生軟件中斷。通過設置外部中斷控制寄存器–EICRA(INT3:0)和EICRB(INT7:4),中斷可以由下降沿、上升沿,或者是低電平觸發。當外部中斷使能并且配置為電平觸發,只要引腳電平為低,中斷就會產生。若要求INT7:4在信號下降沿或上升沿觸發,I/O時鐘必須工作。INT3:0的中斷條件檢測則是異步的。也就是說,這些中斷可以用來將器件從睡眠模式喚醒。在睡眠過程(除了空閑模式)中I/O時鐘是停止的。2025/6/9144外部中斷的相關寄存器說明外部中斷控制寄存器A-EICRABit76543210EICRAISC31ISC30ISC21ISC20ISC11ISC10ISC01ISC00讀/寫R/WR/WR/WR/WR/WR/WR/WR/W初始值00000000?Bits7..0:外部中斷3-0敏感電平控制位外部中斷3-0由引腳INT3:0激活,前提是SREG寄存器的I標志和EIMSK寄存器相應的中斷屏蔽位置位。INT3..INT0的邊沿觸發方式是異步的。只要INT3:0引腳上產生寬度大于50ns的脈沖就會引發中斷。若選擇了低電平中斷,低電平必須保持到當前指令完成,然后才會產生中斷。而且只要將引腳拉低,就會引發中斷請求。改變ISCn時有可能發生中斷。因此建議首先在寄存器EIMSK里清除相應的中斷使能位INTn,然后再改變ISCn。最后,不要忘記在重新使能中斷之前通過對EIFR寄存器的相應中斷標志位INTFn寫'1’使其清零。2025/6/9145外部中斷的相關寄存器說明外部中斷控制寄存器A-EICRABit76543210EICRAISC31ISC30ISC21ISC20ISC11ISC10ISC01ISC00讀/寫R/WR/WR/WR/WR/WR/WR/WR/W初始值000000002025/6/9146外部中斷的相關寄存器說明外部中斷控制寄存器B-EICRBBit76543210EICRBISC71ISC70ISC61ISC60ISC51ISC50ISC41ISC40讀/寫R/WR/WR/WR/WR/WR/WR/WR/W初始值00000000?Bits7..0:外部中斷7-4敏感電平控制位外部中斷7-4由引腳INT7:4激活,前提是SREG寄存器的I標志和EIMSK寄存器相應的中斷屏蔽位置位。檢測信號跳變沿之前MCU首先對INT7:4引腳進行采樣。如果選擇了跳變沿中斷或是電平變換中斷(上升沿和下降沿都將產生中斷),只要信號持續時間大于一個時鐘周期,中斷就會發生;否則無法保證觸發中斷。要注意由于XTAL分頻器的存在,CPU時鐘有可能比XTAL時鐘慢。若選擇了低電平中斷,低電平必須保持到當前指令完成,然后才會產生中斷。而且只要將引腳拉低,就會引發中斷請求。2025/6/9147外部中斷的相關寄存器說明外部中斷控制寄存器B-EICRBBit76543210EICRBISC71ISC70ISC61ISC60ISC51ISC50ISC41ISC40讀/寫R/WR/WR/WR/WR/WR/WR/WR/W初始值000000002025/6/9148外部中斷的相關寄存器說明外部中斷屏蔽寄存器-EIMSKBit76543210EIMSKINT7INT6INT5INT4INT3INT2INT1INT0讀/寫R/WR/WR/WR/WR/WR/WR/WR/W初始值00000000?Bits7..0–INT7–INT0:外部中斷請求7-0使能當INT7–INT0為'1’,而且狀態寄存器SREG的I標志置位,相應的外部引腳中斷就使能了。外部中斷控制寄存器–EICRA和EICRB的中斷敏感電平控制位決定中斷是由上升沿、下降沿,還是電平觸發的。只要使能,即使引腳被配置為輸出,只要引腳電平發生了相應的變化,中斷可將產生。據此可以實現軟件中斷。2025/6/9149外部中斷的相關寄存器說明外部中斷標志寄存器-EIFRBit76543210EIFRINTF7INTF6INTF5INTF4INTF3INTF2INTF1INTF0讀/寫R/WR/WR/WR/WR/WR/WR/WR/W初始值00000000?Bits7..0–INTF7-INTF0:外部中斷標志7-0INT7:0引腳電平發生跳變時觸發中斷請求,并置位相應的中斷標志INTF7:0。如果SREG的位I以及EIMSK寄存器相應的中斷使能位為’1’,MCU既跳轉到中斷例程。中斷例程執行時標志被硬件清零。此外,標志位也可以通過寫入’1’的方式來清零。若INT7:0配置為電平觸發,這些標志位總是為'0’。在睡眠模式下,如果中斷是禁止的,則這些引腳的輸入緩沖器也是禁止的。這有可能產生邏輯電平的變化并置位INTF3:0。2025/6/9150Atmega128的中斷處理外部中斷實例分析2025/6/9151interrupt[EXT_INT0]voidext_int0_isr(void){d
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年內蒙古赤峰克什克騰旗公益性崗位人員招聘真題
- 2024年呼和浩特市賽罕區第七幼兒園招聘真題
- 快遞和菜鳥驛站合作協議
- 基于工業設計的區塊鏈去中心化金融用戶體驗-洞察闡釋
- 重慶冷軋硅鋼生產線項目可行性研究報告(范文模板)
- 五金工具企業經營管理方案
- 第六單元講評課教學設計(附測試題)
- 2025至2030年中國瓷盆單水嘴行業投資前景及策略咨詢報告
- 2025至2030年中國熱水取暖鍋爐行業投資前景及策略咨詢報告
- 2025至2030年中國激光電腦四輪定位儀行業投資前景及策略咨詢報告
- 全國數據應用大賽“數字安全賽”備賽試題及答案
- 部編版 高中語文 選擇性必修下 第四單元 自然選擇的證明練習題及答案
- 電氣二次故障分析、判斷及處理技能培訓課件
- 2023年上海市初中學生學業考試生命科學試卷及答案
- 2024年事業單位考試題庫及答案(共200題)
- 實驗室保密規定2024年
- 2024新高考I卷全國統一考試高考生物試題(真題+答案)
- T-GDASE 0042-2024 固定式液壓升降裝置安全技術規范
- HJ1249-2022排污單位自行監測技術指南儲油庫、加油站
- 江湖算命揣摩技巧-《英耀篇》原文、翻譯及其詳解
- 四川省康定市大槽門金礦資源儲量核實報告
評論
0/150
提交評論