Ir ao conteúdo
  • Cadastre-se

Ajuda no código em C++


Felipe_zEr0

Posts recomendados

Olá galera,

Gostaria de tirar algumas dúvidas em relação ao programa de teste que eu desenvolvi abaixo:

#include <16F628a.h>

#use delay(clock=4000000)

#fuses NOWDT,PUT,NOPROTECT,NOBROWNOUT,MCLR,NOLVP

#use fast_io(a)

#use fast_io(B)

#byte Ra=0x05

#byte Rb=0x06

#bit sensor=Ra.1

#bit rele=Rb.1

#bit led=Rb.2

#define trisa 0x01;

#define trisb 0x00;

void main(void) // Início do programa

{

While (TRUE)

{

rele=1;

delay_ms(1000);

rele=0;

delay_ms(2000);

led=1;

delay_ms(1000);

led=0;

delay_ms(1000);

}

}

Como podem ver estou utilizando 1(uma) entrada do Port_A (PIN_A1) como entrada de um sinal digital, e 2 saídas que estou ligando a um led.

O problema é quando eu faço o comando: rele=1, ou led=1, o pino correspondente ao qual eu declarei anteriormente NÃO vai para nível 1.

porque será que está ocorrendo isso ? Será que eu configurei o trisa e trisb corretamente ?

Desde já, obrigado pela ajuda.

Link para o comentário
Compartilhar em outros sites

Cara, no FUSES faltou o XT (4MHz)

e ao invés do:

#define trisa 0x01;

#define trisb 0x00;

Coloquei:

set_tris_b(0x00);

set_tris_a(0x01);

Ficou assim:


#include <16F628a.h>

#FUSES NOWDT
#FUSES XT
#FUSES PUT
#FUSES NOPROTECT
#FUSES BROWNOUT
#FUSES NOMCLR
#FUSES NOLVP
#FUSES NOCPD

#use delay(clock=4000000)

#use fast_io(a)
#use fast_io(

#byte Ra=0x05
#byte Rb=0x06

#bit sensor=Ra.1
#bit rele=Rb.1
#bit led=Rb.2

void main(void) // Início do programa
{
set_tris_b(0x00);
set_tris_a(0x01);

Rb=0x00;
Ra=0x00;

While (TRUE)
{
rele=1;
delay_ms(1000);
rele=0;
delay_ms(2000);

led=1;
delay_ms(1000);
led=0;
delay_ms(1000);
}

}

Vê se funciona...

Link para o comentário
Compartilhar em outros sites

Obrigado pela ajuda galera, mas o código não funcionou, não sei o motivo.

Olha que eu retirei esses exemplos de um livro que ensina C para microncontroladores, e o autor do livro utiliza esse método de trabalhar com o endereço do PORTA (0x05) e ativar as I/Os por (Ra.1,Ra.2) pinos PORTA_1, PORTA_2.

O código chega a compilar td certinho, mas na hora não funciona no pino de saída que declarei.

Eu tava realizando uns testes, e por incrivel que pareça eu mandei acionar um led na saida B2 e o led foi acender na saida A6 ??? :confused:

Vai entender .....:lol:

Link para o comentário
Compartilhar em outros sites

Cara você testou o código que eu postei? Tenho uma pequema plaquinha de desenvolvimento aqui, gravei o código no PIC e testei funcionou certinho, está funcionando neste momento...

Liga B1 - espera - desliga B1 - espera - liga B2 - espera - desliga B2...

A entrada A1 não está sendo usada pra nada no programa, só foi declarada.

Link para o comentário
Compartilhar em outros sites

Cara você testou o código que eu postei? Tenho uma pequema plaquinha de desenvolvimento aqui, gravei o código no PIC e testei funcionou certinho, está funcionando neste momento...

Liga B1 - espera - desliga B1 - espera - liga B2 - espera - desliga B2...

A entrada A1 não está sendo usada pra nada no programa, só foi declarada.

Pois é test man*~, eu testei o código que você me enviou, porém funcionou somente uma saída, a saída A6:

Liga A6 - espera - desliga A6 :confused:

Talvez meu PIC esteja ferrado uahuah, porque só funcionou 1 saída sendo que eu utilizei 2 saidas no programa.

Obs.: Eu não utilizei oscilador externo (cristal) será que seja por isso que não funcionou corretamente ?

Link para o comentário
Compartilhar em outros sites

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

 

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

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!