fabio123 Posted October 17, 2007 at 10:18 AM Report Share #140649 Posted October 17, 2007 at 10:18 AM Boas Gostava que me ajudassem a criar um progrma em C, que enviasse bits para a porta paralela Basta um programa simples capaz de fazer acender led's, por exemplo tendo 8 led's ligados a porta paralela, e fazer acender um de cada vez. Este é o meu objectivo. Mas gostava de ficar a saber o que faço. Ou seja se me podessem explicar cada passo dado no programa agradecia Cumpz Link to comment Share on other sites More sharing options...
fabio123 Posted October 18, 2007 at 08:26 AM Author Report Share #141052 Posted October 18, 2007 at 08:26 AM Eh pessoal ajudem me la Eu andei a ver linhas de codigo de uns programas na net, pelo mens acho, que aquilo funciona Vou por aqui um deles Este envia bits para a porta paralela #include <stdio.h> #include <dos.h> #include <conio.h> /*********************************************/ /* Este programa seta todos os bits da porta */ /*********************************************/ void main (void) { clrscr(); outportb(0x378,0xff); // no lugar de 0xff pode por 255, outportb(0x37a,0xff); // e' que esta em Hexa. getch(); } Mas nao sei como funciona exatamente!! Se alguem me podesse explicar melhor o que ele faz agradecia Link to comment Share on other sites More sharing options...
fabio123 Posted October 18, 2007 at 08:42 AM Author Report Share #141054 Posted October 18, 2007 at 08:42 AM Eu vou explicar melhor o que quero Imaginemos 8 led's ligados a porta Como nesta imagem abaixo http://www.rogercom.com/pparalela/Projeto4.gif O que eu pretendia era construir um programa que eu podesse por exemplo acender o led L2 a seguir o L5, depois desligava o L2, aseguir ligava o L8, depois apagava o L5, estao a ver o que quero, Sou eu é que atravez do programa controlo o circuito de led's Cumpz Link to comment Share on other sites More sharing options...
André Aparicio Posted October 18, 2007 at 10:11 AM Report Share #141059 Posted October 18, 2007 at 10:11 AM Já fiz um programa em QBasic que acendia leds na porta paralela, deverá ser parecido. Funciona basicamente assim: Pino 2 = 1 Pino 3 = 2 Pino 4 = 4 Pino 5 = 8 Pino 6 = 16 Pino 7 = 32 Pino 8 = 64 Pino 9 = 128 O valor que envias para a porta representa a soma dos valores dos pinos que queres que estejam ligados. Por exemplo se quiseres ter o pino 3, 6 e 9 ligados, mandas o valor 146 em decimal que corresponde a 2+16+128. Para ligares apenas um pino mandas apenas o valor corresponde ao pino. O valore 255 liga os pinos todos porque 1+2+4+8+16+32+64+128 = 255. Em hexadecimal a lógica será a mesma. Link to comment Share on other sites More sharing options...
fabio123 Posted October 18, 2007 at 08:30 PM Author Report Share #141242 Posted October 18, 2007 at 08:30 PM Hum ja começo a entender mais qual quer coisa, mas falando mesmo de linguagem C. nimguem me sabe dizer o que é que aquele programa acima faz? Link to comment Share on other sites More sharing options...
fabio123 Posted October 18, 2007 at 08:32 PM Author Report Share #141243 Posted October 18, 2007 at 08:32 PM Um apartezinho O que significa cprintf?? printf é mostrar no ecra e a letra c significa o que?? E ja agora o comando fflush?? Nao avera nenhum "dicionario" ou algo parecido com estes significados?? Cumpz Link to comment Share on other sites More sharing options...
garmg Posted October 22, 2007 at 12:17 AM Report Share #142023 Posted October 22, 2007 at 12:17 AM O exemplo que encontraste utiliza uma biblioteca do turbo c/c++ chamada "Conio". A função cprintf permite "colorar" o output na consola (lembra-te MSDOS). Se conheceres as bibliotecas curses ou ncurses do Unix/Linux, a função é similar à printw. 10 Useful Links Link to comment Share on other sites More sharing options...
fabio123 Posted October 22, 2007 at 08:33 AM Author Report Share #142040 Posted October 22, 2007 at 08:33 AM O exemplo que encontraste utiliza uma biblioteca do turbo c/c++ chamada "Conio". A função cprintf permite "colorar" o output na consola (lembra-te MSDOS). Se conheceres as bibliotecas curses ou ncurses do Unix/Linux, a função é similar à printw. Ou seja a unica diferença entre cprintf e printf é basicamente que o cprintf muda a cor das letras!! Link to comment Share on other sites More sharing options...
fabio123 Posted October 22, 2007 at 10:22 AM Author Report Share #142051 Posted October 22, 2007 at 10:22 AM alguem me pode explicar o que significa #define LPT1 0x378 ?? Link to comment Share on other sites More sharing options...
André Aparicio Posted October 22, 2007 at 11:07 AM Report Share #142057 Posted October 22, 2007 at 11:07 AM alguem me pode explicar o que significa #define LPT1 0x378 ?? Ao definires isso, cada vez que utilizares LPT1 no código ao compilar é substituido por 0x378 penso eu. Link to comment Share on other sites More sharing options...
pedrotuga Posted October 22, 2007 at 11:46 AM Report Share #142060 Posted October 22, 2007 at 11:46 AM Isso é uma macro, serve precisamete para o que o andré disse. Se quiseres perceber melhor o que é uma macro podes seguir este link: http://66.102.9.104/search?q=cache:ZD7UsnfIM1cJ:elearning.embnet.org/file.php/29/ctutorial/Macros.html+http://elearning.embnet.org/file.php/43/ctutorial/Macros.html%23Macros&hl=sv&ct=clnk&cd=1&gl=se&client=firefox-a guarda a pagina pois ela já não está disponivel na web... este link é para a cache do google Anyway, este tópico não é para falar de macros. Interessa perceber aqui uma coisa: o uso de bases com base 2. Ok... eu explico melhor. O porque so uso de por exemplo hexadecimal e não decimal. Nós estamos habituados a pensar em decimal pois foi assim que aprendemos. Mas os computadores funcionam em binário ( zeros e uns ) . Teoricamente pode usar-se um computador apenas com um interruptor on/off e escrever um programa em código máquina, mas isso é completamente inintiligivel para um ser humano. Para isso usam-se coisas como linguagens de programação, código ascii, notação hexadecimal etc. A vantagem do hexadecimal, que é como quem diz base 16... 16 é o mesmo que 2^4. Teoria à parte isto significa que podemos passar de hexadecimal a binário substituindo cada algarismo exadecimal por quatro algarismos binários. Muito mais simples do que se fosse por exemplo em decimal. Agora olha para os números do andré. Pega numa combinação de leds... por exemplo o primeiro e o último acesos. que dá 128+1 = 129 se convertes esse número para binário obtens: 10000001 tás a ver a correspondencia? 🙂 Basicamente enviaste um byte para a saída... esse byte é enviado sob forma de tensão, um bit por pino na porta paralela. Por isso é que se chama 'paralela' porque os bits são enviados em paralelo. Se fosse série eram enviados à bruta em fila indiana apenas por um pino, como é o caso do USB. Espero que isto ajude. Estas coisas dão um pouco de trabalho a por a funcionar. Fica aqui um pequeno conselho: não brinces com a tua porta paralela de qualquer maneira. Vale mais gastas uns 15 ou 20 euros num interface USB -> LPT do que queimares a tua placa mãe do teu computador. Já agora... para enviar dados directamente para a porta paralela na linha de comandos podes usar estes pequeno snippets: *nix: copy file.txt lpt1 windows: cat file.txt >/dev/lp0 file.txt é o ficheiro com os dados em formato de texto. Link to comment Share on other sites More sharing options...
fabio123 Posted October 22, 2007 at 01:59 PM Author Report Share #142083 Posted October 22, 2007 at 01:59 PM Obrigado pelo exclarecimento e pela dica pedrotuga Eu sei que estou a por em risco a minha placa mae, ou melhor a placa mae de um pc la da escola, isto é um projecto que eu decidi fazer, e tinha o objectivo de fazer o programa, estou a tentar neste topico perceber como o programa funciona, e o que quer dizer cada comando!! Eu estou a utilizar o TurboC Ah o meu objectivo nao vai ser controlar aque le circuito de led's, mas sim um mais complexo mas, o programa acaba por funcionar da mesma forma, enviando bits para a porta paralela. O circuito utiliza um buffer para impedir queal quer descarga na porta paralela, o que torna o risco de queimar a board quase nulo Vou continuando a por as minhas duvidas e estou a contar convosco para me ajudarem Cumpz Link to comment Share on other sites More sharing options...
fabio123 Posted October 22, 2007 at 02:01 PM Author Report Share #142084 Posted October 22, 2007 at 02:01 PM Ja agora nimguem sabe o que este comando significa fflush?? Link to comment Share on other sites More sharing options...
Triton Posted October 22, 2007 at 02:41 PM Report Share #142094 Posted October 22, 2007 at 02:41 PM Ja agora nimguem sabe o que este comando significa fflush?? Faz com que o conteúdo do buffer seja enviado para a stream (atenção que só funciona para streams de output). <3 life Link to comment Share on other sites More sharing options...
fabio123 Posted October 23, 2007 at 01:24 PM Author Report Share #142391 Posted October 23, 2007 at 01:24 PM Ja agora nimguem sabe o que este comando significa fflush?? Faz com que o conteúdo do buffer seja enviado para a stream (atenção que só funciona para streams de output). peço desculpa pela minha ignorancia. mas dava para me explicares melhor, o que sao streams?? E buffer?? Link to comment Share on other sites More sharing options...
pedrotuga Posted October 23, 2007 at 04:25 PM Report Share #142431 Posted October 23, 2007 at 04:25 PM 😉 toda a gente gosta de documentação! No que toca a C/C++ há, na minha opinião dois sites de referencia: http://cplusplus.com http://cprogramming.com O primeiro é brilhante na minha opiniao, tudo bem explicado, a informação que interessa sobre praticamente toda a linguagem. O segundo é mais académico e pode ser utilizado como uma sebenta alternativa pois aborda os temas normalmente estudados nas universidades portuguesas. Espero que o ingles não seja problema, aqui vão dois links que te explicam o que é isso do buffer e das streams e para que serve a função fflush() http://www.cplusplus.com/reference/clibrary/cstdio/fflush.html http://www.cplusplus.com/reference/iostream/ Link to comment Share on other sites More sharing options...
Triton Posted October 23, 2007 at 04:28 PM Report Share #142433 Posted October 23, 2007 at 04:28 PM Espero que o ingles não seja problema, aqui vão dois links que te explicam o que é isso do buffer e das streams e para que serve a função fflush() http://www.cplusplus.com/reference/iostream/ Esse link não está relacionado com o assunto, estamos a falar de C e não de C++. <3 life Link to comment Share on other sites More sharing options...
pedrotuga Posted October 23, 2007 at 05:02 PM Report Share #142448 Posted October 23, 2007 at 05:02 PM Espero que o ingles não seja problema, aqui vão dois links que te explicam o que é isso do buffer e das streams e para que serve a função fflush() http://www.cplusplus.com/reference/iostream/ Esse link não está relacionado com o assunto, estamos a falar de C e não de C++. Está pois. Esse link é para ele perceber o que é um stream e para poder ver como funciona, ainda que não possa usar essa biblioteca em C. Link to comment Share on other sites More sharing options...
fabio123 Posted October 23, 2007 at 05:22 PM Author Report Share #142456 Posted October 23, 2007 at 05:22 PM Ok Obrigado pelos link's Cumpz Link to comment Share on other sites More sharing options...
fabio123 Posted November 15, 2007 at 08:00 PM Author Report Share #147596 Posted November 15, 2007 at 08:00 PM Pessoal a livraria conio.h serve para que?? Nao é para as cores pois nao?? E o dos.h eu tenho uma ideia do que é mas nao sei explicar Alguem me ajuda?? 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