//Inisialisasi Komunikasi Data Parallel Port#define ppdata 0x03bc#define ppstatus 0x03bd#define ppcontrol 0x03be
int RoundToInt(float fff){ float f = (int) fff; float ff = fff - f; if (ff >= 0.5) return ceil(fff); else return floor(fff);}
void main(){// long int s4dkk, bit4; unsigned char s4dkk, bit4;//pengambilan data dari parport adalah char krn itu maka pakai unsigned char float Ref,rps2volt; int waktu;//, rps2volt; int Decimal_U0; int cWaktu; int putaran = 0; int key = 0; struct time t; long start, stop, T; int gDriver = DETECT, gMode, errorCode; char buffer[64];
// Mempersiapkan Penulisan File FILE*ujirataan; char*nama_file="idsta014.txt"; if ((ujirataan=fopen(nama_file,"w+"))==NULL) { printf("Gagal membuka berkas untuk menulis data."); exit(1); }
initgraph(&gDriver, &gMode, "c:\\tc\\bgi"); errorCode = graphresult(); if (errorCode != grOk) { printf("Error Loading Graphics\n"); exit(0); }
//Ref. dan Waktu diberikan dari Keyboard (dalam Volt dan Detik) printf("Teg. Referensi, V (1.57 s/d 5.00) : "); scanf("%f", &Ref); printf("Waktu Pengamatan (detik) : "); scanf("%d", &waktu);
cWaktu = 1;
Decimal_U0=RoundToInt(Ref/5*255);//Pembulatan ke atas atau kebawah: Vmax=5VDC=0..255Decimal outportb(ppdata,0); outportb(ppdata,Decimal_U0);
gettime(&t); start = (long)t.ti_hour*60*60*100 + t.ti_min*60*100 + t.ti_sec*100 + t.ti_hund;
do {
putaran = 0;
do
{
do
{
s4dkk=inportb(ppstatus);
//s4dkk adalah semua bit dari paralel port
// bit4=s4dkk & 0x60;
//4digit mewakili 16 bit karena integer: MASKING dilakukan //ppstatus menunjuk ke bit yang keempat dari 8 bit shg: 0001 0000 = 0x10 }
while (s4dkk == 127);
do
{
s4dkk=inportb(ppstatus);
// bit4=s4dkk & 0x60;
//4digit mewakili 16 bit karena integer
}
while (s4dkk == 111);
//Variabel untuk menampung jumlah putaran selama waktu Periode Sampling, T (=(start-stop)/100) dengan satuan detik putaran++;
//Ambil waktu PC dalam satuan PER SERATUS DETIK (1/100 detik atau 10ms)
gettime(&t);
stop=(long)t.ti_hour*60*60*100+t.ti_min*60*100+ t.ti_sec*100+t.ti_hund;
}
while (stop-start < 100);
//Periode Sampling, T = 100*(1/100) det = 1 detik.
//Periode Sampling (detik) //T=(stop-start)/100;
printf("%d",cWaktu);
// rps2volt=(((putaran-14)/28)*3.432)+1.568;
//Simpan Data di File fprintf(ujirataan,"%d\t%1.2f\t%d\n", cWaktu, Ref, putaran);//, rps2volt);
//Pertukaran variabel untuk sampling berikutnya start = stop;
//Variabel untuk Pengecheckan Waktu dinaikkan cWaktu++;
if (kbhit()) { key = getch(); if (key == 0) key = getch(); } } while (cWaktu <= waktu && key != 27);//esc outportb(ppdata,0); outportb(ppdata,0);}
www.life4family.blogspot.com
www.continuousimprovement.blogspot.com
No comments:
Post a Comment