MSP430单片机的端口解析

合集下载

MSP430单片机IO端口控制特点

MSP430单片机IO端口控制特点

MSP430单片机IO端口控制特点与8031单片机相比,MSP430的I/O端口的功能要强大的多,其控制的方法也更为复杂。

MSP430的I/O端口可以实现双向的输入、输出;完成一些特殊功能如:驱动LCD、A/D转换、捕获比较等;实现I/O各种中断。

MSP430采用了传统的8位端口方式保证其兼容性,即每个I/O端口控制8个I/O引脚。

为了实现对I/O端口每一个引脚的复杂控制,MSP430中的每个I/O口都对应一组8位的控制寄存器(如图1)。

寄存器中的每一位对应一个I/O引脚,实现对该引脚的独立控制。

寄存器的功能和数目是由该I/O口所能完成的功能以及类型确定的。

图1为MSP430的一个I/O端口的控制结构示意图。

对于最基本的只能完成输入、输出功能的I/O端口其控制寄存器只有3个。

其中,输入寄存器保存输入状态;输出寄存器保存输出的状态,方向寄存器控制对应引脚的输入、输出状态。

本文中用来实现I2C总线接口的P6.6、P6.7都属于这类的端口。

此外,有些I/O端口不但可以用作基本的输入输出,而且可以用作其他用途,比如可以作为LCD的驱动控制引脚。

这类端口的控制功能寄存器实现引脚功能状态的切换。

再者,有一类端口不但可以完成上述两种端口的功能,而且可以实现中断功能。

该类端口拥有图1中所有的寄存器,中断触发的方式以及中断的屏蔽性都可以通过相应的寄存器控制。

本文中使用的P2.0就属于该类端口,利用它来接收LM92发出的中断。

通过上述的控制结构,MSP430的I/O端口可以实现很丰富的功能。

不仅如此,其中一些I/O口还可以与MSP430中的特殊模块相结合完成更为复杂的工作。

如与捕获比较模块相结合可以实现串行通信,与A/D模块结合实现A/D转换等。

此外,MSP430 I/O端口的电器特性也十分突出,几乎所有的I/O口都有20mA的驱动能力,对于一般的LED、蜂鸣器可以直接驱动无需辅助电路。

许多端口内部都集成了上拉电阻,可以方便与外围器件的接口。

正确理解MSP430的PxDIR和PxIN、PxOUT之间的关系

