C:
#define f_timer 2000000
const unsigned short DIGITOS[] =
{
0x3F,
0x06,
0x5B,
0x4F,
0x66,
0x6D,
0x7D,
0x07,
0x7F,
0x6F,
};
void VerDisplay( int Frequency )
{
unsigned short U;
unsigned short D;
unsigned short C;
unsigned short UM;
UM = Frequency/1000;
C = (Frequency-UM*1000)/100;
D = (Frequency-UM*1000-C*100)/10;
U = (Frequency-UM*1000-C*100-D*10);
PORTB = DIGITOS;
PORTA.F0=1;
delay_ms(10);
PORTA=0;
PORTB = DIGITOS[D];
PORTA.F1=1;
delay_ms(10);
PORTA=0;
PORTB = DIGITOS[C];
PORTA.F2=1;
delay_ms(10);
PORTA=0;
PORTB = DIGITOS[UM];
PORTA.F3=1;
delay_ms(10);
PORTA=0;
}
void main ( void )
{
unsigned long signal_period,data1,data2;
int Frequency=150;
TRISC.TRISC2=1;
OSCCON=0b1110000;
PIE1.CCP1IE=1;
PIR1.CCP1IF=0;
CCP1CON=0x05;
CCPR1=0x00;
PIR1.TMR1IF=0;
T1CON=0x80;
TMR1H=0;
TMR1L=0;
T1CON.TMR1ON=1;
TRISB = 0;
TRISA = 0;
PORTA = 0;
while( 1 )
{
void VerDisplay( Frequency );
while(!(PIR1.CCP1IF));
PIR1.CCP1IF=0;
data1 = CCPR1;
while(!(PIR1.CCP1IF));
PIR1.CCP1IF=0;
data2 = CCPR1;
if(data1 < data2)
{
signal_period = data2 - data1;
Frequency = ((float)f_timer / (float)signal_period);
while(1)
{
VerDisplay( Frequency );
}
TMR1H=0;
TMR1L=0;
}
}
}
Mod edit: code tags
Last edited by a moderator: