User`s manual
ENDAT-D2550 USERS MANUAL 
UNICORN COMPUTER CORP. 
19 
2-5.  Digital I/O 
J4 Pin define: 
J4: Digital I/O Header (2x7 with 2.0mm) 
Pin No.  Function  Pin No.  Function 
1  +5V  2  +5V 
3  DIO-OUT0  4  DIO-IN0 
5  DIO-OUT1  6  DIO-IN1 
7  DIO GND  8  DIO GND 
9  DIO-OUT2  10  DIO-IN2 
11  DIO-OUT3  12  DIO-IN3 
13  +3.3V  14  +3.3V 
Digital I/O port address: 
This function is support by onboard super I/O chip; it can be control easily by 
change the register of super I/O chip via I/O port “2Eh” and “2Fh”. Please see 
the sample code of below for implement. Voltage tolerance: +/- 5% with 0V to 
+5V. 
Sample code for input (using Turbo C/C++ 3.0): 
bit No 7 6 5 4 3 2 1 0 
Map 
DIO-I3 DIO-I2  DIO-I1 DIO-I0 NA NA NA NA 
Sample code for input (using Turbo C/C++ 3.0) 
#define input_port 0x2f // Digital input data port 
Unsigned char read_data; 
 outportb(0x2e,0x87); //Unlock register 
 outportb(0x2e,0x87); //Unlock register 
  outportb(0x2e,0x07);  //set Logic Device number pointer 
 outportb(0x2f,0x08);  //set Logic Device number 
 outportb(0x2e,0x30); //set Device Active  
  outportb(0x2f,0x02);   // set Bit 1 =GPIO5 ; 0=Inactive / 1= Active Default: 03h 
  outportb(0x2e,0xE0);  // set GPIO Output / Input Port 
  outportb(0x2f,0xF0);   // 0=Output/ 1=Input ; Default: F0h 
     // Bit 0~3 DIO-O0~ DIO3 / Bit4~7 DIO-I0~DIO-I3. 
 outportb(0x2e,0xF1);  //Read DIO-Input register. 
 //Bit4~Bit7 = DIO-I0~DIO-I3.(Read Only) 
read_data=inportb(input_port); // Read digital input data 
printf("DIO-Input=%02X\n",read_data); //Show digital input data on screen 










