#include #include #include #define IOBASE 0x300 #define DAC_HIGH 0x301 #define DAC_LOW 0x302 int channel; void main(void) { int sel,sel1; do{ clrscr(); printf("\n ***********************\n"); printf(" *** DSDA-600 TEST ***\n"); printf(" ***********************\n\n"); printf(" 1. key_in dac value \n"); printf(" 2. I/O port test \n"); printf(" 3. long time test \n"); printf(" 4. return to dos ! \n"); printf(" * please keyin choise = "); sel=getche(); if(sel=='1') { gotoxy(5,12); printf("Please enter the dac_channel ="); sel1=getche(); if(sel1>='0' && sel1 <='5') { channel = (int) sel1 - '0'; outp(IOBASE,channel); key_in_dac(channel); } else printf("%c",7); } else if(sel=='2') io_port_set(); else if(sel=='3') long_time_dac(); else printf("%c",7); }while(sel != '4'); } /*------------------------------------------------------------*/ io_port_set() { int i; int out_data,in_data,temp; clrscr(); gotoxy(10,4); printf("***** I/O PORT TEST ***** "); for(i=0;i<16;i++) { out_data=i; temp = out_data << 4; outp(IOBASE,temp+channel); gotoxy(2,6+i); printf("out=%2x,",out_data); in_data=inp(IOBASE); printf("in=%2x \n",(in_data & 0xff)>>4); delay(100); } printf("\n press any key to continue ... "); getch(); } /*------------------------------------------------------------*/ long_time_dac() { int i,j,k; int data,dac_h,dac_l; clrscr(); gotoxy(30,23); printf("Press any key to cancel the long time test .."); while(1) { for(i=0;i<6;i++) { gotoxy(1,i*2+3); printf("*** [ ch%1d] DAC output TEST *** ",i); outp(IOBASE,i); for(j=0;j<4096;j++) { data=(-2048+j); dac_h=(data >> 4) & 0xff; dac_l=(data << 4) & 0xff; outp(DAC_HIGH,dac_h); outp(DAC_LOW ,dac_l); gotoxy(1,i*2+4); printf("dac_out=%6.3f,",(-2048+j)/204.8); printf("high= %3x ; low = %3x ",dac_h,dac_l); if(kbhit()!=0) return; } } } } /*------------------------------------------------------------*/ key_in_dac(int ddi) { int i,j; float dac_data; int data,dac_h,dac_l; int out_data,in_data; char ch2; do{ clrscr(); gotoxy(1,4); printf(" ***********************\n"); printf(" **** DSDA-600 TEST ****\n"); printf(" ***********************\n\n"); printf(" Now test channel = %3d",ddi); gotoxy(2,12); printf("please key_in the dac_data (unit:Volt) = "); scanf("%f",&dac_data); if(dac_data >= 9.9976) dac_data = 9.9976; else if(dac_data <= -10.00) dac_data = -10.00; if(dac_data>=0) data=(int)(dac_data*204.7+0.5); else data=(int)(dac_data*204.8); dac_h =(data >>4) & 0xff; dac_l =(data <<4) & 0xff; outp(DAC_HIGH,dac_h); outp(DAC_LOW,dac_l); gotoxy(1,16); printf("dac_out=%7.3f(volt),[data=%5x] ; ",dac_data,data); printf("high= %3x ; low = %3x",dac_h,dac_l); gotoxy(1,20); printf("Do you want to enter another data [y/n] ?"); ch2=getch(); } while( (ch2=='y') || (ch2=='Y') ); }