Bom dia pessoal! Meu nome é Jônatas M. Campos, sou novo no fórum e no universo de microcontroladores e gostaria de contar com a ajuda de vocês. Estou desenvolvendo um projeto com o PIC16F876A. O projeto consiste no seguinte: ligar 16 leds mais uma lampada de 5V.
já construi o hardware e agora estou criando o programa e simulando no protheus. Acontece que a simulacão no Protheus não esta coincidindo com programa que estou elaborando no programa C Compiller.
Acontece que os leds D5 e D6 que estao ligados aos pinos 17 e 18 (RC6 e RC7 respectivamente) já estão iniciando em nível alto, antes deu pressionar o botão INICIO e não apagam nunca, mesmo na programacão eu os declarando para iniciar em nivel baixo.
Outro problema é que o meu led D16 ( pino 6 - Ra4) não esta acendendo.
Dei uma olhada no datasheet, mas como sou iniciante, algumas configuracões não entendo muito bem.
Se alguem souber o que se passa e puder fazer a gentileza em me orientar ficarei grato. estou colocando em anexo o diagrama eletronico e o programa que desenvolvi para o procedimento que desejo.
PROCEDIMENTO DESEJADO:
“SE” eu pressionar o botão ÍNICIO então:
LEDS D1 ao D7 ligam e desligam sequencialmente,
depois lampada L1 liga por 2 segundos e desliga,
depois LEDS D8 ao D14 ligam e desligam sequencialmente,
depois LED 15 e 16 ligam e desligam
Muito obrigado a todos, boa tarde!
DIAGRAMA:
PROGRAMA CRIADO NO C COMPILLER:
#include “C:\JONATAS CAMPOS\MECATRÔNICA\MICROCONTROLADORES\PICS\MALETA COM PICS\TESTE 2\LEDS TOPO COM PIC 16F876A\PROGRAMA EM C\LEDS TOPO COM PIC 16F876A.h”
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_CLOCK_DIV_2);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
// INÍCIO DE PROGRAMA
// 14 LEDS TOPO, 1 LÂMPADA TOPO E 2 LEDS BASE
output_A(0);// define se que de inicio as portas A estaram em nível Baixo
output_B(0);// define se que de inicio as portas B estaram em nível Baixo
output_C(0);// define se que de inicio as portas C estaram em nível Baixo
INT X;
WHILE(TRUE)
{
x=0;
if(input(pin_a0)==1)
{
while(x<5)
{
output_high(pin_c2);
delay_ms(100);
output_low(pin_c2);
output_high(pin_c3);
delay_ms(100);
output_low(pin_c3);
output_high(pin_c4);
delay_ms(100);
output_low(pin_c4);
output_high(pin_c5);
delay_ms(100);
output_low(pin_c5);
output_high(pin_c6);
delay_ms(100);
output_low(pin_c6);
output_high(pin_c7);
delay_ms(100);
output_low(pin_c7);
output_high(pin_b0);
delay_ms(100);
output_low(pin_b0);
output_high(pin_c1);// LÂMPADA
delay_ms(2000);
output_low(pin_c1);
output_high(pin_b1);
delay_ms(100);
output_low(pin_b1);
output_high(pin_b2);
delay_ms(100);
output_low(pin_b2);
output_high(pin_b3);
delay_ms(100);
output_low(pin_b3);
output_high(pin_b4);
delay_ms(100);
output_low(pin_b4);
output_high(pin_b5);
delay_ms(100);
output_low(pin_b5);
output_high(pin_b6);
delay_ms(100);
output_low(pin_b6);
output_high(pin_b7);
delay_ms(100);
output_low(pin_b7);
output_high(pin_a4);// LEDS BASE AZUIS
output_high(pin_a5);
delay_ms(2000);
output_low(pin_a4);
output_low(pin_a5);
x=x+1;
}
}
}
}