Use r’ s M a nual
__emit__(
0x66,0x50, // push EAX
0x66,0xED, // in EAX,DX
0x66,0x89,0x07, // mov [BX],EAX
0x66,0x58
); // pop EAX
return dwRet;
}
void outpd(int portid, DWORD dwVal)
{
asm mov dx, portid;
asm lea bx, dwVal;
__emit__(
0x66,0x50, // push EAX
0x66,0x8B,0x07, // mov EAX,[BX]
0x66,0xEF, // out DX,EAX
0x66,0x58
); // pop EAX
}
int main()
{
int gDioGpio[] = {32, 33, 34, 35, 36, 37, 38, 39};
DWORD gGpioLvValue = 0;
int i = 0;
//Read DI_0~3 value
printf("Read DI_O~3 value\n");
for (i=0; i< 4; i++)
{
gGpioLvValue = READ_IO32(GPIO_BASE + GPIO2_LVL);
gGpioLvValue &= (0x01 << gDioGpio[i]);
printf("DI_%d = %d\n",i ,gGpioLvValue > 0);
}
s ys tem ("paus e");