MSP430单片机的端口解析
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之间的关系
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串口通信讲解
串行通信接口是处理器与外界进行数据传输最常用的方式之一。
顾名思义,串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。
与并行通信相比,串行通信速度较慢,但占用更少的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口
学习过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单片机串口通信详解#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中关于输入输出端口
输入输出端口输入寄存器: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系列单片机引脚说明
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口
通用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复用。
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)可以按字节输入、输出,也可按位进行操作。
端口P1,P2的功能可以通过它们的7个控制寄存器来实现。
这里,Px代表P1或P2。
(1)PxDIR:输入/输出方向寄存器。
8位相互独立,可以分别定义8个引脚的输入/输出方向。
8位再PUC后都被复位。
使用输入/输出功能时,应该先定义端口的方向。
作为输入时只能读,作为输出时,可读可写。
0:输入模式;1:输出模式。
如:P1DIR|=BIT4; //P1.4输出,P2DIR=0XF0; //高4位输出,低4位输入。
(2)PXIN:输入寄存器,为只读寄存器。
MSP430引脚功能介绍和寄存器详细分类
MSP430引脚功能介绍和寄存器详细分类引脚功能引脚名称序号I/O 说明Avcc 64 模拟供电电源正端.只为ADC和DAC的模拟部分供电Avss 62 模拟供电电源负端.只为ADC和DAC的模拟部分供电DVcc 1 数字供电电源正端.为所有数字部分供电DVss 63 数字供电电源负端.为所有数字部分供电P1.0/TACLK 12 I/O 通用数字I/O引脚/定时器A时钟信号TACLK 输入P1.1/TA0 13 I/O 通用数字I/O引脚/定时器A捕捉:CCI0A输入,比较:OUT0输出P1.2/TA1 14 I/O 通用数字I/O引脚/定时器A捕捉:CCI1A输入,比较:OUT1输出P1.3/TA2 15 I/O 通用数字I/O引脚/定时器A捕捉:CCI2A输入,比较:OUT2输出P1.4/SMCLK 16 I/O 通用数字I/O引脚/SMCLK信号输出P1.5/TA0 17 I/O 通用数字I/O引脚/定时器A,比较:OUT0输出P1.6/TA1 18 I/O 通用数字I/O引脚/定时器A,比较:OUT1输出P1.7/TA2 19 I/O 通用数字I/O引脚/定时器A,比较:OUT2输出P2.0/ACLK 20 I/O 通用数字I/O引脚/ACLK输出P2.1/TAINCLK 21 I/O 通用数字I/O引脚/定时器A,INCLK上的时钟信号P2.2/CAOUT/TA0 22 I/O 通用数字I/O引脚/定时器A捕获:CCI0B输入/比较器输出P2.3/CA0/TA1 23 I/O 通用数字I/O引脚/定时器A,比较:OUT1输出/比较器A输入P2.4/CA1/TA2 24 I/O 通用数字I/O引脚/定时器A,比较:OUT2输出/比较器A输入P2.5/Rosc 25 I/O 通用数字I/O引脚,定义DCO标称频率的外部电阻输入P2.6/ADC12CLK/ 26 I/O 通用数字I/O引脚,转换时钟-12位ADC,DMA通道0外部触发器P2.7/TA0 27 I/O 通用数字I/O引脚/定时器A比较:OUT0输出P3.0/STE0 28 I/O 通用数字I/O引脚,USART0/SPI模式从设备传输使能端P3.1/SIMO0/SDA 29 I/O 通用数字I/O引脚,USART0/SPI模式的从入/主出,I2C数据P3.2/SOMI0 30 I/O 通用数字I/O引脚,USART0/SPI模式的从出/主入P3.3/UCLK0/SCL 31 I/O 通用数字I/O引脚,USART0/SPI模式的外部时钟输入,USART0 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引脚,USI1/UART模式的发送数据输出P3.7/URXD1 35 I/O 通用数字I/O引脚,USI1/UART模式的接收数据输入P4.0/TB0 36 I/O 通用数字I/O引脚,捕获I/P或者PWM输出端口-定时器B7 CCR0P4.1/TB1 37 I/O 通用数字I/O引脚,捕获I/P或者PWM输出端口-定时器B7 CCR1P4.2/TB2 38 I/O 通用数字I/O引脚,捕获I/P或者PWM输出端口-定时器B7 CCR2P4.3/TB3 39 I/O 通用数字I/O引脚,捕获I/P或者PWM输出端口-定时器B7 CCR3P4.4/TB4 40 I/O 通用数字I/O引脚,捕获I/P或者PWM输出端口-定时器B7 CCR4P4.5/TB5 41 I/O 通用数字I/O引脚,捕获I/P或者PWM输出端口-定时器B7 CCR5P4.6/TB6 42 I/O 通用数字I/O引脚,捕获I/P或者PWM输出端口-定时器B7 CCR6P4.7/TBCLK 43 I/O 通用数字I/O引脚,输入时钟TBCLK-定时器B7P5.0/STE1 44 I/O 通用数字I/O引脚,USART1/SPI模式从设备传输使能端P5.1/SIMO1 45 I/O 通用数字I/O引脚,USART1/SPI模式的从入/主出P5.2/SOMI1 46 I/O 通用数字I/O引脚,USART1/SPI模式的从出/主入P5.3/UCLK1 47 I/O 通用数字I/O引脚,USART1/SPI模式的外部时钟输入,USART0/SPI 模式的时钟输出- 8 -P5.4/MCLK 48 I/O 通用数字I/O引脚,主系统时钟MCLK输出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数字输出端口为高阻态-定时器B7P6.0/A0 59 I/O 通用数字I/O引脚,模拟量输入A0-12位ADC P6.1/A1 60 I/O 通用数字I/O引脚,模拟量输入A1-12位ADC P6.2/A2 61 I/O 通用数字I/O引脚,模拟量输入A2-12位ADC P6.3/A3 2 I/O 通用数字I/O引脚,模拟量输入A3-12位ADC P6.4/A4 3 I/O 通用数字I/O引脚,模拟量输入A4-12位ADC P6.5/A5 4 I/O 通用数字I/O引脚,模拟量输入A5-12位ADCP6.6/A6/DAC0 5 I/O 通用数字I/O引脚,模拟量输入A6-12位ADC,DAC.0输出P6.7/A7/DAC1/ 6 I/O 通用数字I/O引脚,模拟量输入A7-12位ADC,DAC.1输出,SVS输入RST/NMI 58 I 复位输入,不可屏蔽中断输入端口或者Bootstrap Lload启动(FLASHTCK 57 I 测试时钟,TCK是芯片编程测试和bootstrap loader启动的时钟输入端口TDO/TDI 54 I/O 测试数据输出端口,TDO/TDI数据输出或者编程数据输出引脚TMS 56 I 测试模式选择,TMS用作芯片编程和测试的输入端口VeREF+ 10 I/P 外部参考电压的输入VREF+ 7 O 参考电压的正输出引脚VREF-/VeREF- 11 O 内部参考电压或者外加参考电压的引脚XIN 8 I 晶体振荡器XT1的输入端口,可连接标准晶振或者钟表晶振XOUT/TCLK 9 I/O 晶体振荡器XT1的输出引脚或测试时钟输入XT2IN 53 I 晶体振荡器XT2的输入端口,只能连接标准晶振XT2OUT 52 O 晶体振荡器XT2的输出引脚时钟模块DCO.0-DCO.4 定义8 种频率之一,可以分段调节DCOCLK 频率,相邻两种频率相MOD.0-MOD.4 定义在32 个DCO 周期中插入的Fdco+1 周期个数,而在下的DCO 周期中为Fdco 周期,控制改换DCO 和DCO+1 选择的两种频率。
第4章 MSP430F5单片机端口
17
P1IV 00h 02h 04h 06h 08h 0Ah 0Ch 0Eh 10h
中断源 中断标志位 无中断产生 P1.0中断 P1IFG.0 P1.1中断 P1IFG.1 P1.2中断 P1IFG.2 P1.3中断 P1IFG.3 P1.4中断 P1IFG.4 P1.5中断 P1IFG.5 P1.6中断 P1IFG.6 P1.7中断 P1IFG.7
中断优先级 最高
最低
18
P2IV 00h 02h 04h 06h 08h 0Ah 0Ch 0Eh 10h
中断源 中断标志位 无中断产生 P2.0中断 P2IFG.0 P2.1中断 P2IFG.1 P2.2中断 P2IFG.2 P2.3中断 P2IFG.3 P2.4中断 P2IFG.4 P2.5中断 P2IFG.5 P2.6中断 P2IFG.6 P2.7中断 P2IFG.7
总结I/O口配置时PxDIRx、PxRENx和PxOUTx寄存器的用法: PxDIR PxRENx PxOUTx I/O 口配置 0 0 x 输入 0 1 0 下拉输入 0 1 1 上拉输入 1 x x 输出
9
10
5 输出驱动能力寄存器 PxDS
PxDS寄存器中的每一位选择全力驱动或者减弱 驱动能力。默认的是减弱驱动能力。 Bit = 0 减弱驱动力 Bit = 1 增强驱动力
11
6 PxIE 中断使能寄存器
该寄存器的各引脚都有一位用以控制该引 脚是否允许中断, 0:禁止该位中断; 1:允许该位中断。
12
7 PxIES 中断触发沿选择寄存器
MSP430单片机的通用IO接口
{
P1OUT ^= (BIT1 + BIT5); //LED1,LED5闪烁
delayus(200);
//延迟0.2s
}
else if((P2IN&0x07) == 0x03) //K3 开关闭合
{
P1OUT = ~mask;
//LED逐个点亮
delayus(100); //延迟0.1s
mask += mask;
59 60 61
2 3 4 5 6
P6.0/A0 P6.1/A1 P6.2/A2 P6.3/A3 P6.4/A4 P6.5/A5 P6.6/A6 P6.7/A7/SVSIN
P3.0/UCB0STE/UCA0CLK P3.1/UCB0SIMO/UCB0SDA P3.2/UCB0SOMI/UCB0SCL
P1.0/TACLK/CAOUT P1.1/TA0 P1.2/TA1 P1.3/TA2
P1.4/SMCLK P1.5/TA0 P1.6/TA1 P1.7/TA2
12 13 14 15 16 17 18 19
44 45 46 47 48 49 50 51
P5.0/UCB1STE/UCA1CLK
P2.0/ACLK/CA2
XT2OUT XT2IN
RST/NMI TCK
TDI/TCLK TDO/TDI
TMS
52 53 58 57 55 54 56
MSP430F249
R4 R5 R6
10k 10k 10k
K1 K2 K3
R1 330
D1
R2 330
D2
R3 330
D3
6
第3章 MSP430
P1OUT = BIT4+BIT5 +BIT6;
msp430io口的配置和使用
msp430io口的配置和使用msp430 io口的配置和使用一 I/O的简介1、各种复用和各种设置(可以作为简单IO功能也可以作各种第二功能;可控制为输入、输出、接上拉电阻、接下拉电阻、接受中断等各种情况);2、IO口常用寄存器有:PXDIR、PXIN、PXOUT、PXREN、PXSEL、PXDS;其中,X可以是1~8,也可以是A~D,因为P1、P2可以合称为PA。
例如(PAREN=0x0480)就等价于(P2REN=0x04、P1REN=0x80)。
IO口中断相关寄存器:PXIV、PXIFGX、PXIE、PXIES;由于IO 中断仅存在于P1口和P2口,因此X只能为1或2,而且不可以为A。
3、msp430f5529.h中定义了BIT0~BITF,方便用户进行位操作。
例如要设置P1.7和P2.2为输入,代码可如下:PADIR &= ~(BITA + BIT7)。
二 IO口常用寄存器配置1、PxDIR,Px口方向寄存器0 端口配置为输入(默认)1 端口配置为输入2、PxOUT,Px口输出寄存器(输入、输出两种模式)当IO口配置为输出模式时:0 输出低电平1 输出高电平当IO口配置为输入模式并且置高/ 置低使能时:0置低1置高3、PxIN,Px 口输入寄存器只读4、PxREN,Px口置高/ 置低使能寄存器0关闭置高/ 置低1使能置高/ 置低5、PxSEL,Px功能选择寄存器(IO中断只有在普通IO下才能使用)0普通的I/O(默认)1有连接外围电路的特殊用途6、PxDS,Px 口输出驱动能力寄存器(我都是用的默认)0减弱输出驱动能力(默认)1全力输出驱动能力三普通IO使用举例说明:本例程是流水灯加按键控制,每次S1按下,便在等待S2按下,否则,所有LED一直闪烁。
若无按键按下,则八盏灯以流水灯方式显示。
#include ;#define uint8_t unsigned char#define uint16_t unsigned int//********* 控制LED的IO口宏定义************* #define LED145678_PORT_DIRP1DIR#define LED145678_PORT_OUTP1OUT#define LED23_PORT_DIRP8DIR#define LED23_PORT_OUTP8OUT//************ LED的IO口宏定义 ************* #define LED1 0x01#define LED20x02#define LED30x04#define LED40x08#define LED50x10#define LED60x20#define LED70x40#define LED80x80#define LED_ALL0xFF//************ 按键的IO口宏定义************* #define BUTTON_S1(P1IN & BIT7)#define BUTTON_S2(P2IN & BIT2)//*********************************************** ***********//*函数: void delay(uint16_t x_ms)//*功能:延时程序//*参数: x_ms(单位:ms)//*返回:无//*备注:无//*********************************************** ***********void delay(uint16_t x_ms){uint16_t i=0,j=0;for(i=x_ms;i>;0;i--)for(j=110;j>;0;j--);}//*********************************************** ***********//*函数: void LED_Init()//*功能: LED的IO口方向初始化//*参数:无//*返回:无//*备注:无//*********************************************** ***********void LED_Init(){LED145678_PORT_OUT &= ~(BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5);LED145678_PORT_DIR |= BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5;LED23_PORT_OUT &= ~(BIT1 + BIT2);LED23_PORT_DIR |= BIT1 + BIT2;}//*********************************************** ***********//*函数: void Board_ledOn(uint8_t ledMask)//*功能:打开输入的那盏灯//*参数: ledMask//*返回:无//*备注:无//**********************************************************void Board_ledOn(uint8_t ledMask){if (ledMask & LED1) LED145678_PORT_OUT |= BIT0; if (ledMask & LED2) LED23_PORT_OUT |= BIT1;if (ledMask & LED3) LED23_PORT_OUT |= BIT2;if (ledMask & LED4) LED145678_PORT_OUT |= BIT1; if (ledMask & LED5) LED145678_PORT_OUT |= BIT2; if (ledMask & LED6) LED145678_PORT_OUT |= BIT3; if (ledMask & LED7) LED145678_PORT_OUT |= BIT4; if (ledMask & LED8) LED145678_PORT_OUT |= BIT5; }//*********************************************** ***********//*函数: void Board_ledOff(uint8_t ledMask)//*功能:关闭输入的那盏灯//*参数: ledMask//*返回:无//*备注:无//*********************************************** ***********void Board_ledOff(uint8_t ledMask){if (ledMask & LED1) LED145678_PORT_OUT &= ~BIT0; if (ledMask & LED2) LED23_PORT_OUT &= ~BIT1;if (ledMask & LED3) LED23_PORT_OUT &= ~BIT2;if (ledMask & LED4) LED145678_PORT_OUT &= ~BIT1; if (ledMask & LED5) LED145678_PORT_OUT &= ~BIT2; if (ledMask & LED6) LED145678_PORT_OUT &= ~BIT3; if (ledMask & LED7) LED145678_PORT_OUT &= ~BIT4; if (ledMask & LED8) LED145678_PORT_OUT &= ~BIT5; }//*********************************************** ***********//*函数: void Board_ledToggle(uint8_t ledMask)//*功能:输入的那盏灯的状态取反//*参数: ledMask//*返回:无//*备注:无//*********************************************** ***********void Board_ledToggle(uint8_t ledMask){if (ledMask & LED1) LED145678_PORT_OUT ^= BIT0;if (ledMask & LED2) LED23_PORT_OUT ^= BIT1;if (ledMask & LED3) LED23_PORT_OUT ^= BIT2;if (ledMask & LED4) LED145678_PORT_OUT ^= BIT1; if (ledMask & LED5) LED145678_PORT_OUT ^= BIT2; if (ledMask & LED6) LED145678_PORT_OUT ^= BIT3; if (ledMask & LED7) LED145678_PORT_OUT ^= BIT4; if (ledMask & LED8) LED145678_PORT_OUT ^= BIT5; }//*********************************************** ***********//*函数: void main(void)//*功能:主函数//*参数:无//*返回:无//*备注:无//*********************************************** ***********void main(void){uint8_t LED = LED1; //定义变量LEDWDTCTL = WDTPW | WDTHOLD;//关闭看门狗LED_Init(); //初始化LED的IO口方向PADIR &= ~(BITA + BIT7); //将按键的IO口方向设为输入PAREN |=(BITA + BIT7); //置高/ 置低使能PAOUT |=(BITA + BIT7); //置高(类似于上拉)while(1){Board_ledOn(LED);delay(1000); //延时1s左右Board_ledOff(LED);LED = LED。
430单片机串口模块详解.pdf
PENV PEV
表 1-1 控制寄存器
SP
CHAR LISTEN SYNC
MM
SWRST
USART 的控制寄存器有 8 个有效控制位,通过对这些控制位的设置可以对工作模 式,通信协议,校验位等进行选择。用户对 USART 的所有操作都是通过操作该寄 存器的控制位来完成的[6]。下面是各个位的简单功能描述,知道这些控制位பைடு நூலகம்功 能,有助于我们在后面进行硬件连接和软件设计.
PENV:校验使能位。该位为 0 不允许校验;为 1 时,允许校验,且 在发送时产生校验位,在接收时希望接收到校验位。在地址位多机 模式中地址位包括在校验计算中。
PEV:奇偶校验位。为 0 时,奇校验,为 1 时进行偶校验。 SP:停止位。接收时停止位只有一个。发送时,该位为 0,只有一个
USCI_Ax 模块支持: UART 模式; IrDA 通信的脉冲整形; LIN 通信的自动波特率检测; SPI 模式; USCI_Bx 模块支持: IIC 模式; SPI 模式;
由于本设计解决的是串口通讯问题,所以通信的基本原理是利用 MSP430 的 串口通讯模块(USART)来实现单片机和 PC 机之间的串口通信。
为同步通信(SPI)模式。 MM:多机模式选择。当该位为 0 时,多机模式选择线路空闲多机协
议;该位为 1 时,多机模式选择地址位多机协议。 SWRST:软件复位使能位。也叫控制位。该位影响着其他控制位和状
态位的状态,在串行口的使用过程中,这一位比较重要。一次正确 的 USART 模块初始化应该是这样的顺序:先在 SWRST=1 的情况下设 置串口;然后设置 SWRST=0;最后如果使用中断,则设置相应的中断 使能。该位为 0 时:USART 模块被允许。该位为 1 时:如果该位置位, 则 USART 状 态 机 和 操 作 运 行 标 志 位 都 被 初 使 化 成 复 位 状 态 (URXIFG=URXIE=UTXIE=0,UTXIFG=1);同时所受影响的逻辑位保持 在复位状态,直到 SWRST 位复位。这意味着,当系统复位后,只有 对 SWRST 位复位,USART 的功能才能被重新允许;但是接收和发送标 志 URXE 和 UTXE 不受 SWRST 控制位的影响。
MSP430F249的IO端口要点
第3章MSP430单片机通用I/O接口I/O口是单片机控制系统对外沟通的最基本部件,从基本的键盘、LED 显示到复杂的外设芯片等,都是通过I/O口的输入、输出操作来进行读取或控制的。
为满足单片机系统对外部设备控制的需要,MSP430提供了许多功能强大、使用方便灵活的输入/输出接口。
一般来说,MSP430单片机的I/O口可分为以下几种:(1)通用数字I/O口。
用于外部电路数字逻辑信号的输入和输出。
(2)并行总线输入/输出端口。
用于外部扩展需要并行接口的存储器等芯片。
一般包括数据总线、地址总线和包括读写控制信号的控制总线等。
(3)片内设备的输入/输出端口。
如:定时器/计数器的计数脉冲输入,外部中断源信号的输入等,A/D输入、D/A输出接口,模拟比较输入端口,脉宽调制(PWM)输出端口等。
有的单片机还将LCD液晶显示器的接口也集成到单片机。
(4)串行通信接口。
用于计算机之间或者计算机和通信接口芯片之间数据交换。
如:异步串行接口(RS-232、RS-485),I2C串行接口,SPI串行接口,USB串行口等。
为了减少芯片引脚的数量以降低芯片的成本,又提供更多功能的I/O口,现在许多单片机都采用了I/O口复用技术,即端口可作为通用的I/O口使用,也可作为某个特殊功能的端口使用,用户可根据系统的实际需要来定义使用。
这样就为设计开发提供了方便,简化了单片机系统的硬件设计工作。
在MSP430系列中,不同单片机拥有的I/O口数目不同,引脚最少的MSP430F20XX只有10个可用I/O口,而功能更丰富的MSP430FG46XX拥有多达80个I/O口。
MSP430F249单片机有6组I/O口:P1~P6。
每组I/O口都有8个可以独立编程的引脚,例如P1口有8个可编程引脚,为P1.0~P1.7。
所有这些I/O 口都是双功能(有的为3功能)复用的。
其中第一功能均作为数字通用I/O 接口使用,而复用功能则分别用于中断、时钟/计数器、USCI、比较器等应用。
第三章 MSP430基本外设3(通用输入输出端口)
(General Purpose Input & Output)
本节内容
• GPIO 概述 • MSP430的GPIO 特点 • MSP430 GPIO 寄存器 • GPIO 官方库函数 • GPIO 应用示例
GPIO 概述 (1/4)
• GPIO
GPIO (General Purpose I/O),通用输入输出端口。它是 MSP430最简单的集成外设。输入/输出端口可配置为可中 断型和不可中断型。
GPIO 寄存器(4/9)
PxREN 上拉或下拉电阻使能寄存器
PxREN寄存器中的每一位可使能或禁用相应I/O引脚的 上拉/下拉电阻。
PxREN 配置: Bit = 1: 使能上拉/下拉电阻; Bit = 0: 禁用上拉/下拉电阻。
注意:先设置上拉或下拉使能寄存器PxREN,置1使能, 使能后通过PxOUT设置上拉还是下拉。
引脚下拉
VCC R 引脚 Px.x R
GPIO 寄存器(5/9)
PxSEL 功能选择寄存器
I/O端口还具有其他片内外设功能,为减少引脚,将这 些外设功能与I/O端口引脚复用来实现。
PxSEL来选择引脚的I/O端口功能与外围模块功能。 PxSEL的配置: Bit = 0: 选择引脚为I/O端口; Bit = 1: 选择引脚为外设功能。 例:P1SEL |= 0x01; //表示P1端口的P1.0引脚设置为外 设功能
GPIO_clearInterruptFlag() // 清除中断标志位
GPIO_getInterruptStatus() // 获取中断状态 GPIO_interruptEdgeSelect() // 选择中断沿
GPIO 官方库函数(4/4)
MSP430单片机的端口介绍
MSP430 单片机的端口介绍
一、端口的定义
端口号是标识主机内唯一的一个进程,IP+端口号就可以标识网络中
的唯一进程。
在我们通常用的Socket 编程中,IP+端口号就是套接字
端口号是由16 比特进程编号,范围是0-65535,按照道理来讲,这
些端口你都可以随便用。
但是你不是vip 用户,所以有一些端口被vip 用户占着。
比如FTP 21 Ssh 22 等等,所以给端口分了类,规定你可以使用端口的范围。
二、端口分类
1.硬件端口
CPU 通过接口寄存器或特定电路与外设进行数据传送,这些寄存器
或特定电路称之为端口。
其中硬件领域的端口又称接口,如:并行端口、串行端口等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)可以按字节
输入、输出,也可按位进行操作。