Monky Posted May 1, 2008 Report Share Posted May 1, 2008 Pessoal Tou aqui com um problrema.... Srá que me podem dar uma ajudninha... Nao estou a perceber porque é que este codigo nao compila: #include <stdio.h> #include <conio.h> #include <dos.h> #define LPT1 0x378 int main(void) { unsigned char Valor=128; //Em binário: 10000000 while( Valor > 0 ) { outportb(LPT1, Valor); // Envia para a Porta LPT1 printf("\nPressione uma tecla para ascender o próximo LED..."); getch( ); Valor = Valor >> 1; //A cada passagem, o bit 1 é movido para a direita } } O Que é que esta aqui mal??? Isto ta me a dar um erro assim: C:\Documents and Settings\xxxx\Ambiente de trabalho\Sem Título1.cpp In function `int main()': 13 C:\Documents and Settings\xxxxx\Ambiente de trabalho\Sem Título1.cpp `outportb' undeclared (first use this function) (Each undeclared identifier is reported only once for each function it appears in.) Alguem pode dar uma maozinha??? Melhor Jogo Online De Sempre....::SYSTEM EMPIRES::.Para quando a nova versao??? Link to comment Share on other sites More sharing options...
Monky Posted May 1, 2008 Author Report Share Posted May 1, 2008 Problema resolvido... Em vez daquele codigo coloquei este: #include <stdio.h> //printf() entre outras. #include <conio.h> //getch(). #include <windows.h> //Necessário para: LoadLibrary(), GetProcAddress() e HINSTANCE. //Declaração dos ponteiros para função. typedef short _stdcall (*PtrInp)(short EndPorta); typedef void _stdcall (*PtrOut)(short EndPorta, short valor); int main(void) { HINSTANCE hLib; //Instância para a DLL inpout32.dll. PtrInp inportb; //Instância para a função Imp32(). PtrOut outportb; //Instância para a função Out32(). //Carrega a DLL na memória. hLib = LoadLibrary("inpout32.dll"); if(hLib == NULL) //Verifica se houve erro. { printf("Erro. O arquivo inpout32.dll não foi encontrado.\n"); getch(); return -1; } //Obtém o endereço da função Inp32 contida na DLL. inportb = (PtrInp) GetProcAddress(hLib, "Inp32"); if(inportb == NULL) //Verifica se houve erro. { printf("Erro. A função Inp32 não foi encontrada.\n"); getch(); return -1; } //Obtém o endereço da função Out32 contida na DLL. outportb = (PtrOut) GetProcAddress(hLib, "Out32"); if(outportb == NULL) //Verifica se houve erro. { printf("Erro. A função Out32 não foi encontrada.\n"); getch(); return -1; } //------------------------------------------------------------------------------------------------------------------------- //Uso das funções outportb() e inportb(): printf("Pressione uma tecla para ligar o pino D0.\n"); getch(); outportb(0x378,1); //Ativa o pino D0 do Registro de Dados da porta paralela. printf("Pressione uma tecla para desligar o pino D0.\n"); getch(); outportb(0x378,0); //Desativa os pino do Registro de Dados da porta paralela. FreeLibrary(hLib); //Libera memória alocada pela DLL. return(0); } Agora tenho uma duvida.... Esse programa acende apenas o D0, como é que eu faço para acender os restantes 7 Leds??? Melhor Jogo Online De Sempre....::SYSTEM EMPIRES::.Para quando a nova versao??? Link to comment Share on other sites More sharing options...
TheDark Posted May 1, 2008 Report Share Posted May 1, 2008 Nesta linha: outportb(0x378,1); //Ativa o pino D0 do Registro de Dados da porta paralela. é só alterares o valor 1. Tens que pensar em valores binários, e fazer OR entre eles. Para acenderes o led 1, tens que passar o valor binário 00000001 (1 em decimal); para acenderes o led 2, tens que passar o valor binário 00000010 (2 em decimal); para acenderes os leds 1 e 2, tens que passar o resultado do OR bit a bit entre os valores binários 00000001 e 00000010, que é 00000011 (3 em decimal). Assim sendo, outportb(0x378,1); //Activa o led 1 outportb(0x378,2); //Activa o led 2 outportb(0x378,3); //Activa os leds 1 e 2 Desaparecido. Link to comment Share on other sites More sharing options...
Monky Posted May 3, 2008 Author Report Share Posted May 3, 2008 Entendi, muito obrigado AMigo... Fiquei esclarecido.... Muito obrigado pela ajuda... Cumprimentos Monky Melhor Jogo Online De Sempre....::SYSTEM EMPIRES::.Para quando a nova versao??? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now