历史上的今天
返回首页

历史上的今天

今天是:2025年03月18日(星期二)

正在发生

2021年03月18日 | MSP430单片机的端口解析

2021-03-18 来源:eefocus

MSP430单片机的端口介绍


MSP430的端口有P1、P2、P3、P4、P5、P6、S和COM(型号不同,包含的端口也不仅相同,如MSP430X11X系列只有P1,P2端口,而MSP430X4XX系列则包含全部上述端口),它们都可以直接用于输入/输出。MSP430系统中没有专门的输入/输出指令,输入/输出操作通过传送指令来实现。端口P1`P6的每一位都可以独立用于输入/输出,即具有位寻址功能。常见的键盘接口可以直接用端口进行模拟,用查询或者中断方式控制。由于MSP430的端口只有数据口,没有状态口或控制口,在实际应用中,如在查询式输入/输出传送时,可以用端口的某一位或者几位来传送状态信息,通过查询对应位的状态来确定外设是否处于“准备好”状态。


端口的功能。(1)P1,P2端口: I/O,中断功能,其他片内外设功能如定时器、比较器;(2)P3,P4P5P6端口:I/O,其他片内外设功能如SPI、UART模式,A/D转换等;(3)S,COM端口:I/O,驱动液晶。


MSP430各端口具有丰富的控制寄存器供用户实现相应的操作。其中P1,P2具有7个寄存器,P3~P6具有4个寄存器。通过设置寄存器我们可以实现:(1)每个I/O位独立编程;(2)任意组合输入,输出和中断;(3)P1,P2所有8个位全部可以用作外部中断处理;(4)可以使用所以指令对寄存器操作;(5)可以按字节输入、输出,也可按位进行操作。


端口P1,P2的功能可以通过它们的7个控制寄存器来实现。这里,Px代表P1或P2。


(1)PxDIR:输入/输出方向寄存器。 8位相互独立,可以分别定义8个引脚的输入/输出方向。8位再PUC后都被复位。使用输入/输出功能时,应该先定义端口的方向 。作为输入时只能读,作为输出时,可读可写。0:输入模式;1:输出模式。如:P1DIR|=BIT4; //P1.4输出 ,P2DIR=0XF0; //高4位输出,低4位输入。


(2)PXIN:输入寄存器,为只读寄存器。用户不能对它进行写入,只能通过读取其寄存器的内容来知道I/O口的输入信号。所以其引脚的方向要选为输入。如再键盘键盘扫描程序中经常要读取行线或者列线的端口寄存器值来判断案件情况。例如:unsigned char key;


P1DIR&=~BIT4; //P1.4输入


……


key=P1IN&0X10; //输出端口P1.4的值


……


(3)PXOUT:输出寄存器。该寄存器为I/O端口的输出缓冲寄存器,再读取时输出缓存的内容与引脚方向定义无关。改变方向寄存器的内容,输出缓存的内容不受影响。如:PIOUT|=0X01; //P1.0输出1 , PIOUT&=~0X01; //P1.0输出0 。


(4)PXIFG:中断标志寄存器。他的8个标志位标志相应引脚是否有中断请求有待处理。0:无中断请求, 1:有中断请求。其中断标志分别为PXIFG.0~PXIFG.7。应该注意的是:PXIFG.0~PXIFG.7共用一个中断向量,为多源中断。当任一事件引起的中断进行处理时,PXIFG.0~PXIFG.7不会自动复位,必须由软件来判断是对哪一个事件,并将相应的标志复位。另外,外部中断事件的时间必须保持不低于1.5倍的MCLK时间,以保证中断请求被接受,且使相应中断标志位置位。


(5)PXIES:中断触发沿选择寄存器。如果允许PX口的某个引脚中断,还需定义该引脚的中断触发方式。0:上升沿触发使相应标志置位,1:下降沿触发相应标志置位。如:MOV.B #07H, &P1IES ;p1低3位下降沿触发中断。


(6)PXIE:中断使能寄存器。PX口的每一个引脚都有一位用以控制该引脚是否允许中断。0:禁止中断 ,1:允许中断。MOV.B #0E0H, &P2IE ;P2高3位允许中断。


(7)PXSEL:功能选择寄存器。P1,P2两端口还具有其他片内外设功能,将这些功能与芯片外的联系通过复用P1,P2引脚的方式来实现。PXSEL用来选择引脚的I/O端口功能与外围模块功能。0:选择引脚为I/O端口,1:选择引脚为外围模块功能。如:P1SEL|=0X10; //P1.4为外围模块功能。


端口P3、P4、P5、P6没有中断能力,其余功能同PI,P2。除掉端口P1,P2与中断相关的3个寄存器,端口P3,P4,P5,P6的4个寄存器(用法同P1,P2)分别为PXDIR,PXIN,PXOUT,PXSEL可供用户使用。


端口COM和S,他们实现与液晶片的直接接口。COM为液晶片的公共端,S为液晶片的段码端。液晶片输出端也可经软件配置为数字输出端口。


推荐阅读

史海拾趣

Communications公司的发展小趣事

在电子行业的跨界融合趋势下,一家名为“智联通信”的公司通过整合不同领域的技术和资源,成功打造出了一个全新的通信生态系统。他们不仅拥有先进的通信技术,还积极与互联网、物联网等领域的企业进行合作,共同开发新的应用场景。

通过跨界融合,“智联通信”成功地将通信技术应用于智能家居、智慧城市等多个领域,为用户提供了更加便捷、高效的服务体验。同时,他们还积极拓展海外市场,与全球伙伴共同推动通信行业的发展。

Carroll & Meynell Transformers Ltd公司的发展小趣事

在电子行业的初期,Carroll & Meynell Transformers Ltd公司以其卓越的技术创新能力脱颖而出。公司研发团队不断突破传统变压器的设计局限,推出了一系列高效、稳定的变压器产品。这些产品不仅满足了当时市场对电力传输和分配的基本需求,还以其卓越的性能赢得了客户的广泛认可。随着市场需求的不断增长,公司逐渐扩大了生产规模,成为了电子行业中的佼佼者。

AVAGO公司的发展小趣事

随着技术的不断进步,AVAGO公司开始致力于研发更先进的半导体技术。其中,一次重大的技术突破发生在光纤通信领域。公司成功研发出了一种高性能的光纤收发器,这一创新不仅提高了数据传输的速度和稳定性,还极大地推动了光纤通信技术的发展。这一产品迅速在市场上获得了广泛应用,为AVAGO公司带来了可观的收益。

Cortina Systems Inc公司的发展小趣事

尽管AVAGO公司在发展过程中取得了显著成就,但也面临着诸多挑战。随着全球半导体市场的竞争日益激烈,公司需要不断投入研发资金、加强人才培养、优化生产流程等方面来保持竞争优势。同时,公司还需要密切关注行业动态和市场需求变化,以便及时调整战略和产品线。在未来,AVAGO公司将继续致力于技术创新和市场拓展,为全球客户提供更优质的产品和服务。

以上五个故事仅是对AVAGO公司发展历程的简要描述,实际上公司在发展过程中还经历了许多其他重要事件和阶段。这些故事展示了AVAGO公司如何凭借技术实力、市场洞察力和战略眼光在电子行业中脱颖而出,并成为全球领先的半导体企业之一。

ETTINGER公司的发展小趣事

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

Arco Electronics公司的发展小趣事

随着全球对环境保护的日益重视,Arco Electronics公司也开始关注可持续发展和社会责任。公司积极采用环保材料和生产工艺,减少生产过程中的环境污染;同时,公司还设立了公益基金,支持教育事业和社会福利事业。这些举措不仅提升了公司的社会形象,还为公司赢得了更多消费者的支持和信任。

以上就是我为您虚构的关于Arco Electronics公司的5个发展故事。这些故事基于电子行业的常见趋势和挑战进行构建,旨在展示一个公司在行业中逐步发展和壮大的过程。请注意,这些故事都是虚构的,并不代表任何真实公司的实际发展情况。

问答坊 | AI 解惑

内存操作的疑问

wince6.0应用程序不能直接访问内存。这是为什么呀?什么原因呀?WINCE5可以吗?为什么不能仿问呀!用MAP成虚拟地址也不能仿问吗?…

查看全部问答>

6410 MLC 如何才能从nandflash启动

各位老大,最近我刚开始研究6410的板子,手头上现有三星6410 PM 090416的BSP包,Nandflash型号是K9GAG08U0M 2G,用PM的包现在可以采用iRom方式从SD卡启动,但下载stepldr和Eboot不能从Nandflash启动,有谁知道都会有什么原因导致出现这个情况,我曾 ...…

查看全部问答>

sqlce如何在嵌入式设备上建立数据库以及sdf文件?

sqlce能在设备上直接创建和编辑数据库、或者sdf文件么?像access和sql server企业管理器一样的编辑数据库。如果行的话,应该怎么做?不行的话,能给我发一下创建数据库的代码么?谢谢!!!!…

查看全部问答>

TXT文本生成问题

我用的是VB.NET 2003,开发一个WIN CE4.2和程序,我的界面有一个文本框,一个button按钮,我想在文本框里输入字符,然后按button按钮后生成一个UP.TXT文档,我想要每按一次按钮就生成一行数据,然后换行,等待文本档的输入,按button按钮再生成一行 ...…

查看全部问答>

QuartusII 管脚分配提示错误

no input node cannot be assigned to input pin,我已有输入node不知道为什么会这么提示,还请各位大侠提示一下,谢谢…

查看全部问答>

u-boot_smdkv210 分析三:启动代码lowlevel.s分析

u-boot_smdkv210 分析三:启动代码lowlevel.s分析_TEXT_BASE: .word TEXT_BASE .globl lowlevel_init lowlevel_init: push {lr}                        &n ...…

查看全部问答>

我来评论,太阳能光伏发电解决方案

对ADI的产品还算是比较了解的,之前用过他的DDS类的芯片,这个感觉不错,另外就是用过AD,DA,以及一个很快的比较器ADCMP600系列的,刚才太阳能伏光里面提到的有AD7606那个多通道的数模转换也很给力,ADI的前景很大,真的,就是芯片贵了点,另外指标 ...…

查看全部问答>

stm32掉电讨论

stm32掉电时发现,sram里的变量会变,例如有个变量fault=3,在掉电的过程中,fault会变为零。为了解决这个问题,我使用了掉电检测,发现PVD0在掉电的时候也会变来变去,一回为0一回为1。大家遇到过这个问题没有,怎么解决。 …

查看全部问答>

MSP430f5529音频处理

各位大牛,最近硬件课设要做一个类似于名侦探柯南里的变声蝴蝶结的东西,就是把输入的声音fft变为频域上的,在频域上搬移后再放出去,计划用msp430f5529来做,但听老师说这个计算量偏大,估计很难实现,就算实现了也不实用。他给我的建议是用音频co ...…

查看全部问答>