Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma SMALL
- #pragma REGISTERBANK(0)
- #pragma OPTIMIZE(1)
- #pragma CODE
- /* Standart include files */
- #include "source/include/reg552.h"
- #include "source/include/math.h"
- /* My types and definitions */
- #define BYTE unsigned char
- #define INT unsigned int
- #define NO_KEY 0xe0
- #define DOWN_KEY 0x60
- #define UP_KEY 0xa0
- #define F_KEY 0xc0
- #define F_DOWN_KEY 0x80
- #define ADR_WRITE 0xa0
- #define ADR_READ 0xa1
- #define A_Sw_time 0x0
- #define A_Level 0x01
- #define A_Kor 0x02
- #define A_Pocet 0x08
- #define A_TYPE 0x09
- #define A_Check 0x0a
- #define A_Urefh 0x0b
- #define A_Urefl 0x0d
- #define A_R 0x0f
- #define A_Typ_komp 0x1b
- #define A_Passwd 0x1c
- #define A_R_kor 0x1d
- sbit rele = P1^5;
- sbit Prud=P3^4;
- sbit Pt100=P1^3;
- code BYTE Channel[2][6]={0xe3,0xe7,0xeb,0xef,0xf3,0xf7,
- 0xf8,0xfc,0xfa,0xfe,0xf9,0xfd};
- BYTE p,i,s[5],timeout,Button,Y,Blik,Blik_no,Olds;
- idata BYTE pom,pom1,pom2,pom3,Pocet,Kanal,TYPE,Level,j,Sw_time,Fun,Typ_komp,Passwd;
- INT cas,X_16;
- idata INT UI,U,pomi,ii,Urefh,Urefl,R[6];
- idata float a,b,t,c,Suma;
- idata char kor[6];
- idata BYTE R_kor[6];
- /*kodovacia tabulka pre sedem segmentovky poradie zlava doprava*/
- code BYTE kod[5][13]={0x10,0x18,0x14,0x1c,0x12,0x1a,0x16,0x1e,0x11,0x19,0x1f,0x17,0x15,
- 0x30,0x38,0x34,0x3c,0x32,0x3a,0x36,0x3e,0x31,0x39,0x3f,0x37,0x35,
- 0xd0,0xd8,0xd4,0xdc,0xd2,0xda,0xd6,0xde,0xd1,0xd9,0xdf,0xd7,0xd5,
- 0x50,0x58,0x54,0x5c,0x52,0x5a,0x56,0x5e,0x51,0x59,0x5f,0x57,0x55,
- 0x90,0x98,0x94,0x9c,0x92,0x9a,0x96,0x9e,0x91,0x99,0x9f,0x97,0x95,
- };
- void write_eeprom(BYTE,BYTE);
- BYTE read_eeprom(BYTE);
- void delay(INT);
- void Zobraz_cislo(int,char);
- /*obnovuje zobrazovanie na sedemseg.*/
- void Display_recover(void) interrupt 3 using 1
- {P4=s[p]; p=(p+1)%5;
- if (Blik) {if(!Blik_no) {if(s[0]==0xff) s[0]=Olds;else s[0]=0xff;
- Blik_no=0x9f;
- }
- else Blik_no--;
- }
- TH1=0xf2; TL1=0x5f;
- return;
- }
- /*fcia na resetovanie WD*/
- void wdr(void)
- {PCON = PCON | 0x10; /*umozni load T3*/
- T3 = 0x1;
- }
- /*generovanie casovych intervalov*/
- void Timer0(void) interrupt 1 using 2
- {
- if (cas) cas--;else {timeout=1;ET0=0;}
- return;
- }
- /*nainicializuje premenne a timere*/
- void Init(void)
- {for(i=0;i<=4;i++) s[i]=0x1f;
- ADCON = 0x0;
- TMOD=0x12; /*timer 0 a timer 1 v rezime 2 a 1*/
- IP0=0x0;
- EA = 1; /*povolene prer. */
- TH1 = 0xf2; TL1 = 0x5f;
- ET1=1;/*povol. prer. od casovaca 1*/
- TR1=1; /*spustenie casovaca 1*/
- TR0=1;
- p=0;
- wdr();
- delay(100);
- if(read_eeprom(A_Check) != 0x0e)
- {delay(8);Sw_time=5;write_eeprom(A_Sw_time,5);
- delay(8);Pocet=1;write_eeprom(A_Pocet,2);
- delay(8);Level=100;write_eeprom(A_Level,100);
- wdr();
- for(pom3=0;pom3<=5;pom3++) {delay(8);
- kor[pom3]=0;
- write_eeprom(A_Kor+pom3,0);
- }
- for(pom3=0;pom3<=5;pom3++)
- {delay(8);
- R[pom3]=1500;
- write_eeprom(A_R+2*pom3,(BYTE) R[pom3] & 0x00ff);delay(8);
- write_eeprom(A_R+2*pom3+1,(BYTE) (R[pom3]>>8) & 0x00ff);
- delay(8);
- R_kor[pom3]=0;write_eeprom(A_R_kor + pom3,0);delay(8);
- wdr();
- }
- delay(8);TYPE=0;write_eeprom(A_TYPE,0);
- delay(8);write_eeprom(A_Check,0x0e);
- delay(8);
- wdr();
- Urefh = 2440; Urefl = 1724;
- write_eeprom(A_Urefh,(BYTE) Urefh & 0x00ff);delay(8);
- write_eeprom(A_Urefh+1,(BYTE) (Urefh>>8) & 0x00ff);delay(8);
- write_eeprom(A_Urefl,(BYTE) Urefl & 0x00ff);delay(8);
- write_eeprom(A_Urefl+1,(BYTE) (Urefl>>8) & 0x00ff);
- delay(8);
- write_eeprom(A_Typ_komp,0);delay(8);Typ_komp=0;
- wdr();
- write_eeprom(A_Passwd,0);delay(8);Passwd=0;
- wdr();
- Zobraz_cislo(read_eeprom(A_Check),0);
- delay(200);
- wdr();delay(400);
- wdr();
- } else
- {delay(8);Sw_time=read_eeprom(A_Sw_time);
- delay(2);Pocet=read_eeprom(A_Pocet);
- delay(2);Level=read_eeprom(A_Level);
- wdr();
- for(pom3=0;pom3<=5;pom3++) {delay(2);
- kor[pom3] = (char) read_eeprom(A_Kor+pom3);
- }
- for(pom3=0;pom3<=5;pom3++)
- {delay(2);
- R[pom3]=read_eeprom(A_R+2*pom3+1);R[pom3] = R[pom3] <<8; delay(2);
- R[pom3]=R[pom3] | read_eeprom(A_R+2*pom3);
- }
- delay(2);TYPE=read_eeprom(A_TYPE);delay(2);
- Urefh=read_eeprom(A_Urefh+1);Urefh = Urefh <<8; delay(2);
- Urefh=Urefh | read_eeprom(A_Urefh);
- Urefl=read_eeprom(A_Urefl+1);Urefl = Urefl <<8; delay(2);
- Urefl=Urefl | read_eeprom(A_Urefl);
- Typ_komp=read_eeprom(A_Typ_komp);delay(2);
- Passwd=read_eeprom(A_Passwd);delay(2);
- for(pom3=0;pom3<=5;pom3++)
- {R_kor[pom3]=read_eeprom(A_R_kor+pom3);
- wdr();
- }
- Zobraz_cislo(Pocet+1,0);
- wdr();
- delay(400);
- wdr();
- delay(400);
- wdr();
- }
- Kanal=0;
- rele=1;
- Fun=1;
- }
- /*spusti timer na cas t=c ms*/
- void Starttimer(INT c)
- {cas=c<<2;timeout=0;ET0=1;
- }
- /*oneskorenie dany pocet ms*/
- void delay(INT ms)
- {Starttimer(ms);
- while(!timeout);
- }
- /*zobrazenie cisla na stvoricu 7segmentoviek*/
- void Zobraz_cislo(int cis,char bodka)
- { pom1=0;
- for(pom=4;pom>=1;pom--)
- {if (cis) pom1=cis%10;
- s[pom]=kod[pom][pom1];
- cis=cis/10;
- if(!cis) pom1=10;
- }
- if(bodka) s[3]=s[3]&0xef;
- }
- /* --------------------------------------------------- */
- /* Rutina obsluhujuca klavesnicu
- * Test_Button - Test klavesnice,vysledok je v Button
- */
- char Test_Button()
- { if((P5 & 0xe0) == NO_KEY)
- {Button = NO_KEY;
- return(0);
- }
- if((P5 & 0xe0) != Button)
- {X_16 = 0;
- Y = P5 & 0xe0;
- do { if((P5 & 0xe0) != Y) {Button = NO_KEY;
- break;
- }
- else {X_16++;
- Button = Y;
- }
- } while(X_16 < 0x2FFF);
- /* while((P5 & 0xe0) != NO_KEY);*/
- }
- else { X_16 = 0;
- Y = P5 & 0xe0;
- do { if((P5 & 0xe0) != Y) {Button = NO_KEY;
- break;
- }
- else X_16++;
- } while(X_16 < 0x1300);
- /* while((P5 & 0xe0) != NO_KEY);*/
- }
- return(1);
- }
- char Test_Button1(int opak)
- { if((P5 & 0xe0) == NO_KEY)
- {Button = NO_KEY;
- return(0);
- }
- if((P5 & 0xe0) != Button)
- {X_16 = 0;
- Y = P5 & 0xe0;
- do { if((P5 & 0xe0) != Y) {Button = NO_KEY;
- break;
- }
- else {X_16++;
- Button = Y;
- }
- } while(X_16 < 0x2FFF);
- /* while((P5 & 0xe0) != NO_KEY);*/
- }
- else { X_16 = 0;
- Y = P5 & 0xe0;
- do { if((P5 & 0xe0) != Y) {Button = NO_KEY;
- break;
- }
- else X_16++;
- } while(X_16 < opak);
- /* while((P5 & 0xe0) != NO_KEY);*/
- }
- return(1);
- }
- int meraj(void)
- {
- ADCON = 0x08; /*zacne prevod*/
- while (!(ADCON&0x10)); /*caka na koniec*/
- ii=ADCH; ii=ii<<2; pom=((ADCON&0xc0)>>6);ii = ii+pom;
- return(ii);
- }
- /*zmeria hodnotu odporu na danom kanali*/
- int zmeraj(char ch,char typ)
- { P1=P1|0x1f;
- P1=P1&Channel[0][ch]; /*nastavi kanal*/
- for(X_16=0;X_16<10000;X_16++) wdr(); /*meria prud*/
- Suma=0;
- ET0=0; X_16=cas;
- j=0;Starttimer(20);
- do
- {
- Suma+=meraj();
- j++;
- }
- while(!timeout);
- if(X_16<100) X_16=1;else X_16=(X_16>>2) - 20;
- Starttimer(X_16);
- UI= (int) Suma/j;
- P1=P1|0x1f;
- P1=P1&Channel[1][ch]; /* nastavi meranie z Pt100*/
- for(X_16=0;X_16<10000;X_16++) wdr(); /*caka na ustalenie */
- wdr();
- Suma=0;
- ET0 = 0; X_16=cas;
- j=0;Starttimer(20);
- do
- {
- Suma+=meraj();
- j++;
- }
- while(!timeout);
- if(X_16<100) timeout=1;else X_16=(X_16>>2)-20;
- Starttimer(X_16);
- U= (int) Suma/j;
- Suma = (float) (Urefh-Urefl)/1000.0/1024.0;
- c=((float) U * Suma + Urefl/1000.0) / ((float) UI * Suma + Urefl/1000.0);
- /*uref+ = 3.432 V uref- = 1.745 V R=150ohm*/
- c=((c*R[ch]*10-2*R_kor[ch])/10000.0-1.0) * (-1.0);
- if(!typ) {a=-5.847e-7;b=3.9685e-3;}
- else{a=-5.802e-7;b=3.908e-3;}
- wdr();
- t=(-b+sqrt(b*b - 4*a*c))/(2*a);
- /* t=-1.0*c/b;*/
- t=t*10+kor[ch]; /* zmena na integer a pripocit. korekcie*/
- wdr();
- return((int) t);
- }
- void manual(void)
- {pom=0x01<<Kanal;s[0]=kod[0][Kanal+1];
- pomi = zmeraj(Kanal,TYPE&pom);
- do {wdr();
- pomi =( 3*pomi + zmeraj(Kanal,TYPE&pom)) >> 2;
- Zobraz_cislo(pomi,1);
- Test_Button();
- if (Button==F_KEY) {Fun=10;return;}
- if (Button==UP_KEY)
- {if(Kanal==Pocet) Kanal=0; else Kanal++;s[0]=kod[0][Kanal+1];
- pom=0x01<<Kanal;pomi = zmeraj(Kanal,TYPE&pom);
- }
- if (Button==DOWN_KEY)
- {if(!Kanal) Kanal=Pocet; else Kanal--;s[0]=kod[0][Kanal+1];
- pom=0x01<<Kanal;pomi = zmeraj(Kanal,TYPE&pom);
- }
- do {wdr();Test_Button();} while(Button!=NO_KEY);
- if(!Typ_komp) {if(((int) (pomi/10)) < Level) rele=0;else rele=1;}
- else {if(((int) (pomi/10)) > Level) rele=0;else rele=1;}
- }
- while(1);
- }
- /* automaticky rezim merania*/
- void automat(void)
- { pom3=0;
- do {s[0]=kod[0][Kanal+1];
- pom=0x01<<Kanal;pomi = zmeraj(Kanal,TYPE&pom);
- Starttimer(1000*Sw_time);
- do
- {wdr();
- pomi=(3*pomi + zmeraj(Kanal,TYPE&pom))>>2;
- Zobraz_cislo(pomi,1);
- Test_Button();
- if(Button==F_KEY) {Fun=10;return;}
- if(!Typ_komp)
- if(((int) (pomi/10))<Level)
- pom3=pom3 | (0x01<<Kanal);
- else pom3=(~(0x01<<Kanal)) & pom3;
- if(Typ_komp) if(((int) (pomi/10))>Level)
- pom3=pom3 | (0x01<<Kanal);
- else pom3=(~(0x01<<Kanal)) & pom3;
- } while(!timeout); /*stanovenu dobu meria jeden kanal*/
- if (Kanal==Pocet) Kanal=0; else Kanal++;
- if(!pom3) rele=1;else rele=0; /*ak nie je ani jedna pod Level tak vypne*/
- } while(1);
- }
- void dlyi2c(void)
- {for(i=0;i<6;i++);
- }
- void istart(void)
- {EA=0; /*zakaz prer.*/
- SCL = 0;
- SDA = 1;
- dlyi2c();
- SCL = 1;
- dlyi2c();
- SDA = 0; /*SDA H->L start podmienka*/
- dlyi2c();
- SCL = 0;
- dlyi2c();
- return;
- }
- /*;STOP-PODMIENKA: SCL: H, SDA: L->H*/
- void istop(void)
- { SDA = 0;
- dlyi2c();
- SCL = 1;
- dlyi2c();
- SDA = 1;
- dlyi2c();
- /*SCL = 0;*/
- dlyi2c();
- EA=1; /*povol. prer.*/
- return;
- /*; setb ex0*/
- }
- void i2cini(void)
- {istart();
- istop();
- return;
- }
- /* VYSLATIE BAJTU*/
- /*; VSTUP: ACC BAJT NA VYSLATIE
- ; VYSTUP: CY=0 VYSLATY O.K.
- ; CY=1 BAJT NEBOL POTVRDENY
- ; -------------------------*/
- char itxi2c(BYTE c)
- {
- for(j=0;j<=7;j++) /*8 bitov posle*/
- { SDA = 0x80 & c;
- dlyi2c();SCL = 1;
- dlyi2c();SCL = 0;
- c=c<<1;
- }
- SDA = 1; /*data na H aby slave mohol dat ACK*/
- dlyi2c();
- SCL = 1; dlyi2c();
- j = SDA;
- SCL = 0;
- dlyi2c();
- return(j); /*ak potvrdil tak vrati 0*/
- }
- /* PRIJEM 1 BAJTU
- VSTUP: ack=0 AK SA MA VYSLAT ACK
- ack=1 AK SA NEMA VYSLAT ACK, T.J. PRI POSLEDNOM BAJTE*/
- BYTE irxi2c(char ack)
- {SDA = 1;pom=0;
- for(j=0;j<=7;j++)
- {SCL = 1; dlyi2c();
- pom = ((pom<<1) | SDA);
- SCL = 0;
- dlyi2c();
- }
- SDA = ack;
- dlyi2c();
- SCL = 1;
- dlyi2c();
- SCL = 0;
- dlyi2c();
- return(pom);
- }
- void write_eeprom(BYTE adr,BYTE c)
- {istart();
- if(!itxi2c(ADR_WRITE))
- if(!itxi2c(adr))
- itxi2c(c);
- istop();
- EA=1;
- }
- BYTE read_eeprom(BYTE adr)
- {istart();
- if(!itxi2c(ADR_WRITE))
- if(!itxi2c(adr))
- {istart();
- if(!itxi2c(ADR_READ))
- pom=irxi2c(1);
- }
- istop();
- EA=1;return(pom);
- }
- void set_interval(void)
- {
- s[0]=kod[0][2];
- Blik=1;Olds=s[0];
- Zobraz_cislo((int) Sw_time,0);pom2=Sw_time;
- do {wdr();Test_Button();} while(Button!=NO_KEY);
- do{wdr(); if(Test_Button())
- {
- if(Button==UP_KEY) { if(pom2==0xff) pom2=2;else pom2++;}
- if(Button==DOWN_KEY) {if(pom2==2) pom2=0xff;else pom2--;}
- if(Button==F_KEY) break;
- Zobraz_cislo(pom2,0);
- }
- }
- while(1);
- Starttimer(1000);
- do {wdr();
- Test_Button();
- if(Button==NO_KEY) break;
- }
- while(!timeout);
- if (timeout) {wdr();
- s[1]=kod[1][10];s[2]=kod[2][10];s[3]=kod[3][10];s[4]=kod[4][10];
- delay(200); Zobraz_cislo(pom2,0);
- write_eeprom(A_Sw_time,pom2);
- wdr();
- delay(400);
- wdr();delay(400);wdr();
- s[1]=kod[1][10];s[2]=kod[2][10];s[3]=kod[3][10];s[4]=kod[4][10];
- delay(200);
- Sw_time=read_eeprom(A_Sw_time);
- Zobraz_cislo(Sw_time,0);
- do {wdr();Test_Button();} while (Button!=F_KEY);
- }
- Blik=0;s[0]=Olds;
- Fun=1;
- }
- void set_level(void)
- {
- s[0]=kod[0][3];
- Blik=1;Olds=s[0];
- Zobraz_cislo((int) 10*Level,1);pom2=Level;
- do {wdr();Test_Button();} while(Button!=NO_KEY);
- do {wdr();if(Test_Button())
- { if(Button==UP_KEY) { if(pom2==200) pom2=0;else pom2++;}
- if(Button==DOWN_KEY) {if(pom2==0) pom2=200;else pom2--;}
- if(Button==F_KEY) break;
- Zobraz_cislo((int) 10*pom2,1);
- }
- }
- while(1);
- Starttimer(1000);
- do {wdr();Test_Button();
- if(Button==NO_KEY) break;
- }
- while(!timeout);
- if (timeout) {wdr();s[1]=kod[1][10];s[2]=kod[2][10];s[3]=kod[3][10];s[4]=kod[4][10];
- delay(200); Zobraz_cislo(10*pom2,1);write_eeprom(A_Level,pom2);
- wdr();
- delay(400);
- wdr();
- delay(400);wdr();
- Level = read_eeprom(A_Level);
- s[1]=kod[1][10];s[2]=kod[2][10];s[3]=kod[3][10];s[4]=kod[4][10];
- delay(200);Zobraz_cislo(10*Level,1);
- do {wdr();Test_Button();} while (Button!=F_KEY);
- }
- Blik=0;s[0]=Olds;
- Fun=1;
- }
- void set_Urefh(void)
- {
- s[0]=kod[0][1];
- Blik=1;Olds=s[0];
- Zobraz_cislo( Urefh,0);ii=Urefh;
- do {wdr();Test_Button();} while(Button!=NO_KEY);
- do{wdr(); if(Test_Button())
- { if(Button==UP_KEY) { if(ii==4000) ii=1500;else ii++;}
- if(Button==DOWN_KEY) {if(ii==1500) ii=4000;else ii--;}
- if(Button==F_KEY) break;
- Zobraz_cislo(ii,0);
- }
- }
- while(1);
- Starttimer(1000);
- do {wdr();Test_Button();
- if(Button==NO_KEY) break;
- }
- while(!timeout);
- if (timeout) {wdr();s[1]=kod[1][10];s[2]=kod[2][10];s[3]=kod[3][10];s[4]=kod[4][10];
- delay(200); Zobraz_cislo(ii,0);
- write_eeprom(A_Urefh,(BYTE) ii & 0x00ff);delay(8);
- write_eeprom(A_Urefh+1,(BYTE) (ii>>8) & 0x00ff);
- delay(8);
- wdr();
- Urefh=read_eeprom(A_Urefh+1);Urefh = Urefh <<8; delay(2);
- Urefh=Urefh | read_eeprom(A_Urefh);
- delay(400);wdr();delay(400);wdr();
- s[1]=kod[1][10];s[2]=kod[2][10];s[3]=kod[3][10];s[4]=kod[4][10];
- delay(200);Zobraz_cislo(Urefh,0);
- do{wdr(); Test_Button();} while (Button!=F_KEY);
- }
- Blik=0;s[0]=Olds;
- Fun=1;
- }
- void set_Urefl(void)
- {
- s[0]=kod[0][2];
- Blik=1;Olds=s[0];
- Zobraz_cislo( Urefl,0);ii=Urefl;
- do {wdr();Test_Button();} while(Button!=NO_KEY);
- do{wdr(); if(Test_Button())
- { if(Button==UP_KEY) { if(ii==2000) ii=1000;else ii++;}
- if(Button==DOWN_KEY) {if(ii==1000) ii=2000;else ii--;}
- if(Button==F_KEY) break;
- Zobraz_cislo(ii,0);
- }
- }
- while(1);
- Starttimer(1000);
- do {wdr();Test_Button();
- if(Button==NO_KEY) break;
- }
- while(!timeout);
- if (timeout) {wdr();s[1]=kod[1][10];s[2]=kod[2][10];s[3]=kod[3][10];s[4]=kod[4][10];
- delay(200); Zobraz_cislo(ii,0);
- write_eeprom(A_Urefl,(BYTE) ii & 0x00ff);delay(8);
- write_eeprom(A_Urefl+1,(BYTE) (ii>>8) & 0x00ff);
- delay(8);
- wdr();
- Urefl=read_eeprom(A_Urefl+1);Urefl = Urefl <<8; delay(2);
- Urefl=Urefl | read_eeprom(A_Urefl);
- delay(400);wdr();delay(400);wdr();
- s[1]=kod[1][10];s[2]=kod[2][10];s[3]=kod[3][10];s[4]=kod[4][10];
- delay(200);Zobraz_cislo(Urefl,0);
- do{wdr(); Test_Button();} while (Button!=F_KEY);
- }
- Blik=0;s[0]=Olds;
- Fun=1;
- }
- void set_pocet(void)
- {
- s[0]=kod[0][5];
- Blik=1;Olds=s[0];
- Zobraz_cislo((int) Pocet+1,0);pom2=Pocet+1;
- do {wdr();Test_Button();} while(Button!=NO_KEY);
- do{wdr(); if(Test_Button())
- { if(Button==UP_KEY) { if(pom2==6) pom2=1;else pom2++;}
- if(Button==DOWN_KEY) {if(pom2==1) pom2=6;else pom2--;}
- if(Button==F_KEY) break;
- Zobraz_cislo(pom2,0);
- }
- }
- while(1);
- Starttimer(1000);
- do {wdr();Test_Button();
- if(Button==NO_KEY) break;
- }
- while(!timeout);
- if (timeout) {wdr();s[1]=kod[1][10];s[2]=kod[2][10];s[3]=kod[3][10];s[4]=kod[4][10];
- delay(200); Zobraz_cislo(pom2,0);write_eeprom(A_Pocet,pom2-1);
- delay(8);
- wdr();
- Pocet=read_eeprom(A_Pocet);
- delay(400);wdr();delay(400);wdr();
- s[1]=kod[1][10];s[2]=kod[2][10];s[3]=kod[3][10];s[4]=kod[4][10];
- delay(200);Zobraz_cislo(Pocet+1,0);
- do{wdr(); Test_Button();} while (Button!=F_KEY);
- }
- Blik=0;s[0]=Olds;
- Fun=1;
- }
- void set_typ(void)
- {
- /* zobrazi do funkcie 6
- a na display cislo kanala (1), pre ktory sa urcuje typ
- */
- s[0]=kod[0][6];
- Blik=1;Olds=s[0];
- pom2 = 0;
- Zobraz_cislo((int) pom2+1,0);
- do {wdr();Test_Button();} while(Button!=NO_KEY);
- do {wdr();if(Test_Button())
- { if(Button==UP_KEY) { if(pom2==Pocet) pom2=0;else pom2++;}
- if(Button==DOWN_KEY) {if(pom2==0) pom2=Pocet;else pom2--;}
- if(Button==F_KEY) break;
- Zobraz_cislo(pom2+1,0);
- }
- }
- while(1);
- /* nastavi sa do funkcie cislo nastaveneho kanalu
- a na display sa zobrazi typove cislo
- */
- Blik = 0;
- s[0]=kod[0][pom2+1];
- pom3 = 0x01 << pom2;
- pom2 = TYPE & pom3;
- if(!pom2)
- Zobraz_cislo(1391,0);
- else
- Zobraz_cislo(1385,0);
- do{ wdr();Test_Button();} while(Button!=NO_KEY);
- do {wdr();if(Test_Button())
- { if(Button==UP_KEY) {pom2 =~pom2 & pom3;}
- if(Button==DOWN_KEY) {pom2 = ~pom2 & pom3;}
- if(Button==F_KEY) break;
- if(!pom2)
- Zobraz_cislo(1391,0);
- else
- Zobraz_cislo(1385,0);
- }
- }
- while(1);
- pom2=pom2 & pom3;
- TYPE = TYPE & ~pom3; /* nuluje bit pom2 v TYPE */
- TYPE = TYPE | pom2;
- Starttimer(1000);
- do {wdr();Test_Button();
- if(Button==NO_KEY) break;
- }
- while(!timeout);
- if (timeout) {wdr();s[1]=kod[1][10];s[2]=kod[2][10];s[3]=kod[3][10];s[4]=kod[4][10];
- delay(200);
- Zobraz_cislo((int)TYPE,0);write_eeprom(A_TYPE,TYPE);
- wdr();delay(400);wdr();delay(400);
- TYPE = read_eeprom(A_TYPE);
- s[1]=kod[1][10];s[2]=kod[2][10];s[3]=kod[3][10];s[4]=kod[4][10];
- wdr();
- delay(200);
- Zobraz_cislo(TYPE,0);
- do{wdr(); Test_Button();} while (Button!=F_KEY);
- }
- Blik=0;s[0]=Olds;
- Fun=1;
- }
- void set_R(void)
- {
- /* zobrazi do funkcie 6
- a na display cislo kanala (1), pre ktory sa urcuje typ
- */
- s[0]=kod[0][3];
- Blik=1;Olds=s[0];
- pom2 = 0;
- Zobraz_cislo((int) pom2+1,0);
- do {wdr();Test_Button();} while(Button!=NO_KEY);
- do {wdr();if(Test_Button())
- { if(Button==UP_KEY) { if(pom2==Pocet) pom2=0;else pom2++;}
- if(Button==DOWN_KEY) {if(pom2==0) pom2=Pocet;else pom2--;}
- if(Button==F_KEY) break;
- Zobraz_cislo(pom2+1,0);
- }
- }
- while(1);
- Blik = 0;
- s[0]=kod[0][pom2+1];
- Zobraz_cislo(R[pom2],1);
- ii=R[pom2];
- do{ wdr();Test_Button();} while(Button!=NO_KEY);
- do {wdr();if(Test_Button())
- { if(Button==UP_KEY)
- {if (ii ==1850) ii=1100;else ii++;}
- if(Button==DOWN_KEY)
- {if (ii==1100) ii = 1850; else ii--;}
- if(Button==F_KEY) break;
- Zobraz_cislo(ii,1);
- }
- }
- while(1);
- Starttimer(1000);
- do {wdr();Test_Button();
- if(Button==NO_KEY) break;
- }
- while(!timeout);
- if (timeout) {wdr();s[1]=kod[1][10];s[2]=kod[2][10];s[3]=kod[3][10];s[4]=kod[4][10];
- delay(200);
- Zobraz_cislo(ii,1);
- write_eeprom(A_R+2*pom2,(BYTE) ii & 0x00ff);delay(8);
- write_eeprom(A_R+2*pom2+1,(BYTE) (ii>>8) & 0x00ff);
- delay(8);
- wdr();
- R[pom2]=read_eeprom(A_R+2*pom2+1);R[pom2] = R[pom2] <<8; delay(2);
- R[pom2]=R[pom2] | read_eeprom(A_R+2*pom2);
- delay(400);wdr();delay(400);wdr();
- s[1]=kod[1][10];s[2]=kod[2][10];s[3]=kod[3][10];s[4]=kod[4][10];
- delay(200);Zobraz_cislo(R[pom2],1);
- do{wdr(); Test_Button();} while (Button!=F_KEY);
- }
- Blik=0;s[0]=Olds;
- Fun=1;
- }
- void set_typ_komp(void)
- {
- s[0]=kod[0][7];
- Blik=1;Olds=s[0];
- Zobraz_cislo((int) Typ_komp,0);pom2=Typ_komp;
- do {wdr();Test_Button();} while(Button!=NO_KEY);
- do{wdr(); if(Test_Button())
- {
- if(Button==UP_KEY) { if(pom2==1) pom2=0;else pom2++;}
- if(Button==DOWN_KEY) {if(pom2==0) pom2=0x1;else pom2--;}
- if(Button==F_KEY) break;
- Zobraz_cislo(pom2,0);
- }
- }
- while(1);
- Starttimer(1000);
- do {wdr();
- Test_Button();
- if(Button==NO_KEY) break;
- }
- while(!timeout);
- if (timeout) {wdr();
- s[1]=kod[1][10];s[2]=kod[2][10];s[3]=kod[3][10];s[4]=kod[4][10];
- delay(200); Zobraz_cislo(pom2,0);
- write_eeprom(A_Typ_komp,pom2);
- wdr();
- delay(400);
- wdr();delay(400);wdr();
- s[1]=kod[1][10];s[2]=kod[2][10];s[3]=kod[3][10];s[4]=kod[4][10];
- delay(200);
- Typ_komp=read_eeprom(A_Typ_komp);
- Zobraz_cislo(Typ_komp,0);
- do {wdr();Test_Button();} while (Button!=F_KEY);
- }
- Blik=0;s[0]=Olds;
- Fun=1;
- }
- void show_passwd(void)
- {s[0]=kod[0][4];
- Blik=1;Olds=s[0];
- Zobraz_cislo(Passwd,0);pom2=0;
- do {wdr();Test_Button();} while(Button!=NO_KEY);
- do{wdr(); if(Test_Button())
- {
- if(Button==F_KEY) break;
- }
- }
- while(1);
- Blik=0;s[0]=Olds;
- Fun=1;
- }
- /*nastavenie noveho hesla*/
- void set_kod(void)
- { s[0]=kod[0][8];
- Blik=1;Olds=s[0];
- Zobraz_cislo(0,0);pom2=0;
- do {wdr();Test_Button();} while(Button!=NO_KEY);
- do{wdr(); if(Test_Button())
- {
- if(Button==UP_KEY) { if(pom2==0xff) pom2=0;else pom2++;}
- if(Button==DOWN_KEY) {if(pom2==0) pom2=0xff;else pom2--;}
- if(Button==F_KEY) break;
- Zobraz_cislo(pom2,0);
- }
- }
- while(1);
- if(pom2!=Passwd){ Blik=0;s[0]=Olds;Fun=1;return;}
- Blik=0;s[0]=Olds;s[0]=kod[0][12]; /*ide sa nastavit nove heslo*/
- Zobraz_cislo(Passwd,0);pom2=Passwd;
- do {wdr();Test_Button();} while(Button!=NO_KEY);
- do{wdr(); if(Test_Button())
- {
- if(Button==UP_KEY) { if(pom2==0xff) pom2=0;else pom2++;}
- if(Button==DOWN_KEY) {if(pom2==0) pom2=0xff;else pom2--;}
- if(Button==F_KEY) break;
- Zobraz_cislo(pom2,0);
- }
- }
- while(1);
- Starttimer(1000);
- do {wdr();
- Test_Button();
- if(Button==NO_KEY) break;
- }
- while(!timeout);
- if (timeout) {wdr();
- s[1]=kod[1][10];s[2]=kod[2][10];s[3]=kod[3][10];s[4]=kod[4][10];
- delay(200); Zobraz_cislo(pom2,0);
- write_eeprom(A_Passwd,pom2);
- wdr();
- delay(400);
- wdr();delay(400);wdr();
- s[1]=kod[1][10];s[2]=kod[2][10];s[3]=kod[3][10];s[4]=kod[4][10];
- delay(200);
- Passwd=read_eeprom(A_Passwd);
- Zobraz_cislo(Passwd,0);
- do {wdr();Test_Button();} while (Button!=F_KEY);
- }
- Blik=0;s[0]=Olds;
- Fun=1;
- }
- /*nastavenie odporov pre korekcie v PT 100 v stotinach Ohmu*/
- void set_odpory(void)
- {
- s[0]=kod[0][9];Blik=1;Olds=s[0];
- /*nastavenie hesla*/
- Zobraz_cislo(0,0);pom2=0;
- do {wdr();Test_Button();} while(Button!=NO_KEY);
- do
- {wdr();
- if(Test_Button())
- {if(Button==UP_KEY) { if(pom2==0xff) pom2=0;else pom2++;}
- if(Button==DOWN_KEY) {if(pom2==0) pom2=0xff;else pom2--;}
- if(Button==F_KEY) {Blik=0;break;}
- Zobraz_cislo(pom2,0);
- }
- }
- while(1);
- if(pom2!=Passwd){Blik=0;s[0]=Olds;Fun=1;return;}
- /*nastavenie kanala*/
- Kanal=0;
- Zobraz_cislo(Kanal+1,0);
- do {wdr();Test_Button();} while(Button!=NO_KEY);
- do
- {wdr();
- if(Test_Button())
- {if(Button==UP_KEY) { if(Kanal==Pocet) Kanal=0;else Kanal++;}
- if(Button==DOWN_KEY) {if(Kanal==0) Kanal=Pocet;else Kanal--;}
- if(Button==F_KEY) {Blik=0;break;}
- Zobraz_cislo(Kanal+1,0);
- }
- }
- while(1);
- /*nastavenie odporu pre dany kanal*/
- Blik = 0;
- s[0]=kod[0][Kanal+1];
- Zobraz_cislo(R_kor[Kanal],0);
- pom2=R_kor[Kanal];
- do{ wdr();Test_Button();} while(Button!=NO_KEY);
- do {wdr();if(Test_Button())
- { if(Button==UP_KEY)
- {if (pom2 ==200) pom2=0;else pom2++;}
- if(Button==DOWN_KEY)
- {if (pom2==0) pom2 = 200; else pom2--;}
- if(Button==F_KEY) break;
- Zobraz_cislo(pom2,0);
- }
- }
- while(1);
- Starttimer(1000);
- do {wdr();Test_Button();
- if(Button==NO_KEY) break;
- }
- while(!timeout);
- if (timeout) {wdr();s[1]=kod[1][10];s[2]=kod[2][10];s[3]=kod[3][10];s[4]=kod[4][10];
- delay(200); Zobraz_cislo(pom2,0);write_eeprom(A_R_kor+Kanal,pom2);
- delay(8);
- wdr();
- R_kor[Kanal]=read_eeprom(A_R_kor+Kanal);
- delay(400);wdr();delay(400);wdr();
- s[1]=kod[1][10];s[2]=kod[2][10];s[3]=kod[3][10];s[4]=kod[4][10];
- delay(200);Zobraz_cislo(R_kor[Kanal],0);
- do{wdr(); Test_Button();} while (Button!=F_KEY);
- }
- Fun=1;Kanal=0;
- }
- /*nastavovanie softwarovej korekcie teploty */
- void set_korekcie(void)
- {
- s[0]=kod[0][4];Blik=1;Olds=s[0];
- /*nastavenie hesla*/
- Zobraz_cislo(0,0);pom2=0;
- do {wdr();Test_Button();} while(Button!=NO_KEY);
- do
- {wdr();
- if(Test_Button())
- {if(Button==UP_KEY) { if(pom2==0xff) pom2=0;else pom2++;}
- if(Button==DOWN_KEY) {if(pom2==0) pom2=0xff;else pom2--;}
- if(Button==F_KEY) break;
- Zobraz_cislo(pom2,0);
- }
- }
- while(1);
- if(pom2!=Passwd){Blik=0;s[0]=Olds;Fun=1;return;}
- /*nastavenie kanala*/
- Kanal=0;
- do /*vracia sa do rezimu nastavenia kanala*/
- {
- Zobraz_cislo(Kanal+1,0);
- do {wdr();Test_Button();} while(Button!=NO_KEY);
- do
- {wdr();
- if(Test_Button())
- {if(Button==UP_KEY) { if(Kanal==Pocet+1) Kanal=0;else Kanal++;}
- if(Button==DOWN_KEY) {if(Kanal==0) Kanal=Pocet+1;else Kanal--;}
- if(Button==F_KEY) {Blik=0;break;}
- Zobraz_cislo(Kanal,0);
- }
- }
- while(1);
- if(Kanal==0) break; /*skonci ak sa nastavi 0-ty kanal*/
- Kanal--;
- Blik=0;s[0]=kod[0][11];
- do {wdr();Test_Button();} while(Button!=NO_KEY);
- do {wdr();
- pomi = zmeraj(Kanal,TYPE&pom)-kor[Kanal];
- Zobraz_cislo(pomi,1);
- Starttimer(50);
- do if(pom=Test_Button()) break;
- while(!timeout);
- if (Button!=NO_KEY) {break;}
- }
- while(1);
- U=pomi;
- do{wdr();
- if(Test_Button())
- {if(Button==UP_KEY) U++;
- if(Button==DOWN_KEY) U--;
- if(Button==F_KEY) break;
- Zobraz_cislo(U,1);
- }
- }
- while(1);
- Starttimer(1000);
- do {wdr();Test_Button();
- if(Button==NO_KEY) break;
- }
- while(!timeout);
- if (timeout)
- {wdr();s[1]=kod[1][10];s[2]=kod[2][10];s[3]=kod[3][10];s[4]=kod[4][10];
- delay(200); Zobraz_cislo(U,1);
- write_eeprom(A_Kor+Kanal,(char) (U-pomi));
- wdr();
- delay(400);wdr();
- delay(400);wdr();
- s[1]=kod[1][10];s[2]=kod[2][10];s[3]=kod[3][10];s[4]=kod[4][10];
- delay(200);wdr();
- kor[Kanal]=read_eeprom(A_Kor+Kanal);
- Zobraz_cislo(kor[Kanal]+pomi,1);
- do {wdr();
- Test_Button();
- }
- while (Button!=F_KEY);
- }
- s[0]=kod[0][4];Blik=1;
- }
- while(1); /*navrat do nastavenia kanala*/
- Fun=1;Kanal=0;
- }
- void main(void)
- {
- Init();
- Test_Button();
- if(Button==F_KEY)
- do
- {do {wdr();Test_Button();} while(Button!=NO_KEY);
- s[0]=kod[0][10];Fun=1;
- Zobraz_cislo(Fun,0);
- do{ wdr();Test_Button();} while(Button!=NO_KEY);
- do{wdr(); if(Test_Button())
- { if(Button==UP_KEY) { if(Fun==4) Fun=0;else Fun++;}
- if(Button==DOWN_KEY) {if(Fun==0) Fun=4;else Fun--;}
- if(Button==F_KEY) break;
- Zobraz_cislo(Fun,0);
- }
- }
- while(1);
- s[0]=kod[0][Fun];
- if(Fun==1) set_Urefh();
- if(Fun==2) set_Urefl();
- if(Fun==3) set_R();
- if(Fun==4) show_passwd();
- if(Fun==0) break;
- Fun=1;
- }
- while(1);
- Fun=1;
- while(1)
- { wdr();
- if(Fun==0) manual();
- if(Fun==1) automat();
- if(Fun==2) set_interval();
- if(Fun==3) set_level();
- if(Fun==4) set_korekcie();
- if(Fun==5) set_pocet();
- if(Fun==6) set_typ();
- if(Fun==7) set_typ_komp();
- if(Fun==8) set_kod();
- if(Fun==9) set_odpory();
- Kanal=0;
- if(Fun==10)
- {s[0]=kod[0][10];Fun=0;
- Zobraz_cislo(Fun,0);
- do{ wdr();Test_Button();} while(Button!=NO_KEY);
- do{wdr(); if(Test_Button1(0x2bff))
- { if(Button==UP_KEY) { if(Fun==9) Fun=0;else Fun++;}
- if(Button==DOWN_KEY) {if(Fun==0) Fun=9;else Fun--;}
- if(Button==F_KEY) break;
- Zobraz_cislo(Fun,0);
- }
- }
- while(1);
- if (Fun==1) s[0]=kod[0][Fun+1];else s[0]=kod[0][Fun];
- do{ wdr();Test_Button();} while(Button!=NO_KEY);
- }
- } /*hlavny cyklus*/
- }/* koniec main*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement