Ir ao conteúdo

Duvida simples sobre programação em C


S. Antunes

Posts recomendados

Postado

Como faço para manter o nível alto da saída do pic (RB1 por exemplo) mesmo depois de eu ter soltado o push botton RA1, tipo acender um LED com uma apertada no push botton e fazer com que ele continue aceso mesmo depois que o botão for solto.

*estou usando o CCS como compilador.

abraço

Postado

Nem testei, fiz no bloco de notas, mas tudo indica que tá certinho. Deu pra entender? Se não deu, pergunte, mas antes quebre um pouco a cabeça!


#define botao pin_b1
#define led pin_b2
short cont = 0;




void main()
{

While(true)
{
if (input(botao) && cont==0) // Sendo !input(botao) = 0 "Leva ao nivel lógico baixo, 0 volt"
{ // e input (botao) = 1 "Leva ao nivel lógico alto, 5 volt"
cont = 1;
delay_ms(100);
}

if (input(botao) && cont==1)
{
cont = 0;
delay_ms(100);
}


if cont==1
{
output_high(led);
}
else
{
output_low(led);
}
}
}

Postado

opa chacalgbi obrigado pela ajuda acho que entendi a lógica mas to com um problema aqui na hora de compilar o seu código aparece alguns erros relacionados ao cont :

"undefined identifier cont"

e também 3 erros relacionados ao short,if e ao else

"A numeric expression must appear here"

tentei achar uma solução mas ta difícil, não consigo achar nada faltando e o cont já foi declarado por você no inicio do código como sendo = 0.

abraço!

consegui resolver os problemas sobre o cont, eu coloquei depois do While(true) e deu certo agora só restam os problemas do "A numeric expression must appear here" que aponta as linhas do if e do else.

abraço

Postado

Pronto, faltou o parentese em If cont==1, o correto é assim: IF (cont==1)


#include <16F877A.h>
#device adc=8

#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected

#use delay(clock=4000000)

#define botao pin_b1
#define led pin_b2
short cont = 0;

void main()
{

While(true)
{
if(input(botao) && cont==0) // Sendo !input(botao) = 0 "Leva ao nivel lógico baixo, 0 volt"
{ // e input (botao) = 1 "Leva ao nivel lógico alto, 5 volt"
cont = 1;
delay_ms(100);
}
if (input(botao) && cont==1)
{
cont = 0;
delay_ms(100);
}
if (cont==1)
{
output_high(led);
}
else
{
output_low(led);
}
}
}

  • Coordenador
Postado

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...