User`s manual

/* get lower word of reading from the data register, add the */
/* word to the reading upper word in the variable dmm_4byte, */
/* ensure upper word of temp_4byte is 00h */
temp_4byte = (long) iwpeek((unsigned short *)
(base_addr_dmm + 0x0C));
dmm_4byte = dmm_4byte + (temp_4byte & 0xFFFF);
/* check for reading overrange */
if (dmm_4byte & 0x80000000)
{
printf("\nReading Overrange");
}
else
{
/* get range code from reading, get range from */
/* the appropriate range table */
range_code = ((dmm_4byte >> 24) & 7);
if (func == 2)
range = ohm_range[range_code];
else
range = volt_range[range_code];
/* compute and print reading */
dmm_4byte = (dmm_4byte << 8);
reading = (range * dmm_4byte) / 0x7FFFFF00;
printf("\n%.5E", reading);
}
}
else /* aperture time is 10 us (2-byte readings) */
{
dmm_2byte = (short) iwpeek((unsigned short *)
(base_addr_dmm + 0x0C));
/* check for reading overrange */
if (dmm_2byte & 0x1)
{
printf("\nReading Overrange");
}
else
{
/* remove error bit from reading */
Continued on Next Page
244 HP E1326B/E1411B Multimeter Register-Based Programming Appendix C