beautypg.com

Appendix b, Digital input/output control – Lanner LEC-2110 User Manual

Page 39

background image

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