Appendix b, Digital input/output control – Lanner LEC-2110 User Manual
Page 39
![background image](https://www.manualsdir.com/files/820386/content/doc039.png)
39
Digital Input/Output Control
Appendix B
Embedded and Industrial Computing
{
outportb(INDEX_PORT, 0x07); //LDN register
delay(5);
outportb(DATA_PORT, LDN);
delay(5);
outportb(INDEX_PORT, reg);
delay(5);
return(inportb(DATA_PORT));
}
void write_SIO_reg(int LDN, int reg, int value)
{
outportb(INDEX_PORT, 0x07); //LDN register
delay(5);
outportb(DATA_PORT, LDN);
delay(5);
outportb(INDEX_PORT, reg);
delay(5);
outportb(DATA_PORT, value);
return;
}
void dio_gpio_init(void)
{
enter_SIO_config();
write_SIO_reg(0x6, 0xf0,0x0f ); //RX_F0=0F
//write_SIO_reg(0x6, 0xe0, ((read_SIO_reg(0x6,
0xe0)& 0xFe)|0x00)); //RX_E0[0]=0
write_SIO_reg(0x6, 0xA0, ((read_SIO_reg(0x6,
0xA0)& 0xF8)|0x00)); //RX_A0[2-0]=000
exit_SIO_config();
return;
}
void dio_set_output(unsigned char out_value)
{
enter_SIO_config();
write_SIO_reg(0x6, 0xf1, ((read_SIO_reg(0x6,
0xf1)& 0xF0)|out_value));
exit_SIO_config();
return;
}
unsigned int dio_get_input(void)
{
unsigned int tmp=0x00;
enter_SIO_config();
//tmp=((read_SIO_reg(0x6, 0xE2)& 0x01)<<3) +
((read_SIO_reg(0x6, 0xf2)& 0x70)>>4);
tmp=((read_SIO_reg(0x6, 0xA2)& 0x07)<<1) +
((read_SIO_reg(0x6, 0xf2)& 0x10)>>4);
exit_SIO_config();
return tmp;
}
//======================================
========================================
=================
#endif