![Unicorn Computer ENDAT-9401F/H User Manual Download Page 16](http://html1.mh-extra.com/html/unicorn-computer/endat-9401f-h/endat-9401f-h_user-manual_3744525016.webp)
User’s Manual
25
2-7. Digital
I/O
1) Pin out of digital I/O header (J2):
Pin No.
Function
Pin No.
Function
1
+5V
2
+5V
3
DIO-O0
4
DIO-I0
5
DIO-O1
6
DIO-I1
7
DIO-O2
8
DIO-I2
9
DIO-O3
10
DIO-I3
11
DIO-O4
12
DIO-I4
13
DIO-O5
14
DIO-I5
15
GND
16
GND
17
DIO-O6
18
DIO-I6
19
DIO-O7
20
DIO-I7
21
+3.3V
22
+3.3V
This function is supported 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” “2Fh” and “4Eh” “4Fh”.
Please see the sample code of below for implement.
Voltage tolerance: +/- 5% with 0V to +5V.
2) Digital I/O control port (2E,2Fh):
Register configuration:
Bit
No
7 6 5 4 3 2 1 0
Map
IN3
IN2 OUT3 OUT2 OUT1 OUT0 IN1
IN0
Sample code for input bit 0~3 (using Turbo C/C++ 3.0):
#define input_port 0x2f
outportb(0x2e,0x87); //Unlock
register
outportb(0x2e,0x87); //Unlock
register
outportb(0x2e,0x07); //Set Logic Device number pointer
outportb(0x2f,0x07);
//Set Logic Device number
outportb(0x2e,0xF1); //Set active register is CRF1
read_data=inportb(input_port); // Read digital input data
printf(“DIO-Input=%02X\n”,read_data); //Show digital input data on screen
26
The ENDAT-9401F/H System Board
Sample code for output bit 0~3 (using Turbo C/C++ 3.0):
outportb(0x2e,0x87); //Unlock
register
outportb(0x2e,0x87); //Unlock
register
outportb(0x2e,0x07); //Set Logic Device number pointer
outportb(0x2f,0x07);
//Set Logic Device number
outportb(0x2e,0xF2); //Set active register is CRF2
outportb(0x2f,0x00);
//Write data to digital output
3) Digital I/O control port (4E,4Fh):
Register configuration:
Bit
No
7 6 5 4 3 2 1 0
Map
IN7
IN6 OUT7 OUT6 OUT5 OUT4
IN5
IN4
Sample code for input bit 4~7(using Turbo C/C++ 3.0):
#define input_port 0x2f
outportb(0x4e,0x87); //Unlock
register
outportb(0x4e,0x87); //Unlock
register
outportb(0x4e,0x07); //Set Logic Device number pointer
outportb(0x4f,0x07);
//Set Logic Device number
outportb(0x4e,0xF1); //Set active register is CRF1
read_data=inportb(input_port); // Read digital input data
printf(“DIO-Input=%02X\n”,read_data); //Show digital input data on screen
Sample code for output bit 4~7(using Turbo C/C++ 3.0):
outportb(0x4e,0x87); //Unlock
register
outportb(0x4e,0x87); //Unlock
register
outportb(0x4e,0x07); //Set Logic Device number pointer
outportb(0x4f,0x07);
//Set Logic Device number
outportb(0x4e,0xF2); //Set active register is CRF2
outportb(0x4f,0x00);
//Write data to digital output