maria Postado Novembro 30, 2005 Denunciar Share Postado Novembro 30, 2005 oi me pode ajudar a perceber o q este código faz:void CJoyScan::joystickScan(int v[4], char b[4]){ // v = Resistorvalues: int Values between 0-700 // b = Buttonswitchvalues: int Values between 0-1 --> char type used to save memory int i, j; int mask = 15; _outp(JPORT, 0); for (i=1; mask && i<CMAX; i++) { j = _inp(JPORT) ^ mask; if (j & 1) { v[0] = i; mask ^= 1; } if (j & 2) { v[1] = i; mask ^= 2; } if (j & 4) { v[2] = i; mask ^= 4; } if (j & 8) { v[3] = i; mask ^= 8; } } j = _inp(JPORT); b[0] = !(j & 0x10); b[1] = !(j & 0x20); b[2] = !(j & 0x40); b[3] = !(j & 0x80);}n entendo nada!!por favor me dê uma dica Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Decio Postado Dezembro 1, 2005 Denunciar Share Postado Dezembro 1, 2005 Resumindo, acho que é isto:void CJoyScan::joystickScan(int v[4], char b[4]) { // v = Resistorvalues: int Values between 0-700 // b = Buttonswitchvalues: int Values between 0-1 --> char type used to save memory int i, j; int mask = 15; // Aqui você esta escrevendo na porta "JPORT" o valor 0. // JPORT deve estar definida em algum ponto do seu programa e zero "desliga" tos os bit's desta porta // Se não me engano a porta do Joystick é 0x201 _outp(JPORT, 0); for (i=1; mask && i<CMAX; i++) { //Aqui esta fazendo a leitura em "JPORT" e J esta fazendo um XOR com o que foi recebido. j = _inp(JPORT) ^ mask; //Verifica se bit 1 esta ligado (0000 0001) e caso positivo, deixa mask = xor 1 if (j & 1) { v[0] = i; mask ^= 1; } //Verifica se bit 2 esta ligado (0000 0010)e deixa mask = xor 2 if (j & 2) { v[1] = i; mask ^= 2; } //Verifica se bit 4 esta ligado (0000 0100)e deixa mask = xor 4 if (j & 4) { v[2] = i; mask ^= 4; } //Verifica se bit 8 esta ligado (0000 1000)e deixa mask = xor 8 if (j & 8) { v[3] = i; mask ^= 8; } } //Aqui faz a leitura em "JPORT" j = _inp(JPORT); //Muda valor De b[0] se bit 10 estiver ligado (0001 0000) b[0] = !(j & 0x10); //Muda valor De b[1] se bit 20 estiver ligado (0010 0000) b[1] = !(j & 0x20); //Muda valor De b[0] se bit 40 estiver ligado (0100 0000) b[2] = !(j & 0x40); //Muda valor De b[3] se bit 80 estiver ligado (1000 0000) b[3] = !(j & 0x80); } Caso eu esteja errado, por favor me corrijam. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 maria Postado Dezembro 2, 2005 Autor Denunciar Share Postado Dezembro 2, 2005 obrigado, valeu Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
maria
oi me pode ajudar a perceber o q este código faz:
void CJoyScan::joystickScan(int v[4], char b[4])
{
// v = Resistorvalues: int Values between 0-700
// b = Buttonswitchvalues: int Values between 0-1 --> char type used to save memory
int i, j;
int mask = 15;
_outp(JPORT, 0);
for (i=1; mask && i<CMAX; i++) {
j = _inp(JPORT) ^ mask;
if (j & 1) { v[0] = i; mask ^= 1; }
if (j & 2) { v[1] = i; mask ^= 2; }
if (j & 4) { v[2] = i; mask ^= 4; }
if (j & 8) { v[3] = i; mask ^= 8; }
}
j = _inp(JPORT);
b[0] = !(j & 0x10);
b[1] = !(j & 0x20);
b[2] = !(j & 0x40);
b[3] = !(j & 0x80);
}
n entendo nada!!por favor me dê uma dica
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.