第三章 MSP430基本外设3(通用输入输出端口)

合集下载

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位ADCP6.1/A1 60 I/O 通用数字I/O引脚,模拟量输入A1-12位ADCP6.2/A2 61 I/O 通用数字I/O引脚,模拟量输入A2-12位ADCP6.3/A3 2 I/O 通用数字I/O引脚,模拟量输入A3-12位ADCP6.4/A4 3 I/O 通用数字I/O引脚,模拟量输入A4-12位ADCP6.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启动的时钟输入端口TDI 55 I 测试数据输入,TDI用作数据输入端口,芯片保护熔丝连接到TDITDO/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的输出引脚时钟模块76543210 DCO.2DCO.1DCO.0MOD.4MOD.3MOD.2MOD.1MOD.0DCO.0-DCO.4 定义8 种频率之一,可以分段调节DCOCLK 频率,相邻两种频率相差10%。

MSP430外围模块功能简介[3]

MSP430外围模块功能简介[3]

控制寄存器FCTL3
EXIT
基于模拟前端信号处理与控制技术的专业论坛,网站
微控设计网
中国MSP430单片机专业网站
FLASH存储器的操作:由于FLASH存储器由很多相对独立的段组成,因此可以在 某一段运行程序,而在另一个段进行擦写数据.正在执行 FLASH操作的段,CPU是不能访问的.大约4817个时钟. 操作步骤:1,擦除 2,写入 3,读出
基于模拟前端信号处理与控制技术的专业论坛,网站
微控设计网
中国MSP430单片机专业网站
EXIT
基于模拟前端信号处理与控制技术的专业论坛,网站
微控设计网
中国MSP430单片机专业网站
控制寄存器FCTL1
控制寄存器FCTL2
擦除操作:要对FLASH存储器写入数据,首先要擦除将被写入的段,而且是 全部擦除该段.经过一次擦除后该段所有位为1.擦除可以对一段,几段或整个模 块进行. 顺序: 1,选择适当的时钟和分频因子,其目的为时序发生器提供输入时钟
2,将 LOCK=0,后判断BUSY是否为0,为0时执行下一步 3,擦除一段将ERASE置为位,擦除多段擦除时,则将MERASE置位.如 擦除整个模块则将两位都置一. 4,对要擦除地址范围内任意位置进行一次空写操作.如CLR &XXXH 写操作:顺序 1, 2,3, 同上 4,如果写入单字节或单字,将控制位EWRT置位,如果在指定的段进行 或多字,多字节顺序的写入,则将WRT和BLKWRT同时置位. 此时启动了时许序发生器后数据在时序发生器的控制下完成写入. 读操作:可在任意时间访问该数据,不需要设置.
8位计数器 BTCNT2
EXIT
基于模拟前端信号处理与控制技术的专业论坛,网站
微控设计网

第三章 MSP430F149通用数字端口

第三章 MSP430F149通用数字端口

PxOUT 寄存器每一位是相应引脚配置为通用 O 输出时的输出值。
0 PxOUT.0
PxOUT.x=0,输出低电平
PxOUT.x=1,输出高电平
例:
P2DIR |=BIT0+BIT2+BIT4;//将 P2.0/P2.2/P2.4 设置为输出
P2OUT |=BIT0+BIT2+BIT4;//P2.0/P2.2/P2.4 输出高电平
P6DIR |=BIT0;//P6.0 设置为输出 P6OUT |=BIT0;//P6.0 输出高电平关闭 LED 灯
P1IES &=~BIT0;//P1.0 中断上升沿触发 P1IFG &=~BIT0;//清除 P1.0 中断标志 P1IE |=BIT0;//允许 P1.0 中断 _EINT();//开放系统中断 while(1) {
P6OUT ^=(BIT0+BIT2+BIT4+BIT6);//P6.0/2/4/6 端口 LED 闪烁 for(i=0;i<50000;i++);//延时 } }
应用二:软件定时,使 P6.0 输出方波使 LED 灯闪烁。程序如下:
#include <msp430x14x.h> void main( void ) {
PxIFG.x=0,没有中断发生
PxIFG.x=1,有中断发生
注意:写 PxOUT.x、PxDIR.x 将导致相应标志位 PxIFG.x 置位;I/O 脚上的中断事件
必须保持 1.5 倍 MCLK 周期以上才能保证中断被识别并使相应标志位置位。
(7)中断触发沿选择寄存器 PxIES(x=1,2)
7 PxIES.7
应用三:在 P3.0 上产生方波,将 P3.0 与 P1.0 相连,P1.0 接收中断,在中断程序中

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中关于输入输出端口

