




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
3.1通用IO端口3.1.1MSP430端口概述通用I/O端口是MSP430單片機(jī)最重要也是最常用的外設(shè)模塊。通用I/O端口不僅可以直接用于輸入/輸出,而且可以為MSP430單片機(jī)應(yīng)用系統(tǒng)提供必要的邏輯控制信號。MSP430F5xx/6xx系列單片機(jī)最多可以提供12個通用I/O端口(P1~P11和PJ),大部分端口有8個引腳,少數(shù)端口引腳數(shù)少于8個。每個I/O引腳都可以被獨立地設(shè)置為輸入或者輸出引腳,并且每個I/O引腳都可以被獨立地讀取或者寫入,所有的端口寄存器都可以被獨立地置位或者清零。P1~P4引腳具有中斷能力。從P1和P2端口的各個I/O引腳引入的中斷可以獨立地被使能,并且被設(shè)置為上升沿或者下降沿觸發(fā)中斷。所有P1端口的I/O引腳的中斷都來源于同一個中斷向量P1IV。同理,P2端口的中斷源都來源于另一個中斷向量P2IV??梢詫γ總€獨立的端口進(jìn)行字節(jié)訪問,或者將兩個結(jié)合起來進(jìn)行字訪問。端口組合P1和P2、P3和P4、P5和P6、P7和P8可結(jié)合起來稱為PA、PB、PC和PD端口。當(dāng)進(jìn)行字操作寫入PA口時,所有的16位數(shù)據(jù)都被寫入這個端口;利用字節(jié)操作寫入PA端口低字節(jié)時,高字節(jié)保持不變;利用字節(jié)指令寫入PA端口的高字節(jié)時,低字節(jié)保持不變。其他端口也是一樣。當(dāng)寫入的數(shù)據(jù)長度小于端口的最大長度時,那些沒有用到的位保持不變。應(yīng)用這個規(guī)則來訪問所有端口,除了中斷向量寄存器P1IV和P2IV,它們只能進(jìn)行字節(jié)操作。13.1通用IO端口3.1.1MSP430端口概述GPIO基本都是用于芯片與片外器件或設(shè)備的交互。檢測數(shù)字輸入,如鍵盤或開關(guān)信號;驅(qū)動LED,蜂鳴器或LCD等其他指示器;控制片外器件,較高級的使用可以用它們(通過程序)模擬很多器件的時序達(dá)到控制相應(yīng)器件的目的,比如模擬SPI和模擬總線等。GPIO(GeneralPurposeI/O),通用輸入輸出端口。2MSP430的GPIO特點(1/4)2023/2/43
有端口P1、P2、P3、P4、P5、P6、P7、P8、P9、P10、P11、S和COM。產(chǎn)品因型號不同可包含上述所有或部分端口。如下表所示:MSP430的GPIO特點(2/4)2023/2/44具有中斷能力的端口:P1~P4。端口P1~P4具有輸入輸出、中斷和外部模塊功能。這些功能可以通過它們各自9個控制寄存器的設(shè)置來實現(xiàn)。所有P1端口的I/O引腳的中斷都來源于同一個中斷向量P1IV。同理,P2端口的中斷源都來源于另一個中斷向量P2IV。不具有中斷能力的端口:其他端口
P5和其他端口沒有中斷能力,其余功能同P1~P4,可以實現(xiàn)輸入/輸出功能和外圍模塊功能。端口COM和S
這些端口實現(xiàn)與液晶片的直接接口。COM端口為液晶片的公共端,S口為液晶片的段碼端。MSP430的GPIO特點(3/4)功能豐富2023/2/45MSP430各端口和功能,如下表所示:端口引腳還可以獨立的配置成特殊功能,例如:USART–通用串行同步/異步通信模塊;模擬信號比較器;模擬—數(shù)字轉(zhuǎn)換器;其他功能(請參見具體芯片的數(shù)據(jù)手冊)。MSP430的GPIO特點(4/4)寄存器豐富2023/2/46MSP430各種端口有大量的控制寄存器供用戶操作。最大限度提供了輸入/輸出的靈活性。每個I/O口都可以獨立編程。輸入或輸出可任意組合。P1和P2所有I/O口都具有邊沿可選的輸入中斷功能。可以按字節(jié)輸入輸出,也可按位進(jìn)行操作??稍O(shè)置I/O口的上拉或下拉功能??膳渲肐/O驅(qū)動能力(高驅(qū)動強度或低驅(qū)動強度)。GPIO寄存器(1/9)2023/2/47PxDIR輸入/輸出方向寄存器相互獨立的8位分別定義了8個引腳的輸入/輸出方向。使用輸入和輸出功能時,應(yīng)該先定義端口的方向。PxDIR配置:
Bit=1:將端口引腳設(shè)置為輸出模式;
Bit=0:將端口引腳設(shè)置為輸入模式。例,設(shè)置P1端口的P1.0引腳為輸出方向,其余引腳(P1.1~P1.7)設(shè)置為輸入方向。 P1DIR=0x01;//設(shè)置P1端口P1.0引腳為輸出方向GPIO寄存器(2/9)2023/2/48PxIN輸入寄存器該寄存器是只讀寄存器,即用戶不能對它寫入。這個寄存器是只讀的,其中的每一位都反映了其對應(yīng)的I/O引腳的輸入信號(引腳配置為通用I/O)。PxIN配置: Bit=1:輸入為高電平; Bit=0:輸入為低電平;GPIO寄存器(3/9)2023/2/49PxOUT輸出寄存器輸出寄存器是可讀可寫的。這個寄存器的每個位都反映了寫入相應(yīng)輸出引腳的值。將需要的值寫入該寄存器,控制輸出引腳的電平狀態(tài)。PxOUT配置: Bit=1:輸出為高電平; Bit=0:輸出為低電平;PxREN寄存器中的每一位可使能或禁用相應(yīng)I/O引腳的上拉/下拉電阻。PxREN配置: Bit=1:使能上拉/下拉電阻; Bit=0:禁用上拉/下拉電阻。當(dāng)使能引腳上拉或下拉功能時,通過設(shè)置PxOUT相應(yīng)位來選擇。GPIO寄存器(4/9)2023/2/410PxREN上拉或下拉電阻使能寄存器Bit=1:引腳選擇上拉;上拉電阻簡單來說就是把電平拉高,通常用4.7-10K的電阻接到Vcc電源。VCC引腳Px.xRR引腳上拉PxREN寄存器中的每一位可使能或禁用相應(yīng)I/O引腳的上拉/下拉電阻。PxREN配置: Bit=1:使能上拉/下拉電阻; Bit=0:禁用上拉/下拉電阻。當(dāng)使能引腳上拉或下拉功能時,通過設(shè)置PxOUT相應(yīng)位來選擇。GPIO寄存器(4/9)2023/2/411PxREN上拉或下拉電阻使能寄存器Bit=1:引腳選擇上拉上拉電阻簡單來說就是把電平拉高,通常用4.7-10K的電阻接到Vcc電源。Bit=0:引腳選擇下拉;下拉電阻則是把電平拉低,電阻接到GND地線上。VCC引腳Px.xRR引腳下拉GPIO寄存器(5/9)2023/2/412PxSEL功能選擇寄存器I/O端口還具有其他片內(nèi)外設(shè)功能,為減少引腳,將這些外設(shè)功能與I/O端口引腳復(fù)用來實現(xiàn)。PxSEL來選擇引腳的I/O端口功能與外圍模塊功能。PxSEL的配置: Bit=0:選擇引腳為I/O端口; Bit=1:選擇引腳為外設(shè)功能。GPIO寄存器(6/9)2023/2/413PxDS輸出驅(qū)動強度寄存器PxDS寄存器的每個位,設(shè)置引腳的輸出強度為高驅(qū)動強度或低驅(qū)動強度。默認(rèn)值為低驅(qū)動強度。PxDS的配置: Bit=0:低驅(qū)動強度; Bit=1:高驅(qū)動強度。GPIO寄存器(7/9)2023/2/414PxIE中斷使能寄存器(僅中斷端口P1和P2)該寄存器的8位與端口的8個引腳一一對應(yīng),其中某一位置位表示允許對應(yīng)的引腳在電平變化(上升沿或下降沿)時產(chǎn)生中斷,否則,表示禁止該位的中斷。每個PxIE位使能的中斷請求都與相應(yīng)的PxIFG中斷標(biāo)志相關(guān)聯(lián),可通過寫PxOUT和PxDIR來設(shè)置PxIFG。PxIE的配置: Bit=1:允許中斷; Bit=0:禁止中斷。GPIO寄存器(8/9)2023/2/415PxIES中斷觸發(fā)沿選擇寄存器(僅中斷端口P1和P2)如果允許Px口的某個引腳中斷(即PxIE和GIE已設(shè)置),還需定義該引腳的中斷觸發(fā)方式。該寄存器可讀可寫,寄存器的8位分別對應(yīng)Px口8個引腳PxIES的配置: Bit=1:下降沿使相應(yīng)中斷標(biāo)志置位; Bit=0:上升沿使相應(yīng)中斷標(biāo)志置位。GPIO寄存器(9/9)2023/2/416PxIFG中斷標(biāo)志寄存器(僅中斷端口P1和P2)該寄存器用來表示對應(yīng)引腳是否產(chǎn)生了由PxIES設(shè)定的電平跳變。如果在GIE置位,引腳對應(yīng)的中斷使能寄存器PxIE位置位,則會向CPU請求中斷處理。中斷標(biāo)志PxIFG.0~PxIFG.7共用一個中斷向量,PxIFG.0~PxIFG.7不會自動復(fù)位。必須用軟件來判定是對哪一個事件服務(wù),并將相應(yīng)的標(biāo)志復(fù)位。PxIFG的配置: Bit=0:沒有中斷請求; Bit=1:有中斷請求。4.1中斷的基本概念1.中斷定義
中斷是暫停CPU正在運行的程序,轉(zhuǎn)去執(zhí)行相應(yīng)的中斷服務(wù)程序,完畢后返回被中斷的程序繼續(xù)運行的現(xiàn)象和技術(shù)。2.中斷源
把引起中斷的原因或者能夠發(fā)出中斷請求的信號源統(tǒng)稱為中斷源。中斷首先需要由中斷源發(fā)出中斷請求,并征得系統(tǒng)允許后才會發(fā)生。在轉(zhuǎn)去執(zhí)行中斷服務(wù)程序前,程序需保護(hù)中斷現(xiàn)場;在執(zhí)行完中斷服務(wù)程序后,應(yīng)恢復(fù)中斷現(xiàn)場。中斷源一般分成兩類:外部硬件中斷源和內(nèi)部軟件中斷源。外部硬件中斷源包括可屏蔽中斷和不可屏蔽中斷。內(nèi)部軟件中斷源產(chǎn)生于單片機(jī)內(nèi)部,主要有以下3種:①由CPU運行結(jié)果產(chǎn)生;②執(zhí)行中斷指令I(lǐng)NT3;③使用DEBUG中單步或斷點設(shè)置引起。173.中斷向量表4.1中斷的基本概念
中斷向量是指中斷服務(wù)程序的入口地址,每個中斷向量被分配給4個連續(xù)的字節(jié)單元,兩個高字節(jié)單元存放入口的段地址CS,兩個低字節(jié)單元存放入口的偏移量IP。為了讓CPU方便地查找到對應(yīng)的中斷向量,就需要在內(nèi)存中建立一張查詢表,即中斷向量表。4.中斷優(yōu)先級
凡事都有輕重緩急之分,不同的中斷請求表示不同的中斷事件,因此,CPU對不同中斷請求相應(yīng)地也有輕重緩急之分。在單片機(jī)中,給每個中斷源指定一個優(yōu)先級,稱為中斷優(yōu)先級。5.?dāng)帱c和中斷現(xiàn)場
斷點是指CPU執(zhí)行現(xiàn)行程序被中斷時的下一條指令的地址,又稱斷點地址。
中斷現(xiàn)場是指CPU在轉(zhuǎn)去執(zhí)行中斷服務(wù)程序前的運行狀態(tài),包括CPU狀態(tài)寄存器和斷點地址等。4.2MSP430單片機(jī)中斷源MSP430單片機(jī)的中斷源結(jié)構(gòu)如圖4.2.1所示。MSP430單片機(jī)的中斷優(yōu)先級是固定的,由硬件確定,用戶不能更改。當(dāng)多個中斷同時發(fā)生中斷請求時,CPU按照中斷優(yōu)先級的高低順序依次響應(yīng)。MSP430單片機(jī)包含3類中斷源:系統(tǒng)復(fù)位中斷源、不可屏蔽中斷源和可屏蔽中斷源。圖4.2.1MSP430單片機(jī)的中斷源結(jié)構(gòu)MSP430單片機(jī)的中斷向量表被安排在0FFFFH~0FF80H空間,具有最大64個中斷源。表4.2.1為MSP430單片機(jī)的中斷向量表。4.2MSP430單片機(jī)中斷源表4.2.1MSP430中斷向量表4.3中斷響應(yīng)過程
中斷響應(yīng)過程為從CPU接收一個中斷請求開始至執(zhí)行第一條中斷服務(wù)程序指令結(jié)束,共需要6個時鐘周期。中斷響應(yīng)過程如下:①執(zhí)行完當(dāng)前正在執(zhí)行的指令;②將程序計數(shù)器(PC)壓入堆棧,程序計數(shù)器指向下一條指令;③將狀態(tài)寄存器(SR)壓入堆棧,狀態(tài)寄存器保存了當(dāng)前程序執(zhí)行的狀態(tài);④如果有多個中斷源請求中斷,選擇最高優(yōu)先級,并掛起當(dāng)前的程序;⑤清除中斷標(biāo)志位,如果有多個中斷請求源,則予以保留等待下一步處理;⑥清除狀態(tài)寄存器SR,保留SCG0,因而CPU可從任何低功耗模式下喚醒;⑦將中斷服務(wù)程序入口地址加載給程序計數(shù)器(PC),轉(zhuǎn)向執(zhí)行中斷服務(wù)子程序。中斷響應(yīng)過程示例圖如圖4.3.1所示。圖4.3.1中斷響應(yīng)過程示例圖4.4中斷返回過程
通過執(zhí)行中斷服務(wù)程序終止指令(RETI)開始中斷的返回,中斷返回過程需要5個時鐘周期,主要包含以下過程:①從堆棧中彈出之前保存的狀態(tài)寄存器給SR;②從堆棧中彈出之前保存的程序計數(shù)器給PC;③繼續(xù)執(zhí)行中斷時的下一條指令。中斷返回過程示意圖如圖4.4.1所示。圖4.4.1中斷返回過程示意圖4.5中斷嵌套
由中斷響應(yīng)過程可知,當(dāng)進(jìn)入中斷入口后,MSP430單片機(jī)會自動清除總中斷允許標(biāo)志位GIE,也就是說,MSP430單片機(jī)的中斷默認(rèn)是不能發(fā)生嵌套的,即使高級中斷也不能打斷低級中斷的執(zhí)行,這就避免了當(dāng)前中斷未完成時進(jìn)入另一個中斷的可能。如圖4.5.1(a)所示,如果在執(zhí)行中斷服務(wù)程序A時,發(fā)生了中斷請求B,B的中斷標(biāo)志位置1,但不會立即響應(yīng)B的中斷,需自動等待A執(zhí)行完成返回后(GIE自動恢復(fù)),才進(jìn)入B的中斷服務(wù)程序。如圖4.5.1(b)所示,如果在執(zhí)行中斷服務(wù)程序A時,有多個中斷發(fā)生,會在A中斷執(zhí)行完畢后,依照中斷優(yōu)先級由高至低的順序依次執(zhí)行各個待執(zhí)行的中斷服務(wù)程序。圖4.5.1多種中斷發(fā)生情況示意圖4.5中斷嵌套
由以上兩種情況可知,先發(fā)生的中斷將會導(dǎo)致后發(fā)生的中斷處理延遲。為了避免這種情況,要求所有的中斷都盡快執(zhí)行完畢,則需允許中斷的嵌套,如圖4.5.1(c)所示。這種情況需要在所有的中斷入口處都加一句開中斷的語句:_EINT(),恢復(fù)總的中斷允許。中斷嵌套被允許后,所有中斷能夠立即被執(zhí)行,因此,能夠保證事件的嚴(yán)格實時性要求。以ADC中斷為例:#pragmavector=ADC12_VECTOR__interruptvoidADC12_ISR(void){_EINT();……}中斷函數(shù)的寫法:
#pragmavector=PORT1_VECTOR__interruptvoid
port_1(void)語法:interruptvoid函數(shù)名()參數(shù):中斷函數(shù)沒有參數(shù)。中斷函數(shù)需要指定中斷向量。返回:中斷返回一般是void,沒有返回值。4.5中斷函數(shù)的寫法【例4.1.1】在MSP430單片機(jī)系統(tǒng)中,P1.5、P1.6、P1.7發(fā)生中斷后執(zhí)行不同的代碼。#pragmavector=PORT1_VECTOR //P1口中斷源__interruptvoidPort_1(void)//聲明一個中斷服務(wù)程序,名為Port_1(){ if(P1IFG&BIT5) //判斷P1中斷標(biāo)志第5位
{
…… //在這里寫P1.5中斷服務(wù)程序
} if(P1IFG&BIT5) //判斷P1中斷標(biāo)志第6位
{
…… //在這里寫P1.6中斷服務(wù)程序
} if(P1IFG&BIT5) //判斷P1中斷標(biāo)志第7位
{
…… //在這里寫P1.7中斷服務(wù)程序
} P1IFG=0; //清除P1所有中斷標(biāo)志位}4.2
按鍵查詢【例4.1.2】利用軟件循環(huán)查詢P4.2引腳的輸入狀態(tài),若P4.2輸入為高電平,則使P4.4輸出高電平;若P4.2輸入為低電平,則使P4.4輸出低電平。#include<msp430f6638.h>voidmain(void){WDTCTL=WDTPW+WDTHOLD;//關(guān)閉看門狗
P4DIR|=BIT4;//設(shè)P4.4為輸出方向
P4DIR&=~BIT2;
//設(shè)P4.2為輸入方向
while(1)//循環(huán)查詢P4.2引腳輸入狀態(tài)
{if((P4IN&BIT2)==0)P4OUT|=BIT4;//如果P4.2輸入為高,則使P4.4輸出高
elseP4OUT&=~BIT4;//否則,使P4.4輸出低電平
}}4.6按鍵中斷【例4.1.3】利用按鍵外部中斷方式,實現(xiàn)反轉(zhuǎn)P4.4引腳輸出狀態(tài)。P4.2選擇GPIO功能,內(nèi)部上拉電阻使能,且使能中斷。當(dāng)P4.2引腳上產(chǎn)生下降沿時,觸發(fā)P4端口外部中斷,在中斷服務(wù)程序中,反轉(zhuǎn)P4.4端口輸出狀態(tài)。#include<msp430f6638.h>voidmain(void){WDTCTL=WDTPW+WDTHOLD;//關(guān)閉看門狗
P4DIR|=BIT4;//設(shè)置P4.4引腳為輸出P4DIR&=~BIT2;//設(shè)P4.2為輸入方向
P4REN|=BIT2;P4OUT|=BIT2;//以上兩句組合功能為使能P4.2引腳上拉電阻
P4IES|=BIT2;//P4.2中斷下降沿觸發(fā)
P4IFG&=~BIT2;//清除P4.2中斷標(biāo)志位
P4IE|=BIT2;//P4.2中斷使能
__bis_SR_register(LPM4_bits+GIE);//進(jìn)入LPM4,并使能全局中斷}#pragmavector=PORT4_VECTOR__interruptvoidPort_4(void){P4OUT^=BIT4;//反轉(zhuǎn)P4.4端口輸出狀態(tài)
P4IFG&=~BIT2
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 黑龍江省大慶市讓胡路區(qū)大慶中學(xué)2024-2025學(xué)年高二上學(xué)期期末數(shù)學(xué)試題(解析版)
- 安徽省馬鞍山市當(dāng)涂第一中學(xué)2024-2025學(xué)年高一上學(xué)期期末質(zhì)量檢測數(shù)學(xué)試題 (解析版)
- 辦公室管理-形考任務(wù)五(第六章~第七章)-國開-參考資料
- 2025年真實情景測試題及答案
- 混凝土攔水帶施工方案
- 6年級上冊英語書課文第2單元
- 5-羥基-1-甲基吡唑的合成
- 5~6年級讀書卡數(shù)學(xué)
- c++ 空間離散點 核密度
- 2025年管理學(xué)院百科大賽初賽試題附答案
- 煤礦事故現(xiàn)場處置管理制度
- 2024年湖南省高考化學(xué)試卷真題(含答案解析)
- 上海市精神衛(wèi)生中心招聘考試試卷及答案
- 2024年大學(xué)試題(財經(jīng)商貿(mào))-國際服務(wù)貿(mào)易考試近5年真題集錦(頻考類試題)帶答案
- 投標(biāo)報價編制委托協(xié)議書
- 《擲一擲》(教學(xué)設(shè)計)-2023-2024學(xué)年人教版五年級數(shù)學(xué)上冊
- 2024魚塘租賃合同模板
- 小學(xué)數(shù)學(xué)教學(xué)中數(shù)學(xué)文化的滲透與傳承
- 你比劃我猜題目大全555個
- 《8 家庭養(yǎng)雞》(教案)-2023-2024學(xué)年六年級下冊綜合實踐活動皖教版
- 小學(xué)百科知識題庫大全
評論
0/150
提交評論