吕不韦

    1. MSP430按键与ADC采集代码整合出现的问题求助 20/5912 微控制器 MCU 2015-12-20
      qiushenghua 发表于 2015-12-18 20:29 松开按键之后设置断点,查看寄存器跟踪程序单步调试! 东西在你自己手上,又不是没有仿真器! 看看程序 ...
      我今天按照你说的来仿真了一下,发现是从1->0->2->1->或者是从2->0->1->0->2这样来的。要修改程序的话大概从哪里开始呢?求赐教!
    2. MSP430按键与ADC采集代码整合出现的问题求助 20/5912 微控制器 MCU 2015-12-18
      qiushenghua 发表于 2015-12-18 15:48 你的意思是松开两个按键之后还检测不到0?
      恩,是这样的情况!
    3. MSP430按键与ADC采集代码整合出现的问题求助 20/5912 微控制器 MCU 2015-12-18
      qiushenghua 发表于 2015-12-18 10:44 刚刚仔细看了下你的代码,发现按键检测部分确实存在问题。 大胆猜测你是在设置断点仿真调试的时候遇到问 ...
      恩,的确是会这样。但是在某一些就错了。按键检测KEY的值是0->1->1->....或者0->2->2->....要想重新检测到另外一个按键,就必须重新调试仿真。奇怪的是,我没把ADC采集程序放进去的时候,整个程序是可以运行的,也能一个按键按下,另一个按键也能被检测。大神,请问该怎么解决?
    4. MSP430按键与ADC采集代码整合出现的问题求助 20/5912 微控制器 MCU 2015-12-17
      qiushenghua 发表于 2015-12-17 15:49 贴出那么多代码,依旧没见到KEYin1和KEYin2的实现方式,也没见到硬件结构。。。
    5. MSP430按键与ADC采集代码整合出现的问题求助 20/5912 微控制器 MCU 2015-12-17
      单片机使用的是MSP430的F149
    6. MSP430按键与ADC采集代码整合出现的问题求助 20/5912 微控制器 MCU 2015-12-17
      这是主程序: #include   #include "Key.h" #include "Delay.h" #include "PWM1.h" #include "PWM2.h" #include "ADC.h" void main(void) {   WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer   unsigned char Key;   Key_INIT();                                  //按键初始化   ADC();   for (;;)   {       ADC12CTL0|=ENC;//转换允许使能     ADC12CTL0|=ADC12SC; //开转换     _BIS_SR(LPM0_bits+GIE);//开中断         Key=Key_Scan();//按键扫描    if(Key!=0)  //如果按键不等于0即按有按键按下    {       switch(Key)//转到按键程序       {       case 1:         PWM1();         break;       case 2:         PWM2();         break;         default : break;          }      }    else delay_ms(10);//消除抖动       } } 这是主程序部分,包括了ADC采集程序,产生两个不同频率的PWM波程序9在430的P1.2端口输出PWM波),还有延时程序 下面是按键初始化及扫描的程序(按键的一端接地,一端接430的P1.0和P1.1端,在端口与按键之间并接430的VCC端,就是说没按键按下的时候P1.0/P1.1端口是高电平,按键按下是低电平: #include "msp430x14x.h" #include "Key.h" #include "Delay.h" void Key_INIT(void) { //   DIR=0,输入模式,DIR=1,输出模式 P1DIR &= ~BIT0;//配置P1.0为输入模式 P1DIR &= ~BIT1;//配置P1.1为输入模式 } unsigned char Key_Scan(void) { static unsigned char KEY=0;//定义没有按键按下时,KEY=0 static unsigned char key_up=1;   //没有按键按下时,key_up=1 if(key_up&&(KEYin1==0||KEYin2==0))//有一个键按下         {                 delay_ms(10);   //去抖动                 key_up=0;//有按键按下,证明按键为低电平                 if(KEYin1==0)//按键1按下,转为低电平                 {                    KEY=1; //KEY1按下                 }                 else if(KEYin2==0)//按键2按下,转为低电平                 {                                   KEY=2;//KEY2按下                 }         } else if(KEYin1!=0&&KEYin2!=0)//无按键按下,返回值为0         {           key_up=1;           KEY=0;         }       return KEY; } 下面是ADC采集程序(从P6.0采集到电压信号,低于1.65V就在P3.4输出低电压到电池管理芯片LN2054的使能控制端,使电池充电): #include "msp430x14x.h" #include "ADC.h" void ADC(void) {   WDTCTL=WDTPW+WDTHOLD;//关看门狗   ADC12CTL0=SHT0_8+ADC12ON+MSC;//打开ADC12,设置采样时间   ADC12CTL1=SHP+CONSEQ_2;//单通道多次转换,采样定时器采样方式      ADC12IE|=BIT0;   //只使能ADC12MEM0中断,即转换的数据存入MEM0时中断可处   P6DIR|=0X00;   P6SEL|=BIT0;   P3DIR|=BIT4;    } #pragma vector=ADC12_VECTOR            //进入ADC12中断   __interrupt void ADC12ISR(void) {   if(ADC12MEM0
    7. MSP430按键与ADC采集代码整合出现的问题求助 20/5912 微控制器 MCU 2015-12-17
      qiushenghua 发表于 2015-12-17 11:38 如果是我来写这段程序,首先我就不会增加那么多的delay_ms函数。因为你这用的MSP430是低功耗MCU,所以我会 ...
      因为我的这个实验是创新实验,我是第一次使用430来做实验,之前也并没有做过什么芯片,对这些都不大熟悉。只是会在别人的程序上再做修改。其实这个程序在没有添加ADC采集的时候,是完全可以运行的,没有出现任何错误,添加上ADC采集就不行了。
    8. MSP430按键与ADC采集代码整合出现的问题求助 20/5912 微控制器 MCU 2015-12-17
      qiushenghua 发表于 2015-12-17 11:18 非得挤牙膏似的挤…… KEYin1和KEYin2分别是什么?是怎么实现的?硬件连接又是怎么样的? 从你的描述看 ...
      KEYin1和KEYin2代表的是按键1和按键2,按键1按下,KEYin1=0,得出KEY=1,然后再转移到主程序部分的switch进行判断,再在switch中另外执行程序,按键2亦同理。 的确,这程序在执行过程中都会在每个子程序中执行两遍,我挺苦恼的。我看看能否重写一个按键程序。
    9. MSP430按键与ADC采集代码整合出现的问题求助 20/5912 微控制器 MCU 2015-12-16
      qiushenghua 发表于 2015-12-16 22:50 看起来没啥问题 不知道你的按键扫描程序是怎么样的
      老师说问题应该出在KEY的值那里了,可是我不懂怎么修改,老师也没给出解决方法
    10. MSP430按键与ADC采集代码整合出现的问题求助 20/5912 微控制器 MCU 2015-12-16
      qiushenghua 发表于 2015-12-16 22:50 看起来没啥问题 不知道你的按键扫描程序是怎么样的
      上传个图给你看看

最近访客

< 1/1 >

统计信息

已有2人来访过

  • 芯积分:--
  • 好友:--
  • 主题:1
  • 回复:10

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言