输入输出端口输入寄存器: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位。

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复用。

MSP430单片机的端口介绍

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单片机输入与输出

MSP430单片机输入与输出
MSP430 单片机的输入输出线绝大多数是服用的,除了个别的端口外,基
本上是8 为为一组,不同的型号的MSP430 的端口有所不同,就msp430F5438 而言,一共有11 个I/O 端口,其中除了第十一P11 的宽度是3 位以外,其他的端口全是8 为宽度,为了方便使用,分别命名为PA,PB,PC,,分别对应
P1,P2P3
值得注意的是MSP430F5438 单片机的P1 和P2 端口还具有申请中断的功能,而其他的端口则无此功能
每个端口都有控制开关,分别可以控制端口的方向,引脚的功能,每个端口
都有自己的输入输出寄存器,MSP430F5438 海域中断管理寄存器,他们分别决定端口的中断使能,中断有效边沿,和中断标志位
示例代码:
驱动实验板上的蜂鸣器
#include#include”for_5438_wjx.c”void delayms(int x){int i,j;for(i=0;iView Code 但是这个程序在板子上没有跑起来,所以还需要今后来改正~~~
今天因为点亮了led,所以蜂鸣器的程序也写出来了,这个程序出现错误的
原因是错以为蜂鸣器的VCC 是开发板自动接上去的,结果就忘记写这条代码put_P5DIR_BIT4(1); // 主电源P5.4 put_P5OUT_BIT4(1); //打开外设电源
加入代码后,蜂鸣器响了
示例代码:
#include#include”for_5438_wjx.c”void delayms(int x){int i,j;for(i=0;iView Codetips:感谢大家的阅读,本文由我司收集整编。

仅供参阅!。

第三章 MSP430基本外设3(通用输入输出端口)

第三章 MSP430基本外设3(通用输入输出端口)
3.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 基本外设

3). 时钟系统模块提供3种时钟信号
ACLK 辅助时钟 ACLK一般用于低速外设模块. MCLK 系统主时钟 MCLK主要用于CPU和系统. SMCLK 子系统时钟 主要用于高速外设模块. ACLK、MCLK、SMCLK均可通过软件 从XT1CLK 、VLOCLK 、REFOCLK 、 DCOCLK、DCOCLKDIV、XT2CLK这 6个时钟源中选择,经1/2/4/8/16/32 分频得到。
#include "in430.h" #define #define #define #define #define #define #define #define #define #define LPM0 LPM0_EXIT LPM1 LPM1_EXIT LPM2 LPM2_EXIT LPM3 LPM3_EXIT LPM4 LPM4_EXIT _BIS_SR(LPM0_bits) /* Enter Low Power Mode 0 */ _BIC_SR_IRQ(LPM0_bits) /* Exit Low Power Mode 0 */ _BIS_SR(LPM1_bits) /* Enter Low Power Mode 1 */ _BIC_SR_IRQ(LPM1_bits) /* Exit Low Power Mode 1 */ _BIS_SR(LPM2_bits) /* Enter Low Power Mode 2 */ _BIC_SR_IRQ(LPM2_bits) /* Exit Low Power Mode 2 */ _BIS_SR(LPM3_bits) /* Enter Low Power Mode 3 */ _BIC_SR_IRQ(LPM3_bits) /* Exit Low Power Mode 3 */ _BIS_SR(LPM4_bits) /* Enter Low Power Mode 4 */ _BIC_SR_IRQ(LPM4_bits) /* Exit Low Power Mode 4 */

