MSP430--通用IO端口

发布者:JoyfulExplorer最新更新时间:2015-09-29 来源: eefocus关键字:MSP430  通用IO端口 手机看文章 扫描二维码
随时随地手机看文章
     IO端口是单片机最常用的外设模块,由于单片机的总线不对外开放,所以单片机和外部进行信息交流的桥梁就是数字IO端口。

     目前,MSP430系列单片机当中有端口P1,P2,P3,P4,P5,P6等端口,其中P1,P2的每一位都有中断功能,但不是独立的,P1口每位共用PORT1_VECTOR中断向量,P2共用PORT2_VECTOR向量。

     P1--P6端口大多数是复用的,具有第二功能可以通过PxSEL选择是普通IO口或者第二功能。

1.端口的寄存器:

(1)P1-P2端口具有中断能力,共7个寄存器

[转载]MSP430--通用IO端口
PxIN输入寄存器,只读寄存器,即只能读取输入端口x的数据;

PxOUT输出寄存器,可读可写,即可以向输出端口写8位数据输出,同时也可以读取数据;

PxDIR方向位寄存器,当PxSEL选择普通IO口时,PxDIR决定是输出还是输入,0输入,1输出;

PxSEL功能选择寄存器,选择普通功能或者复用功能;0普通IO口,1复用功能;

PxIE中断使能寄存器,1使能相应位的中断,0不使能;注意:在中断当中要手动清除中断标志位。

PxIFG中断标志寄存器,1相应中断标志位有效,0无效;

PxIES中断触发沿选择寄存器,0上升沿,1下降沿相应中断标志位置位
(2)P3--P6无中断能力,共4个寄存器

[转载]MSP430--通用IO端口
PxIN输入寄存器,只读寄存器,即只能读取输入端口x的数据;

PxOUT输出寄存器,可读可写,即可以向输出端口写8位数据输出,同时也可以读取数据;

PxDIR方向位寄存器,当PxSEL选择普通IO口时,PxDIR决定是输出还是输入,0输入,1输出;

PxSEL功能选择寄存器,选择普通功能或者复用功能;0普通IO口,1复用功能;

2.例程:

(1)//程序描述:P1,P2口具有中断功能,通过设置寄存器,实现P1口外部中断

#include"msp430x14x.h"

#define uchar unsigned char
#define uint unsigned int