正确理解MSP430的PxDIR和PxIN、PxOUT之间的关系
P4DIR &= 0x00;// 将 P4 口切换成输入状态
CLR_RS;Biblioteka SET_RW; _NOP(); SET_EN; _NOP(); _NOP();
while((P4IN & busy) != 0);//监测忙标志,此时为输入状态,只能对其端口进行读取状态, 不能对其进行写操作
CLR_EN;
【大赛原创经验贴】正确理解PxDIR和PxIN、PxOUT之间的关系
第九单片机论坛 网友原创精华 来自网友 空白。
看到大家都在第九单片机论坛上发帖,分享自己的学习经验,让我收获颇大,感觉跟着你们 的经验走,进步是比刚开始独自闷着看书要快啊。再次谢过各位了。 不知道大家对 Px 口的这三个寄存器是怎么理解的,在这里共享我的理解,如有不足,还望 和大家一起讨论修改。
// Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD;
Init_1602(); W_cmd(0xC0,1); W_data('&')
while(1);
} /******************************************* 函数名称:Init_1602 功 能:对 1602 液晶模块进行复位、初始化操作 参 数:无 返回值 :无 ********************************************/ void Init_1602(void) {
/*关闭所有的 IO 口*/ P1DIR = 0xFF;P1OUT = 0xFF; P2DIR = 0xFF;P2OUT = 0xFF; P3DIR = 0xFF;P3OUT = 0xFF; P4DIR = 0xFF;P4OUT = 0xFF; P5DIR = 0xFF;P5OUT = 0xFF; P6DIR = 0xFF;P6OUT = 0xFF;

MSP430串口通信讲解

MSP430串口通信讲解

串行通信接口是处理器与外界进行数据传输最常用的方式之一。

顾名思义,串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。

与并行通信相比,串行通信速度较慢,但占用更少的I/O 资源,只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。

串行通信可以分为同步通信和异步通信两种类型。

如果带有同步时钟,则称为同步串行通信,如常用的 SPI 和 I2C 接口就属于同步串行通信接口。

如果没有同步时钟,依靠严格的时间间隔来传输每一比特,则称为异步串行通信。

MSP430 系列单片机有两种串行通信接口,较早的 USART 模块和较新的 USCI 模块。

同步通信方式,是把许多字符组成一个信息组,这样,字符可以一个接一个地传输。

但是,在每组信息(通常称为信息帧)的开始要加上同步字符,在没有信息要传输时,要填上空字符,因为同步传输不允许有间隙。

同步方式下,发送方除了发送数据,还要传输同步时钟信号,信息传输的双方用同一个时钟信号确定传输过程中每1位的位置。

在异步通信方式中,两个数据字符之间的传输间隔是任意的,所以,每个数据字符的前后都要用一些数位来作为分隔位。

MSP430G2553单片机USCI模块原理图串口通信所需配置:1、时钟选择——以SMCLK时钟频率为1MHz为例。

①选择SMCLK为串口通信频率。

(P95页)②设置SMCLK时钟频率为1MHz。

需要设置的寄存器:UCA0CTL1;(P95页)。

2、IO口定义为第二功能,即串口发送接收端口。

需要设置的寄存器:P1SEL|=BIT1+BIT2;,P1SEL2|=BIT1+BIT2;(中文P44页)。

2、数据传输格式本次实验数据格式设置为:1位起始位8位数据位无奇偶校验1为停止位需要设置的寄存器:UCA0CTL0(P94页)3、设置波特率,以9600为例。

需要设置的寄存器:UCA0BR0,UCA0BR1,UCA0MCTL。

MSP 430基础IO口

MSP 430基础IO口

学习过51单片机的同学都知道,IO口的操作是所有单片机系统的基本操作,单片机作为一个核心的运算和处理器件必须能够对外部的信号做出反应,那么如何让MSP430得知外部信号变化和做出反应就是我们今天要学习的主要内容这里还是以MSP430G2553单片机为例MSP430单片机的IO口都有以下几个相关的寄存器:1、PnDIR:输入输出方向寄存器0-输入1-输出2、PnOUT:输出寄存器0-低电平1-高电平3、PnIN:输入寄存器这是一个只读寄存器用来读取外部电平状态4、PnIFG:中断标志寄存器0-没有中断请求1-有中断请求该寄存器有8个标志位,对应相应的引脚是否有待处理的中断请求这8个中断标志共用一个中断向量,中断标志不会自动复位,必须软件复位外部中断时间的时间必须>=1.5倍的MCLK时间以保证中断请求被接受5、PnIE:中断启用寄存器0-不启用中断1-启用中断6、PnIES:中断触发边沿选择寄存器0-上升沿中断1-下降沿中断7、PnSEL:功能选择寄存器0-选择引脚为普通IO口1-选择引脚为外围模块功能(第二功能引脚)8、PnSEL2:功能选择寄存器2和PnSEL共同作用选择不同功能,当选择引脚作为普通IO口使用时PnSEL和PnSEL2都应该清零(默认)9、PnREN:上拉/下拉电阻使能寄存器0-禁止1-使能OK,以上就介绍完了和IO口相关的寄存器,是不是觉得好多,头晕?不过头晕之余看看描述,还是能够理出一些思绪的。

本篇我们只讨论IO作为普通输入输出口使用所以像PnSEL、PnSEL2、PnIE寄存器就直接写入0x00就好了,或者说可以默认不作修改。

像PnIFG 和PnIES寄存器那就和我们本篇完全无关了。

让我们看看MSP430G2553这个单片机的管脚是如何分布的吧,好让大家有个IO口的存在概念:图片太小?符号密密麻麻看不清?OK,cloud用表格给大家划分一下最简单的引脚图:VCC MSP430G2553GNDP1.0P2.6 / XINP1.1P2.7 / XOUTP1.2TESTP1.3/RSTP1.4P1.7P1.5P1.6P2.0P2.5P2.1P2.4P2.2P2.3看了这张图大家应该都明白了我们的MSP430G2553单片机只引出了P1口和P2口。

MSP430单片机串口通信详解

MSP430单片机串口通信详解

MSP430单片机串口通信详解#include"msp430G2553.h"#include "in430.h"void UartPutchar(unsigned char c);unsigned char UartGetchar();unsigned char temp=0;unsigned char number[2]={0};void main( void ){WDTCTL = WDTPW + WDTHOLD; // Stop WDTBCSCTL1 = CALBC1_1MHZ; // Set DCODCOCTL = CALDCO_1MHZ;P1DIR|=BIT6;P1OUT&=~BIT6;P1SEL = BIT1 + BIT2; // P1.1为 RXD, P1.2为TXD P1SEL2 = BIT1 + BIT2; // P1.1为 RXD, P1.2为TXDUCA0CTL1 |= UCSSEL_2; // 选择时钟BRCLKUCA0BR0 = 106; // 1MHz 9600UCA0BR1 = 0; // 1MHz 9600UCA0MCTL = UCBRS2 + UCBRS0; // 波特率=BRCLK/(UBR+(M7+...0)/8)UCA0CTL1 &= ~UCSWRST;// 初始化顺序:SWRST=1设置串口,然后设置SWRST=0,最后设置相应中断IE2 |= UCA0RXIE; // 使能接收中断while(1){//UartPutchar(9);// display_int(temp,0);__delay_cycles(10000);}}/**********************************UART接收中断*************************/#pragma vector=USCIAB0RX_VECTOR__interrupt void USCI0RX_ISR(void){//while (!(IFG2&UCA0TXIFG)); // 等待发送完成 //UCA0TXBUF = UCA0RXBUF; // TX ->; RXed charactertemp=UCA0RXBUF;}/******************************UART发送字节函数*************************/void UartPutchar(unsigned char c){while(!(IFG2 & UCA0TXIFG)); //待发送为空UCA0TXBUF=c;IFG2 &=~UCA0RXIFG;}/*********************************UART接收字节数据******************/unsigned char UartGetchar(){unsigned char c;while(!(IFG2 & UCA0RXIFG)); //等待接收完成c=UCA0RXBUF;IFG2 &=~UCA0TXIFG;return c;}/******智能控制工作室*******/MSP430g2553串口通信MSP430的不同型号,其串行通讯工作模式是一样的。

MSP430中关于输入输出端口

MSP430中关于输入输出端口

输入输出端口输入寄存器:P1IN,P2IN输出寄存器:P1OUT,P2OUT方向寄存器:P1DIR,P2DIR功能选择寄存器:P1SEL,P2SEL1.PxIN、PxOUT、PxDIR、PxSELx为端口号。

IN为端口输入寄存器,OUT为端口输出寄存器,DIR为端口方向控制寄存器,SEL为端口第二功能选择寄存器。

举例:Moon=P1IN;//读端口P1的值,赋给变量MoonP3Out=5;//P3端口输出5P2DIR=0xF0;//P2端口的高4位为输出,低4位为输入P6SEL=0xF;//P6端口的高4位用作I/O端口,低4位用于第二功能P1OUT|=BIT0;//将P1口的最低位输出置1P1OUT&=~BIT7;//将P1口的最高位输出清0,P1口只有8位P1OUT=4;P1.2引脚输出高电平,P1其余引脚输出低电平;P1OUT|=4;P1.2置高电平,P1其余引脚不变;P1OUT&=~8;即P1OUT&=0xf7,P1.3置低电平,P1其余引脚不变;|是或运算符,&是与运算符,具体请参考C语言应用运算符部分!2.BITxx的取值范围为0~F。

代表寄存器的某一位。

其定义为:#define BIT0(0x0001)#define BIT1(0x0002)...#define BITE(0x4000)#define BITF(0x8000)BIT0为最低位,BITF为最高位。

MSP430是不支持位操作的,如果想对位操作,最好的方法就是通过位屏蔽来实现。

举例:P1OUT|=BIT0;//将P1口的最低位输出置1P1OUT&=~BIT7;//将P1口的最高位输出清0,P1口只有8位。

Msp430x14x系列单片机引脚说明

Msp430x14x系列单片机引脚说明
P3.2/SOMI0
30
I/O
通用数字I/O引脚 / USART0/SPI模式的从输出或主输入
P3.3/UCLK0
31
I/O
通用数字I/O引脚 / 外部时钟输入--USART0/UART或SPI模式,时钟输出--USART0/SPI模式
P3.4/UTXD0
32
I/O
通用数字I/O引脚 / 发送数据输出--USART0/UART模式
P3.5/URXD0
33
I/O
通用数字I/O引脚 / 发送数据输入--USART0/UART模式
P3.6/UTXD1
34
I/O
通用数字I/O引脚 / 发送数据输出--USART1/UART模式
P3.7/URXD1
35
I/O
通用数字I/O引脚 / 发送数据输入--USART1/UART模式
P4.0/TB0
P6.5/A5
4
I/O
通用数字I/O引脚 / 12位A/D转换器模拟输入通道5
P6.6/A6
5
I/O
通用数字I/O引脚 / 12位A/D转换器模拟输入通道6
P6.7/A7
6
I/O
通用数字I/O引脚 / 12位A/D转换器模拟输入通道7
RET/NMI
58
I
复位输入/不可屏蔽中断输入口,或自动加载程序启动
P5.5/SMCLK
49
I/O
通用数字I/O引脚 / 子系统时钟SMCLK输出
P5.6/ACLK
50
I/O
通用数字I/O引脚 / 辅助时钟ACLK输出
P5.7/TBOUTH
51
I/O
通用数字I/O引脚 / 切换所有的PWM数字输出口为高阻抗--定时器B_3 TB0__TB2

msp430 通用IO口

msp430 通用IO口

通用IO口3.2.1 IO口IO口是微处理器系统对外界沟通的最基本部件,从基本的键盘、LED到复杂的外设芯片等,都是通过IO口的输入输出操作来进行的。

在MSP430系列中,不同的单片机IO口数量不同。

体积最小的MSP430F20xx系列中只有10个IO口,适合在超小型设备中应用;功能最丰富的MSP430FG46xx系列中多达80多个IO 口,足够应付外部设备繁多的复杂应用。

在MSP430G2553单片机中,共有16个IO口,属于IO口较少的系列。

3.2.2 IO寄存器和大部分单片机类似,MSP430系列单片机也是将8个IO口编为一组。

每个IO口有四个控制寄存器,P1和P2还有额外的3个中断寄存器。

寄存器情况可参见表3.2。

PxDIR寄存器用于设置每一位的IO口方向MSP430单片机的IO口是双向IO口:0=输入 1=输出。

在使用IO口时首先要选择寄存器来设置每个IO口方向。

例如下面的语句:P1DIR |= BIT1+BIT3+BIT4;P1DIR |= ~(BIT5+BIT6+BIT7);以上语句将P1.1,P1.3和P1.4的方向置为输出,P1.5,P1.6和P1.7的方向置为输入。

PxDIR寄存器在复位的过程中会被清零,没有被设置的IO口方向均为输入状态,所以第二句可以省略。

注意,将未用的IO口置为输出可减小漏电流。

对于所有已经设成输出的IO口可通过PxOUT寄存器设置其输出电平;对于所有已经被设成输入的IO口,可通过PxIN寄存器读回其输入电平。

PxSEl寄存器用于设置每一位IO口的功能:0=普通IO口,1=第二功能。

在MSP430系列单片机中,很多内部功能模块也需要和外界进行数据交换,为了不增加芯片的管脚数量,大部分都和IO口管脚复用,这就导致MSP430系列单片机的大多数IO管脚都具有第二功能。

通过PxSEL可以指定某些IO口作为第二功能使用。

如MSP430G2553中P1.1和RXD,P1.2和TXD复用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MSP430 单片机的端口解析
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)可以按字节
输入、输出,也可按位进行操作。

相关文档
最新文档