MSP430输入输出I/O口详解

发布者:雅致小筑最新更新时间:2014-12-23 来源: 51hei关键字:MSP430输入输出  IO口 手机看文章 扫描二维码
随时随地手机看文章
IO 口是处理器系统对外沟通的最基本部件,从基本的键盘、LED 到复杂的外设芯片等,都是通过IO 口的输入、输出操作来进行读取或控制的。
 
MSP430系列中,不同单片机的IO 口数量不同。体积最小的MSP430F20xx系列只有10 个IO,适合在超小型设备中应用;功能最丰富的MSP430FG46xx系列多达80 个IO 口,足够应付外部设备繁多的复杂应用。在MSP430FE425 单片机中,共有14 个IO 口,属于IO 口较少的系列。但由于需要大量引脚的设备,如LCD、多通道模拟量输入等都有专用引脚,不占用IO 口。因此在大部分设计中IO 数量还是够用的。
l IO 口寄存器
和大部分单片机类似,MSP430 单片机也将8 个IO 口编为一组。例如P1.0~P1.7都属于P1 口。每组IO 口都有4 个控制寄存器,其中P1 和P2 口还额外具有3 个中断寄存器。
 
表2.1.1 IO 口寄存器列表。
寄存器名 寄存器功能 读写类型 复位初始值
PxIN Px 口输入寄存器 只读 无
PxOUT Px 口输出寄存器 可读可写 保持不变
PxDIR Px 口方向寄存器 可读可写 0(全部输入)
PxSEL Px 口第二功能选择 可读可写 0(全部为IO 口)
PxIE Px口中断允许 可读可写 0(全部不允许中断)
PxIES Px口中断沿选择 可读可写 保持不变
PxIFG Px口中断标志位 可读可写 0(全部未发生中断)
 
这是本书第一次出现寄存器列表,有必要说明一下MSP430单片机的寄存器以及标志位全部是大写的。若出现的小写的“x”,表示该设备不止一个,因此寄存器也不止一个。为了缩短列表长度,不用全部列出,用字母x 表示序号。例如对于表中的PxOUT,当x取1、2、3 时,就变成了P1OUT、P2OUT、P3OUT。
 
n 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 口,可以通过PxIN 寄存器读回其输入电平。例如读回P1.5口上的开关状态,并判断若处于按下状态(低电平)则从P1.1 口输出高电平点亮LED:
 
if((P1IN & BIT5)==0) P1OUT|=BIT1; //若P1.5为低电平则P1.1输出高电平
 
n 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 设为串口收发引脚
l IO 口中断
在MSP430 所有的单片机中,P1 口、P2 口总共16 个IO 口均能作引发中断。在MSP430x42x系列中,14 个IO 均属于P1 或P2 口,因此每个IO 都能作为中断源使用。通过下列2 个寄存器配置IO 口作为中断使用:
 
n PxIE寄存器用于设置每一位IO的中断允许: 0=不允许 1=允许
 
n 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(); // 总中断允许
 
n 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输入输出  IO口 引用地址:MSP430输入输出I/O口详解

上一篇:MSP430按键采用中断也要消抖动
下一篇:msp430 CCR0捕获/比较寄存器--比较功能中断定时

推荐阅读最新更新时间:2024-03-16 13:49

