- sbit CAP=P3^2;
- //u8 time;
- //bit flag;
- sbit led=P5^5;
-
- unsigned int eepromid=0x0005;
- unsigned char dat;
- bit ispcap;
-
- u8 ledee ()
- {
- // delayms(5);
- while(1)
- {
-
- dat = IapRead(eepromid +1); //开始就eepromid == 0x0a02
-
- if(dat==0xff) //如果eepromid == 0xff
- {
- if(ispcap )
- {
- dat= IapRead(eepromid); //eepromid == 0x0a01
-
- switch(dat)
- {
- case 1: IapProgram(eepromid+1, 250);break;
- case 250: IapProgram(eepromid+1, 210);break;
- case 210: IapProgram(eepromid+1, 120);break;
- default: IapProgram(eepromid+1,1);break;
- }
- }
- else
-
- dat= IapRead(eepromid-1);
-
- return dat;
- }
- else
- {
- eepromid++;
- }
- if(eepromid>= 0xffd)
- {
- // eepromid=0x0ff5;
- IapErase(0x0000); //擦除扇区
- IapErase(0x0200); //擦除扇区
- IapErase(0x0400); //擦除扇区
- IapErase(0x0600); //擦除扇区
- IapErase(0x0800); //擦除扇区
- IapErase(0x0A00); //擦除扇区
- IapErase(0x0C00); //擦除扇区
- IapErase(0x0E00); //擦除扇区
- return 1;
- }
- }
- }
-
- void main()
- {
- led=0;
- sys_init();
- ledee();
- CCAP1H=dat;
-
- UartSend((eepromid>>8)&0xff);
- UartSend(eepromid&0xff);
- UartSend(dat&0xff);
- UartSend(CAP&0xff);
- UartSend(CCAP1H&0xff);
-
- while(1)
- {
- // if(flag) {
- // flag=0;
- // UartSend((eepromid>>8)&0xff);
- // UartSend(eepromid&0xff);
- // UartSend(dat&0xff);
- // }
-
- }
- }
-
- void sys_init(void)
- {
- P_SW2|=0x80;
-
- P3M0 = 0x0c; P3M1 = 0x00;
-
- ispcap=CAP;
-
-
- // P3M0 = 0x00; P3M1 = 0xfc; //除p3031全高阻 p32也高阻,加上拉
- // P3PU = 0x04; //p32也高阻,加上拉
- // P5M0 = 0x20; P5M1 = 0xff; //P55开漏, 其他高阻,
- // P5PU = 0x20; //P55上拉
- // P5M0 = 0x10; P5M1 = 0xff; //P54开漏, 其他高阻,
- // P5PU = 0x10; //P54内部上拉4k
-
- // IT0=1;EX0=1; //外部中断0 P32
- INTCLKO|=0x40; IP2=0x10; //EX4=1; 允许INT4外部中断 不停电下载
- EA=1; //总中断
- UartInit();
- Timer0_Init();
- PWM_init();
- }
复制代码
|