MSP430单片机的端口介绍

MSP430单片机的端口介绍

MSP430 单片机的端口介绍
一、端口的定义
端口号是标识主机内唯一的一个进程,IP+端口号就可以标识网络中
的唯一进程。

在我们通常用的Socket 编程中,IP+端口号就是套接字
端口号是由16 比特进程编号,范围是0-65535,按照道理来讲,这
些端口你都可以随便用。

但是你不是vip 用户,所以有一些端口被vip 用户占着。

比如FTP 21 Ssh 22 等等,所以给端口分了类,规定你可以使用端口的范围。

二、端口分类
1.硬件端口
CPU 通过接口寄存器或特定电路与外设进行数据传送,这些寄存器
或特定电路称之为端口。

其中硬件领域的端口又称接口,如:并行端口、串行端口等。

33GPIO及中断机制MSO430F6638精讲

33GPIO及中断机制MSO430F6638精讲

GPIO 寄存器(8/9)

PxREN 上拉或下拉电阻使能寄存器
PxREN寄存器中的每一位可使能或禁用相应I/O引脚的 上拉/下拉电阻。 PxREN 配置: Bit = 1: 使能上拉/下拉电阻; Bit = 0: 禁用上拉/下拉电阻。

引脚上拉 VCC R 引脚 Px.x R
Bit = 1: 引脚选择上拉; 上拉电阻简单来说就是把电平拉高, 通常用 4.7-10K的电阻接到Vcc电源。
GPIO 应用示例

示例--用P1.0口控制发光二极管
关键语句:
P1DIR = 0x01; P1OUT |= 0X01;
// 设置P1端口P1.0引脚为输出方向 //输出1,灯亮
P1.0 LED
P1OUT &= ~ 0X01; //输出0,灯灭
中断机制
• 定义:一般来说,单片机会有一个主程序一直运行,
3.3 通用输入/输出端口
GPIO 概述 (1/3)
• GPIO
GPIO (General Purpose I/O),通用输入输出端口。

应用
GPIO基本都是用于芯片与片外器件或设备的交互。 检测数字输入,如键盘或开关信号; 驱动LED,蜂鸣器或LCD等其他指示器; 控制片外器件,较高级的使用可以用它们(通过 程序)模拟很多器件的时序达到控制相应器件的目 的,比如模拟SPI和模拟总线等。
GPIO 寄存器(3/9)

PxIN 输入寄存器
该寄存器是只读寄存器,即用户不能对它写入。 这个寄存器是只读的,其中的每一位都反映了其对应 的I/O引脚的输入信号(引脚配置为通用I/O)。 PxIN 配置: Bit = 1: 输入为高电平; Bit = 0: 输入为低电平;

第2讲MSP430单片机的GPIO与中断系统

第2讲MSP430单片机的GPIO与中断系统
该寄存器的8位与端口的8个引脚一一对应,其中某一位 置位表示允许对应的引脚在电平变化(上升沿或下降沿) 时产生中断,否则,表示禁止该位的中断。
每个PxIE位使能的中断请求都与相应的PxIFG中断标志 相关联,可通过写PxOUT和PxDIR来设置PxIFG。
PxIE的配置: Bit = 1: 允许中断; Bit = 0: 禁止中断。
17
4.1 中断的基本概念
3.中断向量表 中断向量是指中断服务程序的入口地址,每个中断向量被分配给 4个连续的字节单元, 两个高字节单元存放入口的段地址CS,两个低字节单元存放入口的偏移量IP。为了让CPU 方便地查找到对应的中断向量,就需要在内存中建立一张查询表,即中断向量表。 4.中断优先级 凡事都有轻重缓急之分,不同的中断请求表示不同的中断事件,因此,CPU对不同中

