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