/* * functions about EEPROM * Author: HS * * Created on 2013/09/02 14:24 */ #include "lonly.h" int ADR; unsigned char wt,wtmode; //wait time unsigned char redm,grem,blum; //change mode if 0 decrease,else increase void initcode(); void setAll(); void runcode(int); void changeLED(unsigned char); void setwt(int); void setRed(int); void setGreen(int); void setBlue(int); void changeRed(); void changeGreen(); void changeBlue(); unsigned char EEP_READ(int); unsigned char cmd_read(int); unsigned char EEP_READ(int add){ return EEPROM_READ(add); } unsigned char cmd_read(int add){ return cmdList[add]; } //code initialize void initcode(){ ADR=0; setAll(); } void setAll(){ setwt(ADR); ADR++; setRed(ADR); ADR++; setGreen(ADR); ADR++; setBlue(ADR); } void setwt(int adr){ unsigned char code; code=cmd_read(adr); wtmode=code&0x80; wt=code&0x7F; } void setRed(int adr){ unsigned char code; code=cmd_read(adr); redm=code&0x01; RED=code; } void setGreen(int adr){ unsigned char code; code=cmd_read(adr); grem=code&0x01; GRE=code; } void setBlue(int adr){ unsigned char code; code=cmd_read(adr); blum=code&0x01; BLU=code; } //changing LED color void changeLED(unsigned char code){ if(code&0x04) changeRed(); if(code&0x02) changeGreen(); if(code&0x01) changeBlue(); } void changeRed(){ if(redm){ if(REDS&0x30){ REDS-=0x10; }else{ RED--; REDS+=0x30; } }else{ if(REDS&0x30==0x30){ RED++; REDS-=0x30; }else{ REDS+=0x10; } } } void changeGreen(){ if(grem){ if(GRES&0x30){ GRES-=0x10; }else{ GRE--; GRES+=0x30; } }else{ if(GRES&0x30==0x30){ GRE++; GRES-=0x30; }else{ GRES+=0x10; } } } void changeBlue(){ if(blum){ if(BLUS&0x30){ BLUS=BLUS-0x10; }else{ BLU--; BLUS+=0x30; } }else{ if(BLUS&0x30==0x30){ BLU++; BLUS-=0x30; }else{ BLUS+=0x10; } } } //wait Time void wait(){ if(wtmode){ waitmin(wt); }else{ waitsec(wt); } } //code program void runcode(int adress){ unsigned char code; code=cmd_read(adress); if(code>>4){ changeLED(code>>4); wait(); changeLED(code); wait(); }else{ switch(code){ case 0x00:ADR++;setAll(ADR);break; case 0x01:ADR++;setwt(ADR);break; case 0x02:ADR++;setRed(ADR);break; case 0x03:ADR++;setGreen(ADR);break; case 0x04:ADR++;setBlue(ADR);break; case 0x05:redm=redm^1;break; case 0x06:blum=blum^1;break; case 0x07:grem=grem^1;break; } } }