You are on page 1of 16

#termasuk

#termasuk
#sertakan "DataEEPROM.h" _FOSC(CSW_ON_FSCM_OFF & XT_PLL16);
_FWDT(WDT_OFF);
_FBORPOR(MCLR_EN & PBOR_ON & BORV_42 & RST_PWMPIN & PWMxH_ACT_HI & PWMxL_ACT_HI);
_FGS (CODE_PROT_ON);

#menentukan kesalahan LATEbits.LATE8


#definisikan bel LATEbits.LATE4
#menentukan perubahan LATDbits.LATD1

#define stbyinv 1
#mendefinisikan upmode 2
#define invmode 3
#define tombol mode 4
#define upkey 5
#define downkey 6
#define stbyups 7
#menentukan panas kipas 640

/////////////////////////////////////////////////////////////////////////////////// ////////
const ditandatangani int
tabel_sinus[91]={0,174,348,523,697,871,1045,1218,1391,1564,1736,1908,2079,2249,2419,
2588,2756,2923,3090,

3255,3420,3583,3746,3907,4067,4226,4383,4539,4694,4848,5000,5150,5299,5446,

5591,5735,5877,6018,6156,6293,6427,6560,6691,6819,6946,7071,7193,7313,7431,7547,766 0,7771,

7880,7986,8090,8191,8290,8386,8480,8571,8660,8746,8829,8910,8987,9063,9135,9205,927 1,9335,

9396,9455,9510,9563,9612,9659,9702,9743,9781,9616,9848,9876,9902,9925,9945,9961,997 5,9986,
9993,10000,10000};

masuk pabrik int[16]={0,0,100,350,220,80,265,180,270,100,142,108,100,115,5000};


pengaturan int yang ditandatangani[16];
char arr[4];

struct
{
unsigned int frstdisp:1;
penyiapan int yang tidak ditandatangani:1;
unsigned int gravity:1;
unsigned int onflag:1;
unsigned int vcorrect:1;
unsigned int chrcorrect:1;
unsigned int chon:1;
unsigned int swon:1;
unsigned int nofeed:1;
tidak int perjalanan
ditandatan
tidak int singkat:1;
seng gagal:1;
tidak int mainsok:1;
tidak int lbperingatkan:1;
tidak int olwarn:1;
tidak int olcut:1;
tidak int lbcut:1;
tidak int kesalahan:1;
tidak int memuat:1;
tidak int msgrtn:1;
tidak int chrmsgrtn:1;
tidak int sulung:1;
}ditandatan
bendera;

int chshoot;
int chshootdly=0;
int berkedip=0;
int *menyesuaikan;
int *ptr;
int adj;
int *nilai;
int chadj;
int juara1;
tertanda int duty_cycle_1;
tertanda int p=0,bendera=1,naik=1;

tertanda int pr=0,kflag=1,naik1=1;


int amplitudo=0;

