Ir ao conteúdo
  • Cadastre-se
Victor  222222

tenho que fazer um radar com o pic 18f4520

Recommended Posts

Meu programa e basicamente  assim quando aperto B1 o tempo começa  a contar e se pulsar B2  a contagem para e o display muda de frase mostrando o tempo da velocidade .Estou tentando esse codigo so que nao ta dando certo

#include <p18f4520.h>     //bibiblioteca do PIC18f4550
       
#include <stdio.h>        //bibilioteca  de entradas e saídas
#include <delays.h>          //Adiciona a bibilioteca de funcões do delay 
#include <adc.h>          //Adiciona a bibilioteca de funções para o conversor A/D
#include <timers.h>       //Adiciona a bibilioteca de funções do timer 
#include "lcd_lib.h"        // lib.lcd

#pragma config OSC = HS      //Oscilador e cristal 20Mhz
#pragma config PWRT = ON     //Power Up Time Enable 
#pragma config BORV = 1         //tensão do BOR é 4,33v
#pragma config WDT = OFF     //Desabilita o Watchdog Timer
#pragma config PBADEN = OFF  //RB0:RB4 I/O Digital
#pragma config LVP = OFF     //ICSP. Low power programming Digital
#pragma config LPT1OSC = ON  //programado pra operar no modo Low-power
#define B1 PORTBbits.RB0
#define B2 PORTCbits.RC0

char lcd[17];
unsigned  long conta_100ms =0, segundo=0, velocidade=0,aa=0, KMH=0;
float cont,VELOCIDADE;
void ISR_alta_prioridade(void); //Protótipo da função de interrupção
#pragma code int_alta=0x08      //Vetor de interrupção de alta prioridade 
void int_alta(void)
{
    _asm goto ISR_alta_prioridade _endasm  //Desvia o programa para a função ISR_alta_prioridade

#pragma code 
#pragma interrupt ISR_alta_prioridade
void ISR_alta_prioridade(void)
{
    WriteTimer1(40535);
    if(PIR1bits.TMR1IF){
     if(aa){
      conta_100ms++;
     } 
      PIR1bits.TMR1IF = 0;
    }
    if(B1){
        aa=1;
        segundo=0;
        ClearLCD();
    
    }        
    if(conta_100ms == 10){
      segundo++;
      conta_100ms = 0;
    }
    if(B2){
        aa=0; 
    cont=(1/1000000);
    VELOCIDADE=cont/segundo;
    }    
}          
      
    
void main (void)
{
    TRISA = 0x00;
    TRISB = 0x00;
    TRISC = 0x00;
    TRISD = 0x00;
    TRISE = 0x00;
    ADCON1 = 0x0F;
    OpenTimer1(TIMER_INT_OFF
                 &T1_8BIT_RW
                 &T1_SOURCE_INT
                 &T1_OSC1EN_ON
                 &T1_SYNC_EXT_OFF
                 &T1_PS_1_1);
     PORTD = 0x00;
     PORTE = 0x00;
     Delay10KTCYx(100);
     
     PIR1bits.TMR1IF = 0;
     IPR1bits.TMR1IP = 1;
     PIE1bits.TMR1IE = 1;
     RCONbits.IPEN = 1;
    INTCONbits.GIEH = 1;
    INTCONbits.GIEL = 1;
    TMR1H = 0x80;
    TMR1L = 0x00; 
    
     InitLCD();
  while(1){
     } 
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×