<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          MSP430--通用IO端口

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

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

          本文引用地址:http://www.ex-cimer.com/article/201611/322053.htm

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

          1.端口的寄存器:

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


          PxIN輸入寄存器,只讀寄存器,即只能讀取輸入端口x的數(shù)據(jù);

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

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

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

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

          PxIFG中斷標志寄存器,1相應(yīng)中斷標志位有效,0無效;

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


          PxIN輸入寄存器,只讀寄存器,即只能讀取輸入端口x的數(shù)據(jù);

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

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

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

          2.例程:

          (1)//程序描述:P1,P2口具有中斷功能,通過設(shè)置寄存器,實現(xiàn)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};
          //共陽數(shù)碼管字型碼數(shù)組

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

          P1DIR&=~BIT0;//p1.0口設(shè)置為輸入
          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口設(shè)置為輸入;
          清標志位;

          中斷使能;

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

          開總中斷;

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

          if(P1IFG & BIT0)

          {

          功能代碼0;

          }

          if(P1IFG & BIT1)

          {

          功能代碼1;

          }

          .......

          if(P1IFG & BIT7)

          {

          功能代碼7;

          }

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

          }



          關(guān)鍵詞: MSP430通用IO端

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();