📄 control.i
字号:
#line 1 "control.c" /0 #line 1 "D:\KEIL\C51\INC\ABSACC.H" /0 #line 24 "D:\KEIL\C51\INC\ABSACC.H" /1 #line 29 "D:\KEIL\C51\INC\ABSACC.H" /0 #line 4 "control.c" /0 #line 1 "D:\KEIL\C51\INC\STDLIB.H" /0 typedef unsigned int size_t; typedef char wchar_t; #pragma SAVE #pragma REGPARMS extern int abs (int val); extern long labs (long val); extern float atof (char *s1); extern long atol (char *s1); extern int atoi (char *s1); extern int rand (); extern void srand (int); extern float strtod (char *, char **); extern long strtol (char *, char **, unsigned char); extern unsigned long strtoul (char *, char **, unsigned char); extern int init_mempool (void xdata *p, unsigned int size); extern void xdata *malloc (unsigned int size); extern void free (void xdata *p); extern void xdata *realloc (void xdata *p, unsigned int size); extern void xdata *calloc (unsigned int size, unsigned int len); #pragma RESTORE #line 5 "control.c" /0 #line 1 "D:\KEIL\C51\INC\ATMEL\AT89X52.H" /0 sfr P0 = 0x80; sfr SP = 0x81; sfr DPL = 0x82; sfr DPH = 0x83; sfr PCON = 0x87; sfr TCON = 0x88; sfr TMOD = 0x89; sfr TL0 = 0x8A; sfr TL1 = 0x8B; sfr TH0 = 0x8C; sfr TH1 = 0x8D; sfr P1 = 0x90; sfr SCON = 0x98; sfr SBUF = 0x99; sfr P2 = 0xA0; sfr IE = 0xA8; sfr P3 = 0xB0; sfr IP = 0xB8; sfr T2CON = 0xC8; sfr T2MOD = 0xC9; sfr RCAP2L = 0xCA; sfr RCAP2H = 0xCB; sfr TL2 = 0xCC; sfr TH2 = 0xCD; sfr PSW = 0xD0; sfr ACC = 0xE0; sfr B = 0xF0; sbit P0_0 = 0x80; sbit P0_1 = 0x81; sbit P0_2 = 0x82; sbit P0_3 = 0x83; sbit P0_4 = 0x84; sbit P0_5 = 0x85; sbit P0_6 = 0x86; sbit P0_7 = 0x87; sbit IT0 = 0x88; sbit IE0 = 0x89; sbit IT1 = 0x8A; sbit IE1 = 0x8B; sbit TR0 = 0x8C; sbit TF0 = 0x8D; sbit TR1 = 0x8E; sbit TF1 = 0x8F; sbit P1_0 = 0x90; sbit P1_1 = 0x91; sbit P1_2 = 0x92; sbit P1_3 = 0x93; sbit P1_4 = 0x94; sbit P1_5 = 0x95; sbit P1_6 = 0x96; sbit P1_7 = 0x97; sbit T2 = 0x90; sbit T2EX = 0x91; sbit RI = 0x98; sbit TI = 0x99; sbit RB8 = 0x9A; sbit TB8 = 0x9B; sbit REN = 0x9C; sbit SM2 = 0x9D; sbit SM1 = 0x9E; sbit SM0 = 0x9F; sbit P2_0 = 0xA0; sbit P2_1 = 0xA1; sbit P2_2 = 0xA2; sbit P2_3 = 0xA3; sbit P2_4 = 0xA4; sbit P2_5 = 0xA5; sbit P2_6 = 0xA6; sbit P2_7 = 0xA7; sbit EX0 = 0xA8; sbit ET0 = 0xA9; sbit EX1 = 0xAA; sbit ET1 = 0xAB; sbit ES = 0xAC; sbit ET2 = 0xAD; sbit EA = 0xAF; sbit P3_0 = 0xB0; sbit P3_1 = 0xB1; sbit P3_2 = 0xB2; sbit P3_3 = 0xB3; sbit P3_4 = 0xB4; sbit P3_5 = 0xB5; sbit P3_6 = 0xB6; sbit P3_7 = 0xB7; sbit RXD = 0xB0; sbit TXD = 0xB1; sbit INT0 = 0xB2; sbit INT1 = 0xB3; sbit T0 = 0xB4; sbit T1 = 0xB5; sbit WR = 0xB6; sbit RD = 0xB7; sbit PX0 = 0xB8; sbit PT0 = 0xB9; sbit PX1 = 0xBA; sbit PT1 = 0xBB; sbit PS = 0xBC; sbit PT2 = 0xBD; sbit CP_RL2= 0xC8; sbit C_T2 = 0xC9; sbit TR2 = 0xCA; sbit EXEN2= 0xCB; sbit TCLK = 0xCC; sbit RCLK = 0xCD; sbit EXF2 = 0xCE; sbit TF2 = 0xCF; sbit P = 0xD0; sbit FL = 0xD1; sbit OV = 0xD2; sbit RS0 = 0xD3; sbit RS1 = 0xD4; sbit F0 = 0xD5; sbit AC = 0xD6; sbit CY = 0xD7; sbit BUSYFLAG = ACC^7; #line 6 "control.c" /0 #line 1 "D:\KEIL\C51\INC\INTRINS.H" /0 extern void _nop_ (void); extern bit _testbit_ (bit); extern unsigned char _cror_ (unsigned char, unsigned char); extern unsigned int _iror_ (unsigned int, unsigned char); extern unsigned long _lror_ (unsigned long, unsigned char); extern unsigned char _crol_ (unsigned char, unsigned char); extern unsigned int _irol_ (unsigned int, unsigned char); extern unsigned long _lrol_ (unsigned long, unsigned char); extern unsigned char _chkfloat_(float); #line 7 "control.c" /0 #line 1 "charger.h" /0 typedef union { unsigned char b[2]; unsigned int i; }word; struct workdata { unsigned char date[3]; unsigned int work[18]; struct workdata xdata *next; struct workdata xdata *up; }; typedef struct workdata daydata; typedef daydata xdata *link ; struct rate { unsigned int volatage; unsigned int temperature; unsigned int discharge; unsigned int charge; }; extern void getadin(void); extern void account(void); extern void save(void); extern void control(void); extern void overloadctl(void); extern void init_history_buffer(void); extern void init_rate_workpoint(unsigned char n); extern unsigned char umod(unsigned int v,unsigned int c); extern void delay(unsigned int i); extern void firstscr(void); extern void menu(void); extern void keyrst(unsigned char m); extern unsigned int tlc1543(unsigned char port); extern void setup12887(unsigned char *p); extern void read12887(unsigned char *p); extern void start12887(void); void text(unsigned char sta,unsigned char *string); void WD_LCD(unsigned char ch); void WC_LCD(unsigned char comand); void clear(void); extern unsigned int xdata adin[10]; extern daydata xdata today; extern unsigned int xdata sys[13]; extern struct rate xdata crate; extern char xdata just; extern unsigned int xdata adtemp; extern char idata controlstate; extern unsigned int idata tlong; extern unsigned int idata t50ms; extern code unsigned char *adinhz[10]; extern code unsigned char *hishz[18]; extern code unsigned char *sethz[13]; extern code unsigned int stab[5][4]; extern code unsigned int dtab[4][7]; extern code unsigned char *unit[4]; extern code unsigned char uadin[9]; extern code unsigned char uhis[18]; extern code unsigned char uset[12]; extern unsigned int xdata password; #line 9 "control.c" /0 extern daydata xdata looplink[0x80]; void init_history_buffer(void) { unsigned char data i; for(i=0;i<0x80-1;i++) { looplink[i].next=&looplink[i+1]; looplink[i+1].up=&looplink[i]; P1_6=!P1_6;; } looplink[0x80-1].next=&looplink[0]; looplink[0].up=&looplink[0x80-1]; today.next=&looplink[0]; today.up=&looplink[0x80-1]; today.up->date[0]=0; today.up->date[1]=0; today.up->date[2]=0; P1_6=!P1_6;; } void init_rate_workpoint(unsigned char n) { unsigned char data i; if(n<4) for(i=0;i<12;i++) { if(i<7) { sys[i]=dtab[n][i]; } else { if(i==11) sys[12]=stab[4][n]; else sys[i]=stab[i-7][n]; } } i=45; crate.temperature = i*100; crate.volatage = i*sys[12]; crate.discharge = i*sys[8]/4; crate.charge = i*sys[9]/4; if(sys[6]>sys[8])sys[6]=sys[8]; P1_6=!P1_6;; } void getadin(void) { unsigned char data i; unsigned long data tmp; unsigned long xdata *s; unsigned int xdata *t; for(i=0;i<10;i++) if(i!=7) { unsigned char data c; tmp=0; for(c=0;c<10;c++)tmp+=tlc1543(i); P1_6=!P1_6;; tmp /= 10; if(i<6) { tmp *= crate.charge; tmp /= 4096; adin[i]=(unsigned int)tmp; } if(i==6) { tmp *= crate.discharge; tmp /= 4096; adin[6]=(unsigned int)tmp; } if(i==8) { tmp *= crate.temperature; tmp /= 4096; adin[7]=(unsigned int)tmp; adtemp=(unsigned int)tmp; if(sys[11]<3730&&sys[11]>1730) if(just>-10&&just<10)adin[7]+=just; } if(i==9) { tmp *= crate.volatage; tmp /= 4096; adin[8]=(unsigned int)tmp; } } for(i=0;i<9;i++) { if(i>6) if(adin[i]<today.work[2*i+1]||today.work[2*i+1]==0) today.work[i*2+1]=adin[i]; if(adin[i]>today.work[2*i])today.work[i*2]=adin[i]; } s=0xDB28; for(i=0;i<7;i++)*s+++=(unsigned long)adin[i]; t=0xDB24; (*t)++; P1_6=!P1_6;; } unsigned char umod(unsigned int v,unsigned int c) { return c=v-(v/c)*c; } void account(void) { static bit bdata cc; char data i; if(umod(tlong,60)>50) { if(!cc) { unsigned long xdata *s; unsigned long xdata *Ah; unsigned int xdata *t; t=0xDB24; s=0xDB28; Ah=0xDB44; for(i=0;i<9;i++) if(i<7) { unsigned long data ta; if(*t!=0)*Ah+=*s/(unsigned long)(*t); else return; ta=(unsigned long)(*Ah/60); today.work[i*2+1]=(unsigned int)ta; *s++=0; Ah++; P1_6=!P1_6;; } cc=1; *t=0; } } else cc=0; } bit bdata boostflag; #pragma DISABLE void control(void) { static bit bdata motoropen,exe,ffo; static unsigned char idata switchchar=0xff; unsigned int data ofv,cfv; unsigned char data fk; if(umod(t50ms,40)>20) {if(exe)return;} else {exe=0; return;} exe=1; if(adin[7]>2980) { cfv=sys[2]*10-((adin[7]-2980)*sys[10])/1000; ofv=sys[3]*10-((adin[7]-2980)*sys[10])/1000; } else { cfv=sys[2]*10+((2980-adin[7])*sys[10])/1000; ofv=sys[3]*10+((2980-adin[7])*sys[10])/1000; } if(controlstate==0x17)fk=0; if(adin[8] > sys[0]*10) { boostflag=0; controlstate=0x15; if(switchchar!=0xff) { fk=1; while(switchchar==(switchchar|fk))fk<<=1; switchchar|=fk; switchchar|=0xC0; }else controlstate=0x17; } else { if(boostflag) { controlstate=0x18; switchchar|=0xC0; if((switchchar&0x3F) !=0x00) { fk=1; while(switchchar==(switchchar&~fk))fk<<=1; switchchar&=~fk; } if(adin[8]< sys[4]*10) { motoropen=1; if(adin[8]<sys[5]*10) {controlstate=0x2; switchchar&=0x7F;} } } else { if(adin[8] >cfv) { ffo=0; motoropen=0; controlstate=0x17; if(switchchar!=0xff) { fk=1; controlstate=0x12; while(switchchar==(switchchar|fk))fk<<=1; switchchar|=fk; switchchar|=0xC0; } } else { if(switchchar==0xff)controlstate=0x17; else controlstate=0x12; if(ffo) if((switchchar&0x3F) !=0x00) { fk=1; while(switchchar==(switchchar&~fk))fk<<=1; switchchar&=~fk; switchchar|=0xC0; } if(adin[8] < ofv) { ffo=1; if(adin[8] < sys[1]*10) { boostflag=1; controlstate=0x18; } } } } } if(motoropen) if(adin[8] <cfv) { if(umod(t50ms,15)<7)controlstate=0xf; switchchar &=0xBF;} else {switchchar |=0x40;motoropen=0;} ((unsigned char volatile xdata *) 0)[0x6001]=switchchar; P1_6=!P1_6;; } void overloadctl(void) { if(adin[6]>(sys[6]*10)) { if(P3_3) {controlstate=0x13;_nop_();P3_3=0;} else P3_3=1; }else P3_3=1; } void save(void) { unsigned char data i; static unsigned char idata day[3]; link p; if(day[2]==0||day[2]>31) { unsigned char xdata *s; s=0xDB90; read12887(s); day[0]=s[0]; day[1]=s[1]; day[2]=s[2]; } if(today.date[2]!=day[2]) { unsigned long xdata *Ah; Ah=0xDB44; p=today.next; if(today.work[16]!=0) { for(i=0;i<18;i++) { if(i<3)p->date[i]=today.date[i]; p->work[i]=today.work[i]; today.work[i]=0; } p->date[0]=day[0]; p->date[1]=day[1]; p->date[2]=day[2]; today.next=p->next; today.up=p; today.next->date[0]=0; today.next->date[1]=0; today.next->date[2]=0; } for(i=0;i<7;i++)*Ah++=0; day[0]=0; day[1]=0; day[2]=0; } P1_6=!P1_6;; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -