beautypg.com

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

Page 34

background image

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()