MSP430单片机IO口简介

IO 口是处理器系统对外沟通的最基本部件,从基本的键盘、LED 到复杂的外设芯片等,都是通过IO 口的输入、输出操作来进行读取或控制的。

MSP430系列中,不同单片机的IO 口数量不同。体积最小的MSP430F20xx系列只有10 个IO,适合在超小型设备中应用;功能最丰富的MSP430FG46xx系列多达80个IO口,足够应付外部设备繁多的复杂应用。在MSP430FE425 单片机中,共有14个IO口,属于IO 口较少的系列。但由于需要大量引脚的设备,如LCD、多通道模拟量输入等都有专用引脚,不占用IO 口。因此在大部分设计中IO 数量还是够用的。

和大部分单片机类似,MSP430 单片机也将8 个IO 口编为一组。例如P1.0~P1.7都属于P1 口。每组IO口都有4个控制寄存器,其中P1 和P2 口还额外具有3个中断寄存器。

IO 口寄存器列表

MSP430单片机IO口简介

有必要说明一下MSP430单片机的寄存器以及标志位全部是大写的。若出现的小写的“x”,表示该设备不止一个,因此寄存器也不止一个。为了缩短列表长度,不用全部列出,用字母x 表示序号。例如对于表中的PxOUT,当x取1、2、3 时,就变成了P1OUT、P2OUT、P3OUT。
PxDIR寄存器用于设置每一位IO口方向: 0=输入 1=输出。MSP430单片机的IO 口属于双向IO口,因此在使用IO口时首先要用方向选择寄存器来设置每个IO口的方向。例如P1.5、P1.6、P1.7 接有按键,P1.1、P1.3、P1.4接有LED,那么P1.5、P1.6、P1.7 要设为输入,P1.1、P1.3、P1.4 要设为输出:
P1DIR|=BIT1+BIT3+BIT4; // P1.1、P1.3、P1.4设为输出
P1DIR &=~ (BIT5+BIT6+BIT7); // P1.5、P1.6、P1.7设为输入(可省略)

由于PxDIR 寄存器在复位过程中会被清0,没有被设置的IO口方向均为输入状态,因此第二句可以被省略。
对于所有已经设成输出状态的IO口,可以通过PxOUT寄存器设置其输出电平(当IO口配置为输入模式并且置高/置低使能时,PxOUT寄存器:0置低1置高);对于所有已经被设成输入状态的IO口,可以通过PxIN寄存器读回其输入电平。例如读回P1.5口上的开关状态,并判断若处于按下状态(低电平)则从P1.1 口输出高电平点亮LED:
if((P1IN & BIT5)==0) P1OUT|=BIT1; //若P1.5为低电平则P1.1输出高电平
PxSEL寄存器用于设置每一位IO的功能: 0=普通IO口 1=第二功能。
在MSP430单片机中,很多内部功能模块也需要和外界进行数据交流,为了不增加芯片引脚数量,大部分都和IO 口复用管脚。因此大多数IO 引脚都具有第二功能。通过寄存器PxSEL 可以指定某些IO 引脚作为第二功能使用。例如从附录中管脚排布图中查到MSP430x42x 系列单片机的P2.4、P2.5 口和串口的TXD、RXD公用引脚。若需要将这两个引脚配置为串口收发脚,则须将P2SEL的4、5位置高:
P2SEL |= BIT4 + BIT5; // P2.4,5 设为串口收发引脚

在MSP430 所有的单片机中,P1 口、P2 口总共16 个IO 口均能作引发中断。在MSP430x42x系列中,14个IO均属于P1或P2口,因此每个IO 都能作为中断源使用。通过下列2个寄存器配置IO 口作为中断使用:
PxIE寄存器用于设置每一位IO的中断允许: 0=不允许 1=允许
PxIES寄存器用于选择每一位IO的中断触发沿: 0=上升沿 1=下降沿
在使用IO口中断之前,需要先将IO 口设为输入状态,并允许该位IO的中断,再通过PxIES寄存器选择触发方式为上升沿触发或者下降沿触发。例如将P1.5、P1.6、P1.7 口设为中断源,下降沿触发:
P1DIR &=~(BIT5 + BIT6 + BIT7); // P1.5、P1.6、P1.7设为输入(可省略)
P1IES |= BIT5 + BIT6 + BIT7; // P1.5、P1.6、P1.7设为下降沿中断
P1IE |= BIT5 + BIT6 + BIT7; // 允许P1.5、P1.6、P1.7中断
EINT(); // 总中断允许

