幸运时时彩平台

MSP430学习笔记1-I/O端口

2020-06-16来源: eefocus关键字:MSP430  I  O端口  端口翻转

开发版型号:SEED—MSP430F5529A


幸运时时彩平台开发工具   :CCS 5.4v


以下内容是CCS中I/O端口操作的一些简单的demo,现整理如下:


有关MSP430F5529芯片I/O口相关资料,可参考《MSP430x5xx and MSP430x6xx Family User's Guide (Rev。 M)——Chapter 11 Digital I/O Module》


1:P1.0 端口翻转


 1 #include

 2 

 3 int main(void)

 4 {

幸运时时彩平台 5   volatile unsigned int i;

 6 

 7   WDTCTL = WDTPW+WDTHOLD;                   // Stop WDT

 8   P1DIR |= BIT0;                            // P1。0 set as output

 9 

10   while(1)                                  // continuous loop

11   {

12     P1OUT ^= BIT0;                          // XOR P1.0

幸运时时彩平台13     for(i=50000;i>0;i--);                   // Delay

14   }

15 }

注意:为了不影响控制寄存器中其他位的状态,将P1.0端口设置为输出状态选择使用


1  P1DIR |= BIT0;                            // P1.0 set as output

而不是


1  P1DIR = BIT0;                            // P1。0 set as output NO!

2:一个简单的if选择


 1 #include

 2 

幸运时时彩平台 3 int main(void)

 4 {

 5   WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer

 6   P1DIR |= BIT0;                            // Set P1。0 to output direction

 7 

 8   while (1)                                 // Test P1。4

 9   {

10     if (P1IN & BIT4)

幸运时时彩平台11       P1OUT |= BIT0;                        // if P1.4 set, set P1.0

12     else

13       P1OUT &= ~BIT0;                       // else reset

14   }

15 }

3:P1.4的一个下降沿产生中断,引起P1.0 翻转


 1 #include

 2 

 3 int main(void)

 4 {

 5   WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer

 6   P1DIR |= BIT0;                            // Set P1.0 to output direction

 7   P1REN |= BIT4;                            // Enable P1.4 internal resistance

 8   P1OUT |= BIT4;                            // Set P1。4 as pull-Up resistance

 9   P1IES |= BIT4;                            // P1.4 Hi/Lo edge

10   P1IFG &= ~BIT4;                           // P1。4 IFG cleared

11   P1IE |= BIT4;                             // P1.4 interrupt enabled

12   

13   __bis_SR_register(LPM4_bits + GIE);       // Enter LPM4 w/interrupt

14   __no_operation();                         // For debugger

15 }

16 

17 // Port 1 interrupt service routine

18 #pragma vector=PORT1_VECTOR

19 __interrupt void Port_1(void)

20 {

21   P1OUT ^= BIT0;                            // P1。0 = toggle

22   P1IFG &= ~BIT4;                          // P1.4 IFG cleared

23 }

4:P1。4上升沿产生中断后使芯片进入LPM(Low Power Model),之后在主程序中翻转P1。0,并改变P1。4的中断触发方式(翻转)


 1 #include

 2 

 3 int main(void)

 4 {

 5   WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer

 6   P1DIR |= BIT0;                            // Set P1。0 to output direction

幸运时时彩平台 7   P1OUT &= ~BIT0;

 8   P1REN |= BIT4;                            // Enable P1。4 internal resistance

 9   P1OUT |= BIT4;                            // Set P1.4 as pull-Up resistance

10   P1IES &= ~BIT4;                           // P1.4 Lo/Hi edge

11   P1IFG &= ~BIT4;                           // P1。4 IFG cleared

12   P1IE |= BIT4;                             // P1.4 interrupt enabled

13 

14   while(1)

15   {

16     __bis_SR_register(LPM4_bits + GIE);     // Enter LPM4 w/interrupt

17     __no_operation();                        // For debugger

18     P1OUT ^= BIT0;                          // P1.0 = toggle

19     P1IES ^= BIT4;                          // Toggle between H-L and L-H transition triggers

20     P1IE |= BIT4;                           // Enable port interrupt

21   }

22 }

