Ir para conteúdo

Ajuda com Contador de fluxo de pessoas. Prova!


GuilhermeArp

Posts Recomendados

//INICIO
#include <xc.h>
// CONFIG
#pragma config FOSC = HS
#pragma config WDTE = OFF
#pragma config PWRTE = OFF
#pragma config BOREN = OFF
#pragma config LVP = OFF
#pragma config CPD = OFF
#pragma config WRT = OFF
#pragma config CP = OFF
#define _XTAL_FREQ 4000000
int display(int numero);
int C1 = 0, C2 = 0;
void __interrupt() tratamento_interrupcao(void)
{
static int contador = 0;
static int led = 1, sel_display = 1;
if (INTCONbits.TMR0IF == 1)
{
// Reset flag after overflow
INTCONbits.TMR0IF = 0;
TMR0 = 131;
contador++;
if (contador == 125)
{
contador = 0;
led = !led;
PORTDbits.RD0 = led;
}
//Atualização dos Displays
sel_display = !sel_display;
if (sel_display == 1)
{
PORTDbits.RD1 = 1;
PORTDbits.RD2 = 0;
PORTC = display(C2);
}
else
{
PORTDbits.RD1 = 0;
PORTDbits.RD2 = 1;
PORTC = display(C1);
}
}
if (INTCONbits.INTF == 1)
{
INTCONbits.INTF = 0;
C1++;
if (C1 == 10) {
C1 = 0;
C2++;
}
if (C2 == 10) {
C1 = 0;
C2 = 0;
}
__delay_ms(50);
}
}
void main(void) 
{
//Inicialização e configuração
TRISC = 0x00; //Saídas
TRISD = 0X00; //Saídas
TRISBbits.TRISB0 = 1; //Entrada
TRISBbits.TRISB1 = 1; //Entrada
// Configuração do Timer0
// Select timer mode
OPTION_REGbits.T0CS = 0;
OPTION_REGbits.PSA = 0;
// Set Prescaler to 64
OPTION_REGbits.PS = 0b101;
// Configura o valor inicial
TMR0 = 131;
// Habilita Timer0 interrupt
INTCONbits.TMR0IE = 1;
// Habilita External interrupt
INTCONbits.INTF = 1;
INTCONbits.INTF = 0;
// Habilita global interrupt
INTCONbits.GIE = 1;
while(1){
}
}
int display(int numero)
{
switch (numero)
{
case 0:
return 0x3F;
break;
case 1:
return 0x06;
break;
case 2:
return 0x5B;
break;
case 3:
return 0x4F;
break;
case 4:
return 0x66;
break;
case 5:
return 0x6D;
break;
case 6:
return 0x7D;
break;
case 7:
return 0x07;
break;
case 8:
return 0x7F;
break;
case 9:
return 0x6F;
break;
defaut:
return 0x00;
break;
}
}

Se alguém souber como ajudar a implementar o decrescimo, agradeço.

Link para o comentário
Compartilhar em outros sites

Qual é exatamente o problema? Ainda, qual compilador? Para qual PIC (assumo que seja PIC)?

Uma melhoria pequenininha no seu código, em anexo porque esse forum não mantém o formato de códigos fonte com fontes monoespaçadas!

Note que, embora tenha extensões, alguns detalhes que não seguem a spec ISO 9899 eu mudei.

cfp.c

Link para o comentário
Compartilhar em outros sites

Em 11/05/2021 em 10:37, fredericopissarra disse:

Qual é exatamente o problema? Ainda, qual compilador? Para qual PIC (assumo que seja PIC)?

Uma melhoria pequenininha no seu código, em anexo porque esse forum não mantém o formato de códigos fonte com fontes monoespaçadas!

Note que, embora tenha extensões, alguns detalhes que não seguem a spec ISO 9899 eu mudei.

É um contador de fluxo de pessoas. um sensor numa porta de entrada e outro sensor na porta de saída.

compilador XC8  PIC16877A.   Preciso colocar no código o sensor da porta da saída( TRISBbits.TRISB1) para fazer a contagem e diminuir o valor no display.

 

Contador fluxo pessoas.png

Link para o comentário
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...