Jump to content

Ajuda com Contador de fluxo de pessoas. Prova!


GuilhermeArp

Recommended Posts

//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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...