|
我的项目是红外遥控RGB配色的,每次上电都会保留现在亮的颜色的数据,然后下次上电就读取,然后送到LED,就是断电记忆颜色,但是三四次之后颜色就不对了,最多是15次才会改变,有时1次都错了,
就是我第一次上电显示白色光,然后遥控器按下对应的颜色,假如是蓝色的话,此时显示蓝色,然后断电,再上电还是蓝色,但是,重复此操作3次以上就可能不再是蓝色了,在此期间没有按键改变颜色,是断电时写EEPROM出错,还是读时出错啊?
以下是部分代码:
uint ReadColour()
{
uchar ReadColour,i;
PWM_Ver_R=EEPROMRead(10);
PWM_Ver_G=EEPROMRead(11);
PWM_Ver_B=EEPROMRead(12);
PWM_Ver_W=EEPROMRead(13);
PWM_Ver_R_buff=EEPROMRead(20);
PWM_Ver_G_buff=EEPROMRead(21);
PWM_Ver_B_buff=EEPROMRead(22);
PWM_Ver_W_buff=EEPROMRead(23);
if(PWM_Ver_R == PWM_Ver_R_buff)
{}
else
PWM_Ver_R=PWM_Ver_R_buff;
if(PWM_Ver_G == PWM_Ver_G_buff)
{}
else
PWM_Ver_G=PWM_Ver_G_buff;
if(PWM_Ver_B == PWM_Ver_B_buff)
{}
else
PWM_Ver_B=PWM_Ver_B_buff;
if(PWM_Ver_W == PWM_Ver_W_buff)
{}
else
PWM_Ver_W=PWM_Ver_W_buff;
return PWM_Ver_R;
}
//**************LED缓存值函数************************************************//
void BufferLEDRGBValue()
{
uchar i;
buffer_PWM_Ver_R=PWM_Ver_R;
buffer_PWM_Ver_G=PWM_Ver_G;
buffer_PWM_Ver_B=PWM_Ver_B;
buffer_PWM_Ver_W=PWM_Ver_W;
//赋完值就保存颜色数据
for(i=0;i<5;i++)
{
EEPROMWrite(10,PWM_Ver_R);
EEPROMWrite(11,PWM_Ver_G);
EEPROMWrite(12,PWM_Ver_B);
EEPROMWrite(13,PWM_Ver_W);
if(i==1)
{
EEPROMWrite(20,PWM_Ver_R);
EEPROMWrite(21,PWM_Ver_G);
EEPROMWrite(22,PWM_Ver_B);
EEPROMWrite(23,PWM_Ver_W);
}
}
}
这是主函数
void main()
{
PowerInitial(); //MCU初始化始终设置IO口配置
Timer2Initial(); //设置定时器2,50us定时中断
EEPROMWrite(0,0xAA); //
EEPROMWrite(0,0xAA); //初始化EEPROM
WDTInitial();
FlagKeyONF=1;
Flag_PWM_out=1;
Flag_one_in=0;
Flag_first=1;
GIE=1;
while(1)
{
if(Flag_4ms)
{
Flag_4ms=0;
CLRWDT(); //清看门狗
First_16ms++;
if(First_16ms>200)
{
First_16ms=0;
Flag_First_16ms=1;
}
if(Flag_First_16ms)
{
if(Flag_first)
{
Flag_first=0;
FlagKeyONF=1;
Flag_PWM_out=1;
Flag_one_in=0;
ReadColour_buffer=ReadColour();
if(ReadColour_buffer==0xFF)
{
PWM_Ver_R=0;
PWM_Ver_G=0;
PWM_Ver_B=0;
PWM_Ver_W=255;
BufferLEDRGBValue();
}
}
else
{
//ScanKey();
InfraRedReceiverWork();
LEDMinus();
LEDPlus();
BufferLEDRGBValue();
PWM_time++;
if(PWM_time>3)
{
PWM_time=0;
//FadeLED();
}
}
}
}
}
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|