uchar i;
uint j;
uchar seg[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
//共阳数码管字型码数组

void main()
{
  WDTCTL=WDTPW+WDTHOLD;//
  P4DIR=0xff;
  //

  P1DIR&=~BIT0;  //p1.0口设置为输入
  P1IFG=0;       //开中断前清楚标志位
                //P1IN=1;//!!!注意:PxIN寄存器只能读不能写
  P1IES&=~BIT0;//中断源选择.下降沿触发
  P1IE|=BIT0;//中断使能
  _EINT();//开总中断
}
#pragma vector=PORT1_VECTOR
__interrupt void p1()
{
  i++;
  if(P1IFG&BIT0)
  for(j=0;j<2000;j++);
  P4OUT=seg[i];//点亮灯
  if(i>=9)
    i=0;
  P1IFG=0;
  return;
}

(2)IO端口中断模块中断程序,以P1口为例

void main()

{

  p1.0口设置为输入;
  清标志位;

  中断使能;

  中断触发沿选择;

  开总中断;

}
#pragma vector=PORT1_VECTOR  //中断函数
__interrupt void p1()
{

  if(P1IFG & BIT0)

  {

     功能代码0;

  }

  if(P1IFG & BIT1)

  {

     功能代码1;

  }

   .......

  if(P1IFG & BIT7)

  {

     功能代码7;

  }

  P1IFG = 0;//!!!!!!!!!!!!!注意:必须清除中断标志位

}

关键字:MSP430  通用IO端口 引用地址:MSP430--通用IO端口

上一篇:MSP430--定时器B
下一篇:MSP430--UART模块

推荐阅读最新更新时间:2024-03-16 14:33

一个关于msp430 编译的错误
Error : Undefined external voltage referred in main ( C:UsersAdministratorDesktopmsp430pricticepress KEY to control DACDebugObjmain.r43 ) 关于这种错误, 如果 voltage 是一个外部函数 只需加上函数所在文件的头文件就行 比如: 在ADC.c里面有一个函数 void ADC_Init(); 在主函数中我需要调用这个变量,那么就需要在主函数中加上 #include “ADC.c” 但如果 voltage 是一个外部变量 这需要在 voltage 所在的文件中定义 volta
[单片机]
msp430读写24c512程序
*文件名:msp430f169i2c.c *整体描述:MSP430F169单片机硬件IIC软件,字节方式,主方式 * IIC接口:P3.3=SCL,P3.1=SDA;(开漏输出) * 相应寄存器:地址寄存器 I2COA 用于存放自身从地址(从方式时才有用) * 地址寄存器 I2CSA 用于存放外围的从机地址(主方式时才有用) * 控制寄存器 U0CTL 硬件I2C的设置、使能、模式等。 发送控制寄存器 I2CTCTL * 数据控
[单片机]
MSP430在CCS开发环境下的内存分配
用CCS开发环境以及有一年多了,之前写程序,仅仅是停留在写程序的阶段,从来没有想过内存是如何分配的。这次做这个,由于程序的代码量比较大,有40K+,所以在程序整合编译的过程中,遇到了一些之前没有遇到过的问题,在查阅了一些资料之后,解决了这些问题,在这里做一下总结。 首先,我们先抛出遇到的问题。在将程序整合之后,编译报错了,报的错误如下图所示。这个问题是说重定向时,重定向的地址为17位,太大了,超过了16位译码的范围。 这里这个问题我是这样理解的,是这些函数中需要调用一些字符串常量(根据错误定位得出的结论),这时候需要跳转到这个常量所在的地址,但是由于这个地址离当前函数所在的地址“太远了”,所以没有办法跳转到那里执行。
[单片机]
<font color='red'>MSP430</font>在CCS开发环境下的内存分配
用于MSP430的W5200驱动
我对之前的W5200驱动做了许多修正,包括解决了一些bug。它主要是用于MSP430F5438a,但是也应该能用于MSP430的 5系 或 6系 。我已经将代码按作用分块。例如,WIZnet的相关文件放命名是以 W5200 起头。调试相关的文件则是以 console 起头。 目前的特点: 全面支持TCP/UDP/ICMP及DHCP客户端 包含UDP/TCP的例程代码 以太网性能测试代码 串口调试台,能进行测试运行及显示W5200所有寄存器状态 BSD认证代码 此次代码的最大改动是支持对MSP430的相关测试。我进行了一个丢包测试,并且用WIZnet客户端以最快速度发送尽可能多的数据(通过TCP发送204
[单片机]
用于<font color='red'>MSP430</font>的W5200驱动
MSP430F149单片机实现公交卡/饭卡充值功能模块
实验目的 1. 最基础实现刷卡后显示冲值/扣款说明 2. 实现芯片内部寄存器的读写,实现可记忆性。 设计思路 根据M1射频卡与读写器的通讯过程,程序设计基本流程如下: 主函数架构: void main(void) { WDTCTL = WDTPW + WDTHOLD; // 关看门狗 int i = 0; unsigned char status; BoardConfig(0xf0); Init_Port(); InitUART(); Port_init(); //系统初始化,设置IO口属性 delay_ms(100); //延时100ms LCD_init(); //液晶参数初始化设置 LC
[单片机]
<font color='red'>MSP430</font>F149单片机实现公交卡/饭卡充值功能模块
一张图理解MSP430f4371的低功耗模式
简介:430有6中工作模式,在此不再累述,C程序中,使430单片机低功耗进入低功耗的语句非常简单,只需一句LPM0/LPM1/LPM2/LPM3/LPM4即可使其进入低功耗状态。 看了一天430的系统时钟模块和低功耗状态,发现最靠谱的东西还是官网数据手则,迷惑了一天,最终一张图片使思维稍微清晰。图片如下: 从上图得到自己的理解,虽然可能有误,但暂时不影响对430单片机的使用: LPM0:CPUoff置位------------------------ CPU不能用,MCLK不能用,其他一切照旧活动; LPM1:CPUoff置位,SGC0置位----------- CPU不能用,MCLK不能用,FLL+停止操作,而
[单片机]
一张图理解<font color='red'>MSP430</font>f4371的低功耗模式
MSP430数码管的使用Ⅰ
首先应该了解数码管及其工作原理。了解你使用的是共阴还是共阳数码管,其次了解数码管的段选位选。 接下来是一个例程 #include msp430f149.h typedef unsigned char uchar; #define wei_h P5OUT |= BIT5 #define wei_l P5OUT &= BIT5 #define duan_l P6OUT &= ~BIT6 #define duan_h P6OUT |= BIT6 uchar table = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x
[单片机]
基于MSP430F149单片机的车体调平装置设计
随着国防技术的发展,根据任务需求,越来越多的军用武器需要随时变更工作地点。为了保证这些军用武器的机动性能,往往以载车为运输载体,如火箭炮这样的大型武器就被安装在载车上。载车到达目的地后,借助平台快速将武器架设调至水平而后工作,工作完成后平台能够快速地撤收、转移。既保证了武器的工作性能,又提高了机动性。 传统上,主要依靠人工手动完成平台的水平度调节,这需要一部分人员手动调节千斤顶,另外一部分人员观察水平仪的水泡位置。这种调平方式费时费力,且精度低、抗倾覆能力差。随着调平时间和调平精度要求的提高,过去的调平方式已远远不能满足实际情况的需要,所需时间短、精度高、抗倾覆能力强的自动调平控制技术应运而生。 在军用方面,自动调平控制系统广泛应用
[单片机]
基于<font color='red'>MSP430</font>F149单片机的车体调平装置设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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