
ENDAT-LX301 USERS MANUAL
UNICORN COMPUTER CORP.
23
2-6. Digital I/O
Pin definition:
GPIO1: DIGITAL I/O Pin Header (2x9 with 2.0mm)
Pin No.
Function
Pin No.
Function
1
+5V
2
+3.3V
3
DIO-P0-0
4
DIO-P0-1
5
DIO-P0-2
6
DIO-P0-3
7
DIO-P0-4
8
DIO-P0-5
9
DIO-P0-6
10
DIO-P0-7
11
GND
12
GND
13
DIO-P1-0
14
DIO-P1-1
15
DIO-P1-2
16
DIO-P1-3
17
+3.3V
18
+5V
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”. Please see the
sample code of below for implement.
Voltage tolerance: +/- 5% with 0V to +5V.
DIGITAL I/O Pin
(DIO-P0)Register configuration:
Bit
No
7 6 5 4 3 2 1 0
Map
P0-7
P0-6
P0-5
P0-4
P0-3
P0-2
P0-1
P0-0
Sample code for input (using Turbo C/C++ 3.0)
#define input_port 0x2f // Read digital input data define.
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,0xF0);
//Set Digital I/O(DIO-P0) Input/Output
outportb(0x2f,0xFF);
//Set register value (FF for Input / 00 for output ).
outportb(0x2e,0xF2);
//Set Read digital input data
read_data=inportb(input_port); // Read digital input data
printf("DIO-Input=%02X\n",read_data); //Show digital input data on screen
ENDAT-LX301 USERS MANUAL
UNICORN COMPUTER CORP.
24
Sample code for output (using Turbo C/C++ 3.0):
DIGITAL I/O Pin
(DIO-P1)Register configuration:
Bit
No
3 2 1 0
Map
P1-3
P1-2
P1-1
P1-0
Sample code for input (using Turbo C/C++ 3.0)
Sample code for output (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,0xF0);
//Set Digital I/O(DIO-P0) Output
outportb(0x2f,0x00); //Set register value (FF for Input / 00 for output ).
outportb(0x2e,0xF1); //Set active register is CRF1
outportb(0x2f,0x00); //Write data to digital output
#define input_port 0x2f // Read digital input data define.
outportb(0x2e,0x87); //Unlock
register
outportb(0x2e,0x87); //Unlock
register
outportb(0x2e,0x07);
//Set Logic Device number pointer
outportb(0x2f,0x09); //Set Logic Device number
outportb(0x2e,0xF0);
//Set Digital I/O(DIO-P0) Input/Output
outportb(0x2f,0x0F); //Set register value (FF for Input / 00 for output ).
outportb(0x2e,0xF2); //Set Read digital input data
read_data=inportb(input_port); // Read digital input data
printf("DIO-Input=%02X\n",read_data); //Show digital input data on screen
outportb(0x2e,0x87); //Unlock
register
outportb(0x2e,0x87); //Unlock
register
outportb(0x2e,0x07);
//Set Logic Device number pointer
outportb(0x2f,0x09); //Set Logic Device number
outportb(0x2e,0xF0);
//Set Digital I/O(DIO-P0) Input/Output
outportb(0x2f,0x0F); //Set register value (FF for Input / 00 for output ).
outportb(0x2e,0xF1); //Set active register is CRF1
outportb(0x2f,0x00); //Write data to digital output