PxDS 输出驱动强度寄存器
PxDS寄存器的每个位,设置引脚的输出强度为高驱动 强度或低驱动强度。
默认值为低驱动强度。 PxDS的配置: Bit = 0: 低驱动强度; Bit = 1: 高驱动强度。
2015/8/7
13
GPIO 寄存器(7/9)

PxIE 中断使能寄存器(仅中断端口P1和P2)
1
3.1 通用IO端口
3.1.1 MSP430端口概述 GPIO (General Purpose I/O),通用输入输出端口。 GPIO基本都是用于芯片与片外器件或设备的交互。 检测数字输入,如键盘或开关信号; 驱动LED,蜂鸣器或LCD等其他指示器; 控制片外器件,较高级的使用可以用它们(通过 程序)模拟很多器件的时序达到控制相应器件的 目的,比如模拟SPI和模拟总线等。

引脚下拉 V脚选择上拉 上拉电阻简单来说就是把电平拉高, 通常用 4.7-10K的电阻接到Vcc电源。 Bit = 0: 引脚选择下拉; 下拉电阻则是把电平拉低,电阻接到GND地线上。

第3章_MSP430单片机输入输出接口_对比

第3章_MSP430单片机输入输出接口_对比
个是中断寄存器。 P3 、 P4 、町、 P6 不具备中断功能,只与前面四个寄存器有关; Pl 、 P2 具有中
断功能.与上面所有的寄存器都有关系,详细请参考 3. 2 节寄存器说明部分 。
当 J / O 口作为 一 般的输入 /输出口使用时,其基本操作流程如下:
①选择I! O 口功能.基本 J/O 模式或其他模式(即设置 PxSEL 寄存器) ;
."当设置为第二功能的时候. \1 SP410 不会主动设置引脚的方向 , 必须通过 PxlN 寄存器去设直 。
》当设置为输出时.输入到外设的信号是锁存后的信号 。 当 PxSELx= 1 时,内部输入 信 号跟随引脚端的
信号;当 PxSE l. x = () 时.在 PxSELx 被复位以前,输入到外设的信号保持外设输入信号的值 。
);当 P I SE\. 和 P 2 只I二 1.寄存 器 的位设置为 1 . ~ IJ Pl 、 P 2 口的 1 / 0 中断功能失效 。
》在 P l 或 P 2 口进行中断功能允许时,在进入中断程序时必须用软件对中断标志清萃,中断标志不可以
自动清本 h
3.3 基本应用设计举例
在: 本书的配套实验版上.使用 MSP43ü F149 单片机的 P5 口扩展了一个 4X 4 的键盘,同
键盘接口电路如图 3. 8 所示。
P50
P51
P52
VCC
P53
软件流程如图 3. 9 所示 。
具体程序如 f:
1:* include ..., 'MSP430x14x . h ‘、
Kl ..... ‘- K-2 -- K-3 -
圄 3.8 键盘接口电路 (PS)

MSP430单片机的通用IO接口

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口的配置和使用

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。

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

PxOUT 输出寄存器
输出寄存器是可读可写的。这个寄存器的每个位都反映 了写入相应输出引脚的值。 将需要的值写入该寄存器,控制输出引脚的电平状态。
PxOUT 配置: Bit = 1: 输出为高电平; Bit = 0: 输出为低电平; 例:P1OUT |= 0x01; //表示P1端口的P1.0引脚设置为 高电平,其余引脚(P1.1~P1.7)保持之前的电平
GPIO 寄存器(4/9)
当使能引脚上拉或下拉功能时,通过 设置PxOUT相应位来选择。

引脚上拉 VCC R 引脚 Px.x R

