Appendix b, Digital input/output control – Lanner LEC-7105 User Manual
Page 34

34
Digital Input/Output Control
Appendix B
Embedded and Industrial Computing
enter_w83627_config();
outportb(INDEX_PORT, 0x07); // LDN Register
outportb(DATA_PORT, LDN); // Select LDNx
outportb(INDEX_PORT, reg); // Select Register
tmp = inportb( DATA_PORT); // Read Register
exit_w83627_config();
return tmp;
}
void write_w83627_reg(int LDN, int reg, int value)
{
enter_w83627_config();
outportb(INDEX_PORT, 0x07); // LDN Register
outportb(DATA_PORT, LDN); // Select LDNx
outportb(INDEX_PORT, reg); // Select Register
outportb(DATA_PORT, value); // Write Register
exit_w83627_config();
return;
}
void dio_gpio_init(void)
{
unsigned char tmp;
/* Enable GPIO 6x function */
tmp=read_w83627_reg(0x08, 0x30);
tmp |= GPIO6X;
write_w83627_reg(0x08, 0x30, tmp);
/* set GPIO60~63 as Output function */
tmp=read_w83627_reg(0x08, 0xE4);
tmp &= ~(GPIO_GPIO60_GPIO63_MASK);
write_w83627_reg(0x08, 0xE4, tmp);
/* set GPIO60~63 as uninvert */
tmp=read_w83627_reg(0x08, 0xE6);
tmp &= ~(GPIO_GPIO60_GPIO63_MASK);
write_w83627_reg(0x08, 0xE6, tmp);
/* set GPIO60~63 generate high signal */
tmp=read_w83627_reg(0x08, 0xE5);
tmp |= GPIO_GPIO60_GPIO63_MASK;
write_w83627_reg(0x08, 0xE5, tmp);
/* Enable GPIO 2x function */
tmp=read_w83627_reg(0x09, 0x30);
tmp |= GPIO2X;
write_w83627_reg(0x09, 0x30, tmp);
/* set GPIO24~27 as Input function */
tmp=read_w83627_reg(0x09, 0xE4);
tmp |= GPIO_GPIO24_GPIO27_MASK;
write_w83627_reg(0x09, 0xE4, tmp);
/* set GPIO24~27 as uninvert */
tmp=read_w83627_reg(0x09, 0xE6);
tmp &= ~(GPIO_GPIO24_GPIO27_MASK);
write_w83627_reg(0x09, 0xE6, tmp);
return;
}
void dio_set_output(unsigned char out_value)
{
unsigned char tmp;
tmp = read_w83627_reg(0x08,0xE5);
tmp &= ~GPIO_GPIO60_GPIO63_MASK;
tmp |= out_value;
write_w83627_reg(0x08, 0xE5, tmp);
delay(333);
return;
}
unsigned char dio_get_input(void)
{