23 

24 // Port 1 interrupt service routine

25 #pragma vector=PORT1_VECTOR

26 __interrupt void Port_1(void)

27 {

28   P1IFG &= ~BIT4;                         // Clear P1.4 IFG

29   P1IE &= ~ BIT4;                         // Clear P1.4 IE

30   _BIC_SR_IRQ(LPM4_bits);                 // Exit LPM4 

31 }

5:对端口PA(P1+P2)进行写操作


 1 #include

 2 

 3 int main(void)

 4 {

 5   WDTCTL = WDTPW+WDTHOLD;                   // Stop WDT

 6 

 7   PADIR |= 0xFFFF;                          // PA。x output

 8   PAOUT = 0x1234;                           // Write to Port A

幸运时时彩平台 9 

10   __bis_SR_register(LPM4_bits + GIE);       // Enter LPM4 w/interrupts enabled

11   __no_operation();                         // Place BREAKPOINT HERE and check register PAOUT, P1OUT and P2OUT

12 }

说明


1:关于 __bis_SR_register(LPM4_bits + GIE)


幸运时时彩平台  为了使单片机进入中断,在主函数中必须添加一句__bis_SR_register(LPM4_bits + GIE)"__bis_SR_register (LPM4_bits + GIE)(means go to sleep mode Low_Power_Mode_4 and with General_Interrupt_Enabled。);其中LPM4_bits可以根据实际情况而改变,而GIE是系统中断使能位,必须置高才有效;而这也是其低能耗的一个重要体现。


2:关于__no_operation();  


Description

__no_operation inserts a NOP opcode into the code stream.


幸运时时彩平台__no_operation is an intrinsic function and produces inline code.


From:this


3:关于__no_operation() and _delay_cycles()


_delay_cycles(xxx) is an intrinsic function that creates code that takes exactly xxx cycles to execute. For a single cycle delay, it would be identical to __no_operation(). You can do a quick test in either IAR or CCS with different values of xxx to see the actual code being created by the __delay_cycles() function. For example:

__delay_cycles(1) creates NOP

__delay_cycles(2) creates JMP  #Next_Address_In_Flash

__delay_cycles(1) creates RLAM。W #3,R15

。。。。


If you only need a single cycle delay, you can stick with __no_operation()。


From: this


幸运时时彩平台相关宏定义(in msp430f5529.h)


 1 /************************************************************

 2 * STANDARD BITS

 3 ************************************************************/

 4 

 5 #define BIT0                   (0x0001)

 6 #define BIT1                   (0x0002)

 7 #define BIT2                   (0x0004)

 8 #define BIT3                   (0x0008)

 9 #define BIT4                   (0x0010)

10 #define BIT5                   (0x0020)

11 #define BIT6

[1] [2]
关键字:MSP430  I  O端口  端口翻转 编辑:什么鱼 引用地址:http://news.sonata9.com/mcu/ic500387.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:MSP430G2-LaunchPad简明教程03[创建一个MSP430工程]
下一篇:最后一页

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

