MSP430-流水灯和key

2020-01-13来源: eefocus关键字:MSP430  流水灯  key

关于CCS 和 IAR两款软件同样的代码使用BSL烧写出来的代码不一样的问题:


可能因为编译器的问题,两者编译出来的结果不一样,从而导致生成的txt不同,进而产生下板子验证的错误。


我试了一晚上,依旧没有设置好,解决办法,,,使用IAR(真香!)


这里的流水灯和按键的方式与51单片机的相似


流水灯我这里就直接贴代码:


#include "io430.h"

#define uint unsigned int 

#define uchar unsigned char 

 

void delay(unsigned int counts)

{

    unsigned int i,j;

  for(j=0;j<10;j++)

  {

  for(i = 0; i < counts; i++);

  }

}

/****************主函数****************/

void main(void)

{

    uchar temp;

    temp=0x01;

    WDTCTL = WDTPW + WDTHOLD;       //关闭看门狗

    P2DIR = 0xff;                   //设置P2口方向为输出

    P2OUT = 0xff;                   //设置P2口输出高电平

     while(1)

     {

       P2OUT=~temp;//点亮LED

       delay(65000);//延时

       temp<<=1;

       if(temp==0x10)

         temp=0x01;

     }

 

}

按键同样是进行按键的消抖延时检测按键按下的状态:


#include "io430.h"

#define keyin    (P1IN & 0x03) 

#define uchar unsigned char 

#define uint unsigned int 

 

void delay(void);

uchar key_can(void);

 

int main( void )

{

  uchar key_date = 0;

  // Stop watchdog timer to prevent time out reset

  WDTCTL = WDTPW + WDTHOLD;

  P1DIR &=~( BIT0 + BIT1);

  P2DIR = 0XFF;

  P2OUT = 0XFF;

  while(1)

    {

             key_date=key_can();

             switch(key_date)    //转换键值    

                {

                case 1:P2OUT&=~BIT0;break;

                case 2:P2OUT&=~BIT1;break;

                default:break;

                }

                delay();         

                delay();    

                P2OUT=0xff;

    }

  return 0;

}

 

uchar key_can(void)

{

uchar keyval,temp;

 if(keyin != 0x03)       //如果有键被按下

        {

            delay();            //延时消抖

            if(keyin != 0x03)   //再次检测按键状态

            {

                temp=keyin;

                while(keyin != 0x03);   //等待按键被放开

                switch(temp)    //转换键值    

                {

                case 0x01:

                            keyval = 1;break;

                case 0x02:

                            keyval = 2;break;

                default:

                            keyval = 0;break;

                }

            }

        }

return keyval;

}

 

void delay(void)

{

    uint tmp;

    

    for(tmp = 12000;tmp > 0;tmp--);

}

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

上一篇:MSP430 AD模块笔记
下一篇:MSP430-中断的使用

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

推荐阅读

MSP430常见问题之指令系统类
Q1. IAR中怎样描述P2OUT.3脚,#define LCD_cs1 P2OUT.3; 对吗?A1:430 不能位寻址,所以一般的位操作,都通过“与”来作用。#define LCD_cs1 (P2OUT&BIT3 )。Q2.__intrinsic是什么意思A2:本征函数,不是C语言标准库,而是和MSP430汇编直接对应的函数,比如:_NOP()_EINT()LPM0引用msp430xxxx.h,默认引用的头文件Q3:在程序里循环调用了sprintf函数,当循环了几次后程序就跑飞了,是堆栈大小不够吗?还有sprintf到底需要多大的堆栈,单步走了下,发现它使用堆栈都不是连续的?A3:有可能是的sprintf 函数堆栈数据
发表于 2020-01-09
MSP430矩阵及独立键盘
  在学习MSP430的时候,总是有很多东西记不住,同时又是英文的资料,好多东西也是没怎么看透,英文虽过六级但是看英文资料还是有一种想睡的冲动啊,在学习键盘的时候,我的这块板子有些不同,矩阵键盘和独立键盘公用的,组合式的按键。。这是为了节约硬件的成本啊 。。。    #define keyin    (P1IN & 0x0f)    //低四位保持不变,高4位清零,这个宏定义就是这个意思。再写主函数的时候有这个语句:    P1DIR = BIT7;       
发表于 2020-01-09
MSP430电平转换
说道到这个电平转换,写程序的时候居然还要示波器来观察现象,表示我们交的是211的学费,上的却不是211大学,创新实验室的仪器设备真的是少的可怜啊,我级不吐槽了说说这个电平转换的一些知识还有看法吧。。  看到原理图首先得说说接线帽的问题,这个很重要,接线帽 的使用会连接到不同的引脚上,大家看原理图的时候就会知道啦,只是要小心要细心。虽没有示波器,但是用软件的方式把led灯当作指示灯,根据指示灯的闪动也是可以的,通过74LVC4245在连接器P2的引脚上产生一定占空比的方波。        P3DIR |= BIT4;    &
发表于 2020-01-09
MSP430电平转换
msp430f149的低功耗模式
430的低功耗确实很强啊,虽然和VR单片机比起来速度慢了好多。在CPU进行工作时,如果没有什么事情干,就得进入低功耗模式啦,LMPX(0~4)这几种模式的具体事项就是如下的,得记住了。一,运行模式MSP430具有一种活动模式和五种软件可选的低功耗运行模式。一个中断事件可以将芯片从五种低功耗模式中的任何一种唤醒,为请求服务并在从中断程序返回时恢复低功耗模式。下面6种运算模式由软件配置。● 活动模式AM:-所有时钟活动● 低功耗模式0(LPM0)-CPU关闭ACLK和SMCLK保持活动,MCLK关闭● 低功耗模式1(LPM1)-CPU关闭ACLK和SMCLK保持活动,MCLK关闭如果DCO在活动模式中没有使用,DCO的直流发生器将关闭
发表于 2020-01-09
MSP430串口接收程序(使用中断)
; <msp430x14x.h>void usartInit(void);                       //串口初始化void main(void){  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT  usartInit();  while(1){  _BIS_SR(LPM3_bits + GIE
发表于 2020-01-09
MSP430单片机USART串口发送字符和字符串
在MSP430单片机的官方历程中有使用串口中断发送字符以及字符串的程序,但是移植性不高,我专门写了两个函数,用于发送单个字符合字符串,不需要使用中断,供大家参考。/***********************************************程序描述:单片机的P3.4、P3.5作为串口发送字符和字符串*作者    :Zhenhua Liu*时间    :2017.11.01  23:00***********************************************/#include "msp430x14x.h"#define
发表于 2020-01-09
小广播
何立民专栏 单片机及嵌入式宝典

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

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved