
Using the I/O Address Map
40
DAI12-4(FIT)GY
/* ----- interrupt handler ----------------------------- */
void _interrupt _far inthandler( void )
{
unsigned char
i;
unsigned char
UpperData, LowerData, sts;
_enable();
/* enable */
+;
do {
sts = (unsigned char)inp( ADR+0x16 );
} while( sts & 0x01 );
for(i = 0; i < 4; i++) {
do
{
sts = (unsigned char)inp( ADR+0x16 );
} while( sts & 0x01 );
if( i == 3 ) outp( ADR+0x12, 0x40+i );
/* Set Last Channel */
else outp( ADR+0x12, i );
/* Set Channel */
UpperData = (unsigned char)( ( DaData[i][intcnt] >>
8 ) & 0xff );
LowerData = (unsigned char)( DaData[i][intcnt] &
0xff );
outp( ADR+0x10, LowerData );
/* Set Lower Data */
outp( ADR+0x11, UpperData );
/* Set Upper Data */
}
sts = (unsigned char)inp( ADR+0x16 );
outp( ADR+0x16, sts );
/* Status reset */
if( sts & 0x20 )
intcnt = 32767;
_disable();
/* disable */
if ( IrqLevel > IRQ7 ) {
/* EOI */
outp( 0xa0, 0x20 );
outp( 0xa0, 0x0b );
if ( !inp( 0xa0 ) ) outp( 0x20, 0x20 );
} else
outp( 0x20, 0x20 );
}
/* ----- main ----------------------------------------- */
void main( void )
{
unsigned int
i, j;
unsigned int
VDAT;
float
Volt;
unsigned char
UpperData, LowerData, sts;
int
intcntnow = 0;
for(j = 0; j < NUM; j++) {
/* D/A Conversion Data */
for(i = 0; i < CH; i++) {
VDAT = (unsigned int)(4096.0f/(NUM-1)*j);
if( VDAT > 0xfff )
VDAT = 0xfff;
DaData [i][j] = VDAT;
Содержание DAI12-4FITGY
Страница 1: ...F eIT Series Isolated Analog Output Module DAI12 4 FIT GY User s Manual CONTEC CO LTD...
Страница 47: ...Using the I O Address Map 42 DAI12 4 FIT GY...
Страница 64: ......