IO口基本操作
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.2 寄存器
通用端口P1、P2: 通用端口P1和P2将各个引脚选择的功能来组成全 部功能,并且每一个信号都可用作中断源。
各有7个寄存器来控制端口的引脚。 通用模块寄存器位于安排字节外围模块的低端地 址,寄存器必须用字节指令以绝对寻址模式进行访问。
MDB
输入寄存器 PnIN 输出寄存器 PnOUT 方向寄存器 PnDIR 中断标志 PnIFG 中断沿选择 PnIES 中断允许 PnIE 功能选择 PnSEL
I/O端口可以直接用于输入输出,在 MSP430 系统 中,没有专门的输入/输出指令,输入输出操作都是 通过数据传送指令来完成的。 例如用指令 MOV P1IN,R5 表示读取 P1 端口内 容,端口 P1~P6 都是按位寻址的,也就是说,端口 每一位都可以独立用于输入/输出。
常见的键盘接口电路可以直接用端口进行模拟, 用查询或者中断方式控制。端口是 MSP430 极其重要 的资源,由于目前 MSP430 所有系列总线不对外开放, 端口不但直接用于输入/输出,还可以为 MSP430 系 统扩展等应用提供必要的逻辑控制信号。
如果PnDIR的相应位是“0”,PnIN相应位读到的就是外电路 的逻辑电平
如果PnDIR的相应位是“1”,PnIN相应位读到的就是PnOUT 输出的内容
3、输出寄存器P1OUT和P2OUT P1OUT的地址:021h,P2OUT的地址:029h。 如果PnDIR的相应位是“0”,Pn相应位不受影响 如果PnDIR的相应位是“1”,Pn的相应位就是PnOUT寄存器 的相应内容
前、后沿都发生中断的处理方法: 设计思想:PnIES.x = PnIN.x 例如:P1DIR &= ~0x24 //方向设置, P1.5、P1.2输入 P1IE |= 0x24 // P.15、P1.2中断允许 中断处理程序: P1IES = (P1IES & ~0x24) | (P1IN & 0x24); //P1.5,P1.2根据当前引脚电平确定中断电平
以下是几个基本的参数: 吸收电流:当单片机IO口处于低电平时(输出或输入,不同单 片机有所不同)。能向外部电路所能吸 收电流量的大小。即灌入 IO入口电流的大小。 输出电流:其意思以上述相同,但方向刚好相反。即IO输出 电流的多少。这些主要用于衡量 IO 的 驱动能力指示。 漏电流:因为大部分的单片机结构都能以 CMOS 型结构成, 这当中就是IO不接任何外部电路时 (其状态可以处于某一状态 值,不同单片机有所不同)。此时IO处于一个静态,不做任何驱 动连接。此 时IO口 MOS 器件所产生漏电流的大小。
例如:MOV.B #01011010B, &P1DIR 运行结果: P1.7、P1.5、P1.2、P1.0为输入接口; P1.6、P1.4、P1.3、P1.1为输出接口;
2、输入寄存器P1IN和P2IN P1IN的地址:020h,P2IN的地址:028h。 P1IN和P2IN读入的是当前P1和P2的逻辑电平。
MSP430 的单个I/O高电平时输出能力为1.5mA; 8条口线的一个Px口总输出在这个时候就是 12mA。 MSP430 的单个I/O 低电平时吸收能力为 6mA; 8 条口线的一个Px口总吸收在这个时候就是 48mA。
3.1 I/O口的基本操作流程
1、选择I/O口的功能: MSP430单片机的大多数I/O口都是多功能口。除了通用I/O 功能外,一般都有可编程的特殊功能。 如MSP430F449的P2.4和P2.5,既是用I/O口, 也是UTXD0(串行发送)和URXD0(串行接受)接口; Pwk.baidu.com.0~P6.7,既是用I/O口, 也是ADC.0~ADC.7(模拟信号输入)测量接口。
2、设置方向寄存器(PxDIR): 当I/O口做为通用接口时,必须确定接口是输入还是输出, PxDIR.x = 0表示Px.x接口为输入接口, PxDIR.x = 1表示Px.x接口为输出接口。
3、读输入值(PxIN)或写输出值(PxOUT): 根据PnDIR.x的选择: PnDIR.x = 0时读PnIN.x可以获得Pn.x的逻辑值。此时写 PnOUT.x无效。 PnDIR.x = 1时写PnOUT.x可以将逻辑数据写入Pn.x。 在PnDIR.x = 1时读PnIN.x可以获得已经写入Px.x的内容。 4、I/O口的中断操作: 设置I/O口模式; 设置中断触发方式 设置中断允许寄存器 打开系统中断 等待中断响应
Pn.7
Pn口
Pn.0
P1和P2的控制寄存器: 1、方向寄存器P1DIR和P2DIR P1DIR的地址:022h, P2DIR的地址:02Ah。 P1和P2可做为输入口,也可以做为输出口,并且输入/输 出可以按位单独设置。 PnDIR(rw-0):
PnDIR.7 PnDIR.6 PnDIR.5 PnDIR.4 PnDIR.3 PnDIR.2 PnDIR.1 PnDIR.0
运行结果:P1.7、P1.5、P1.2、P1.0为输入接口,其余为输 出接口。同时:P1.5、P1.2允许中断
注意:只能将输入端口设置为允许中断。如果将输出端口 允许中断,虽然输出寄存器PnOUT相应位的数值变化也能产 生中断,但没有实用意义。
5、中断沿选择寄存器P1IES和P2IES P1IES的地址:024h, P2IES的地址:02Ch。 P1和P2的中断输入可以是前沿触发(电平有低到高),也可以 是后沿触发(电平有高到低)。 PnIES.x = 0是前沿触发中断; PnIES.x = 1是后沿触发中断。
6、中断标志寄存器P1IFG和P2IFG P1IFG的地址:023h, P2IFG的地址:02Bh。 当Pn.x发生中断时,PnIFG.x就被置“1”,如果系统中断被 允许,程序便转向中断向量地址执行。 Pn.0~Pn.7共用一个中断向量PORTn_VECTOR,进入中断后通 过读取PnIFG的内容获知具体的中断引脚。 在中断返回前,PnIFG.x必需由软件复位,复位操作为: PnIFGn &= ~BIT.x 由于Pn.0~Pn.7共用一个中断向量,中断程序可以一次性将 Pn.0~Pn.7的中断全部处理完,此时中断返回前直接置: PnIFGn = 0
4、中断允许寄存器P1IE和P2IE P1IE的地址:025h, P2IE的地址:02Dh。 当Pn的相应接口为送入(PnDIR.x = 0)时,Pn.x不仅可以 做为输入端口,同时还可以产生中断。 例如:MOV.B MOV.B #01011010B, &P1DIR #00100100B, &P1IE //方向设置 //中断允许