第3章MSP4301第3章MSP430单片机的通用IO接口I/O口是单片机控制系统对外沟通的最基本部件,从基本的键盘、LED显示到复杂的外设芯片等,都是通过I/O口的输入、输出操作来进行读取或控制的。为满足单片机系统对外部设备控制的需要,MSP430提供了许多功能强大、使用方便灵活的输入/输出接口。为了减少芯片引脚的数量以降低芯片的成本,又提供更多功能的I/O口,现在许多单片机都采用了I/O口复用技术,即端口可作为通用的I/O口使用,也可作为某个特殊功能的端口使用,用户可根据系统的实际需要来定义使用。这样就为设计开发提供了方便,简化了单片机系统的硬件设计工作。第3章MSP4302MSP430F249单片机的每组I/O口都有4个控制寄存器,分别为方向控制寄存器PxDIR、输入寄存器PxIN、输出寄存器PxOUT和功能选择寄存器PxSEL,此处,小写字母“x”表示6组I/O口的数字序号,x=1~6,即P1口的方向控制寄存器为P1DIR,P6口的方向控制寄存器为P6DIR。另外,P1和P2口还具有3个中断寄存器,分别为中断允许寄存器PxIE、中断沿选择寄存器PxIES和中断标志寄存器PxIFG,此处,x=1~2。第3章MSP4303第3章MSP4304第3章MSP4305Px口的每个引脚都可以单独配置成输入或者输出方向的控制。需要注意的是:MSP430系列单片机端口输出电流最大为6mA,当需要驱动比较大的负载的时候,需要利用三极管或者缓冲器来提高端口的驱动能力。MSP430单片机的I/O口为双向I/O口,因此在使用I/O口前首先要用方向选择寄存器来设置每个I/O口的方向,在程序运行中还可以动态改变I/O口的方向。例如P1.0、P1.1、P1.2接有按键,P1.4、P1.5、P1.6接有LED,通用I/O接口应用示例如图3.1所示。P1DIR|=BIT4+BIT5+BIT6;//P1.4、P1.5、P1.6设为输出P1DIR&=~(BIT0+BIT1+BIT2);//P1.0、P1.1、P1.2设为输入(可省略)第3章MSP4306图3.1通用I/O接口应用示例图P2.5/ROSC/CA525P2.4/CA1/TA224P2.3/CA0/TA123P2.2/CAOUT/TA0/CA422P2.1/TAINCLK/CA321P2.0/ACLK/CA220P1.2/TA114P1.1/TA013P1.0/TACLK/CAOUT12P1.3/TA215P1.4/SMCLK16P1.7/TA219P1.6/TA118P1.5/TA017P2.6/ADC12CLK/CA626P2.7/TA0/CA727P3.0/UCB0STE/UCA0CLK28P3.1/UCB0SIMO/UCB0SDA29P3.2/UCB0SOMI/UCB0SCL30P3.3/UCB0CLK/UCA0STE31P3.4/UCA0TXD/UCA0SIMO32P3.5/UCA0RXD/UCA0SOMI33P3.6/UCA1TXD/UCA1SIMO34P3.7/UCA1RXD/UCA1SOMI35P4.5/TB541P4.4/TB440P4.3/TB339P4.2/TB238P4.1/TB137P4.0/TB036P4.6/TB642P4.7/TBCLK43AVCC64AVSS62P5.0/UCB1STE/UCA1CLK44P5.1/UCB1SIMO/UCB1SDA45P5.2/UCB1SOMI/UCB1SCL46P5.3/UCB1CLK/UCA1STE47P5.4/MCLK48P5.5/SMCLK49P5.6/ACLK50P5.7/TBOUTH/SVSOUT51P6.0/A059P6.1/A160P6.2/A261P6.3/A32P6.4/A43P6.5/A54P6.6/A65P6.7/A7/SVSIN6XT2OUT52XT2IN53RST/NMI58TCK57TDI/TCLK55TMS56VEREF+10VREF+7XIN8XOUT9TDO/TDI54VREF-/VEREF-11U1MSP430F249K1K2K3R1330R2330R3330D1D2D3R410kR510kR610k第3章MSP4307P1OUT=BIT4+BIT5+BIT6;//P1.4~P1.6输出高电平//二极管阳极接高电平,二极管不发光if((P1IN&BIT0)==0)P1OUT|=BIT4;//P1.4输出低电平点亮LED第3章MSP4308实例3.1彩灯控制任务要求:利用MSP430F249单片机的P1口控制8个发光二极管LED1~LED8,P1口接入三个开关K1~K3,当K1闭合时,LED1和LED4闪烁,闪烁时间1s;当K2闭合时,LED2和LED5闪烁,闪烁时间2s;当K3闭合时,LED1~LED8循环闪烁,闪烁时间1s。第3章MSP4309分析说明:发光二极管LED是一种半导体器件,当两端压降大于1V时,通过5mA左右的导通电流时即可发光。导通电流越大,亮度越高,但若电流过大,会烧毁二极管,一般我们控制在3~20mA。在这里,给发光二极管串联一个电阻的目的就是为了限制通过发光二极管的电流不要太大,因此这个电阻又称为“限流电阻”,通常取300~1000Ω。MSP430F249单片机的I/O口输出电流最大为6mA,所有电流之和不超过48mA。且当其I/O口输出“0”时,可以吸收最大40mA的电流。因此采用单片机I/O口控制发光二极管负极的设计。第3章MSP43010图3.2实例3-1彩灯控制硬件电路图K1K2P2.5/ROSC/CA525P2.4/CA1/TA224P2.3/CA0/TA123P2.2/CAOUT/TA0/CA422P2.1/TAINCLK/CA321P2.0/ACLK/CA220P1.2/TA114P1.1/TA013P1.0/TACLK/CAOUT12P1.3/TA215P1.4/SMCLK16P1.7/TA219P1.6/TA118P1.5/TA017P2.6/ADC12CLK/CA626P2.7/TA0/CA727P3.0/UCB0STE/UCA0CLK28P3.1/UCB0SIMO/UCB0SDA29P3.2/UCB0SOMI/UCB0SCL30P3.3/UCB0CLK/UCA0STE31P3.4/UCA0TXD/UCA0SIMO32P3.5/UCA0RXD/UCA0SOMI33P3.6/UCA1TXD/UCA1SIMO34P3.7/UCA1RXD/UCA1SOMI35P4.5/TB541P4.4/TB440P4.3/TB339P4.2/TB238P4.1/TB137P4.0/TB036P4.6/TB642P4.7/TBCLK43AVCC64AVSS62P5.0/UCB1STE/UCA1CLK44P5.1/UCB1SIMO/UCB1SDA45P5.2/UCB1SOMI/UCB1SCL46P5.3/UCB1CLK/UCA1STE47P5.4/MCLK48P5.5/SMCLK49P5.6/ACLK50P5.7/TBOUTH/SVSOUT51P6.0/A059P6.1/A160P6.2/A261P6.3/A32P6.4/A43P6.5/A54P6.6/A65P6.7/A7/SVSIN6XT2OUT52XT2IN53RST/NMI58TCK57TDI/TCLK55TMS56VEREF+10VREF+7XIN8XOUT9TDO/TDI54VREF-/VEREF-11U1MSP430F249R1330LED1R2330LED2R3330LED3R4330LED4R5330LED5R6330LED6R7330LED7R8330LED8+5vK3R114.7KR124.7KR134.7K第3章MSP43011#includeMSP430f249.h#defineucharunsignedchar#defineuintunsignedint/*********软件延迟ms子程序*********/voiddelayus(uintt){uinti;while(t--)for(i=1300;i0;i--);}voidmain(void){uintmask=0x01;WDTCTL=WDTPW+WDTHOLD;//关闭看门狗P1DIR=0xFF;//设置方向为输出P1SEL=0x00;//设置为普通I/O口P1OUT=0xFF;//LED输出全部关闭while(1){if((P2IN&0x07)==0x06)//K1开关闭合{P1OUT^=(BIT0+BIT4);//LED0,LED4闪烁第3章MSP43012delayus(100);//延迟0.1s}elseif((P2IN&0x07)==0x05)//K2开关闭合{P1OUT^=(BIT1+BIT5);//LED1,LED5闪烁delayus(200);//延迟0.2s}elseif((P2IN&0x07)==0x03)//K3开关闭合{P1OUT=~mask;//LED逐个点亮delayus(100);//延迟0.1smask+=mask;//mask的值从0x01,0x02,0x04...0x80,对应8个LEDif(mask==0x100)//恢复到0x01mask=0x01;}if((P2IN&0x07)==0x07)P1OUT=0xFF;//无键按下,关闭全部LED}}第3章MSP43013在output选file项中,勾选Overridedefault选项,输入文件名和类型,选择other单选按钮,在Output选项中可以有很多种不同的输出格式选择。我们可以选择其中三种格式,一种是即intelstandard(intel公司标准),此时文件名应该为flash.hex,这个输出格式可以供proteus进行仿真,但是不能源码调试,或者作为单片机下载的二进制文件;一种是即TI公司对MSP430系列单片机利用BSL方式进行烧写的一种格式,此时文件名应该为flash.txt;还有一种是这是proteus对MSP430系列单片机实现源码级调试一种文件格式,此时文件名应该为flash.d90,为以后程序调试方便,可以选择最后一种。其他的输出文件格式就不一一介绍了。第3章MSP43014实例3-2花样彩灯控制任务要求:利用MSP430F249单片机的P1口控制8个发光二极管LED1~LED8,点亮顺序如表3-9所示,每个发光二极管点亮时间为0.5s。P2.5/ROSC/CA525P2.4/CA1/TA224P2.3/CA0/TA123P2.2/CAOUT/TA0/CA422P2.1/TAINCLK/CA321P2.0/ACLK/CA220P1.2/TA114P1.1/TA013P1.0/TACLK/CAOUT12P1.3/TA215P1.4/SMCLK16P1.7/TA219P1.6/TA118P1.5/TA017P2.6/ADC12CLK/CA626P2.7/TA0/CA727P3.0/UCB0STE/UCA0CLK28P3.1/UCB0SIMO/UCB0SDA29P3.2/UCB0SOMI/UCB0SCL30P3.3/UCB0CLK/UCA0STE31P3.4/UCA0TXD/UCA0SIMO32P3.5/UCA0RXD/UCA0SOMI33P3.6/UCA1TXD/UCA1SIMO34P3.7/UCA1RXD/UCA1SOMI35P4.5/TB541P4.4/TB440P4.3/TB339P4.2/TB238P4.1/TB137P4.0/TB036P4.6/TB642P4.7/TBCLK43AVCC64AVSS62P5.0/UCB1STE/UCA1CLK44P5.1/UCB1SIMO/UCB1SDA45P5.2/UCB1SOMI/UCB1SCL46P5.3/UCB1CLK/UCA1STE47P5.4/MCLK48P5.5/SMCLK49P5.6/ACLK50P5.7/TBOUTH/SVSOUT51P6.0/A0