PxIFG寄存器是IO中断标志寄存器:0=中断条件不成立1=中断条件曾经成立过,无论中断是否被允许,也不论是否正在执行中断服务程序,只要对应IO 满足了中断条件(例如一个下降沿的到来),PxIFG中的相应位都会立即置1 并保持,只能通过软件人工清除。这种机制的目的在于最大可能的保证不会漏掉每一次中断。在MSP430系列单片机中,P1口的8个中断和P2口8个中断各公用了一个中断入口,因此该寄存器另一重要作用在于中断服务程序中用于判断哪一位IO 产生的中断。下面的中断服务程序示范P1.5、P1.6、P1.7 发生中断后执行不同的代码:
#pragma vector = PORT1_VECTOR //P1口中断源
__interrupt void P1_ISR(void) //声明一个中断服务程序,名为P1_ISR()
{
if(P1IFG & BIT5) //判断P1中断标志第5位(P1.5)
{
... ... //在这里写P1.5中断处理程序
}
if(P1IFG & BIT6) //判断P1中断标志第6位(P1.6)
{
... ... //在这里写P1.6中断处理程序
}
if(P1IFG & BIT7) //判断P1中断标志第7位(P1.7)
{
... ... //在这里写P1.7中断处理程序
}
P1IFG=0; //清除P1所有中断标志位
}
注意在退出中断前一定要人工清除中断标志,否则该中断会不停发生。类似的原理,即使IO 口没有出现中断条件,人工向写PxIFG 寄存器相应位写“1”,也会引发中断。更改中断沿选择寄存器也相当于跳变,也会引发中断,所以更改PxIES寄存器应该在关闭中断后进行,并在打开中断之前及时清除中断标志。MSP430单片机大量的IO中断非常适合做键盘输入用,但要注意键盘存在机械结构,在闭合或松开的过程中,机械结构的碰撞和反弹会造成信号上数毫秒的“毛刺”。

用户喜欢...

基于MSP430的电机功率因数的测量系统

计算机技术,尤其是单片机技术和大规模集成电路及各种新型传感元件的迅速发展和日臻成熟,微机技术在电力系统中的普及应用,使电力系统的测量和监控技术得到了快速的发展。在工业生...


为什么单片机中既有Flash又有EEPROM?

单片机运行时的数据都存在于RAM(随机存储器)中,在掉电后RAM 中的数据是无法保留的,那么怎样使数据在掉电后不丢失呢?这就需要使用EEPROM 或FLASHROM 等存储器来实现。 插播一段:ROM最初...


51单片机之独立按键和矩阵键盘(概念及原理)

1.按键分类与输入原理 按键按照结构原理科分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关灯;另一类是无触点式开关按键,如电气式按键,磁感应按键等。前者造价低,...


基于单片机的智能计步器设计

当今社会,随着经济的发展,人们生活水平的提高,肥胖的人越来越多,也就导致了越来越多的疾病产生,因此,人们越来越关注健康问题,而锻炼身体是让自己健康的最有效的方法。因此计...


单片机中C语言的程序与数据存储

judy 发布于:周一, 11/27/2017 - 10:06 ,关键词: 一、五大内存分区: 内存分成5个区,它们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 1、栈区(stack):FIFO就是那些由编译器在...


单片机最小系统解析(电源、晶振和复位电路)

我们在学习过程中,很多指标都是直接用的概念指标,比如我们说 +5 V 代表1,GND 代表0等等。但在实际电路中的电压值并不是完全精准的,那这些指标允许范围是什么呢?随着我们所学的内容...


单片机控制lcm液晶模块指令

用单片机来控制LCM模块,方式十分简单,LCM模块其内部可以看成两组寄存器, 一个为指令寄存器IR,一个为数据寄存器DR,由RS引脚来控制。所有对指令寄存器或 数据寄存器的存取均需检查...


单片机实现洗浴服务机器人的控制系统设计

目前,中国已经进入了老龄化社会,预计从2020年开始,中国将步入老龄化严重阶段;2050年中国将步入超高老龄化国家行列,60岁以上人口将占到30%左右。全国约有1400多万老年人将进入老年...


单片机测控系统的抗干扰技术

一、电源的干扰及其抑制技术 一般情况下,任何电子设备或系统无疑都离不开供电电源,因此首先探讨电源的抗干扰措施具有实际的意义。信号发生器包括静电测试仪、浪涌测试仪、脉冲群...


教你八步练成单片机能手

学习使用就是理解单片机硬件结构,以及内部资源的应用,在汇编或C语言中学会各种功能的初始化设置,以及实现各种功能的程序编制。以下是小编的一些经验: 第一步:数字I/O的使用 使用...


单片机实现低成本A/D转换

本文向大家介绍低成本的A/D转换的一种方法,只是这种方法成本会更低,而且外部无需使用比较器。此种方法的A/D转换精度不高,只有6~7bit,并且被测电压范围较为有限,但在某些精度要求...


深度解读关于单片机的车用数字仪表系统技术

在汽车的仪表板上安装有各种仪表、指示灯及报警灯,用于帮助驾驶人观察和掌握汽车及各系统的工作情况,提示异常现象和故障,以便及时消除安全隐患。 汽车仪表是用以监测汽车各系统...


单片机设计:关于软件UART的设计思想

目前扩展串口的方法主要有以下方法, ①、采用串口扩展芯片实现,如ST16C550、ST16C554、SP2538、MAX3110等,虽然成本较高, 但系统的可靠性得到了保证,适用于数据量较大、串口需求较多的系统...


深入理解51单片机串口通信

串口通信的基本认识 通信分为并行通信和串行通信,并行通信时的数据各个位同时传送,可以实现字节为单位通信,但通信线多占用资源,成本高。以前用到的的P1=0x55,一次给P1口的8个管脚分...


mcs-51单片机是由哪些部分组成的?

学习内部结构之前,我们先了解下我们现在正在使用的计算机的几大组成部份: 计算机的五个组成部份: 运算器:用于实现算术和逻辑运算。计算机的运算和处理都在这里进行; 控制器:是...


基于STC单片机的超声波清洗机设计方案

随着超声波技术的不断发展,超声波广泛应用于检测、清洗、焊接、医疗等领域,甚至在纺织、航空领域也能见到它的踪迹。目前,超声的研究和应用可分为功率超声和检测超声两大领域,超...