这是一个显示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();
}
}
|