int pb,qb,cth,ctl;
////////////////////////////////
tidak int dengan tenang;
ditandatan
tidak int penundaan
tidak int lcdtmr;
tidak int menangkal;
tidak int penundaan
tidak int jumlah buzz;
tidak int penundaan buzz;
tidak int buzzoftme;
tidak int buzzontme;
tidak int kegagalan
ditandatan int penundaan
tidak puncak; lama;
tidak int rangkap tiga;
tidak int bulat;
tidak int chrdly;
tidak int perlahan;
tidak int fbdly;
tidak int ctfaildly;
tidak int dengan cepat;
tidak int lbdly;
tidak int secara tiba-tiba;
tidak int dengan kunci;
tidak int msgrtndly;
tidak int secara gravitasi;
tidak int jelas;
tidak int berkedip;
tidak int mengejutkan;
ditandatan
//////////////////////////////// endtimer panjang yang tidak ditandatangani;
tidak panja kontrol rata-
ditandatan panja
tidak ng rata;
mainsavg;
tidak panja rata-rata;
tidak panja wattsavg;
tidak panja batavg;
tidak panja keyavg;
tidak panja rata-rata
tidak int mode rata-
ditandatan rata;
/////////////////////////////////
tidak int boneka;
ditandatan int kalah boneka;
tidak
tidak int ctdummy;
tidak int kunci;
tidak int nilai ntc;
tidak int batt;
tidak int isi ulang baterai;
//////////////////////////////////
tidak int tampilan beban;
ditandatan int acoutdisp;
tidak
tidak int layar utama;
tidak int battdisp;
tidak int battvolt;
tidak int mulai ulang bat;
tidak int persen beban;
tidak int juara;
tidak int chdisp;
tidak int tegangan listrik;
tidak int akun;
tidak int nilai kunci;
tidak int kunci;
tidak int panas;
tidak int pos;
tidak int berbuat salah;
tidak int ceri;
tidak int wali;
ditandatan
///////////////////////////////////
ditandatangani angkat bicara;
int
ditandatangani berbicara;
ditandatangani ctpeak;
ditandatangani batclb;
ditandatangani kabel utama;
tidak int chrclb;
ditandatan int loadclb;
tidak
tidak int pdctemp;
////////////////////////////////////
tidak int jalan buntu;
ditandatan int kontrol volt;
tidak
tidak int setvout;
tidak int setchramp;
tidak int setoverload;
tidak int pengaturan;
ditandatan int setuplo;
tidak
tidak int setinvhi;
tidak int setinvlo;
tidak int setbatful;
tidak int setbatwrn;
tidak int setbatlo;
tidak int setbatre;
ditandatan
default int yang tidak ditandatangani;
//////////////////////////////////// unsigned int x,y,u;
Kapak panjang tak bertanda tangan,bx;
unsigned int aclo;
int achi yang tidak ditandatangani;
seng int yang tidak ditandatangani;
/////////////////////////////////////
batal InitADC1();
extern void Eeprom_WriteWord(unsigned short pushAddressOffset, unsigned short value);
extern unsigned short Eeprom_ReadWord(unsigned short pushAddressOffset);
void delay_ms(unsigned int gs);
batal delay_us(unsigned int gs);

///////////////////////////////////////////////
const arang str0[17]= "MENU KALIBRASI";
const arang str20[17]= "BATERAI V: V";
const arang str21[17]= "MODE INVERTER
const arang str22[17]= " MODE UPS ON ";
const arang str23[17]= "SBY MATIKAN";
const arang str24[17]= "SBY AKTIFKAN";
const arang str25[17]= "VOLT UTAMA: V";
const arang str26[17]= "INVERTER V: V";
const arang str27[17]= "JUMLAH BEBAN: %";
///////////////////////////////////////// //const char str28[17] ="
PERJALANAN: KESALAHAN CT ";
const arang str29[17]= "PERJALANAN: BATERAI
const arang str30[17]= " PERJALANAN:
const arang str31[17]= "KESALAHAN CKT
const arang str32[17]= "PERINGATAN: BATERAI
const arang str33[17]= " PERINGATAN:
const arang str34[17]= " PERJALANAN:
const arang str35[17]= "PERJALANAN:
const arang str36[17]= "HARGA AC: A";
const arang str38[17]= " GELOMBANG DSP
SINEWAVE ";
#termasuk "lcdsoft.h"
#include "functions.h" void clear_flag();
perjalanan batal (int s);
int dapatkannilai(int ch);
batal chargeron();
membatalkan chroff();
batal invon();
membatalkan invoff();
batal menstabilkan();
batal Modulasi();
batal find_key();
int findpeak(int ct);
batal mains_stat_check();
batal find_mainsvolt();
batal find_batvolt();
batal find_champs();
batal find_upsvolt();
batal find_load();
batalkan overload_check();
batal lobat_check();