TI MSP430系列单片机串口通信波特率计算方法
TI MSP430系列单片机,usart模块的波特率值设定是通过以下三个寄存器决定的:UxBR0,UxBR1,UxMCTL 波特率=BRCLK/N ,主要是计算出N。BRCLK:时钟源,可以通过寄存器设定何为时钟源; 通过寄存器UCAxCTL1的SSEL两位选择,01:ACLK,02:SMCLKN:波特率产生的分频因子。N=UxBR1+UxBR0+UxMCTL,其中UxBR1+UxBR0为整数部分,UxMCTL为设定小数部分,其中 UxBR1为高位,UxBR0为低位,两者结合起来为一个16位的字。举例说明:波特率=115200,时钟源=8MHz ,为外部晶体振荡器N=8000000/115200=69.44 。很明显
发表于 2020-06-06
Tinyos之使用Msp430Counter32khz获取系统时间
使用平台:TelosB 操作系统:TinyOs最近要为论文写实验数据,需要读取系统的时间,进行一些运算。Tinyos有提供Msp430Counter32khz 组件,该组件提供接口 Counter<T32khz,uint16_t> .该接口有如下命令和事件:1、get()命令调用该命令,会返回计数值。计数动作是从系统启动的时候就开始了。(如果操作系统配置为低功耗模式会停止计数)2、isOverflowpending()命令 是否有溢出(true /false)3、clearoverflow()命令清除挂起状态4、overflow()事件给出当前系计数值已经溢出的信号量。继续分析,得知该组件是有以下
发表于 2020-06-06
TinyOS在MSP430F2618上移植(一)
最新版本的TinyOS2.1.1,虽然增加了更多的平台支持,比如epic、shimmer,但是这些平台都有一个共同的局限性:采用的微控制器都是低端的MSP430系列,如MSP430F149、MSP430F1611。在一些应用场合,这些处理器已经不能达到性能要求,而基于ZigBee的开发平台,如TI推出的开发套件已经开始使用高性能的处理器,并且国内一些公司,如成都无线龙也都纷纷推出基于MSP430F2618和CC2520无线收发模块,这个模块自从它诞生就很好的支持了ZigBee,因为有TI的全力支持,并且相关的演示代码TI都已经准备好了。但是,目前还没有把TinyOS移植到MSP430F2618上的先例。网上很多人说,这个移植很简单
发表于 2020-06-06
TinyOS在MSP430F2618上移植(一)
TinyOS在MSP430F2618上移植(三)之LCD
本节记录串口TFT LCD在TinyOS上的移植。1.8寸LCD显示屏采用ST7735控制器,使用SPI接口实现控制、显示数据的传输。总体架构:分为3层结构,最底层位于相应的platforms中chips目录下,实现在特定平台上控制引脚连接,SPI接口连接,以及SPI配置。中间层实现了LCD基本操作,LCD初始化,提供给上层模块连接的接口,以及资源管理。最上层提供应用层模块连接的接口。在本架构中,中间层和最高层提供相同的接口LCD16,该接口提供的实现方法有english_string,clear,single_color等,以及写完成事件writeDone。不同的是在最高层提供的接口LCD16中,并没有真正实现接口的功能,而仅仅是
发表于 2020-06-06
幸运时时彩平台两种方式实现TinyOS对MSP430F26&54系列的支持
第一种方式在Ubuntu 下TinyOS msp430 Toolchain mspgcc升级一文中已经作了详细分析,下面说说另一种方式实现TinyOS对MSP430高端系列单片机的支持。我们已经知道TinyOS的编译过程,ncc编译器编译得到app.c文件,接着使用mspgcc编译工具对目标代码进行编译生成需要的.hex文件。但是,要注意的是在ncc编译过程中也会连接msp430库文件,所以就不可能在没有mspgcc的支持下得到app.c文件。那么,这里就出现了问题,如果没有按照上述所提到的第一种方式升级mspgcc,应该如何正确的编译得到所需的文件呢?答案就是使用挂羊头卖狗肉的方法,具体的就是.platform文件不用修改
发表于 2020-06-06
Ubuntu下MSP430开发环境搭建
阅读 以下文章可搞定Ubuntu下搭建MSP430开发环境(MSPGCC)(一) Programming the MSP430 Launchpad on Ubuntumsp430G2553程序烧写方法:#include <msp430g2553.h> int main (void){        volatile int i;         /* Stop watchdog timer */        WDTCTL = WDTPW | WDTHOLD; 
发表于 2020-06-06
小广播
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD。com。cn, Inc。 All rights reserved
小米彩票是真的吗 亿信彩票注册 幸运时时彩平台 500万彩票 吉林快3 一分时时彩官网 快三投注 广西快3 500彩票网 幸运时时彩