Ir ao conteúdo
  • Cadastre-se

PIC Como fazer um led acionar uma única vez com o PIC12F629


Posts recomendados

Bem, não consegui uma forma de um título mais claro, então vai um gráfico do que quero que o PIC12F629 faça:

imagem089.PNG.0fbda3e06c8d95c971c69bb01fb029cc.PNG

Em preto a entrada e em vermelho a saída. No caso, a saída só deve ser acionada novamente quando houver outra transição de 1 para 0.

imagem086.png.b0ffd2833454cfdaee5400fadc7a0371.png

O que ocorre, é que tanto na simulação do Proteus ou no circuito de verdade. Ao manter a entrada em nível baixo o led fica piscando, quando na verdade, depois da primeira piscada não deve acender mais, aguardando um novo pulso. No circuito tem dois leds e dois botões porque preciso de dois circuitos iguais.

Segue o código em 😄

#include <12f629.h>

#use delay(clock=4000000)
#fuses NOWDT,INTRC_IO, NOCPD, NOPROTECT, MCLR, PUT, BROWNOUT
#use fast_io(a)
#zero_ram

//bytes
#byte  trisio = 0x85
#byte  gpio   = 0x05
#byte  intcon = 0x0b

//bit
#bit   s1    =  gpio.1
#bit   s2    =  gpio.0

#define t1 pin_a5
#define t2 pin_a4

void main(void)
 {
   setup_counters(RTCC_INTERNAL,RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   gpio = 0;
   enable_interrupts(INT_RA2);//usa interrupção para acordar o pic
   trisio=0b111000;//GP0, GP1 e GP2 saídas, GP3, GP4 e GP5 entradas
 
   while(true)  //Programa Principal
    {
       if(!input(t1)){delay_ms(50);s1=1;delay_ms(1000);s1=0;}
       
       if(!input(t2)){delay_ms(50);s2=1;delay_ms(1000);s2=0;}
       
    }}

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
 while(true)  //Programa Principal
    {
	while ((input(t1) && (input(t2)); //espera qualquer uma sair do 1

	if(!input(t1)){delay_ms(50);s1=1;delay_ms(1000);s1=0;}
	if(!input(t2)){delay_ms(50);s2=1;delay_ms(1000);s2=0;}

	while(!input(t2) || (!input(t1));//tire o dedo do botão! :o)
    }

🙃

 

Mas.. (sempre tem um) e se eu quiser temporizar s1 enquanto no intervalo de s2??.. 🤔 🤪

tem como mas antes, pena .. ops .. pensa 1 pouco 🙂

 

edit ..  3 dias depois... de nada.

 

edit 2 .. desde o ano passado... de nada de (ano) novo

 

 Seu concorrente aprende c e pisca em horas ou minutos.

2 horas atrás, Renato.88 disse:

3 dias quebrando a cabeça consegui fazer mesmo sem saber nada dessa linguagem. 

 

1 é pouco, 2 é bom... mas 3?... um derradeiro... de nada

  • Confuso 1
Link para o comentário
Compartilhar em outros sites

  • 3 meses depois...
Em 26/12/2022 às 14:02, .if disse:

edit ..  3 dias depois... de nada.

Sua solução teve um erro, já não me lembro qual. Tentei corrigir, mas não deu certo. Acabei deixando esse projeto de lado, mesmo sabendo como piscar o led em linguagem C. 

Em 26/12/2022 às 14:02, .if disse:

edit 2 .. desde o ano passado... de nada de (ano) novo

 

E fui para outro onde precisei fazer piscar um led em um código já pronto de Assembly que achei na Internet. Pensei que fosse mais difícil, mas em 3 dias quebrando a cabeça consegui fazer mesmo sem saber nada dessa linguagem. 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!