#define pa 0x3E0#define pb 0x3E1#define pc 0x3E2 // Konfigurasi Pengalamatan PPI8255#define cw 0x3E3#define ct 0x90 // ADC ED-Laboratory
//90h = 1001/0000 --Port A adalah Input shg Port A di Set = 1.// --Port B adalah Output shg Port B di Set = 0.// --Port C tidak dipakai shg Port C di Set = 0./sbg output//Urutan BIT : cw-0-0-pa/pc_up-0-pb-pc_low --=8Bit
void main(){ FILE*HexADC_HexDAC; int HexADC; float VRef, VinADC; int t, i; float Error, u; char*nama_file="Ident002.txt"; clrscr();
/* Ini diubah-ubah untuk melihat VRef yang berubah-ubah juga*/ /*HexVRef=128*/ VRef= 4.5; HexADC=0; VinADC=0; t=0; /*Error=0;*/
// Mempersiapkan Penulisan File if ((HexADC_HexDAC=fopen(nama_file,"w+"))==NULL) { printf("Gagal membuka berkas untuk menulis data."); exit(1); } /*Mempersiapakan Komunikasi Data via PPI dg Setting cw dengan nilai ct=90h*/ //Mereset Komunikasi Via PPI--OFF-kan Command WRITE ADC to START Command outportb(cw,ct);
// for (HexVRef=256;HexVRef>0; HexVRef--) do { /*Bagaimana supaya HexVRef berubah-ubah dan bagaimana responsnya? */// randomize(); // rNDOMNYA banyak kem,ungkinan, tanpa ini maka randomn*/// HexVRef=rand()%256; delay(100);
/*Mengirin Data Hexa via Port B ke DAC*/ //outportb(pb,HexVRef); /*Konversi Tegangan Referensi (digital) ke Analog*/ //VRef=HexVRef*0.0305;// Max.=8V
/*Mengambil Nilai ADC*/// HexADC = inportb(pa); /*Memberi semacam clocknya untuk WRITE command dan INT command*/// outportb(pc,0x01);// Meng-OFF-kan WRITE Command pada ADC// outportb(pc,0x02);// Meng-ON-kan WRITE Command pada ADC
/*Konversi Tegangan Digital ke Tegangan Analog*/ //VoTG=HexADC*0.0305;
outportb(pc,0x01);//Menge-SET RD=1, ADC=0, INT=tetap 1 [artinya : PC memBACA isi Buffer ADC] delay(100); outportb(pc,0x00);//Menge-SET RD=1, ADC=0, INT=tetap 1 [artinya : PC memBACA isi Buffer ADC] delay(100); HexADC = inportb(pa);//PC memBACA bit ADC dalam Hex, ADC meNULIS ke PC dan nilainya di simpan pada HexADC
//outportb(pc,0x02);//Menge-SET RD=1, ADC=0, INT=tetap 1 [artinya : PC memBACA isi Buffer ADC] //Perubahan Vin tidak merubah tampilan pada Monitor PC gotoxy(1,6);clreol();printf("Data dari ADC (HEX) :");printf("%d",HexADC); gotoxy(1,7);printf("Teg. Masuk ADC (mV) :");clreol();VinADC=HexADC*0.0305; printf("%d",VinADC);
/*Menulis Hasil Pembacaan ke File*/ fprintf(HexADC_HexDAC,"%d\t %f\t %f\n", t, VRef, VinADC); outportb(pc,0x02);// Meng-ON-kan WRITE Command pada ADC gotoxy(1,9);printf("Tekan tombol sembarang untuk keluar"); } while (!kbhit()); outportb(cw,ct);//Mereset/ meng-off-kan motor setelah do -on-kan di Loop}
No comments:
Post a Comment