// =====================================================================
// DAC416.CPP
// Programm für direkte I/O-Zugriffe auf Hardware unter Windows 95/98
// Geschrieben für PCI-DAC416 Messkarte
// Copyright by KOLTER ELECTRONIC 1999
// geprüft mit C-Compiler MSVC++6.0 am 30.08.1999 / ko.
// =====================================================================

#include "windows.h"          // required for all Windows applications
#include <time.h>        
#include <iostream.h>			
#include <stdio.h>				
#include <conio.h>				

unsigned short A;
unsigned short adr;

main()
{
// I/O-Port-Adresse vergeben. Hier 6500 HEX 
adr = 25856;

printf ("Teste TTL Ausgang... Taste fuer weiter \n");
do {
// TTL-OUT Hardware_Port Ausgabe schreiben: D0 und D1
// _outp(adr+0,A);   _outp... syntax  ist hier zwingend bei C++ 6.0
    _outp (adr+60,1);
Sleep(1000);
    _outp (adr+60,2);
Sleep(1000);
    _outp (adr+60,0);
Sleep(1000);
} while (!_kbhit()); // wiederholen, bis Taste gedrückt      

// .............................................................

printf ("DAC TEST >> Taste druecken \n");
getch();
// DAC Test, nur als 16bit-Zugriff möglich !!!
printf ("Ausgang 1 = 0xFFFF \n");
A=0xFFFF;
_outpw(adr+0x00,A);	// schreibe word nach Kanal 1 (DAC-Register)
_outpw(adr+0x04,A);	// schreibe word nach Kanal 2 (DAC-Register)
_outpw(adr+0x08,A);	// schreibe word nach Kanal 3 (DAC-Register)
_outpw(adr+0x0C,A);	// schreibe word nach Kanal 4 (DAC-Register)
_outp (adr+56,0);	// Uebergabe an DAC-Output, latch all register

getch();
printf ("Ausgang 1 = 0xC000 \n");
A=0xC000;
_outpw(adr+0x00,A);	// schreibe word nach Kanal 1 (DAC-Register)
_outpw(adr+0x04,A);	// schreibe word nach Kanal 2 (DAC-Register)
_outpw(adr+0x08,A);	// schreibe word nach Kanal 3 (DAC-Register)
_outpw(adr+0x0C,A);	// schreibe word nach Kanal 4 (DAC-Register)
_outp (adr+56,0);	// Uebergabe an DAC-Output, latch all register

getch();
printf ("Ausgang 1 = 0x8000 \n");
A=0x8000;
_outpw(adr+0x00,A);	// schreibe word nach Kanal 1 (DAC-Register)
_outpw(adr+0x04,A);	// schreibe word nach Kanal 2 (DAC-Register)
_outpw(adr+0x08,A);	// schreibe word nach Kanal 3 (DAC-Register)
_outpw(adr+0x0C,A);	// schreibe word nach Kanal 4 (DAC-Register)
_outp (adr+56,0);	// Uebergabe an DAC-Output, latch all register

getch();
printf ("Ausgang 1 = 0x4000 \n");
A=0x4000;
_outpw(adr+0x00,A);	// schreibe word nach Kanal 1 (DAC-Register)
_outpw(adr+0x04,A);	// schreibe word nach Kanal 2 (DAC-Register)
_outpw(adr+0x08,A);	// schreibe word nach Kanal 3 (DAC-Register)
_outpw(adr+0x0C,A);	// schreibe word nach Kanal 4 (DAC-Register)
_outp (adr+56,0);	// Uebergabe an DAC-Output, latch all register

getch();
printf ("Ausgang 1 = 0x0000 \n");
A=0x0000;
_outpw(adr+0x00,A);	// schreibe word nach Kanal 1 (DAC-Register)
_outpw(adr+0x04,A);	// schreibe word nach Kanal 2 (DAC-Register)
_outpw(adr+0x08,A);	// schreibe word nach Kanal 3 (DAC-Register)
_outpw(adr+0x0C,A);	// schreibe word nach Kanal 4 (DAC-Register)
_outp (adr+56,0);	// Uebergabe an DAC-Output, latch all register

getch();
printf ("Clear and Reset all DAC register \n");
_outp (adr+16,0);	// RESET all DAC register auf Adresse 0x10

 return 0;
}

