#include #include #include #include #include #include #define TRUE -1 #define FALSE 0 unsigned int BASE=0x300; unsigned char jumpers; unsigned char adrange; unsigned char dacBrange; unsigned char dacArange; //sbitd takes data and bit, then returns 0x81 or 0x01 based on data[bit] unsigned char sbitd(unsigned int data,unsigned char bit) { return (data & (1<", OldOne); AddrInputPosX = wherex(); AddrInputPosY = wherey(); do { gotoxy(AddrInputPosX, AddrInputPosY); clreol(); msg[0] = 5; msg[1] = 0; cgets(msg); sscanf(msg + 2, "%x", &NewOne); if (NewOne >= 0x100) { Success = 1; Dummy = NewOne; } else if (msg[1] == 0) { gotoxy(AddrInputPosX, AddrInputPosY); printf("%X", OldOne); Success = 1; Dummy = OldOne; } } while(!Success); return (Dummy); } /* end of AskForBaseAddress */ void main(void) { clrscr(); cputs("This calibration utility needs the address of your A/D card to run.\n\r"); BASE = AskForBaseAddress(BASE); cputs("\r\n"); jumpers=inportb(BASE+0x12);//jumper configuration readback adrange=jumpers & 0x07;//d2,d1,d0 are 5/10, uni/bip, 16/8 dacBrange=(jumpers>>3) & 0x01;//d4,d3 are 5/10 for daca,b dacArange=(jumpers>>4) & 0x01; cputs("\r\nThis utility initializes the calibration circuit with the values\r\n"); cputs("previously stored in the card for the configured ranges:\r\n"); cprintf("A/D: %s %s\r\n" "DAC A: %s\r\n" "DAC B: %s", (adrange&0x01)? ((adrange&0x04)?"ñ5V":"ñ10V") : ((adrange&0x04)?"0-10V":"0-10V(Low Res)") //0-10V(Low Res) is , //in theory 0-20V, (adrange&0x02)?"16ch":"8ch", //but the amps cap dacArange?"0-5V":"0-10V", //at 10V dacBrange?"0-5V":"0-10V" ); textattr(0x07); CAL(); cputs("\r\n\nDone.\r\n"); } /**/