打印

被一个程序折磨了3天了,求大神帮忙

[复制链接]
1896|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
szn1423|  楼主 | 2012-12-15 10:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
LCD, CD, TI, DM, LED
这是一个显示Battery_mAH的程序,一开始lcd显示0,首先我把Battery_mAH=10移入主函数,lcd显示10,正常,然后把Battery_mAH=10移入Time_process()子函数,显示也为10,但是移入if语句后,显示为0,我怀疑是if语句问题,把测试用的led闪烁程序移入if语句,结果它闪了。。。。。。郁闷了3天,实在没招了,求大神解救。
//.............time++......................//
void Time_process()
{
   
  if(key_Return==1)                 //如果按下按键
  {
    TimeNumber++;
   
  }
  if(TimeNumber>=3)                 //BT中断3次
  {
    Battery_mAH=10;                 //容量数加1,计数归零
    P6OUT^=BIT5;                    //led闪
    TimeNumber=0;
  }
  
}

//.............main..........................//
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;       // Stop watchdog timer to prevent time out reset
  FLL_CTL0|=XCAP18PF;             //设置晶振匹配电容为18pf左右
  P6DIR|=BIT6;                    //红LED
  P6DIR|=BIT5;                    //绿LED
  LCDCTL=LCDON+LCD4MUX+LCDSG0_1;
  LCDM1=0X00;
  LCDM2=0X00;
  LCDM3=0X00;
  LCDM4=0X00;
  LCDM5=0X00;
  P5SEL=0xFC;
  P2DIR&=~BIT1;                  //P2.1设为输入
  P2IES|=BIT1;                   //P2.1设为下降沿中断
  P2IE|=BIT1;                    //允许P2.1中断
  P2IFG=0;                       //清除P2中断标志位
  BTCTL=BT_ADLY_500+BT_fLCD_256;    //BasicTimer  clock选为ACLK,1/64s,LCD刷新频率256Hz
    IE2=BTIE;                        //允许BasicTimer中断
  _EINT();                         //允许总中断
  
  while(1)
  {
     LPM3;                         //进入低功耗模式3,等待被唤醒。以下程序每1/64s执行一次
   Key_GetKey();
     Time_process();
     LCD_DisplayNumber();                   //显示数字
   LCD_DisplayOther();
   
  }
}

相关帖子

沙发
tianm| | 2012-12-15 10:25 | 只看该作者
这个代码不是你写的 还怀疑?

使用特权

评论回复
板凳
szn1423|  楼主 | 2012-12-15 11:49 | 只看该作者
tianm 发表于 2012-12-15 10:25
这个代码不是你写的 还怀疑?

是我写的啊,蛮简单的一个功能没实现,查问题不是应该把可能出问题的地方一个个排除吗?我自己写的我也不能保证就是对的啊,怀疑下可能出问题的地方我觉得是应该的啊

使用特权

评论回复
地板
uet_cache| | 2012-12-15 12:14 | 只看该作者
变量有没有赋初值

使用特权

评论回复
5
szn1423|  楼主 | 2012-12-15 12:21 | 只看该作者
uet_cache 发表于 2012-12-15 12:14
变量有没有赋初值

unsigned char key_Return=0;      //返回的按键值
unsigned char key_value=0;       //按键状态
unsigned int Battery_mAH=0;      //电池容量  单位mAH
unsigned char current_open=0;    //放电开始
unsigned int TimeNumber=0;

使用特权

评论回复
6
蜗牛狂奔| | 2012-12-15 13:00 | 只看该作者
是不没有从低功耗模式唤醒啊

使用特权

评论回复
7
szn1423|  楼主 | 2012-12-15 13:11 | 只看该作者
蜗牛狂奔 发表于 2012-12-15 13:00
是不没有从低功耗模式唤醒啊

唤醒了,LED在闪

使用特权

评论回复
8
蜗牛狂奔| | 2012-12-15 13:20 | 只看该作者
你把10这个值换成别的,是不是数据处理那有疏忽!   在主函数里把 Battery_mAH 付一个值,在IF语句里再付另一个值  看有啥变化不

使用特权

评论回复
9
szn1423|  楼主 | 2012-12-15 13:52 | 只看该作者
蜗牛狂奔 发表于 2012-12-15 13:20
你把10这个值换成别的,是不是数据处理那有疏忽!   在主函数里把 Battery_mAH 付一个值,在IF语句里再付另 ...

碉堡了。换了值,果然不是0了,不过是错的,奇怪了,之前写完显示模块我有试过的好几个数的啊。
多谢大神帮忙,我先去找找问题出在哪里,搞不出来再向您请教。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

251

主题

462

帖子

4

粉丝