batal chr_stabilize();
////////////////////////////////////
batal feed_buzz(int a,int b,int c)
{
penundaan dengung=0;
buzzoftme=b;
buzzontme=a;
jumlah suara=c;
}
//////////////////////////////////////////////////////
batal __attribute__((__interrupt__,no_auto_psv)) _FLTAInterrupt(batal) {

_FLTAIF = 0;
}
//////////////////////////////////////////////////////////
batal __atribut__((__interrupt__, __auto_psv__)) _T1Interrupt(batal) {
_T1IF = 0; // Hapus bendera interupsi
jika(PORTEbits.RE8==0)
{
terang-terangan++;
jika (fltdly> 3000)
{
flags.olcut=1;
__asm__ volatile ("setel ulang");
}
}
penghitung++;
apeak=getvalue(0); //4,4 kita
indummy=acpeak;
acpeak=indummy-508;
jika(acpeak<0)
{
acpeak=508-indummy;
jika(!flags.onflag)
{
naik=0;
bendera=0;
}
}

mainsavg+=acpeak;

jika (flags.setup)
{
OVDCON= 0X0000;
ubah=0;
bel = 0;
}

jika(!flags.setup)
{
if((indummy<600)&&(indummy>400)&&(flags.swon))
{
jika(kegagalan puncak<150)
{
peakfail++;
}
jika(kegagalan puncak==149)
{
jika (flags.vcorrect)
{
invon(150);
}
}
}
kalau tidak
{
kegagalan puncak=0;
}

jika(flags.onflag)
{

Memodulasi(); //4,4 kita


upspeak=getvalue(1); //4,4 kita
outdummy=uppeak;
upspeak=outdummy-508;
jika(uppeak<0)
upspeak=508-outdummy;
outavg+=uppeak;
jika(uppeak<150)
{
fbdly++;
jika (fbdly>30000)
{
flags.fault=1;
perjalanan(5);
}
}
kalau tidak
fbdly=0;
}
kalau tidak
{
naik=1;
bendera=1;
bebanpersen=0;
akun=0;
}

ctpeak=getvalue(2);

jika(flags.onflag)
{
jika((ctpeak>750)||(ctpeak<250))
{
mati sebentar++;
jika (mematikan> 1500)
{
deadshort=1;
OVDCON= 0X0000;
perjalanan(1);
}
}
}

kalau tidak
{

jika(flags.chon==1)
{
jika((ctpeak<508)||(ctpeak>512))
ctfaildly=0;
kalau tidak
{
ctfaildly++;
jika(ctfaildly>10000)
{
chroff();
}
}
}

jika(ctpeak>506)
{
pb=ctpeak-506;
jika(cth<pb) cth=pb;
}
jika(ctpeak<506)
{
qb=506-ctpeak;
jika(ctl<qb)
ctl=qb;
}
wattsavg+=cth+ctl;
ctl=cth=0;
panas=dapatkannilai(3);
}

batavg+=getvalue(5);
lcdtmr++;
jika(penghitung==359)/////////////////////// 20 mili detik
{
mainsvolt=__builtin_divud(mainsavg,288)+mainsclb; //2,2 mikrodetik
mainsavg=0;
jika(volt listrik<90)
{
tegangan listrik = 0;
layar utama=0;
}
kalau tidak
{
if((indummy>180)&&(indummy<900))
{
jika(tampilan utama==0)
{
mainsdisp=mainsvolt-80;

}
jika(mainsdisp<mainsvolt-2)
{
layar utama++;
}
if(mainsdisp>mainsvolt+2)
{
layar utama--;
}
}
}

find_batvolt();

keyavg+=getvalue(4);
keydly++;
jika(keydly==10)
find_key();

jika(!flags.setup)
{
mains_stat_check();
jika(flags.onflag==1)
{
acout=__builtin_divud(outavg,285);
di luar rata-rata=0;
jika(acoutdisp<acout-2)
acoutdisp++;
jika(acoutdisp>acout+2)
acoutdisp--;

find_load();
overload_check();
lobat_check();
}
}
wattsavg=0;

jika(buzzcount>0)
{
buzzdelay++;
jika(buzzdelay<=buzzontme)
bel=1;
kalau tidak
{
bel = 0;
jika(buzzdelay>=buzzoftme)
{
penundaan dengung=0;
buzzcount--;
jelas=0;
}
}
}
kalau tidak
{
FLTACON=0x0001;
IEC2bits.FLTAIE = 1;
jika(bulat>0)
{
if((!flags.onflag)&&(flags.swon)&&(round<4))
{
jika(volt listrik<110)
{
clear_flag();
invon(0);
}
}
}
jika(bulat==4)
ubah=0;
}

jika(!flags.setup)
{

if((resumedelay==200)||(flags.mainsok==1))
{
LCD_DB6=1;
jika(flags.swon==1)
{
berkedip++;
jika (berkedip <30)
LCD_DB7=1;
kalau tidak
LCD_DB7=0;
jika (berkedip> 60)
berkedip=0;
}
kalau tidak
LCD_DB7=0;
}
kalau tidak
{
LCD_DB6=0;
jika(flags.onflag==1)
LCD_DB7=1;
kalau tidak
LCD_DB7=0;
}
}

penghitung=0;
if((key==modekey)&&(flags.setup==0)) {
menudelay++;
jika(menudelay>124)
flags.setup=1;
}
kalau tidak
penundaan menu=0;

jika(flags.setup==1)
{
setdly++;
jika (tetap> 3000)
__asm__ volatile ("setel ulang"); }

}
cherr=volt listrik;
}

//////////////////////////////////////
batal init_PWM()
{
PTCON= 0XE003;
PTM = 0x0000;
PTPER = PDC1=PDC2= 1230;
SEVTCMP = 0x0000;
PWMCON1 = 0x0033;
PWMCON2 = 0x0000;
DTCON1= 0X0059;
FLTAKON = 0x0000;
OVDCON= 0X0000;
PTCONbits.PTEN = 1;
IEC2bits.PWMIE = 0; // nonaktifkan interupsi PWM

T1CON = 0XE000;
TMR1 = 0;
PR1 = 1355;
_T1IF = 0;
_T1IE = 1;
}
/////////////////////////////////////////////////
batal memread()
{
int x;
untuk(x=0;x<15;x++)
{

pengaturan[x]=Eeprom_ReadWord(x);
}
}
////////////////////////////////////////////////// //////// batal memwrite()
{

int x;
untuk(x=0;x<15;x++)
{
jika(flags.setup==0)
Eeprom_WriteWord(x,pabrik[x]);
kalau tidak
Eeprom_WriteWord(x,pengaturan[x]);
}
}
//////////////////////////////////////////////
batal modedisp()
{
jika (flags.msgrtn)
kembali;
if((key==upsmode)||(key==stbyups))
{
printmes(str22,100); //"\fU.PS MODE AKTIF";
jika(kunci==mode naik)
{
aclo=setuplo;
achi=pengaturan;
}
}

jika((key==invmode)||(key==stbyinv))
printmes(str21,100); //"\fINVERTER MODE ON";

}
////////////////////////////////////////////////// //// batal swdisp()
{
jika (flags.msgrtn)
kembali;
if((key==stbyinv)||(key==stbyups)) { //"\fSBY NONAKTIFKAN";
printmes(str23,100);
aclo=setinvlo;
achi=setinvi;
} if((key==upsmode)||(key==invmode)) printmes(str24,100); //"\fSBY AKTIFKAN";
}

// RUTIN UTAMA
//************************************************ *******************************/ int main()
{
TRISF=0X0000;
TRISE=0X010F;
TRISD=0X0000;
TRISC=0X0000;
TRISB=0XFFFF;
OVDCON=0X0000;
PWMCON1 = 0x0000;
PTCONbits.PTEN = 0;
bel = 0;
lcd_init();
InitADC1();
init_PWM();
keyvalue=getvalue(4);
if(((nilai kunci>660)&&(nilai kunci<680))||((nilai kunci>560)&&(nilai kunci<575)))
{
flags.swon=1;
flags.firston=1;
} prect=getvalue(2);

flags.frstdisp=0;

default=Eeprom_ReadWord(14);
jika(default!=50)
{
memwrite();
}
memread();
batclb=pengaturan[0];
mainsclb=pengaturan[1];
chrclb=pengaturan[2];
loadclb=700-pengaturan[3];
setvout=pengaturan[4];
setchramp=pengaturan[5];
chshoot=setchramp;
setchramp+=30;
setupshi=pengaturan[6];
setupslo=pengaturan[7];
setinvhi=pengaturan[8];
setinvlo=pengaturan[9];
setbatful=pengaturan[10];
setbatwrn=pengaturan[11];
setbatlo=pengaturan[12];
setbatres=pengaturan[13];
default=pengaturan[14];
battdisp=90;
aclo=setinvlo;
achi=setinvi;
batrestart=setbatful-13;
penundaan menu=0;
sementara(1)
{

//lcd_init();
//
//sementara(1)
//{

//lcd_init();
//printmes(str36,3); //"AC CHARGR:";

//flags.msgrtn=0;
////printmes(str20,1); //"\fBATERAI V:";
//

//printmes(str25,2); //"\fMAINS VOLT:";

//printmes(str27,4); //"\fTOTAL BEBAN:";


//
////printmes(str23,0);
////
//printmes(str24,100); //"\fSBY AKTIFKAN";
////
////
////
//printmes(str26,0); //"\fINVERTER V:";
////
////printmes(str27,4); //"\fTOTAL BEBAN:";
//
//
//
//
//
//}
// sementara(PORTEbits.RE8==0)
{
flags.msgrtn=0;
printmes(str31,100); // KESALAHAN CKT PENDEK if(flags.swon==0)
__asm__ volatile ("setel ulang"); } while(flags.nofeed==1)
{
flags.msgrtn=0;
printmes(str34,100); // TIDAK ADA UMPAN BALIK
jika(flags.swon==0)
__asm__ volatile ("setel ulang");
}

//sementara(flags.ctfail==1)
//{
// flags.msgrtn=0;
//printmes(str28,100); // PERJALANAN: KESALAHAN CT
//jika(flags.swon==0)
//__asm__ volatile ("reset");
//}

while(flags.zincfail==1)
{
flags.msgrtn=0;
printmes(str35,100); // TRIP: SYNC FAULT!
jika(flags.swon==0)
__asm__ volatile ("setel ulang");
flags.fault=1;
}

while(flags.lbcut==1)
{
flags.msgrtn=0;
printmes(str29,100); //" PERJALANAN: BATERAI RENDAH ";
if((flags.swon==0)||(penundaan kembali>175))
__asm__ volatile ("setel ulang");
} while(flags.olcut==1)
{
flags.msgrtn=0;
printmes(str30,100); //" PERJALANAN: BEBAN BERLEBIHAN ";
if((flags.swon==0)||(penundaan kembali>175))
__asm__ volatile ("setel ulang");
}

while(flags.olwarn)
{
flags.msgrtn=0;
printmes(str33,100); //" PERINGATAN: BEBAN BERLEBIHAN ";
jika(flags.swon==0)
__asm__ volatile ("setel ulang");
}

while(flags.lbwarn==1)
{
flags.msgrtn=0;
printmes(str32,100); //"PERINGATAN: BATERAI RENDAH";
jika(flags.swon==0)
__asm__ volatile ("setel ulang");

printmes(str20,1); // 0/0/"\fBATERAI V:";

jika(flags.chon==1)
{
jika(juara==0)
pergi keluar;

printmes(str36,3); //"AC CHARGR:";


}
hasil: if((key==upsmode)||(key==invmode))
{
jika(flags.onflag==1)
{
printmes(str27,4); //"\fTOTAL BEBAN:";
}
modedisp();

swdisp();

printmes(str25,2); //"\fMAINS VOLT:";

jika(flags.onflag==1)
{
printmes(str26,0); //"\fINVERTER V:";
}

kalau tidak
{
modedisp();
swdisp();
printmes(str25,2); //"\fMAINS VOLT:";
}

//printmes(str38,100); //"\f NAMA JUDUL


jika(menudelay>=125)
{
flags.setup=1;
penundaan menu=0;
lcd_putc('\f');
printmes(str0,100); //"\fKALIBRASI MENU";
while(kunci==modekunci);
sementara(1)
{
jika(kunci==modekunci)
{
setchramp=pengaturan[5]/10;
loadclb=pengaturan[3];
fungsi();
memwrite();
flags.setup=0;
__asm__ volatile ("setel ulang");
}
}

} }//utama

You might also like