版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
6.1I/O端口
從這部分開始,將結(jié)合C語言編程練習(xí)和單片機外圍元器件與電路,來詳細了解ATmega8A單片機硬件的各種功能資源。首先要學(xué)習(xí)的是單片機中最簡單但又很重要的I/O端口,即輸入/輸出端口,它們是單片機與外部設(shè)備進行數(shù)據(jù)交換或輸出控制信號的通道。ATmega8A單片機有三組I/O端口,分別是PORTB、PORTC(7位)和PORTD,共21路通用I/O接口,分別對應(yīng)單片機芯片上的21個引腳。ATmega16A單片機有32個I/O口,而ATmega64A有48個I/O口,ATmega128A則有53個I/O口。它們的結(jié)構(gòu)、原理與使用方法基本相同,可以根據(jù)實際應(yīng)用的I/O口需要,選擇不同型號AVR單片機。ATmega8A中所有這些I/O口都是兩功能或三功能復(fù)用的。其第一功能都是作為通用數(shù)字I/O口使用,而復(fù)用功能則分別用于諸如外部中斷、定時/計數(shù)器、SPI、USART、TWI和ADC等應(yīng)用。下一頁返回6.1I/O端口
作為通用數(shù)字I/O口使用時,所有AVR單片機I/O端口都具有真正的讀—修改—寫功能。輸出緩沖器具有對稱的驅(qū)動能力,可以輸出或吸收20mA電流,能直接驅(qū)動LED等小功率外圍器件。圖6.1為I/O口引腳等效原理圖。所有的端口引腳都有與電壓無關(guān)的上拉電阻Rpu,并有保護二極管與VCC
和地相連。編程時,對每個端口的使用都需要通過3個I/O寄存器來完成,它們分別是:①數(shù)據(jù)寄存器—PORTx;②數(shù)據(jù)方向寄存器—DDRx;③端口輸入引腳寄存器—PINx。其中,小寫的“x”表示端口的序號,對ATmega8A其取值為B、C、D。而后面要遇到的小寫的“n”代表位的序號,通常取值為0~7,如PORTB.3表示端口B的第3位。上一頁下一頁返回6.1I/O端口
數(shù)據(jù)寄存器PORTx用于向端口輸出數(shù)據(jù),或者從端口輸入數(shù)據(jù)。數(shù)據(jù)方向寄存器DDRx用于控制端口數(shù)據(jù)傳輸方向,I/O端口在使用之前,要明確其是用于輸入還是輸出。端口輸入引腳寄存器PINx用于輸入實時的端口引腳電平。數(shù)據(jù)寄存器和數(shù)據(jù)方向寄存器為讀/寫寄存器,而端口輸入引腳寄存器為只讀寄存器。但是需要注意的是,對PINx寄存器某一位寫入邏輯“1”將造成數(shù)據(jù)寄存器相應(yīng)位的數(shù)據(jù)發(fā)生“0”與“1”的交替變化。當(dāng)寄存器SFIOR的上拉禁止位PUD置位時,所有端口引腳的上拉電阻都被禁止。端口引腳在使用之前都應(yīng)按需要進行相應(yīng)的配置,即要對3個I/O端口寄存器以及相應(yīng)的寄存器位進行設(shè)置。單片機程序在執(zhí)行時對所有寄存器的操作,都是通過引用其地址來實現(xiàn)的。但是,如果在編程時也引用寄存器地址,則很不方便,且程序的可讀性也不好。所以,在CVAVR中事先已經(jīng)把所有的寄存器地址通過宏定義賦予了一個有意義的名字,而編程時對寄存器的操作,直接引用這個名字即可。上一頁下一頁返回6.1I/O端口
如PORTB、DDRC和PIND等,都是相應(yīng)寄存器地址的宏定義名字。而寄存器中的某一位,則是通過PORTB.n這樣的形式來引用的。DDRx用來選擇引腳的輸入/輸出方向,如果令DDRx=0xFF,則對應(yīng)的PORTx所有引腳均配置為輸出;若DDRx=0x00,則PORTx所有引腳均配置為輸入。當(dāng)然,也可以任意設(shè)置端口的某些位為輸入,某些位為輸出。如DDRB.0=1,只是設(shè)置了B口的第0位為輸出,而不管其他位如何。當(dāng)端口設(shè)置為輸出時,例如DDRB=0xFF,并且有PORTB=0xFF,則表示在端口B所有引腳都輸出了高電平,若有PORTB=0x00,則是在端口B所有引腳都輸出了低電平。當(dāng)端口設(shè)置為輸入時(或輸出時),可以通過讀取PINx寄存器來獲得引腳的實時電平。此外,當(dāng)端口設(shè)置為輸入狀態(tài)時(DDRx=0x00),通過對應(yīng)的PORTx的值,可控制使用或禁用端口內(nèi)部的上拉電阻。有時為了不影響其他電路,需要把端口設(shè)置為高阻態(tài),其設(shè)置方法為:{DDRx,PORTx}=0x00。表6.1為I/O口引腳配置情況。上一頁下一頁返回6.1I/O端口
除了通用數(shù)字I/O口功能之外,大多數(shù)端口引腳都具有第二功能。1.端口B的第二功能(見表6.2)(1)XTAL2/TOSC2—端口B,bit7。使用外部晶振時,PB7作為芯片時鐘振蕩器引腳2。當(dāng)作為時鐘引腳時,不能同時再作為I/O引腳使用。若PB7作為時鐘引腳使用,DDRB.7、PORTB.7及PINB.7的讀出值為“0”。(2)XTAL1/TOSC1—端口B,bit6。PB6可用作芯片時鐘振蕩器引腳1,適用于所有芯片時鐘源(片內(nèi)標(biāo)定RC振蕩器除外)。當(dāng)作為時鐘引腳時,不能同時再作為I/O引腳使用。若PB6作為時鐘引腳使用,DDRB.6、PORTB.6及PINB.6的讀出值為“0”。上一頁下一頁返回6.1I/O端口
(3)SCK—端口B,bit5。PB5可用作SPI接口的主機時鐘輸出引腳,從機時鐘輸入引腳。工作于從機模式時,不論DDRB.5如何設(shè)置,這個引腳都將作為輸入。工作于主機模式時,這個引腳的數(shù)據(jù)方向由DDRB.5控制。設(shè)置為輸入后,上拉電阻由PORTB.5控制。(4)MISO—端口B,bit4。PB4可用作SPI通道的主機數(shù)據(jù)輸入、從機數(shù)據(jù)輸出引腳。工作于主機模式時,不論DDRB.4如何設(shè)置,這個引腳都將作為輸入。工作于從機模式時,這個引腳的數(shù)據(jù)方向由DDRB.4控制。設(shè)置為輸入后,上拉電阻由PORTB.4控制。上一頁下一頁返回6.1I/O端口
(5)MOSI/OC2—端口B,bit3。MOSI:PB3可作為SPI通道的主機數(shù)據(jù)輸出、從機數(shù)據(jù)輸入引腳。工作于從機模式時,不論DDRB.3如何設(shè)置,這個引腳都將作為輸入。當(dāng)工作于主機模式時,這個引腳的數(shù)據(jù)方向由DDRB.3控制。設(shè)置為輸入后,上拉電阻由PORTB.3控制。OC2:PB3還可用作T/C2輸出比較功能的匹配輸出引腳。此時,PB3引腳將設(shè)置為輸出。OC2在定時器PWM模式功能時作為輸出引腳。上一頁下一頁返回6.1I/O端口
(6)SS/OC1B—端口B,bit2。SS:PB2可用作從機選中信號引腳。工作于從機模式時,不論DDRB.2如何設(shè)置,這個引腳都將作為輸入。當(dāng)此引腳變?yōu)榈碗娖綍rSPI被激活。工作于主機模式時,這個引腳的數(shù)據(jù)方向由DDRB.2控制。設(shè)置為輸入后,上拉電阻由PORTB.2控制。OC1B:PB2還可用作T/C1輸出比較功能匹配時的外部輸出B引腳。此時,PB2引腳將設(shè)置為輸出。OC1B在定時器PWM模式功能時作為輸出引腳。(7)OC1A—端口B,bit1。PB1還可用作T/C1輸出比較功能匹配時的外部輸出A引腳。此時,PB1引腳將設(shè)置為輸出。OC1A在定時器PWM模式功能時作為輸出引腳。(8)ICP1—端口B,bit0。PB0還可用作T/C1的輸入捕捉引腳。上一頁下一頁返回6.1I/O端口
2.端口C的第二功能(見表6.3)(1)RESET—端口C,bit6。PC6可作為外部復(fù)位引腳,當(dāng)RSTDISBL熔絲位編程,該引腳作為普通I/O引腳使用時,系統(tǒng)只能依靠上電復(fù)位與掉電檢測復(fù)位作為復(fù)位源。若RSTDISBL熔絲位未編程,復(fù)位電路與該引腳連接時,該引腳不能作為普通I/O引腳使用。(2)SCL/ADC5—端口C,bit5。SCL:PC5可作為兩線串行接口時鐘引腳。當(dāng)TWCR寄存器的TWEN位置“1”,使能兩線串行接口,引腳PC5不與I/O端口寄存器相連,而是成為兩線串行接口的串行時鐘引腳。ADC5:PC5還可用作ADC的輸入通道5。注意,ADC輸入通道5使用數(shù)字電源。上一頁下一頁返回6.1I/O端口
(3)SDA/ADC4—端口C,bit4。SDA:PC4可作為兩線串行接口數(shù)據(jù)引腳。當(dāng)TWCR寄存器的TWEN位置“1”,使能兩線串行接口,引腳PC4不與I/O寄存器相連,而是成為兩線串行接口的串行數(shù)據(jù)引腳。ADC4:PC4還可用作ADC輸入通道4。注意,ADC輸入通道4使用數(shù)字電源。(4)ADC3—端口C,bit3。PC3可用作ADC輸入通道3。注意,ADC輸入通道3使用模擬電源。上一頁下一頁返回6.1I/O端口
(5)ADC2—端口C,bit2。PC2可用作ADC輸入通道2。注意,ADC輸入通道2使用模擬電源。(6)ADC1—端口C,bit1。PC1可用作ADC輸入通道1。注意,ADC輸入通道1使用模擬電源。(7)ADC0—端口C,bit0。PC0可用作ADC輸入通道0。注意,ADC輸入通道0使用模擬電源。上一頁下一頁返回6.1I/O端口
3.端口D的第二功能(見表6.4)(1)AIN1—端口D,bit7。PD7可作為模擬比較器的負輸入端。將引腳配置為輸入端口,并關(guān)閉內(nèi)部上拉電阻,可避免模擬比較器干擾數(shù)字端口功能。(2)AIN0—端口D,bit6。PD6可作為模擬比較器的正輸入端。將引腳配置為輸入端口,并關(guān)閉內(nèi)部上拉電阻,可避免模擬比較器干擾數(shù)字端口功能。(3)T1—端口D,bit5。PD5可作為T/C1計數(shù)器外部計數(shù)脈沖輸入引腳。(4)XCK/T0—端口D,bit4。XCK:PD4可作為USART外部時鐘引腳。T0:PD4還可作為T/C0計數(shù)器外部計數(shù)脈沖輸入引腳。上一頁下一頁返回6.1I/O端口
(5)INT1—端口D,bit3。PD3可作為外部中斷1輸入引腳。(6)INT0—端口D,bit2。PD2引腳可作為外部中斷0輸入引腳。(7)TXD—端口D,bit1。PD1可作為USART的數(shù)據(jù)發(fā)送引腳。當(dāng)使能了USART的發(fā)送器后,這個引腳被強制設(shè)置為輸出,此時DDRD.1不起作用。(8)RXD—端口D,bit0。PD0可作為USART的數(shù)據(jù)接收引腳。當(dāng)使能了USART的接收器后,這個引腳被強制設(shè)置為輸入,此時DDRD.0不起作用,但是PORTD.0仍然可以控制上拉電阻。上一頁下一頁返回6.1I/O端口
各個I/O端口寄存器的結(jié)構(gòu)與說明如圖6.2
圖6.3
圖6.4
圖6.5。端口C數(shù)據(jù)寄存器—PORTC,端口C是7位,其余同端口B。端口C數(shù)據(jù)方向寄存器—DDRC,端口C是7位,其余同端口B;端口C輸入引腳地址—PINC,端口C是7位,其余同端口B;端口D數(shù)據(jù)寄存器—PORTD,結(jié)構(gòu)同端口B;端口D數(shù)據(jù)方向寄存器—DDRD,結(jié)構(gòu)同端口B;端口D輸入引腳地址—PIND,結(jié)構(gòu)同端口B。這9個端口寄存器名字在C語言編程時經(jīng)常要用到,需要記住。上一頁返回6.2外部中斷
前面介紹過,中斷是指單片機臨時停止當(dāng)前正在執(zhí)行的程序,轉(zhuǎn)去處理一些非常緊急,且必須及時處理的事情,處理完畢后,再轉(zhuǎn)回去繼續(xù)執(zhí)行中斷前的程序。中斷,是計算機編程的一個非常重要而有用的技術(shù)。不同的緊急事情,AVR對應(yīng)有不同的中斷源,并用相應(yīng)的中斷服務(wù)程序去處理。中斷的觸發(fā)源可以來自單片機內(nèi)部(如定時器溢出、A/D轉(zhuǎn)換結(jié)束、數(shù)據(jù)傳輸結(jié)束等),也可以是來自單片機外部的事件。外部中斷通過引腳INT0、INT1引入觸發(fā)信號。當(dāng)我們使能了中斷,即使引腳INT0、INT1配置為輸出,只要電平發(fā)生了合適的變化,中斷也會被觸發(fā)。這個特點可以用來產(chǎn)生軟件中斷。通過設(shè)置MCU控制寄存器MCUCR的值,外部中斷可以由INT0、INT1引腳電平的下降沿、上升沿,或者是低電平觸發(fā)。當(dāng)外部中斷使能并且配置為低電平觸發(fā)(INT0/INT1)時,只要引腳電平為低,中斷就會產(chǎn)生。下一頁返回6.2外部中斷
若要求INT0與INT1在信號下降沿或上升沿觸發(fā),I/O時鐘必須工作。INT0/INT1的低電平中斷檢測是異步的,也就是說,這低電平中斷可以用來將器件從睡眠模式喚醒。在睡眠過程(除了空閑模式)中I/O時鐘是停止的。1.MCU控制寄存器—MCUCRMCUCR包含外部中斷觸發(fā)控制位與通用MCU功能,其位定義如圖6.6所示。(1)bit3、bit2—ISC11、ISC10:外部中斷1觸發(fā)方式控制位。如果狀態(tài)寄存器SREG的全局中斷使能位I和通用中斷控制寄存器GICR中外部中斷1使能位置位,外部中斷1將由引腳INT1上的信號觸發(fā)。觸發(fā)方式如表6.5所示。在檢測邊沿到來之前,INT1引腳上的電平被一直采樣。如果選擇了邊沿觸發(fā)方式或電平變化觸發(fā)方式,那么持續(xù)時間大于一個時鐘周期的脈沖將觸發(fā)中斷,過短的脈沖則不能保證觸發(fā)中斷。如果選擇低電平觸發(fā)方式,那么低電平必須保持到當(dāng)前指令執(zhí)行完成。上一頁下一頁返回6.2外部中斷
(2)bit1、bit0—ISC01、ISC00:外部中斷0觸發(fā)方式控制位。如果狀態(tài)寄存器SREG的全局中斷使能位I和通用中斷控制寄存器GICR的外部中斷0使能位置位,外部中斷0由引腳INT0上的信號觸發(fā)。觸發(fā)方式如表6.6所示。在檢測邊沿到來前,INT0引腳上的電平被一直采樣。如果選擇了邊沿觸發(fā)或電平變化觸發(fā)方式,那么持續(xù)時間大于一個時鐘周期的脈沖將觸發(fā)中斷,過短的脈沖不能保證觸發(fā)中斷。如果選擇低電平觸發(fā)方式,那么低電平必須保持到當(dāng)前指令執(zhí)行完成。上一頁下一頁返回6.2外部中斷
2.通用中斷控制寄存器—GICRGICR的位定義如圖6.7所示。bit7、bit6—INT1、INT0:外部中斷1、0開關(guān)。當(dāng)INT1、INT0為“1”,且狀態(tài)寄存器SREG的全局中斷標(biāo)志位I置位,相應(yīng)的外部引腳中斷就使能了。MCU控制寄存器MCU
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年黨史知識競賽試卷及答案(第二套)
- 《化工行業(yè)綠色制造與節(jié)能減排的產(chǎn)業(yè)政策效果評價》教學(xué)研究課題報告
- 2026年公務(wù)員面試綜合分析類社會熱點問題思路含答案
- 安全生產(chǎn)管理條例課件
- 2026年欽州市欽南區(qū)審計局招聘工作人員備考題庫及1套完整答案詳解
- 2026年雅安市公安局監(jiān)察留置看護支隊招聘備考題庫完整答案詳解
- 安全生產(chǎn)雙體系培訓(xùn)課件
- 2026年重慶丹源安保服務(wù)有限公司派往墊江縣公安局輔警崗位工作人員招聘備考題庫及參考答案詳解一套
- 2026年橫琴粵澳深度合作區(qū)首都師范大學(xué)子期實驗小學(xué)招聘備考題庫及參考答案詳解一套
- 企業(yè)知識產(chǎn)權(quán)保護策略指南
- 電梯維護保養(yǎng)規(guī)則(TSG T5002-2017)
- (高清版)TDT 1057-2020 國土調(diào)查數(shù)據(jù)庫標(biāo)準
- 2024版未來食品加工技術(shù)趨勢:智能化與自動化培訓(xùn)課件
- 無人機測繪操控員培訓(xùn)計劃及大綱
- 家具結(jié)構(gòu)設(shè)計方案
- GB/T 18659-2023封閉管道中流體流量的測量電磁流量計使用指南
- 天線產(chǎn)品及技術(shù)培訓(xùn)材料
- 哈弗H7保養(yǎng)手冊
- SH-T 3202-2018 二氧化碳輸送管道工程設(shè)計標(biāo)準 含2022年第1號修改單
- 機場ppt課件 140414-機場燈光
- 膜分離技術(shù)論文
評論
0/150
提交評論