Bit = 1: 引脚选择上拉 上拉电阻简单来说就是把电平 拉高, 通常用4.7-10K的电 阻接到Vcc电源。 Bit = 0: 引脚选择下拉; 下拉电阻则是把电平拉低,电 阻接到GND地线上。
P1SEL &= 0xFE; //表示P1端口的P1.0引脚设置为 I/O端口
GPIO 寄存器(6/9)
PxDS 输出驱动强度寄存器
PxDS寄存器的每个位,设置引脚的输出强度为高驱动 强度或低驱动强度。
默认值为低驱动强度。 PxDS的配置: Bit = 0: 低驱动强度; Bit = 1: 高驱动强度。
#include <msp430f6638.h> void main (void) { MSP430F6638 WDTCTL = WDTPW | WDTHOLD; //关闭看 门狗 P2.6 P4DIR |= 0x08; // 选择P4.3为输出 P2DIR &= ~0x40; // 选择P2.6为输入 P2IE |= 0x40; // 使能P2.6中断 P2IES |= 0x40; // 选择P2.6为上升沿中断 _BIS_SR (LPM3_bits + GIE); //进入低功耗, P4.3 打开全局中断 }
I/O PIN
输入锁存
输入缓冲
GPIO 概述 (3/4)
• 寄存器概述 GPIO口都是按组规划,有的芯片是8个GPIO口一组, 有的是16个或32个为一组。一般每个GPIO口都需要做 两个寄存器位:一是选择口线方向(输入输出)二是需 要一个数据位(用于设置输出数据和读取输入数据)。 所以一组GPIO口至少会有两个寄存器GPIOxDIR和 GPIOxDATA。 GPIOxDIR:控制各个GPIO口的方向; GPIOxDATA:用于各个GPIO口的输入输出数据。
MSP430的GPIO 特点(1/4)
• 端口类型丰富 目前的MSP430系列单片机有端口P1、P2、P3、P4、 P5、P6、P7、P8、P9 、P10 、P11 、S和COM。 产品因型号不同可包含上述所有或部分端口。如下 表所示:
MSP430的GPIO 特点(2/4)

具有中断能力的端口:P1和P2。
GPIO_clearInterruptFlag() // 清除中断标志位
GPIO_getInterruptStatus() // 获取中断状态 GPIO_interruptEdgeSelect(பைடு நூலகம் // 选择中断沿
GPIO 官方库函数(4/4)

GPIO引脚状态的函数
GPIO_setOutputHighOnPin() // 引脚输出为高
P1DIR |= 0x01; // 设置P1端口P1.0引脚为输出方 向,其余引脚(P1.1~P1.7)保持之前的方向
GPIO 寄存器(2/9)

PxIN 输入寄存器
该寄存器是只读寄存器,即用户不能对它写入。
这个寄存器是只读的,其中的每一位都反映了其对应 的I/O引脚的输入信号(引脚配置为通用I/O)。 PxIN 配置: Bit = 1: 输入为高电平; Bit = 0: 输入为低电平;
GPIO 官方库函数(2/4)

GPIO的引脚配置函数(续)
GPIO_setAsInputPinWithPullUpresistor() // 设置为输入下拉
GPIO_setDriveStrength() // 设置引脚驱动强度
GPIO_setAsPeripheralModuleFunctionOutputPin()
引脚下拉
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 寄存器(1/9)

PxDIR 输入/输出方向寄存器
相互独立的8位分别定义了8个引脚的输入/输出方向。
使用输入和输出功能时,应该先定义端口的方向。 PxDIR 配置: Bit = 1: 将端口引脚设置为输出模式; Bit = 0: 将端口引脚设置为输入模式。 例,设置P1端口的P1.0引脚为输出方向,其余引脚 (P1.1~P1.7)设置为输入方向。 P1DIR = 0x01; // 设置P1端口P1.0引脚为输出方向, 其余引脚为输入

GPIO 寄存器(9/9)

