Appendix c, Digital input/output control – Lanner LEC-7100 User Manual
Page 34

31
Digital Input/Output Control
Appendix C
Embedded and Industrial Computing
Appendix C:
Digital Input/Output
Control on the GPIO port
The Digitanl I/O on the rear panel is designed to provide
the input and output operations for the system. For
sample DIO code, see 4bit-DIO folder under LEC-7100
Utility on the Driver and Manual CD.
A DIO sample code:
#include
#include
/* This program assume 4 Input and 4 output */
/* Digital Input=GP24,25,26,27==> mapping to OUT0~3
*/
/* Digital Output=GP60,61,62,63 ==> mapping to IN0~3
*/
#define SUPERIO_INDEX 0x2e
#define SUPERIO_DATA 0x2f
#define BANK_REG 0x07
#define GPIO0 0x01
#define GPIO1 0x02
#define GPIO2 0x04
#define GPIO3 0x08
#define GPIO4 0x10
#define GPIO5 0x20
#define GPIO6 0x40
#define GPIO7 0x80
int print_help(char *argv[])
{
printf(“using: %s [i/o] [value]\n”, argv[0]);
printf(“Note:all data in hexadecimal format\n”);
printf(“eg: %s i ==>read Digital Input pin(3 2 1 0)\n”);
printf(“ %s o 8 ==>write 1000 to Output pin(3 2 1 0)\n”);
printf(“ %s o 0 ==>write 0000 to Output pin(3 2 1 0)\n”);
printf(“ %s o f ==>write 1111 to Output pin(3 2 1 0)\n”);
printf(“Program terminated !!!\n”);
exit(1);
}
void enter_sio_config()
{
outportb(SUPERIO_INDEX, 0x87);
delay(1); //delay some time
outportb(SUPERIO_INDEX, 0x87);
}
void exit_sio_config()
{
outportb(SUPERIO_INDEX, 0xaa);
}
unsigned char read_sio_reg(unsigned char bank_no,
unsigned char reg_no)
{
unsigned char reg_data;{
enter_sio_config();
outportb(SUPERIO_INDEX, BANK_REG);
delay(1);
outportb(SUPERIO_DATA, bank_no);
delay(1);
outportb(SUPERIO_INDEX, reg_no);
delay(1);
reg_data=inportb(SUPERIO_DATA);
exit_sio_config();
return reg_data;
}
void write_sio_reg(unsigned char bank_no, unsigned char
reg_no, unsigned char
write_data)
{
enter_sio_config();
outportb(SUPERIO_INDEX, BANK_REG);
delay(1);
outportb(SUPERIO_DATA, bank_no);
delay(1);
outportb(SUPERIO_INDEX, reg_no);
delay(1);
outportb(SUPERIO_DATA, write_data);
exit_sio_config();
}
unsigned char Get_DIO_Input_value()