Ir ao conteúdo
  • Cadastre-se

tenho que fazer um radar com o pic 18f4520


Posts recomendados

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){
     } 
}

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...