历史上的今天
返回首页

历史上的今天

今天是:2025年03月24日(星期一)

正在发生

2021年03月24日 | MSP430输入输出I/O口详解

2021-03-24 来源:eefocus

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 中断非常适合做键盘输入用,但要注意键盘存在机械结构,在闭合或松开的过程中,机械结构的碰撞和反弹会造成信号上数毫秒的“毛刺”。


推荐阅读

史海拾趣

GD Rectifiers Ltd公司的发展小趣事

面对数字化时代的到来,GD Rectifiers Ltd主动拥抱变革,积极推进数字化转型。公司投入巨资建设了先进的数字化生产管理系统和客户关系管理系统,实现了生产过程的智能化和透明化。通过数据分析和挖掘技术,公司能够更准确地把握市场需求和客户需求的变化趋势,为产品研发和市场营销提供有力支持。同时,公司还加强了与供应商和客户的数字化连接和协作,提高了供应链的协同效率和响应速度。数字化转型的成功实施为GD Rectifiers Ltd注入了新的活力,进一步提升了公司的市场竞争力和行业地位。

Altitude Technology公司的发展小趣事

随着产品的不断升级和市场的不断扩大,Altitude Technology开始将目光投向海外市场。公司制定了详细的市场拓展计划,通过参加国际电子展会、建立海外销售渠道等方式,积极推广自己的产品。经过一番努力,Altitude Technology的产品逐渐在国际市场上获得了认可,公司的知名度也得到了提升。

Connection One公司的发展小趣事

在电子行业的快速发展中,Connection One公司始终保持着强烈的创新意识。公司不断投入研发资金,引进高端人才,推动技术创新和产品升级。这种持续创新的精神使得公司在行业中始终保持领先地位,铸就了辉煌的业绩。

这些故事虽然基于虚构情节,但反映了电子行业中企业发展的一些普遍规律。在实际情况中,一个成功的电子企业往往需要具备技术创新能力、市场拓展能力、全球化视野以及持续创新的精神。

Data Delay Devices公司的发展小趣事

在竞争激烈的电子行业中,质量管理是企业生存和发展的关键。DDD公司高度重视产品质量管理,建立了完善的质量管理体系和检测机制。公司从原材料采购、生产过程到成品检验都实行严格的质量控制,确保每一件产品都符合客户的要求和行业标准。这种对质量的执着追求使得DDD公司的产品在市场上赢得了良好的口碑和信誉。

ETTINGER公司的发展小趣事

在日本市场,Ettinger同样取得了巨大的成功。Ettinger Flagship Store位于东京银座,其年营业额甚至即将赶超Ettinger在英国伦敦的销售业绩。这一成就不仅展示了Ettinger在日本市场的受欢迎程度,也体现了品牌在全球范围内的强大竞争力。Ettinger通过不断拓展海外市场,进一步巩固了其作为皮具奢侈品牌的地位。

Captive Fastener公司的发展小趣事

随着环保意识的日益增强,Captive Fastener公司积极响应国家环保政策,推动生产方式的绿色转型。公司引进先进的环保生产设备和技术,减少生产过程中的污染排放。同时,公司还研发出可回收再利用的紧固件产品,为电子行业的可持续发展做出了贡献。

问答坊 | AI 解惑

USB转串口系列IC介绍

对那些需要为基于串行端口的老项目提出快速解决方案的设计工程师来说,最先有吸引力的策略是采用一种补丁系统。这可通过在嵌入式控制器串行接口与PC机USB连接器之间增加一个定制的USB-UART转换器来实现。    该方法意味着仅仅需要重新 ...…

查看全部问答>

数字CMOS摄像头OV6620+OV7620资料

本帖最后由 paulhyde 于 2014-9-15 09:17 编辑 [ 本帖最后由 open82977352 于 2010-2-9 22:16 编辑 ]  …

查看全部问答>

embedded system and real time operating system

请推荐个学习 embedded system 和 real time operating system的书吧 在网上搜了很多这方面的书出来 但是不知道看哪个好 请教大侠们有没有什么这方面的经典书啊? 谢谢…

查看全部问答>

labwindows/CVI R485 多点数据通信

请各位高手帮忙:现在要用cvi编程,用485串口进行多点数据采集,13个点,轮流读取数据。13个点的信号通过485总线传入pc,信号是流量计发出的电压信号,通过芯片转成485信号,请问怎么用cvi编程来实现..不胜感激...…

查看全部问答>

STM32VirtualCOMPortissue

Dear all, 我使用STM32實現了Virtual COM Port,如果同一台電腦只插一個是正確的,但是如果插二個,就會有問題,不知有沒有人遇過這個問題? (使用ST USB library 3.1.0+STM32F10B) pic1.jpg (2.93 KB) 下载次数:5 20 ...…

查看全部问答>

xilinx12.4 SDK死活建立不了工程

  今天有空拿出LX9弄了一下,XPS下不支持第三方下载工具,但SDK死活建立不了工程,导入官网提供的工程也编译不了,重装了几次也不行,另外我在另一个系统上装也不行,有没有谁遇到这个问题,希望回答一下,新建工程到一定程度就会死掉,不能动 ...…

查看全部问答>

从0开始学M4 (第二集 中断控制)

中断是一个非常重要的概念,每一个单片机都会有中断。不同的单片机处理中断的方式不同。 Cortex-M4和M3一样,在内核水平上搭载了一个异常响应系统,支持为数众多的系统异常和外部中断。本文不会具体讲中断的概念,只是讲述如何在 LM4F232上应用中断 ...…

查看全部问答>

ARM的认证工程师有哪位大侠知道是不是很有用?

各位好,我在ARM自己的官方社区看到一篇ARM工程师介绍如何参与ARM的AAE以及AAME考试的帖子,分享给大家: http://community.arm.com/docs/DOC-8083 不知道哪位大侠知道这个考试效果如何,通过了是否对就业有一定的帮助? 谢谢…

查看全部问答>

解决led显示屏4大技术难题的方法

随着世界各地越来越注重环保,人们日常生活中一些不环保的产品逐步被其他环保产品所取代,比如普通白炽灯逐渐被LED照明灯所取代,LED将要迎来普及时代。中国是世界的LED显示屏厂家集中地,目前全球80%的LED显示屏来自中国。提起显示屏,大家 ...…

查看全部问答>