局部变量的初值,是一个乱值,不确定的,不进行赋初值会有异常现象
int main()
{
// unsigned char x;
unsigned char dat1,dat2;
unsigned char dat1_min_h,dat1_min_l,dat2_hone_h,dat2_hone_l;
unsigned char dat1_min_h_log=0;
unsigned char dat1_min_l_log=0;
unsigned char dat2_hone_h_log=0;
unsigned char dat2_hone_l_log=0;
SysTick_Init();
GPIO_Configuration();
Usart1_Init(115200);
// Usart2_Init(115200);
IIC_Init();
ht1632_init();
ht1632_clr();
// DHT11_Start();
// time_set(0,17,10,0);
// USART_SendStr(USART2,"AT\r\n");
SysTick_Delay_Ms(4000);
while(1)
{
dian_dis_on();
dat1=ADXL345_RD_Reg(0x01);
dat2=ADXL345_RD_Reg(0x02);
printf("\r\n%x,%x\r\n",dat1,dat2);
dat2_hone_h=dat2/16;
dat2_hone_l=dat2%16;
dat1_min_h=dat1/16;
dat1_min_l=dat1%16;
if(dat2_hone_h==dat2_hone_h_log)
wei_dis(0X00,dat2_hone_h);
else
{
wei_w(0X00, dat2_hone_h_log);
wei_d(0X00, dat2_hone_h);
dat2_hone_h_log=dat2_hone_h;
}
if(dat2_hone_l==dat2_hone_l_log)
wei_dis(0X0E,dat2_hone_l);
else
{
wei_w (0X0E,dat2_hone_l_log);
wei_d (0X0E,dat2_hone_l);
dat2_hone_l_log=dat2_hone_l;
}
if(dat1_min_h==dat1_min_h_log)
wei_dis(0X22,dat1_min_h);
else
{
wei_w (0X22,dat1_min_h_log);
wei_d (0X22,dat1_min_h);
dat1_min_h_log=dat1_min_h;
}
if(dat1_min_l==dat1_min_l_log)
wei_dis(0X30,dat1_min_l);
else
{
wei_w (0X30,dat1_min_l_log);
wei_d (0X30,dat1_min_l);
dat1_min_l_log=dat1_min_l;
}
SysTick_Delay_Ms(400);
dian_dis_off();
SysTick_Delay_Ms(500);
}
}
下面这四个局部变量,由于没有赋初值,在与函数内其他变量比较的时候,执行了类似wei_w (0X30,dat1_min_l_log);这个语句,显示变量值,但是可能此时变量值已经超出显示函数的代入值,导致异常现象。
unsigned char dat1_min_h_log=0;
unsigned char dat1_min_l_log=0;
unsigned char dat2_hone_h_log=0;
unsigned char dat2_hone_l_log=0;