#include #define DAC_1 0177000 #define DAC_2 0177002 #define DAC_3 0177004 #define DAC_4 0177006 #define ADC 0177010 #define START_ADC 0177012 #define OUTRG_1 0177014 #define OUTRG_2 0177016 #define INRG 0177020 #define RELAY 0177022 #define TIMER_1 0177040 #define TIMER_2 0177050 #define RS_DATA 0177070 #define RS_STATUS 0177072 #define TERM 0177562 #define CLOCKFREQ 1000000.0 /* Clock freqency, Hz */ #define MAXSECS 60000 #define CLS printf("\033H\033J\n") #define CLRSCR 0 #define CLRLINE 1 #define MSGONLY 2 #define NEWPAGE message( "Press < SPACE > for continue", 23, 50, CLRSCR); #define uthibyte(a) (((a)>>8)&0x00ff) /* High byte of word a. */ #define utlobyte(a) ((a)&0x00ff) /* Low byte of word a. */ /* Return word pointed to by pointer. */ #define utpeekw(p) (*(( unsigned int *) (p))) /* Put word in location pointed to. */ #define utpokew(p,uval) (*((unsigned int *) (p)) = (uval)) /* Returns value of bit ( n = 0 - 15 ) in integer (x) */ #define utcheckbit( x, n ) ((x) & (1 << n)) != 0 ? 1: 0 /* Sets bit (n) in integer (x) to 1 */ #define utsetbit( x, n ) ( x = ((x) | (1 << n))) /* Sets bit (n) in integer (x) to 0 */ #define utresetbit( x, n ) ( x = ((x) & (~(1 << n)))) /* Inverts bit (n) in integer (x) */ #define utinvertbit( x, n ) ((x) & (1 << n)) != 0 ? utresetbit( x, n ):\ utsetbit( x, n ) /* Combine high byte h, low byte l. */ #define utbyword(h,l) ((((h)&0x00ff)<<8)|((l)&0x00ff)) #define outdac(addr, val) (val) >= 0 ? utpokew(addr,~(abs(val) | 0)):\ utpokew(addr,~(abs(val) | 0100000)) #define inp_byte(addr) ~(utpeekw(addr)) #define outrg1(byte) utpokew( OUTRG_1, ~(byte)) #define outrg2(byte) utpokew( OUTRG_2, ~(byte)) #define getvolts( n, chan ) getadc( n, chan)/3200.0