Salut,
Dans le but de réaliser une horloge je veut configurer le time1 pic16f877 avec une interruption de fréquence 1HZ ou bien 1MHZ exact avec précision totale
pour éviter le décalage horraire aprés un certain temps.....
****Etape1: JE veut générer un signal carré de fréquence 1HZ ou bien 1MHZ
==> le Probléme c'est que l'écriture dans les deux registres TMR1H et TMR1L ne s'établit pas pour tant j'écrit
les valeur 0xFF et 0xFB
le quartz est de 20MHz, le prédiviseur à 1 et le TMR1 à FFFB, il va falloir passer 5 fois
pour provoquer une interruption, soit une fréquence de Q/4/5 = 1 MHz ou 1 μs
Mais ca ne se asse pas :/![]()
![]()
/***********************Code mikroC************************ ************/
int compt=0 ;
void interrupt(){
if (TMR1IF_bit == 1){ //no need to check if this is the only interrupt
TMR1H = 0xFF;
TMR1L = 0xFB;
compt++;
if(compt == 1) //
{
PORTD = ~ PORTD ;
compt = 0 ;
} //Invert PORTD to show interrupt occured
TMR1IF_bit = 0; //flag must be cleared
}
}
void main() {
PORTD = 0;
TRISD = 0;
TMR1CS_bit = 0;
T1CKPS1_bit = 0; //
T1CKPS0_bit = 0; //Prescaler 1:4
T1OSCEN_bit=1;
T1SYNC_bit=1;
// TMR1H = 0xFF;
// TMR1L = 0xFB;
GIE_bit = 1; //Enable global interrupts
PEIE_bit = 1;
TMR1IE_bit = 1; //Enable timer1 interrupt
TMR1IF_bit = 0;
TMR1ON_bit = 1; //Start Timer1
while (1);
}
-----