Ir ao conteúdo

DELPITEC

Membro Pleno
  • Posts

    115
  • Cadastrado em

  • Última visita

Tudo que DELPITEC postou

  1. Se o programa compilou, realmente era aquele o problema. Agora temos apenas um problema de programação, e não de sintaxe. A parte que tu marcou em vermelho está correta. O que está estranho é isso... If(input(Botao_pin_a7)==1) Não lembro como é no CCS, pois uso o mplab. Maaaaas, pra funcionar, acho que o correto seria if ((input(pin_a7))==1) Função a ser executada; ou se quiser usar a variável... Botao_pin_a7 = input(pin_a7); If (Botão_pin_a7 == 1) Função a ser executada E da uma olhada, não sei como é essa biblioteca, tenho uma que eu mesmo fiz. Mas acredito que sempre que for escrever uma frase nova tu tenha que limpar o LCD. Ou usar uma função do tipo goto(x,y) pra colocar o cursor na linha e coluna 1 e sobrescrever o que estava escrito. Masminhadica pra testar se os ifs estão funcionando é: ao invés de mandar escrever no LCD, manda colocar 1 em outros pinos pra ver se funciona. Mas olhando por cima, através do celular, no ônibus, é isso que posso ajudar. Abraço
  2. Olá amigo. Pelo trecho de código que você postou só posso considerar duas hipóteses para este erro: 1ª: Você não declarou a variável tela 2ª: Quando se está comparando, deve ser feito if (tela == 5) e não do jeito que está fazendo, que fica como se fosse uma atribução. Abraço
  3. main() int tecla = 0 while(1) { PORTB = 0b10000000; if (PORTBbits.RB3) tecla = 1; else if (PORTBbits.RB2) tecla = 2; else if (PORTBbits.RB1) tecla = 3; else if (PORTBbits.RB0) tecla = 4; PORTB = 0b01000000; if (PORTBbits.RB3) tecla = 5; else if (PORTBbits.RB2) tecla = 6; else if (PORTBbits.RB1) tecla = 7; else if (PORTBbits.RB0) tecla = 8; PORTB = 0b00100000; if (PORTBbits.RB3) tecla = 9; else if (PORTBbits.RB2) tecla = 10; else if (PORTBbits.RB1) tecla = 11; else if (PORTBbits.RB0) tecla = 12; PORTB = 0b00010000; if (PORTBbits.RB3) tecla = 13; else if (PORTBbits.RB2) tecla = 14; else if (PORTBbits.RB1) tecla = 15; else if (PORTBbits.RB0) tecla = 16; } } Isso é o tipo de código mais básico. Ele vai funcionar pressionando uma tecla de cada vez (Não simultâneo) Fiz para você conseguir entender o funcionamento Você usa 3 pinos como saída, coloca high um de cada vez e faz a leitura da coluna. Enfim, acho que é isso. Abraço
  4. Maravilha. Vou tentar aplicar. Meu maior problema é entender o que acontece na recepção. Não sei porque o TX deve ser desligado, talvez seja pra ele não ficar transmitindo high constante e ter um consumo muito alto.Enfim, grato pela atenção!
  5. Rodrigo, aproveitando sua boa vontade para responder: O RX fica sempre ligado? Como fica a questão do stop bit no RX? Eu terei que mandar ele ler somente no momento em que estiver transmitindo ou vou ter que mandar um caractere antes para o PIC RX identificar que há dados chegando?
  6. Muito obrigado Rodrigo. Já encomendeiros o meu. Irei efetuar alguns testes. Muito obrigado!
  7. Aproveitando o tópico: Estou interessado em utilizar este módulo mas a minha dúvida é: para transmissão de dados seriais, basta ligar o TX SA usart do PIC direto no pino data do transmissor? Pergunto isso porque a serial do PIC é nivel ttl. E se eu deixar 5v constantemente transmitindo, na recepção terei nível lógico high constante? Agradecido
  8. Olá. Aproveitando o tópico: Gostaria de saber: Se eu colocar 5 Volts constante na entrada do tx, tem que ter nível high constante na saída do rx? Eu posso utilizar a saída serial do pic ligado direto nos pinos de dados destes módulos? Obrigado!
  9. @MatheusLPS Olá. Ressuscitando o tópico: Pelo que entendi, basta eu utilizar a saída serial para fazer a comunicação, certo? Eu preciso configurar algo além do baud rate? Sou meio leigo ainda em comunicação serial. E pelo que percebi no seu código, o RX pode ficar sempre ligado, o tx que tem que ser desligado após a comunicação? Pelo que li neste forum, o pino do RX fica sempre em low, logo, a leitura do start bit não funcione, pois o barramento serial fica sempre em high http://forum.hobbycomponents.com/viewtopic.php?f=25&t=1324 Alguma dica?
  10. Muito interessante o assunto de seu tópico, já está favoritado aqui para eu poder dar uma pesquisada mais a fundo sobre o assunto.
  11. Não entendo muito sobre linguagem assembly. para conseguir entender bem o funcionamento do display LCD sugiro que você leia o Datasheet do integrado que geralmente é utilizado nesses displays(hd44780). Também sugiro que escreva a própria biblioteca, ela não é muito difíci. Depois de uns 2 dias estudando ela você consegue desenvolver algo bacana. a dica do fluxograma também é muito boa, desde que comecei a fazer meus projetos utilizando o fluxograma e máquina de estados nuca mais tive problemas de esquecer alguma parte de código, geralmente é rodar e partir pro abraço
  12. Muito boa essa. Vivendo e aprendendo
  13. Oá amigo. Tu está fazendo certo. Colocando a mão na massa. E não entendo bulhufas de microC. Mas digamos que tu queira armazenar um valor de uma variavel de 16 bits numa posição da EEPROM. Tu utiliza a EEPROM de endereço 0x10 para gravar a parte alta da variável e o endereço 0x11 para armazenar a parte baixa. EX: Valor: 0xABCD 0x10 = 0xAB 0x11 = 0xCD Utiliza os operadores << e >> para isso. OBS: Tem que cuidar o limite de vezes que se grava na EEPROM (dependendo do pic, é 1 milhão de vezes) O ideal é tu fazer um código que leia o valor que está na EEPROM e caso seja diferente, daí sim, efetuar o armazenamento. Enfim, qualquer coisa estamos ae
  14. Ressuscitando o tópico: Quando se usa a gravação in circuit (ICSP) o master clear tem que dar 12v. Isso tu configura no próprio software do pickit (bem na primeira janela tem um ícone [ ] /MCLR) Só marcar ali e mandar gravar medindo o pino do MCLR do pickit3, vai dar os 12 volts. Claro, que tem que habilitar o fuse LVL do pic em questão (com isso perde-se uma saída de porta para dar lugar ao ICSP, Pino PGM) Quando se usa a gravação com os pinos PGD e PGC, não precisa dar os 12v. Falo isso porque estou sofrendo agora para fazer um pic 16f876a funcionar. Se o MCLR dele está em 1 , ele não roda nada e se está flutuando roda todo errado. Enfim. Postei isso para caso alguém tivesse o mesmo problema. Att.
  15. Capturar por interrupção é o mais fácil. Eu particularmente evito usar interrupções. Porque depois a tendência é começar a usar mais interrupções e ter que começar a fazer definições de prioridade. Mas tem muito material na internet disponível sobre a função getc() Mas volto a falar, essa string que tu usa como entrada teria que ter o caractere nulo (/n) Com esse caractere nulo tu conseguiria fazer sem interrupção. Abraço
  16. Pois é. O problema é que fica esperando. Tu tem que fazer uma maneira de o getc() só funcionar quando estiver algo entrando na serial. Como tu ta gerando esse caractere pra serial? Tem que ver se esse caractere vai com o EOF (End of file, da uma lida sobre isso) Se o caractere vai com EOF, tu pode usar ele pra acessar o getc() só quando tiver um caractere não nulo (diferente de EOF) Acho que é isso, Isa está aí para me desmentir hahaha Abraço
  17. Olá amigo. Vou lhe sugerir uma coisa (pois também estou aprendendo a brincar com serial): Cria uma rotina (só para teste) para ler o que fica entrando na serial quando nada é enviado. Daí tenta usar isso no teu switch Abs
  18. Olá! Para complementar a dica da @Isadora Ferraz eu aconselharia a usar Flip-Flops Pesquisa sobre máquina de estados com flip-flop para fazer, como são poucos valores eu acho que não ficaria tão complicado. Boa sorte!

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!