int AOut(int DAChannel, int DARange, int DAValue) { int low, high, DACLOW, DACHIGH; switch(DAChannel) { case 0: DACLOW = DAC0LOW; DACHIGH = DAC0HIGH; break; case 1: DACLOW = DAC1LOW; DACHIGH = DAC1HIGH; break; default: return(8); break; } if(DAValue <= 255) { low = DAValue; high = 0x00; } else if((DAValue >= 256) && (DAValue <= 511)) { low = DAValue - 256; high = 0x01; } else if((DAValue >= 512) && (DAValue <= 767)) { low = DAValue - 512; high = 0x02; } else if((DAValue >= 768) && (DAValue <= 1023)) { low = DAValue - 768; high = 0x03; } else if((DAValue >= 1024) && (DAValue <= 1279)) { low = DAValue - 1024; high = 0x04; } else if((DAValue >= 1280) && (DAValue <= 1535)) { low = DAValue - 1280; high = 0x05; } else if((DAValue >= 1536) && (DAValue <= 1791)) { low = DAValue - 1536; high = 0x06; } else if((DAValue >= 1792) && (DAValue <= 2047)) { low = DAValue - 1792; high = 0x07; } else if((DAValue >= 2048) && (DAValue <= 2303)) { low = DAValue - 2048; high = 0x08; } else if((DAValue >= 2304) && (DAValue <= 2559)) { low = DAValue - 2304; high = 0x09; } else if((DAValue >= 2560) && (DAValue <= 2815)) { low = DAValue - 2560; high = 0x0a; } else if((DAValue >= 2816) && (DAValue <= 3071)) { low = DAValue - 2816; high = 0x0b; } else if((DAValue >= 3072) && (DAValue <= 3327)) { low = DAValue - 3072; high = 0x0c; } else if((DAValue >= 3328) && (DAValue <= 3583)) { low = DAValue - 3328; high = 0x0d; } else if((DAValue >= 3584) && (DAValue <= 3839)) { low = DAValue - 3584; high = 0x0e; } else if((DAValue >= 3840) && (DAValue <= 4095)) { low = DAValue - 3840; high = 0x0f; } else return(7); outb(DARange, GAIN); outb(low, DACLOW); outb(high, DACHIGH); return(0); }