新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > MSP430--通用IO端口

MSP430--通用IO端口

作者: 時間:2016-11-26 來源:網絡 收藏
IO端口是單片機最常用的外設模塊,由于單片機的總線不對外開放,所以單片機和外部進行信息交流的橋梁就是數字IO端口。

目前,MSP430系列單片機當中有端口P1,P2,P3,P4,P5,P6等端口,其中P1,P2的每一位都有中斷功能,但不是獨立的,P1口每位共用PORT1_VECTOR中斷向量,P2共用PORT2_VECTOR向量。

本文引用地址:http://m.butianyuan.cn/article/201611/322053.htm

P1--P6端口大多數是復用的,具有第二功能可以通過PxSEL選擇是普通IO口或者第二功能。

1.端口的寄存器:

(1)P1-P2端口具有中斷能力,共7個寄存器


PxIN輸入寄存器,只讀寄存器,即只能讀取輸入端口x的數據;

PxOUT輸出寄存器,可讀可寫,即可以向輸出端口寫8位數據輸出,同時也可以讀取數據;

PxDIR方向位寄存器,當PxSEL選擇普通IO口時,PxDIR決定是輸出還是輸入,0輸入,1輸出;

PxSEL功能選擇寄存器,選擇普通功能或者復用功能;0普通IO口,1復用功能;

PxIE中斷使能寄存器,1使能相應位的中斷,0不使能;注意:在中斷當中要手動清除中斷標志位。

PxIFG中斷標志寄存器,1相應中斷標志位有效,0無效;

PxIES中斷觸發(fā)沿選擇寄存器,0上升沿,1下降沿相應中斷標志位置位
(2)P3--P6無中斷能力,共4個寄存器


PxIN輸入寄存器,只讀寄存器,即只能讀取輸入端口x的數據;

PxOUT輸出寄存器,可讀可寫,即可以向輸出端口寫8位數據輸出,同時也可以讀取數據;

PxDIR方向位寄存器,當PxSEL選擇普通IO口時,PxDIR決定是輸出還是輸入,0輸入,1輸出;

PxSEL功能選擇寄存器,選擇普通功能或者復用功能;0普通IO口,1復用功能;

2.例程:

(1)//程序描述:P1,P2口具有中斷功能,通過設置寄存器,實現P1口外部中斷

#include"msp430x14x.h"

#define uchar unsigned char
#define uint unsigned int

uchar i;
uint j;
uchar seg[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
//共陽數碼管字型碼數組

void main()
{
WDTCTL=WDTPW+WDTHOLD;//
P4DIR=0xff;
//

P1DIR&=~BIT0;//p1.0口設置為輸入
P1IFG=0;//開中斷前清楚標志位
//P1IN=1;//?。?!注意:PxIN寄存器只能讀不能寫
P1IES&=~BIT0;//中斷源選擇.下降沿觸發(fā)
P1IE|=BIT0;//中斷使能
_EINT();//開總中斷
}
#pragma vector=PORT1_VECTOR
__interrupt void p1()
{
i++;
if(P1IFG&BIT0)
for(j=0;j<2000;j++);
P4OUT=seg[i];//點亮燈
if(i>=9)
i=0;
P1IFG=0;
return;
}

(2)IO端口中斷模塊中斷程序,以P1口為例

void main()

{

p1.0口設置為輸入;
清標志位;

中斷使能;

中斷觸發(fā)沿選擇;

開總中斷;

}
#pragma vector=PORT1_VECTOR//中斷函數
__interrupt void p1()
{

if(P1IFG & BIT0)

{

功能代碼0;

}

if(P1IFG & BIT1)

{

功能代碼1;

}

.......

if(P1IFG & BIT7)

{

功能代碼7;

}

P1IFG = 0;//!!!!!!!!!!!!!注意:必須清除中斷標志位

}



關鍵詞: MSP430通用IO端

評論


技術專區(qū)

關閉