PIC单片机-普通IO口模拟I2C总线对24C02进行读写操作
使用PIC单片机的普通IO口模拟I2C总线,对24C02进行读写操作。其中,总线定义为: #define IIC_SCLK RC3 //24C02时钟线 #define IIC_SDAT RC4 //24C02数据线 将跳线帽P11短接至24C02方向,将跳线帽P6段接至IIC方向。 I2C 总线协议规定任何将数据传送到总线的器件作为发送器,任何从总线接收数据的器件为接收器,数据传送是由产生串行时钟和所有起始停止信号的主器件控制的,主器件和从器件都可以作为发送器或接收器。 I2C 总线协议定义如下: 1、只有在总线空闲时才允许启动数据传送 2、在数据传送过程中当时钟线为高电平时数据线必
[单片机]
关于STM32 利用IO口模拟串口实现数据通信
网上有好多关于利用IO口来实现串口数据收发的实例,这种方法的实质都是可以应用于任何一款微处理器上,而不仅仅局限于stm32。有相关的源代码链接参考: https://github.com/TonyIOT/SoftWareSerial 当然,如果成本要求不高,可以利用串口扩展芯片是最方便的,如CH438,WK系列芯片等。 IO口模拟串口的一些基本原理,阐述如下: STM32单片机一般少则3个串口,多则5个,而项目还偏偏5个硬件串口还是不够用.板子上有几个预留IO口,可以用来模拟串口. 模拟串口一般都选9600,速度最快试了也才19200,所以限制还是较多的,一般不得以情况下才会用到. IO口模拟串口的思路也比较简单,
[单片机]
51单片机GPIO口模拟串口通信
随着单片机的使用日益频繁,用其作前置机进行采集和通信也常见于各种应用,一般是利用前置机采集各种终端数据后进行处理、存储,再主动或被动上报给管理站。这种情况下下,采集会需要一个串口,上报又需要另一个串口,这就要求单片机具有双串口的功能,但我们知道一般的51系列只提供一个串口,那么另一个串口只能靠程序模拟。 本文所说的模拟串口, 就是利用51的两个输入输出引脚P1.0和P1.1,置1或0分别代表高低电平,也就是串口通信中所说的位,如起始位用低电平,则将其置0,停止位为高电平,则将其置1,各种数据位和校验位则根据情况置1或置0。 以11.0592MHz的晶振为例,通过定时计数器0产生中断信号来模拟串口电平,下面附上具体源
[单片机]
STM32CubeMX系列 | 按键输入
按键输入 1. 实验介绍 本实验介绍如何使用STM32F103的IO口作为输入使用。IO口作为输入使用时,是通过读取IDR的内容来读取IO口的状态的。 本实验利用板载的4个按键,来控制板载的两个LED的亮灭和蜂鸣器。其中KEY_UP控制蜂鸣器;K1控制D1,按一次亮再按一次灭;K2控制D2,按一次亮再按一次灭;K3同时控制D1和D2,按一次它们的状态就翻转一次 2. 硬件设计 用到的硬件资源有: 指示灯D1、D2 蜂鸣器BUZ 4个按键:KEY_UP、K1、K2、K3 硬件连接原理图如下,注意K1、K2、K3是低电平有效的,而KEY_UP是高电平有效,并且外部都没有上下拉电阻,所以需要在STM32F1内部设置上下拉; ST
[单片机]
STM32F4的GPIO口配置模式
STM32F4 每组通用 I/O 端口包括 4 个 32 位配置寄存器(MODER、OTYPER、OSPEEDR和 PUPDR)、2 个 32 位数据寄存器(IDR 和 ODR)、1 个 32 位置位/复位寄存器 (BSRR)、1 个 32 位锁定寄存器 (LCKR) 和 2 个 32 位复用功能选择寄存器(AFRH 和 AFRL)等。 这样,STM32F4 每组 IO 有 10 个 32 位寄存器控制,其中常用的有 4 个配置寄存器+2 个数据寄存器+2 个复用功能选择寄存器,共 8 个。 STM32F4 的 IO 可以由软件配置成如下 8 种模式中的任何一种: (1)GPIO_Mode_AIN 模拟输入 (2)G
[单片机]
51单片机使用一个IO口做RC充放电来模拟ADC
AUXR DATA 08EH ;Auxiliary register P1M1 DATA 091H ;P1M1.N,P1M0.N =00--- Standard, 01--- push-pull P1M0 DATA 092H ; =10--- pure input, 11--- open drain P_RC BIT P1.0 ;RC port DLY_H DATA 30H ;Delay high byte DLY_M DATA 31H ;delay mid
[单片机]
STM32单片机的八种IO口模式解析
STM32八种IO口模式区别 (1)GPIO_Mode_AIN模拟输入 (2)GPIO_Mode_IN_FLOATING浮空输入 (3)GPIO_Mode_IPD下拉输入 (4)GPIO_Mode_IPU上拉输入 (5)GPIO_Mode_Out_OD开漏输出 (6)GPIO_Mode_Out_PP推挽输出 (7)GPIO_Mode_AF_OD复用开漏输出 (8)GPIO_Mode_AF_PP复用推挽输出 以下是详细讲解 (1)GPIO_Mode_AIN模拟输入 即关闭施密特触发器,将电压信号传送到片上外设模块(不接上、下拉电阻) (2)GPIO_Mode_IN_FLOATING浮空输入 浮空输入状态下,IO的电平状态是不确定
[单片机]
stm32 的PA13,PA14, PA15做普通IO口的问题
这两天在玩oled屏,想用几个按键控制舵机,oled显示,于是把三个按键接到了PA13,14,15上发现没有任何反应后来一查手册发现有问题 可以看到PA13口的Main function是JTMS-SWDIO,不是PA13,所以要想使用PA13的普通IO口能力,就要先把IO口的复用功能打开,再把JTMS-SWDIO功能关掉就可以。 做输入,输出口都可以 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE); 再后来又发现了一个问题:就是单步调试的时候不能调试,
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • Linux内核移植
    实验步骤:(1)准备工作(2)修改顶层Makefile(3)修改falsh 分区(4)配置编译内核下面以Linux2 6 30 4内核移植到gec2440为例:一、准备 ...
  • S5PV210 PWM定时器
    第一节 S5PV210的PWM定时器S5PV210共有5个32bit的PWM定时器,其中定时器0、1、2、3有PWM功能,定时器4没有输出引脚。PWM定时器使用PCLK_PS ...
  • S5PV210 NAND Flash
    NAND Flash关于NAND FlashS5PV210的NAND Flash控制器有如下特点:1) 支持512byte,2k,4k,8k的页大小2) 通过各种软件模式来进行NAND Fl ...
  • S5PV210串口
    串口设置之输入输出字符S5PV210 UART相关说明 通用异步收发器简称UART,即UNIVERSAL ASYNCHRONOUS RECEIVER AND TRANSMITTER,它用来 ...
  • S5PV210按键控制LED
    原理图如图所示:查询用户手册得到:程序例子:(完整代码见“代码下载链接”)1、轮询的方式查询按键事件 *main c* 核心代码如下:while(1 ...
  • S5PV210控制蜂鸣器
  • S5PV210的启动过程
  • S5PV210点亮LED
  • S5PV210启动过程详解
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved