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

32
Digital Input/Output Control
Appendix C
Embedded and Industrial Computing
{
unsigned char temp1;
temp1 = (read_sio_reg(0x08,0xE5) & 0x0F);
return temp1;
}
void Set_DIO_Output_value(unsigned char temp1)
{
write_sio_reg(0x09,0xE5, (read_sio_reg(0x09,0xE5) &
0x0F) | temp1);
}
void Init_GPIO(void) {
write_sio_reg(0x09,0x30,0x02); //;enable GPIO2
function
write_sio_reg(0x08,0x30,0x04); //;enable GPIO6
function
write_sio_reg(0x09,0xE4,(read_sio_reg(0x09,0xE4) &
~(GPIO4+GPIO5+GPIO6+GPIO7)));
//;set
GPI024,25,26,27=output
write_sio_reg(0x08,0xE4,(read_sio_reg(0x08,0xE4) |
(GPIO0+GPIO1+GPIO2+GPIO3)));
//;set
GPI060,61,62,63=input
}
main(int argc, char *argv[])
{
int io_mode; //0: read 1:write
char *ptr;
unsigned char tmp;
unsigned char Input_value, Output_value;
printf(“===================================
============\n”);
printf(“ Digital IO test program for LEB-2010I Ver:1.0\n” );
printf(“===================================
============\n”);
Init_GPIO();
if ((argc<2)||(argc>4))
{
print_help(argv); //;The parameter over or not enough
}
if((*argv[1]==’i’)|(*argv[1]==’I’)) {
io_mode=0; //;0 for read
} else {
if((*argv[1]==’o’)|(*argv[1]==’O’)) {
io_mode=1; //;1 for write
// try to get the value which want to be write
ptr=argv[2];
tmp=*ptr;
switch (tmp)
{
case ‘0’:
Output_value = 0;
break;
case ‘1’:
Output_value = 1;
break;
case ‘2’:
Output_value = 2;
break;
case ‘3’:
Output_value = 3;
break;
case ‘4’:
Output_value = 4;
break;
case ‘5’:
Output_value = 5;
break;
case ‘6’:
Output_value = 6;
break;
case ‘7’:
Output_value = 7;
break;
case ‘8’:
Output_value = 8;
break;
case ‘9’:
Output_value = 9;
break;