1、sfr P2M0=0X96;sfr P2M仁 0X95;sfr P1M0=0X92;sfr P1M 1=0X91;sfr IAP_DATA=0XC2;sfr IAP_ADDRH=0XC3;sfr IAP_ADDRL=0XC4;sfr IAP_CMD=0xc5;sfr IAP_TRIG=0XC6;sfr IAP_CONTR=0XC7;un sig ned char lia ng_temp=1;un sig ned char an _temp=1;un sig ned char R_to_B_temp=1;un sig ned char stop_temp=1;un sig ned char mo
2、de=1;un sig ned char time_key=0;un sig ned char time_temp=0;un sig ned char mode1_temp=0;uchar ajs,ljs;uchar rtobjs,stopjs,js3c=1;uchar rba=0;bit la=1;ksj=0;un sig ned char code zhifu016=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x 7C,0x39,0x5E,0x79,0x71;un sig ned char code zhifu216=0x
3、FC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0XFe,0Xf6,0Xee,0X 3e,0X9c,0X7a,0X9e,0X8e;*void delay20(void) /误差-0.000000000002usun sig ned char a,b,c; for(c=2;c0;c-) for(b=95;bb-) for(a=209;aa-);void delay500(void) / 误差 0us 500msfor(c=23;c-)for(b=152;b-)for(a=70;void eeprom_erase( un sig ned char a) _un sig
4、ned int add=512;un sig ned int add1=0;add1=add*a;IAP_ADDRH=add1/255;IAP_ADDRL=add1%255;IAP_CONTR=0X8C;IAP_CMD=0X03;IAP_TRIG=0X5A;IAP_TRIG=0XA5;_nop_();void eeprom_writer( un sig ned int add, un sig ned char date) _IAP_DATA=date;IAP_ADDRH=add/255;IAP_ADDRL=add%255;IAP_CONTR=OX8C;IAP_CMD=2;/*un sig ne
5、d char eeprom_read( un sig ned int add)un sig ned char date=0;/IAP_CMD=0X01;date=IAP_DATA; return(date);/*void show( un sig ned char a)un sig ned char shi;un sig ned char ge;un sig ned char *p;un sig ned char *p1;p=zhifu0;p仁 zhifu2;shi=a/10;shi=*(p+shi);/ 得到编码值ge=a%10;ge=*(p1+ge);P0=shi;P2=ge;*void
6、lia ng_key()if(!P1_0)delay20();lia ng_temp+;if(lia ng_temp99)lia ng_temp=1; show(lia ng_temp); while(!while(ksj)lia ng_temp+;99)lia ng_temp=1;show(lia ng_temp);_ *void an_ key()if(P1_0=0)an _temp+;if(an_tempan _temp=1;show(a n_temp);while(!while(ksj)a n_temp+;if(a n_temp99)a n_temp=1;void R_to_B_key
7、()if(P1_O=O)R_to_B_temp+;if(R_to_B_tempR_to_B_temp=1;show(R_to_B_temp);while(ksj)R_to_B_temp+;99)R_to_B_temp=1;sh ow(R_to_B_temp);void stop_key()stop_temp+;if(stop_tempstop_temp=1; show(stop_temp);while(ksj)stop_temp+;99)stop_temp=1;show(stoP_temp);*void show_mode( un sig ned char a)un sig ned char
8、ge=0;ge=*(p1+a);/ P0=0x00;void set_mode()TR1=1; 开定时器show_mode(mode); _while(time_key=0)mode+;if(mode5)mode=1;time_temp=0; delay20();TR1=0; 关定时器time_key=0;TH1 = 0x3C;TL1 = 0xB0;eeprom_erase(1);eeprom_writer(0,mode);P0=0;P2=0;rtobjs= R_to_B_temp;stopjs=stop_temp;ajs=a n_temp;ljs=lia ng_temp;rba=0;4个步骤
9、第void set_fu n() 设置时间的顺序是从亮,暗,红到蓝,停,个模式un sig ned char pan dua n=0;P1_1)P0=zhifu015;P2=zhifu21;delay500();panduan=1;while(pa ndua n)lia ng_key();show(lia ng_temp);panduan=0;P2=zhifu22;an_key(); ajs=a n_temp;P2=zhifu23; delay500(); R_to_B_key(); rtobjs=R_to_B_temp;P2=zhifu24;stop_key(); show(stop_tem
10、p); if(! delay20(); stopjs=stop_temp; eeprom_erase(0);eeprom_writer(0,lia ng_temp); eeprom_writer(1,a n_temp); eeprom_writer(2,R_to_B_temp); eeprom_writer(3,stop_temp);P0=0X0;P2=0X0;/ red=1;/ blue=0;/ yq=yq2=0;rtobjs = R_to_B_temp;stopjs = stop_temp;ajs = an _temp;ljs = lia ng_temp;void mode_out(bit
11、 a1,bit a2,bit a3,bit a4)/a 为停留时间,各位为输出值P1_4=a1;P1_5=a2;P1_6=a3;P1_7=a4;void redf un(v oid)if(js3c30)time_key=1;void TimerOI nterrupt(void) in terrupt 1/ TR0=0;static uchar i=0;static uchar kj=0;TH0 = 0xf2;TL0 = 0xfb;if(la) /Ijs-;if(ljs=0)la=0;ajs-;if(ajs=0)la=1;js3c+;10 ms如果在亮计时/ 亮计数自减/ 亮的时间到/ 置0亮暗
12、计数/ 还原暗计数值/ 如果在暗计时/ 晚计数自减/ 保持暗的时间到/ 点亮/ 还原亮计数初值/else P1&=OxOf;if(rba=O & js3c=3)i+;if(ii=0;rtobjs-; / 红到蓝时间自减if(rtobjs=0) / 时间到进入到蓝亮js3c=1;rba=1;rtobjs=R_to_B_temp;if(rba=1 &=3) i+; /if(rtobjs=0)rba=2;/ 红到蓝时间自减红到蓝时间自减/时间到进入到蓝亮if(rba=2 &=3) i+;stopjs-;if(stopjs=0) js3c=1;P1_0) ksj 为长按标记。如果长按,ksj置1,否则置0kj+;if(kj70)kj=0;ksj=1;kj=0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1