TODOPIC
FORO TÉCNICO => Foro Técnico => Mensaje iniciado por: camolas en 23 de Abril de 2008, 21:20:56
-
Ola a todos,
Sou Portuges por isso perdonar mi lenguaje :)
Fiz este codigo em PBP250 para un 16f877a com exprimentacao en Proteus mas ao fazer o pcb no me da bien.
A ideia deste codigo era aciender um led por 3s siempre que o interroptor estivesse desconectado adjunto los fix del Proteus
DEFINE OSC 20
TRISC.6=1
TRISC.7=0
LED var PORTB.7
Bot1 var PORTB.6
CMCON=%00000111 ' Disable Comparators
CVRCON=%00000000 ' Disable Reference Module
OPTION_REG.7=0 ' Enable Weak Pull-Up's
ini:
Low LED
WHILE Bot1=0 :WEND
high LED
PAUSE 300
Low LED
VA:
WHILE Bot1=1 :WEND
GOTO ini
End
Gracias a todos.
p.s. Este ano Luxo Gonsales, Lisandro Lopes (melhor marcador da liga Portugesa) , Mariano Gonsales e Hernesto Farias foram campeones una vez mas de la liga Portugese em mi clube. F.C.PORTO :-/
-
Olá Camolas,
Minha passagem pelo PBP foi muito rápida mais vou tentar te ajudar.
ini:
Low LED //inicia com led em 0
WHILE Bot1=0 :WEND // loop eterno enquanto Bot1=0
high LED // se chegou aqui é porque Bot1=1, então led liagdo
PAUSE 300 //você descreve que pretende que o led fique ligado por 3 seg mais o seu delay é de 300 milseg
Low LED // led desligado
VA: // não sei porque você criou outro label
WHILE Bot1=1 :WEND // loop eterno enquanto Bot1=1
GOTO ini // volta ao inicio "ini"
End
tente desta forma, desconsidere o estilo de linguagem que está em C, pois já não me lembro bem como se faz isso em PBP.
while (TRUE) // loop eterno faz com que você não precise colocar goto ini ao final
{
if ((input(Bot1)==0)&&(controle==TRUE)) // se Bot1 passar de 1 para 0 e a variavel controle for verdadeira
{
controle = FALSE; // coloca a veriavel controle falsa para que não se repita este ciclo enquanto o batão não for liberado
output_high (LED); // acende led
delay_ms (3000); // pausa de 3 segundos
output_Low (LED); // apaga led
}
if (input(Bot1)==1) // se botão foi liberado
{controle=TRUE;} //passa a variavel controle a verdadeira, para que possa executar novamente a função acima
} // inicio de while
Espero que ajude pois foi isso que pude entender no pouco que descreveu.
Outro detalhe importante, na simulção no proteus não se esqueça de colocar uma resistencia pullup, para quando rodar o programa o pic entender que o sinal está alto(righ).
Baixe e rode o arquivo que está em anexo, e veja se é isto que queres.
Qualquer dúvida pergunte.
Saudações do Brasil
Ivan Braga
-
Boas,
Obg pela ajuda amigo ivan braga, ja solocionei o problema ele era que no soft do programador n dava para activar o HS entao tive de o difinir no codigo "@ DEVICE HS_OSC"
Abraço