Ir ao conteúdo

PIC16F877A todo digital


CIS

Posts recomendados

Postado

Boa tarde galera! Preciso da ajuda dos mais experientes...

como fazer a iniciação do 16F877A para que todas as 33 i/o fiquem digitais??

e depois to tendo dificuldades em fazer repetição com o laço for no mickroC, alguem pode me ajudar.obrigado desde ja...

A repetição ta ok, agora so falta iniciar o port d. O que devo fazer pra usa-lo digital, não estou conseguindo...

ok, resolvido o problema, por enquanto... não era bem a programação, ou o PIC, era problema no chaveamento feito por transistores...resolvido, peço que o topico fique aberto caso eu necessite de mais ajuda...

Obrigado.

unsigned short x = 0, y = 0;
unsigned short a = 0, a = 0;
volatile long int w = 0;
// Timer0 Interrupçãogned short x = 0, y = 0;
//unsigend short a = 0, b = 0;
if (INTCON.T0IF == 1 ) // checa se a flag é do timer0 (pois pode ser outras se mais interrupções estiverem habilitadas).
{ //se T0IF for igual a 1, indica que ocorreu um estouro do timer0 e a interrupção será tratada.
w++; //incrementa a variavel x.
if(w == 305){
portb = 0b00111111;
portd = 0b00111111;
delay_ms(100);
portb = 0b00000000;
portd = 0b00000000;
delay_ms(100);
w = 0;
}
}
INTCON.T0IF = 0; // limpa a flag
INTCON.T0IE = 1; // reabilita a interrupção
TMR0 = 0; // preload do timer0
}


void main() {
ADCON1 = 0x06;
CMCON = 0x07;
trisb = 0b00000000;
portb = 0b00000000;
portd = 0b00000000;
trisd = 0b00000000;
trise.pspmode = 0;
option_reg = 0b00000111;
tmr0 = 0;
INTCON = 0;
INTCON.T0IE = 1;
INTCON.T0IF = 0;
INTCON.GIE = 1;

while(1) { //enquanto houver alimentação.
for(y = 0; y <= 4; y++){ // repete 5 vezes o laço abaixo:
for(x = 0; x <= 6; x++){
portd = 1<<x;
portb = 1<<x;
Delay_ms(500);
}
portd = 0;
portb = 0;
}
Delay_ms(100);

for(x = 0; x <= 10; x++){
portd = 0b00101010;
portb = 0b00010101;
Delay_ms(200);
portd = 0b00010101;
portb = 0b00101010;
delay_ms(200);
}
for(b = 0; b <=10; b++) {
for(x = 0; x <= 6; x++){
portd = 1<<x;
portb = 1<<x;
Delay_ms(250);
}
}
for(b = 0; b <= 20; b++) {
for(x = 0; x <= 6; x++){
portd = 1<<x;
portb = 1<<x;
Delay_ms(100);
}
}
for(b = 0; b <= 5;b++) {
for(x = 0;x <= 5; x++) {
portd = 0b00111111;
portb = 0b00000000;
delay_ms(500);
portd = 0b00000000;
portb = 0b00111111;
delay_ms(500);
}
}
}
}

Não compila, sera que alguem acha pra mim o erro???

  • 2 semanas depois...
  • Coordenador
Postado

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

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!