PxIFG 中断标志寄存器(仅中断端口P1和P2)
该寄存器用来表示对应引脚是否产生了由PxIES设定 的电平跳变。 如果在GIE置位,引脚对应的中断使能寄存器PxIE位 置位,则会向CPU请求中断处理。 中断标志PxIFG.0~PxIFG.7共用一个中断向量, PxIFG.0~PxIFG.7不会自动复位。必须用软件来判定 是对哪一个事件服务,并将相应的标志复位。 PxIFG的配置: Bit = 0: 没有中断请求; Bit = 1: 有中断请求。
可以独立控制每个GPIO口的方向(输入/输出模式);
可以独立设置每个GPIO的输出状态(高/低电平); 所有GPIO口在复位后都有个默认方向(或输入或输出)。
GPIO 概述 (4/4)
• 寄存器工作图
GPIOxDIR 寄存器 禁止 输出锁存
选择输出 选择输入
读/写
GPIOxDATA 寄存器
三态门

应用
GPIO基本都是用于芯片与片外器件或设备的交互。 检测数字输入,如键盘或开关信号; 驱动LED,蜂鸣器或LCD等其他指示器; 控制片外器件,较高级的使用可以用它们通过程 序模拟很多器件的时序达到控制相应器件的目的, 比如模拟SPI和模拟总线等。
GPIO 概述 (2/4)
• 特性 GPIO是MCU与外界交互的重要途径,它具有如下的特性:
3.3 通用输入输出端口
(General Purpose Input & Output)
本节内容
• GPIO 概述 • MSP430的GPIO 特点 • MSP430 GPIO 寄存器 • GPIO 官方库函数 • GPIO 应用示例
GPIO 概述 (1/4)
• GPIO
GPIO (General Purpose I/O),通用输入输出端口。它是 MSP430最简单的集成外设。输入/输出端口可配置为可中 断型和不可中断型。
GPIO 官方库函数(1/4)
• GPIO API被分成三组函数:GPIO的引脚配置函 数,处理中断的函数,以及引脚状态的函数。

GPIO的引脚配置函数
GPIO_setAsOutputPin() // 设置为输出引脚
GPIO_setAsInputPin() // 设置为输入引脚
GPIO_setAsInputPinWithPullDownresistor() // 设置为输入上拉
volatile的用法
关键词volatile是指非稳定的意思。它常常用来定义全 局变量,变量的改变值时刻有效。它定义局部变量时, 作用不明显。 变量会经常被改变,为了确保每次读变量的值是准确 的,使用关键词volatile定义一个全局变量时,每次读变 量值时都从内存中读取。 如果不加关键词volatile时,第一次读取变量时从内存 中读取,如果在同一个函数里变量值没有改变,下一次 读变量值时从寄存器中读取。如果该变量值在中断函数 中改变,却不改变正在执行的函数变量的值。
// 设置为外设输出引脚 GPIO_setAsPeripheralModuleFunctionInputPin() // 设置为外设输入引脚
GPIO 官方库函数(3/4)

GPIO中断处理函数
GPIO_enableInterrupt() // 使能中断 GPIO_disbleInterrupt() // 禁止中断
GPIO 寄存器(8/9)
PxIES 中断触发沿选择寄存器(仅中断端口P1和P2)
如果允许Px口的某个引脚中断(即PxIE和GIE已设置), 还需定义该引脚的中断触发方式。 该寄存器可读可写,寄存器的8位分别对应Px口8个引脚 PxIES的配置: Bit = 1: 下降沿使相应中断标志置位; Bit = 0: 上升沿使相应中断标志置位。 例:P1IES |= 0x01; //表示选择P1端口的P1.0下降沿中断

GPIO 寄存器(7/9)

PxIE 中断使能寄存器(仅中断端口P1和P2)
该寄存器的8位与端口的8个引脚一一对应,其中某一位 置位表示允许对应的引脚在电平变化(上升沿或下降沿) 时产生中断,否则,表示禁止该位的中断。 每个PxIE位使能的中断请求都与相应的PxIFG中断标志 相关联,可通过写PxOUT和PxDIR来设置PxIFG。 PxIE的配置: Bit = 1: 允许中断; Bit = 0: 禁止中断。 例:P1IE |= 0x01; //表示允许P1端口的P1.0引脚中断
相关文档
最新文档